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.1.tar.gz (18.7 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.1-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tyr_agent-1.0.1.tar.gz
  • Upload date:
  • Size: 18.7 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.1.tar.gz
Algorithm Hash digest
SHA256 33f64f0c5afb3cb62c72beaea334a043e6b0aa1348b8bc1406b90055c45ecee2
MD5 02117890410377b313bb66c5db80d940
BLAKE2b-256 a20a832c23976c2baac5f5a269fcd3f311cf948e39fcfc99f156a49dc3e7e028

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tyr_agent-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 21.1 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe58411fc5685420ef7ba109d8cd47fe7e64742d6cf9d34e9328f9faab2e2b80
MD5 62dececc735061015d5fa98b4276b168
BLAKE2b-256 f5aa3b1aa774d8e106a4ab9ecb31450411fb67e734b044510ad230108a2e715c

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