Introdução geral
O PydanticAI é uma estrutura de agente Python baseada no Pydantic, projetada para simplificar o desenvolvimento de aplicativos de IA generativa. Desenvolvido pela equipe da Pydantic, ele oferece suporte a uma ampla variedade de modelos (por exemplo, OpenAI, Gemini, Groq etc.) e fornece combinações de agentes e fluxo de controle com segurança de tipo.O PydanticAI garante a eficiência e a confiabilidade de aplicativos de IA generativa por meio de validação de resposta estruturada e respostas de streaming. Seu sistema exclusivo de injeção de dependência facilita o teste e o desenvolvimento iterativo, e integra o Logfire para depuração e monitoramento do desempenho do aplicativo. O PydanticAI está atualmente na versão beta inicial e a API está sujeita a alterações.
Lista de funções
- Suporte a vários modelosCompatível com OpenAI, Gemini, Groq e muitos outros modelos de IA generativa.
- segurança de tipoValidação de resposta estruturada usando Pydantic para garantir a segurança do tipo de dados.
- Sistema de injeção de dependênciaInjeção de dependência com segurança de tipo: fornece injeção de dependência com segurança de tipo para facilitar os testes e o desenvolvimento iterativo.
- resposta de streamingSuporte à resposta e validação de streaming para melhorar a capacidade de resposta e a confiabilidade dos aplicativos.
- Integração com o Logfirepara depurar e monitorar o desempenho e o comportamento de aplicativos de IA generativa.
- interface simplesFornecimento de interfaces limpas para facilitar a extensão e a integração com outros modelos.
Usando a Ajuda
Processo de instalação
- Instalação do PydanticAIVerifique se a versão do Python é 3.9 ou superior e instale o PydanticAI usando o seguinte comando:
pip install pydantic-ai
- Instalação de dependênciasPydanticAI depende de várias bibliotecas principais e APIs LLM, e essas dependências são tratadas automaticamente durante a instalação.
Diretrizes para uso
Criação de um proxy simples
- Definição de agentesCriar um agente simples e especificar o modelo a ser usado.
from pydantic_ai import Agent
agent = Agent(
'gemini-1.5-flash',
system_prompt='Be concise, reply with one sentence.',
)
- Agentes de execuçãoExecução simultânea de agentes para um diálogo simples.
result = agent.run_sync('Where does "hello world" come from?')
print(result.data)
Exemplo de proxy complexo
- Definir modelos de dependência e de resultadosUso do Pydantic para definir modelos de dependência e de resultados.
from dataclasses import dataclass
from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext
from bank_database import DatabaseConn
@dataclass
class SupportDependencies:
customer_id: int
db: DatabaseConn
class SupportResult(BaseModel):
support_advice: str = Field(description='Advice returned to the customer')
block_card: bool = Field(description="Whether to block the customer's card")
risk: int = Field(description='Risk level of query', ge=0, le=10)
- Criação de agentes de suporteDefinir dicas de sistema e funções de utilidade.
support_agent = Agent(
'openai:gpt-4o',
deps_type=SupportDependencies,
result_type=SupportResult,
system_prompt=(
'You are a support agent in our bank, give the '
'customer support and judge the risk level of their query.'
),
)
@support_agent.system_prompt
async def add_customer_name(ctx: RunContext[SupportDependencies]) -> str:
customer_name = await ctx.deps.db.customer_name(id=ctx.deps.customer_id)
return f"The customer's name is {customer_name!r}"
@support_agent.tool
async def customer_balance(ctx: RunContext[SupportDependencies], include_pending: bool) -> float:
"""Returns the customer's current account balance."""
return await ctx.deps.db.customer_balance(id=ctx.deps.customer_id, include_pending=include_pending)
- Executar agente de suporteExecute o agente com as dependências definidas.
async def main():
deps = SupportDependencies(customer_id=123, db=DatabaseConn())
result = await support_agent.run('What is my balance?', deps=deps)
print(result.data)
# 输出示例:support_advice='Hello John, your current account balance, including pending transactions, is $123.45.' block_card=False risk=1
result = await support_agent.run('I just lost my card!', deps=deps)
print(result.data)
# 输出示例:support_advice="I'm sorry to hear that, John. Your card has been blocked for security reasons." block_card=True risk=7
Depuração e monitoramento
O PydanticAI integra o Logfire para depurar e monitorar o desempenho e o comportamento de aplicativos de IA generativa. Com o Logfire, você pode visualizar a operação do agente em tempo real, analisar os dados de resposta e otimizar o desempenho do aplicativo.
Feedback e aprimoramento
O PydanticAI está atualmente na versão beta inicial e a API está sujeita a alterações. Os usuários podem enviar comentários pelo GitHub se encontrarem algum problema ou tiverem sugestões de melhoria durante o uso.