Biblioteca para criação de agentes LLM com suporte a Gemini e GPT, histórico persistente, execução de funções e roteamento entre múltiplos agentes.
Project description
🤖 Tyr Agent
TyrAgent é uma biblioteca para criação de agentes inteligentes com histórico, function-calling, suporte a arquivos e orquestração de múltiplos agentes. Compatível com os modelos Gemini (Google) e GPT (OpenAI), com integração nativa para ambos.
- 💬 Conversas com ou sem
streaming - 🧠
Memóriapersistente de interações (por agente), com controle total de uso e armazenamento - 📊 Sistema de
scorepor interação para qualificar e filtrar o histórico - ⚙️ Execução de funções Python com suporte a
function calling - 🧑🏻💼
Orquestraçãode múltiplos agentes com roteamento automático de mensagens - 🖼️ Suporte a múltiplos tipos de
arquivo - 🧩 Estrutura modular e extensível
📦 Instalação via PyPI
pip install tyr-agent
🔐 É necessário definir as variáveis de ambiente:
GEMINI_KEYpara uso com modelos GeminiOPENAI_API_KEYpara uso com modelos GPT (OpenAI)
💡 Exemplos de uso
📘 SimpleAgent
from tyr_agent import SimpleAgent, GeminiModel, GPTModel
import asyncio
agent = SimpleAgent(
prompt_build="Você é um agente especializado em ações brasileiras.",
agent_name="FinanceAgent",
model=GeminiModel("gemini-2.5-flash"), # ou GPTModel("modelo_desejado")
use_storage=True,
use_history=True,
use_score=True,
)
response = asyncio.run(agent.chat("Me fale sobre a WEGE3.", save_history=True))
print(response)
⚙️ ComplexAgent com funções
from tyr_agent import ComplexAgent, GeminiModel, GPTModel
from typing import List
import asyncio
def somar(nums: List[float]) -> float: return sum(nums)
def subtrair(nums: List[float]) -> float: return nums[0] - sum(nums[1:])
agent = ComplexAgent(
prompt_build="Você faz cálculos precisos com base nas funções disponíveis.",
agent_name="MathAgent",
model=GeminiModel("gemini-2.5-flash"), # ou GPTModel("modelo_desejado")
functions=[somar, subtrair],
use_storage=True,
use_history=True,
use_score=True,
)
response = asyncio.run(agent.chat("Quanto é 14+18+24 e 18-6-2?", save_history=True))
print(response)
🧑🏻💼 ManagerAgent (Orquestrador)
from tyr_agent import SimpleAgent, ComplexAgent, ManagerAgent, GPTModel, GeminiModel
import asyncio
def get_clima(cidade: str) -> str: return f"O clima na cidade {cidade} é de 25ºC e esta ensolarado."
finance_agent = SimpleAgent(
prompt_build="Você é um agente especializado em ações brasileiras.",
agent_name="FinanceAgent",
model=GeminiModel("gemini-2.5-flash"), # ou GPTModel("modelo_desejado")
use_storage=True,
use_history=True,
use_score=True,
)
weather_agent = ComplexAgent(
prompt_build="Você é um agente do clima.",
agent_name="WeatherAgent",
model=GPTModel("gpt-4o"), # ou GeminiModel("modelo_desejado")
functions=[get_clima],
)
manager = ManagerAgent(
agent_name="Manager",
model=GPTModel("quality"),
agents=[finance_agent, weather_agent],
use_history=True
)
response = asyncio.run(manager.chat("Quanto é 10+10? E o clima no Rio?", save_history=True))
print(response)
📎 Envio de arquivos
from tyr_agent import SimpleAgent, GeminiModel, GPTModel
import asyncio
agent = SimpleAgent(
prompt_build="Você é um agente especializado em leitura de documentos.",
agent_name="FileAgent",
model=GeminiModel("gemini-2.5-flash"), # ou GPTModel("modelo_desejado")
use_storage=True,
use_history=True,
use_score=True,
)
files_info = [
{
"file": "D:\\caminho\\para\\meu_arquivo1.png", # Pode ser um path, base64 ou BytesIO
"file_name": "Documento1.png"
},
{
"file": "D:\\caminho\\para\\meu_arquivo2.png", # Pode ser um path, base64 ou BytesIO
"file_name": "Documento2.png"
},
]
response = asyncio.run(agent.chat("Sobre o que é esses documentos?", save_history=True, files=files_info))
print(response)
🔧 Modelos disponíveis
GeminiModel(model_name: str, temperature=0.4, max_tokens=600)GPTModel(model_name: str, temperature=0.4, max_tokens=600)GPTModel("economy")→ usagpt-3.5-turboGPTModel("quality")→ usagpt-4o- Ambos assumem as chaves das variáveis
GEMINI_KEYouOPENAI_API_KEYautomaticamente.
🧠 Principais recursos
SimpleAgent: Respostas simples com ou sem históricoComplexAgent: Permite execução de funções e resposta final combinadaManagerAgent: Gerencia e delega perguntas entre múltiplos agentes- Suporte completo a arquivos (path, base64, BytesIO)
- Sistema de notas (score 0 a 5) para filtrar interações úteis
- Histórico persistente e controlável por agente
📄 Licença
Este repositório está licenciado sob os termos da MIT License.
📬 Contato
Criado por Witor Oliveira
🔗 LinkedIn
📫 Contato por e-mail
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tyr_agent-1.0.4.tar.gz.
File metadata
- Download URL: tyr_agent-1.0.4.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
168e2968fb762903564d2a5f9b94fd99bfdc6bec040840f91c3d9e13ed59221d
|
|
| MD5 |
d054245205c2d4a7b1b35caf98027d75
|
|
| BLAKE2b-256 |
642d1de17c82d856a31f28ab4945f0f54b9c6fb92dccd37c0c7ddf50ad6832cc
|
File details
Details for the file tyr_agent-1.0.4-py3-none-any.whl.
File metadata
- Download URL: tyr_agent-1.0.4-py3-none-any.whl
- Upload date:
- Size: 21.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a5ae8d6bd1c0d5f9bbc9ceb2d949ab8f751ab7200091dea3e62d83f029da15f
|
|
| MD5 |
d9545ce33f5093e7e45acbd1d9d3293c
|
|
| BLAKE2b-256 |
9e2cd61f65f4ab1745ec398f6d08838d52c0cc498fd55cc215cfe6a1e1592852
|