Skip to main content

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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tyr_agent-1.0.3.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tyr_agent-1.0.3-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file tyr_agent-1.0.3.tar.gz.

File metadata

  • Download URL: tyr_agent-1.0.3.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for tyr_agent-1.0.3.tar.gz
Algorithm Hash digest
SHA256 50b608ea0154c5dfa384a00cc8ed5be808c55e610007cc9f94efab10cb18c2a7
MD5 0c431ccb3bf967abb78e1673c2033186
BLAKE2b-256 60af7cb4896a1708eb233ac8d4e27892936c0f8dc1d47431468dbb744b1d30ed

See more details on using hashes here.

File details

Details for the file tyr_agent-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: tyr_agent-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for tyr_agent-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8b0b71f2c2cc6fbe222b45c7725a23a90564c038e125fba8dbc903958681f1b6
MD5 fbf8fd387a1cb248a282f2d771aeaafc
BLAKE2b-256 2dfc0dc24c50fa593c16cf4144b9dca1dfc6692cfaa0c443e2871c528096aa78

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page