Skip to main content

🤖 Tyr Agent

PyPI version Python version License

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ória persistente de interações (por agente), com controle total de uso e armazenamento
  • 📊 Sistema de score por interação para qualificar e filtrar o histórico
  • ⚙️ Execução de funções Python com suporte a function calling
  • 🧑🏻‍💼 Orquestração de 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_KEY para uso com modelos Gemini
  • OPENAI_API_KEY para 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") → usa gpt-3.5-turbo
  • GPTModel("quality") → usa gpt-4o
  • Ambos assumem as chaves das variáveis GEMINI_KEY ou OPENAI_API_KEY automaticamente.

🧠 Principais recursos

  • SimpleAgent: Respostas simples com ou sem histórico
  • ComplexAgent: Permite execução de funções e resposta final combinada
  • ManagerAgent: 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)

Source distribution for tyr-agent 1.0.4
File Size Uploaded
tyr_agent-1.0.4.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tyr-agent 1.0.4
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page