Skip to main content

Agente LLM com execução de funções, histórico persistente, suporte a arquivos e orquestração de 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. Ideal para aplicações com modelos generativos como Gemini, GPT e similares.

  • 💬 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 durante a conversa, com suporte a function calling
  • 🧑🏻‍💼 Orquestração de múltiplos agentes com roteamento automático de mensagens
  • 🖼️ Interpretação de múltiplos tipos de arquivo
  • 🧩 Estrutura modular e extensível

📦 Instalação via PyPI

  pip install tyr-agent

🔒 Lembre-se de configurar sua variável GEMINI_KEY no .env


🧩 Estrutura do projeto

tyr_agent/
├── core/
│   ├── agent.py  # SimpleAgent, ComplexAgent e ManagerAgent
│   └── ai_config.py  # configure_gemini
└── storage/
    └── interaction_history.py  # InteractionHistory


💡 Exemplos de uso

📘 Criando um agente simples

import asyncio
import google.generativeai as genai
from tyr_agent import SimpleAgent, configure_gemini

configure_gemini()
agent = SimpleAgent(
    prompt_build="Você é um assistente de clima.",
    agent_name="WeatherAgent",
    model=genai.GenerativeModel("gemini-2.5-flash-preview-04-17"),
    use_history=True,  # É um parâmetro opicional e pode ser True ou False.
    use_score=True,    # É um parâmetro opicional e pode ser True ou False.,
    score_average=3    # É um parâmetro opicional e pode variar de 0 a 5.,
)

# O parâmetro "save_history" também é opicional e pode ser True ou False.
response = asyncio.run(agent.chat("Qual o clima em Salvador?", save_history=True))

⚙️ Criando um agente com funções

import asyncio
import google.generativeai as genai
from tyr_agent import ComplexAgent, configure_gemini

def somar(a: float, b: float): return a + b

def pegar_clima(cidade: str): return f"Clima em {cidade}: Ensolarado 28°C"

configure_gemini()
agent = ComplexAgent(
    prompt_build="Você pode fazer cálculos e responder sobre o clima.",
    agent_name="WeatherSumBot",
    model=genai.GenerativeModel("gemini-2.5-flash-preview-04-17"),
    functions={"somar": somar, "pegar_clima": pegar_clima},
    use_history=False,  # É um parâmetro opicional e pode ser True ou False.
    use_score=False,    # É um parâmetro opicional e pode ser True ou False.,
    score_average=1     # É um parâmetro opicional e pode variar de 0 a 5.,
)

# O parâmetro "save_history" também é opicional e pode ser True ou False.
response = asyncio.run(agent.chat("Me diga quanto é 10+5 e o clima de São Paulo", save_history=False))

🧑🏻‍💼 Criando um orquestrador de agentes

import asyncio
import google.generativeai as genai
from tyr_agent import ManagerAgent, ComplexAgent, SimpleAgent, configure_gemini

configure_gemini()
model = genai.GenerativeModel("gemini-2.5-flash-preview-04-17")

weather_agent = SimpleAgent(
    prompt_build="Você é um assistente de clima.",
    agent_name="WeatherAgent",
    model=model
)

def somar(a: float, b: float): return a + b

def subtrair(a: float, b: float): return a - b

math_agent = ComplexAgent(
    prompt_build="Você pode fazer cálculos matemáticos.",
    agent_name="MathAgent",
    model=model,
    functions={"somar": somar, "subtrair": subtrair}
)

configure_gemini()
manager_agent = ManagerAgent(
    agent_name="ManagerAgent",
    model=model,
    agents={"weather": weather_agent, "math": math_agent},
    use_history=True,  # É um parâmetro opicional e pode ser True ou False.,
    use_score=True,    # É um parâmetro opicional e pode ser True ou False.,
    score_average=4    # É um parâmetro opicional e pode variar de 0 a 5.,

)

# O parâmetro "save_history" também é opicional e pode ser True ou False.
response = asyncio.run(manager_agent.chat("Me diga clima de São Paulo e quanto é 10+5", save_history=False))

🧠 Principais recursos

  • SimpleAgent: Conversa com contexto e histórico;
  • ComplexAgent: Capaz de sugerir e executar funções, processar os resultados e entregar uma resposta final;
  • ManagerAgent: Orquestra múltiplos agentes e delega tarefas automaticamente;
  • InteractionHistory: Armazena o histórico individual de cada agente em JSON;
  • Suporte a múltiplos tipos de arquivo via path, base64 ou BytesIO;
  • Sistema de score por interação (0 a 5) com média configurável (score_average) para decidir o que deve ou não ser utlizado no histórico;
  • Histórico totalmente gerenciável com métodos para criar, remover, limpar ou apagar os dados persistidos;
  • Estrutura modular e extensível para expansão futura (benchmark, visão computacional, execução de código etc.).

📄 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-0.0.6.tar.gz (15.2 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-0.0.6-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tyr_agent-0.0.6.tar.gz
Algorithm Hash digest
SHA256 857feb16495ff202a30799ece1cfd849df4fcf1a327d0e2c037e6c82d16fdb08
MD5 dc5253fe224758a185b8d866441bc7a8
BLAKE2b-256 7fcfcd83cc9f2ce9e4430389dda611ab260b9c626e9a67c84c559f48a35e0a23

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tyr_agent-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 15.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-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a311aceb87d4ef71b3f24084a2826f9c3370e529256eff0e49027e7671edc232
MD5 49fcaf38b6491561bd1bb4aae8261666
BLAKE2b-256 2ef489ad83db30c4ab5c65eb747aa5c3b1acbfc5465dce361841ecc4372e2b1f

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