🤖 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
Metadata
Release files for tyr-agent 1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tyr_agent-1.0.4.tar.gz | 18.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tyr_agent-1.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.2 kB
Release files / tyr_agent-1.0.4.tar.gz
| Download URL | tyr_agent-1.0.4.tar.gz |
|---|---|
| Size | 18.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
168e2968fb762903564d2a5f9b94fd99bfdc6bec040840f91c3d9e13ed59221d
|
|
BLAKE2b-256 checksum How to use checksums |
642d1de17c82d856a31f28ab4945f0f54b9c6fb92dccd37c0c7ddf50ad6832cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / tyr_agent-1.0.4-py3-none-any.whl
| Download URL | tyr_agent-1.0.4-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4a5ae8d6bd1c0d5f9bbc9ceb2d949ab8f751ab7200091dea3e62d83f029da15f
|
|
BLAKE2b-256 checksum How to use checksums |
9e2cd61f65f4ab1745ec398f6d08838d52c0cc498fd55cc215cfe6a1e1592852
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|