agent_framework Pacote
Módulos
| exceptions | |
| observability |
Classes
| AIFunction |
Uma ferramenta que encapsula uma função python para torná-la chamada por modelos de IA. Essa classe encapsula uma função python para torná-la chamada por modelos de IA com validação automática de parâmetro e geração de esquema JSON. Inicialize o AIFunction. |
| AgentExecutor |
executor interno que encapsula um agente para lidar com mensagens. AgentExecutor adapta seu comportamento com base no modo de execução do fluxo de trabalho:
O executor detecta automaticamente o modo por meio de WorkflowContext.is_streaming(). Inicialize o executor com um identificador exclusivo. |
| AgentExecutorRequest |
Uma solicitação para um executor de agente. |
| AgentExecutorResponse |
Uma resposta de um executor de agente. |
| AgentInputRequest |
Solicite a entrada humana antes que um agente seja executado em fluxos de trabalho de construtor de alto nível. Emitido por meio de RequestInfoEvent quando um fluxo de trabalho pausa antes de um agente ser executado. A resposta é injetada na conversa como uma mensagem de usuário para orientar o comportamento do agente. Esse é o tipo de solicitação padrão usado por .with_request_info() em SequentialBuilder, ConcurrentBuilder, GroupChatBuilder e HandoffBuilder. |
| AgentMiddleware |
Classe base abstrata para middleware de agente que pode interceptar invocações de agente. O middleware do agente permite interceptar e modificar invocações de agente antes e depois da execução. Você pode inspecionar mensagens, modificar o contexto, substituir os resultados ou encerrar a execução antecipadamente. Observação AgentMiddleware é uma classe base abstrata. Você deve subclassá-lo e implementá-lo o método process() para criar middleware de agente personalizado. |
| AgentProtocol |
Um protocolo para um agente que pode ser invocado. Esse protocolo define a interface que todos os agentes devem implementar, incluindo propriedades para identificação e métodos para execução. Observação Os protocolos usam subtipagem estrutural (digitação de pato). Classes não precisam para herdar explicitamente desse protocolo para ser considerado compatível. Isso permite que você crie agentes completamente personalizados sem usar classes base do Agent Framework. |
| AgentRunContext |
Objeto de contexto para invocações de middleware do agente. Esse contexto é passado pelo pipeline de middleware do agente e contém todas as informações sobre a invocação do agente. Inicialize o AgentRunContext. |
| AgentRunEvent |
Evento disparado quando uma execução de agente é concluída. Inicialize o evento de execução do agente. |
| AgentRunResponse |
Representa a resposta a uma solicitação de execução do Agente. Fornece uma ou mais mensagens de resposta e metadados sobre a resposta. Uma resposta típica conterá uma única mensagem, mas pode conter várias mensagens em cenários que envolvem chamadas de função, recuperações de RAG ou lógica complexa. Inicializar um AgentRunResponse. |
| AgentRunResponseUpdate |
Representa uma única parte de resposta de streaming de um Agente. Inicialize um AgentRunResponseUpdate. |
| AgentRunUpdateEvent |
Evento disparado quando um agente está transmitindo mensagens. Inicialize o evento de streaming do agente. |
| AgentThread |
A classe de thread agent, isso pode representar um thread gerenciado localmente ou um thread gerenciado pelo serviço. Um Inicialize um AgentThread, não use este método manualmente, sempre use: Observação Pode ser definido service_thread_id ou message_store, mas não ambos. |
| AggregateContextProvider |
Um ContextProvider que contém vários provedores de contexto. Ele delega eventos a vários provedores de contexto e agrega respostas desses eventos antes de retornar. Isso permite que você combine vários provedores de contexto em um único provedor. Observação Um AggregateContextProvider é criado automaticamente quando você passa um único contexto provedor ou uma sequência de provedores de contexto para o construtor do agente. Inicialize o AggregateContextProvider com provedores de contexto. |
| BaseAgent |
Classe base para todos os agentes do Agent Framework. Essa classe fornece a funcionalidade principal para implementações de agente, incluindo provedores de contexto, suporte a middleware e gerenciamento de threads. Observação BaseAgent não pode ser instanciado diretamente, pois não implementa o run(), run_stream() e outros métodos exigidos pelo AgentProtocol. Use uma implementação concreta como ChatAgent ou crie uma subclasse. Inicialize uma instância do BaseAgent. |
| BaseAnnotation |
Classe base para todos os tipos de Anotação de IA. Inicializar BaseAnnotation. |
| BaseChatClient |
Classe base para clientes de chat. Essa classe base abstrata fornece funcionalidade principal para implementações de cliente de chat, incluindo suporte a middleware, preparação de mensagens e normalização de ferramentas. Observação O BaseChatClient não pode ser instanciado diretamente, pois é uma classe base abstrata. As subclasses devem implementar _inner_get_response() e _inner_get_streaming_response(). Inicialize uma instância do BaseChatClient. |
| BaseContent |
Representa o conteúdo usado pelos serviços de IA. Inicializar BaseContent. |
| Case |
Wrapper de runtime combinando um predicado switch-case com seu destino. Cada Caso casa um predicado booliano com o executor que deve lidar com a mensagem quando o predicado é avaliado como True. O runtime mantém esse contêiner leve separado do SwitchCaseEdgeGroupCase serializável para que a execução possa operar com callables dinâmicos sem poluir o estado persistente. |
| ChatAgent |
Um agente cliente de chat. Essa é a implementação do agente principal que usa um cliente de chat para interagir com modelos de linguagem. Ele dá suporte a ferramentas, provedores de contexto, middleware e respostas de streaming e não streaming. Inicializar uma instância do ChatAgent. Observação O conjunto de parâmetros de frequency_penalty para request_kwargs são usados para chame o cliente de chat. Eles também podem ser passados para ambos os métodos de execução. Quando ambos são definidos, os passados para os métodos de execução têm precedência. |
| ChatClientProtocol |
Um protocolo para um cliente de chat que pode gerar respostas. Esse protocolo define a interface que todos os clientes de chat devem implementar, incluindo métodos para gerar respostas de streaming e não streaming. Observação Os protocolos usam subtipagem estrutural (digitação de pato). Classes não precisam para herdar explicitamente desse protocolo para ser considerado compatível. |
| ChatContext |
Objeto de contexto para invocações de middleware de chat. Esse contexto é passado pelo pipeline de middleware de chat e contém todas as informações sobre a solicitação de chat. Inicialize o ChatContext. |
| ChatMessage |
Representa uma mensagem de chat. Inicializar ChatMessage. |
| ChatMessageStore |
Uma implementação na memória de ChatMessageStoreProtocol que armazena mensagens em uma lista. Essa implementação fornece um armazenamento simples baseado em lista para mensagens de chat com suporte para serialização e desserialização. Ele implementa todos os métodos necessários do O repositório mantém mensagens na memória e fornece métodos para serializar e desserializar o estado para fins de persistência. Crie um ChatMessageStore para uso em um thread. |
| ChatMessageStoreProtocol |
Define métodos para armazenar e recuperar mensagens de chat associadas a um thread específico. As implementações desse protocolo são responsáveis por gerenciar o armazenamento de mensagens de chat, incluindo o tratamento de grandes volumes de dados truncando ou resumindo mensagens conforme necessário. |
| ChatMiddleware |
Classe base abstrata para middleware de chat que pode interceptar solicitações de cliente de chat. O middleware de chat permite interceptar e modificar solicitações de cliente de chat antes e depois da execução. Você pode modificar mensagens, adicionar prompts do sistema, solicitações de log ou substituir respostas de chat. Observação ChatMiddleware é uma classe base abstrata. Você deve subclassá-lo e implementá-lo o método process() para criar middleware de chat personalizado. |
| ChatOptions |
Configurações comuns de solicitação para serviços de IA. Inicializar ChatOptions. |
| ChatResponse |
Representa a resposta a uma solicitação de chat. Inicializa um ChatResponse com os parâmetros fornecidos. |
| ChatResponseUpdate |
Representa uma única parte de resposta de streaming de um ChatClient. Inicializa um ChatResponseUpdate com os parâmetros fornecidos. |
| CheckpointStorage |
Protocolo para back-ends de armazenamento de ponto de verificação. |
| CitationAnnotation |
Representa uma anotação de citação. Inicializar CitationAnnotation. |
| ConcurrentBuilder |
Construtor de alto nível para fluxos de trabalho de agente simultâneos.
Uso:
|
| Context |
Uma classe que contém qualquer contexto que deve ser fornecido para o modelo de IA, conforme fornecido por um ContextProvider. Cada ContextProvider tem a capacidade de fornecer seu próprio contexto para cada invocação. A classe Context contém o contexto adicional fornecido pelo ContextProvider. Esse contexto será combinado com o contexto fornecido por outros provedores antes de ser passado para o modelo de IA. Esse contexto é por invocação e não será armazenado como parte do histórico de chat. Crie um novo objeto Context. |
| ContextProvider |
Classe base para todos os provedores de contexto. Um provedor de contexto é um componente que pode ser usado para aprimorar o gerenciamento de contexto da IA. Ele pode ouvir as alterações na conversa e fornecer contexto adicional ao modelo de IA pouco antes da invocação. Observação ContextProvider é uma classe base abstrata. Você deve subclassá-lo e implementá-lo o método invocando() para criar um provedor de contexto personalizado. Idealmente, você deve também implemente os métodos invoked() e thread_created() para acompanhar a conversa o estado, mas eles são opcionais. |
| DataContent |
Representa o conteúdo de dados binários com um tipo de mídia associado (também conhecido como tipo MIME). Importante Isso é para dados binários que são representados como um URI de dados, não para recursos online. Use UriContent para recursos online. Inicializa uma instância do DataContent. Importante Isso é para dados binários que são representados como um URI de dados, não para recursos online. Use UriContent para recursos online. |
| Default |
Representação de runtime do branch padrão em um grupo de casos de alternância. O branch padrão é invocado somente quando nenhum outro predicado de caso corresponde. Na prática, é garantido que exista para que o roteamento nunca produza um destino vazio. |
| Edge |
Modele uma entrega direcionada, opcionalmente condicional, entre dois executores. Cada Borda captura os metadados mínimos necessários para mover uma mensagem de um executor para outro dentro do gráfico de fluxo de trabalho. Opcionalmente, ele inseri um predicado booliano que decide se a borda deve ser tomada em runtime. Serializando a borda para baixo para primitivos, podemos reconstruir a topologia de um fluxo de trabalho, independentemente do processo original do Python. Inicialize uma borda totalmente especificada entre dois executores de fluxo de trabalho. |
| EdgeDuplicationError |
Exceção gerada quando bordas duplicadas são detectadas no fluxo de trabalho. |
| ErrorContent |
Representa um erro. Comentários: normalmente usado para erros não fatais, em que algo deu errado como parte da operação, mas a operação ainda foi capaz de continuar. Inicializa uma instância ErrorContent. |
| Executor |
Classe base para todos os executores de fluxo de trabalho que processam mensagens e executam cálculos. Visão geralExecutores são os blocos de construção fundamentais de fluxos de trabalho, representando unidades de processamento individuais que recebem mensagens, executam operações e produzem saídas. Cada executor é identificado exclusivamente e pode lidar com tipos de mensagem específicos por meio de métodos de manipulador decorados. Sistema de TiposOs executores têm um sistema de tipo avançado que define suas funcionalidades: Tipos de entradaOs tipos de mensagens que um executor pode processar, descobertos a partir de assinaturas de método de manipulador:
Acesse por meio da propriedade input_types . Tipos de saídaOs tipos de mensagens que um executor pode enviar para outros executores por meio de ctx.send_message():
Acesse por meio da propriedade output_types . Tipos de saída de fluxo de trabalhoOs tipos de dados que um executor pode emitir como saídas no nível do fluxo de trabalho por meio de ctx.yield_output():
Acesso por meio da propriedade workflow_output_types . Descoberta de manipuladorOs executores descobrem suas funcionalidades por meio de métodos decorados: @handler DecoradorMarca os métodos que processam mensagens de entrada:
Interceptação de solicitação de sub-fluxo de trabalhoUse @handler métodos para interceptar solicitações de sub-fluxo de trabalho:
Tipos de contextoOs métodos de manipulador recebem diferentes variantes WorkflowContext com base em suas anotações de tipo: WorkflowContext (sem parâmetros de tipo)Para manipuladores que só executam efeitos colaterais sem enviar mensagens ou produzir saídas:
WorkflowContext[T_Out]Habilita o envio de mensagens do tipo T_Out via ctx.send_message():
WorkflowContext[T_Out, T_W_Out]Habilita o envio de mensagens (T_Out) e a geração de saídas de fluxo de trabalho (T_W_Out):
Executores de funçõesFunções simples podem ser convertidas em executores usando o decorador @executor :
Composição de sub-fluxo de trabalhoOs executores podem conter sub-fluxos de trabalho usando WorkflowExecutor. Os sub-fluxos de trabalho podem fazer solicitações que os fluxos de trabalho pai podem interceptar. Consulte a documentação do WorkflowExecutor para obter detalhes sobre padrões de composição de fluxo de trabalho e tratamento de solicitação/resposta. Gerenciamento de estadoOs executores podem conter estados que persistem entre execuções de fluxo de trabalho e pontos de verificação. Substitua os métodos on_checkpoint_save e on_checkpoint_restore para implementar a lógica personalizada de serialização e restauração de estado. Notas de Implementação
Inicialize o executor com um identificador exclusivo. |
| ExecutorCompletedEvent |
Evento disparado quando um manipulador executor é concluído. Inicialize o evento executor com uma ID do executor e dados opcionais. |
| ExecutorEvent |
Classe base para eventos de executor. Inicialize o evento executor com uma ID do executor e dados opcionais. |
| ExecutorFailedEvent |
Evento disparado quando um manipulador executor gera um erro. |
| ExecutorInvokedEvent |
Evento disparado quando um manipulador executor é invocado. Inicialize o evento executor com uma ID do executor e dados opcionais. |
| FanInEdgeGroup |
Represente um conjunto convergente de bordas que alimentam um único executor downstream. Os grupos de fan-in normalmente são usados quando vários estágios upstream produzem independentemente mensagens que devem chegar ao mesmo processador downstream. Crie um mapeamento de fan-in que mescla várias fontes em um único destino. |
| FanOutEdgeGroup |
Represente um grupo de borda no estilo de difusão com lógica de seleção opcional. Um fan-out encaminha uma mensagem produzida por um único executor de origem para um ou mais executores downstream. Em runtime, podemos restringir ainda mais os destinos executando uma selection_func que inspeciona o conteúdo e retorna o subconjunto de IDs que devem receber a mensagem. Crie um mapeamento de fan-out de uma única origem para muitos destinos. |
| FileCheckpointStorage |
Armazenamento de ponto de verificação baseado em arquivo para persistência. Inicialize o armazenamento de arquivos. |
| FinishReason |
Representa o motivo pelo qual uma resposta de chat foi concluída. Inicialize FinishReason com um valor. |
| FunctionApprovalRequestContent |
Representa uma solicitação de aprovação do usuário de uma chamada de função. Inicializa uma instância FunctionApprovalRequestContent. |
| FunctionApprovalResponseContent |
Representa uma resposta para a aprovação do usuário de uma chamada de função. Inicializa uma instância FunctionApprovalResponseContent. |
| FunctionCallContent |
Representa uma solicitação de chamada de função. Inicializa uma instância de FunctionCallContent. |
| FunctionExecutor |
Executor que encapsula uma função definida pelo usuário. Esse executor permite que os usuários definam funções simples (sincronizar e assíncronas) e usá-las como executores de fluxo de trabalho sem a necessidade de criar classes de executor completas. Funções síncronas são executadas em um pool de threads usando asyncio.to_thread() para evitar o bloqueio do loop de eventos. Inicialize o FunctionExecutor com uma função definida pelo usuário. |
| FunctionInvocationConfiguration |
Configuração para invocação de função em clientes de chat. Essa classe é criada automaticamente em cada cliente de chat que dá suporte à invocação de função. Isso significa que, para a maioria dos casos, você pode apenas alterar os atributos na instância, em vez de criar um novo. Inicializar FunctionInvocationConfiguration. |
| FunctionInvocationContext |
Objeto de contexto para invocações de middleware de função. Esse contexto é passado pelo pipeline de middleware de função e contém todas as informações sobre a invocação da função. Inicialize o FunctionInvocationContext. |
| FunctionMiddleware |
Classe base abstrata para middleware de função que pode interceptar invocações de função. O middleware de função permite interceptar e modificar invocações de função/ferramenta antes e depois da execução. Você pode validar argumentos, resultados de cache, invocações de log ou substituir a execução da função. Observação FunctionMiddleware é uma classe base abstrata. Você deve subclassá-lo e implementá-lo o método process() para criar middleware de função personalizado. |
| FunctionResultContent |
Representa o resultado de uma chamada de função. Inicializa uma instância de FunctionResultContent. |
| GraphConnectivityError |
Exceção gerada quando problemas de conectividade de grafo são detectados. |
| GroupChatBuilder |
Construtor de alto nível para fluxos de trabalho de chat de grupo direcionados pelo gerente com orquestração dinâmica. O GroupChat coordena conversas de vários agentes usando um gerente que seleciona qual participante fala em seguida. O gerenciador pode ser uma função Python simples (set_select_speakers_func) ou um seletor baseado em agente por meio de set_manager. Essas duas abordagens são mutuamente exclusivas. Fluxo de trabalho principal:
Padrões de seleção do locutor: Padrão 1: seleção simples baseada em função (recomendado)
Padrão 2: seleção baseada em LLM
Padrão 3: Solicitar informações para comentários no meio da conversa
Especificação do participante: Duas maneiras de especificar os participantes:
Estrutura de instantâneo de estado: O GroupChatStateSnapshot passado para set_select_speakers_func contém:
Restrições importantes:
Inicialize o GroupChatBuilder. |
| GroupChatDirective |
Instrução emitida por uma implementação do gerenciador de chat em grupo. |
| HandoffBuilder |
Construtor fluente para fluxos de trabalho de entrega conversacional com coordenador e agentes especialistas. O padrão de entrega permite que um agente coordenador encaminhe solicitações para agentes especializados. O modo de interação controla se o fluxo de trabalho solicita a entrada do usuário após cada resposta do agente ou é concluído de forma autônoma quando os agentes terminam de responder. Uma condição de encerramento determina quando o fluxo de trabalho deve parar de solicitar entrada e ser concluído. Padrões de roteamento: Single-Tier (padrão): Somente o coordenador pode entregar aos especialistas. Por padrão, depois que qualquer especialista responde, o controle retorna ao usuário para obter mais entradas. Isso cria um fluxo cíclico: usuário –> coordenador –> [especialista opcional] – usuário –>> coordenador –> ... Use with_interaction_mode("autônomo") para ignorar a solicitação de entrada adicional do usuário e gerar a conversa final quando um agente responder sem delegar. Várias camadas (avançado): Especialistas podem entregar a outros especialistas usando .add_handoff(). Isso fornece mais flexibilidade para fluxos de trabalho complexos, mas é menos controlável do que o padrão de camada única. Os usuários perdem visibilidade em tempo real em etapas intermediárias durante entregas especializadas para especialistas (embora o histórico completo de conversas, incluindo todas as entregas, seja preservado e possa ser inspecionado posteriormente). Principais recursos:
Uso (Single-Tier):
Roteamento de várias camadas com .add_handoff():
Usar fábricas de participantes para isolamento de estado: Condição de encerramento personalizada:
Verificação:
Inicialize um HandoffBuilder para criar fluxos de trabalho de entrega de conversação. O construtor começa em um estado não configurado e exige que você chame:
Os métodos de configuração opcionais permitem personalizar o gerenciamento de contexto, a lógica de término e a persistência. Observação Os participantes devem ter nomes/IDs estáveis porque o fluxo de trabalho mapeia o argumentos de ferramenta de entrega para esses identificadores. Os nomes do agente devem corresponder as cadeias de caracteres emitidas pela ferramenta de entrega do coordenador (por exemplo, uma ferramenta que saídas {"handoff_to": "cobrança"} requer um agente chamado cobrança). |
| HandoffUserInputRequest |
Solicitar mensagem emitida quando o fluxo de trabalho precisar de uma nova entrada do usuário. Observação: o campo de conversa é excluído intencionalmente da serialização do ponto de verificação para evitar a duplicação. A conversa é preservada no estado do coordenador e será reconstruída na restauração. Consulte o problema nº 2667. |
| HostedCodeInterpreterTool |
Representa uma ferramenta hospedada que pode ser especificada para um serviço de IA para habilitá-la a executar o código gerado. Essa ferramenta não implementa a interpretação de código em si. Ele serve como um marcador para informar a um serviço que ele tem permissão para executar o código gerado se o serviço for capaz de fazer isso. Inicialize o HostedCodeInterpreterTool. |
| HostedFileContent |
Representa um conteúdo de arquivo hospedado. Inicializa uma instância HostedFileContent. |
| HostedFileSearchTool |
Representa uma ferramenta de pesquisa de arquivo que pode ser especificada para um serviço de IA para habilitá-la a realizar pesquisas de arquivo. Inicialize um FileSearchTool. |
| HostedMCPSpecificApproval |
Representa o modo específico para uma ferramenta hospedada. Ao usar esse modo, o usuário deve especificar quais ferramentas sempre ou nunca exigem aprovação. Isso é representado como um dicionário com duas chaves opcionais: |
| HostedMCPTool |
Representa uma ferramenta MCP gerenciada e executada pelo serviço. Crie uma ferramenta MCP hospedada. |
| HostedVectorStoreContent |
Representa um conteúdo do repositório de vetores hospedado. Inicializa uma instância HostedVectorStoreContent. |
| HostedWebSearchTool |
Representa uma ferramenta de pesquisa na Web que pode ser especificada para um serviço de IA para habilitá-la a realizar pesquisas na Web. Inicialize um HostedWebSearchTool. |
| InMemoryCheckpointStorage |
Armazenamento de ponto de verificação na memória para teste e desenvolvimento. Inicialize o armazenamento de memória. |
| InProcRunnerContext |
Contexto de execução em processo para execução local e ponto de verificação opcional. Inicialize o contexto de execução em processo. |
| MCPStdioTool |
Ferramenta MCP para se conectar a servidores MCP baseados em stdio. Essa classe se conecta a servidores MCP que se comunicam por meio de entrada/saída padrão, normalmente usados para processos locais. Inicialize a ferramenta de stdio MCP. Observação Os argumentos são usados para criar um objeto StdioServerParameters, que é então usado para criar um cliente stdio. Consulte mcp.client.stdio.stdio_client e mcp.client.stdio.stdio_server_parameters para obter mais detalhes. |
| MCPStreamableHTTPTool |
Ferramenta MCP para se conectar a servidores MCP baseados em HTTP. Essa classe se conecta a servidores MCP que se comunicam por meio de HTTP/SSE que podem ser transmitidos. Inicialize a ferramenta HTTP transmitivel do MCP. Observação Os argumentos são usados para criar um cliente HTTP que pode ser transmitido. Consulte mcp.client.streamable_http.streamablehttp_client para obter mais detalhes. Quaisquer argumentos extras passados para o construtor serão passados para o Construtor de cliente HTTP que pode ser transmitido. |
| MCPWebsocketTool |
Ferramenta MCP para se conectar a servidores MCP baseados em WebSocket. Essa classe se conecta a servidores MCP que se comunicam por meio do WebSocket. Inicialize a ferramenta WebSocket do MCP. Observação Os argumentos são usados para criar um cliente WebSocket. Consulte mcp.client.websocket.websocket_client para obter mais detalhes. Quaisquer argumentos extras passados para o construtor serão passados para o Construtor de cliente WebSocket. |
| MagenticBuilder |
Construtor fluente para criar fluxos de trabalho de orquestração de vários agentes do Magentic One. Os fluxos de trabalho do Magentic One usam um gerenciador habilitado para LLM para coordenar vários agentes por meio de planejamento dinâmico de tarefas, acompanhamento de progresso e replanificação adaptável. O gerente cria planos, seleciona agentes, monitora o progresso e determina quando replanexar ou concluir. O construtor fornece uma API fluente para configurar participantes, o gerente, revisão de plano opcional, ponto de verificação e retornos de chamada de evento. Suporte humano no loop: o Magentic fornece mecanismos HITL especializados por meio de:
Eles emitem eventos MagenticHumanInterventionRequest que fornecem opções de decisão estruturadas (APPROVE, REVISE, CONTINUE, REPLAN, GUIDANCE) apropriadas para a orquestração baseada em planejamento da Magentic. Uso:
Com o gerenciador personalizado:
|
| MagenticContext |
Contexto para o gerente do Magentic. |
| MagenticManagerBase |
Classe base para o gerente do Magentic One. |
| ManagerDirectiveModel |
Modelo pedante para saída de diretiva do gerenciador estruturado. Crie um novo modelo analisando e validando dados de entrada de argumentos de palavra-chave. Raises [ValidationError][pydantic_core. ValidationError] se os dados de entrada não puderem ser validados para formar um modelo válido. self é explicitamente posicional somente para permitir a si mesmo como um nome de campo. |
| ManagerSelectionRequest |
Solicitação enviada ao agente do gerente para a próxima seleção de alto-falante. Essa classe de dados empacota o estado completo da conversa e o contexto da tarefa para o agente do gerente analisar e tomar uma decisão de seleção do locutor. |
| ManagerSelectionResponse |
Resposta do agente do gerente com a decisão de seleção do locutor. O agente do gerente deve produzir essa estrutura (ou dicto compatível/JSON) para comunicar sua decisão de volta ao orquestrador. Crie um novo modelo analisando e validando dados de entrada de argumentos de palavra-chave. Raises [ValidationError][pydantic_core. ValidationError] se os dados de entrada não puderem ser validados para formar um modelo válido. self é explicitamente posicional somente para permitir a si mesmo como um nome de campo. |
| Message |
Uma classe que representa uma mensagem no fluxo de trabalho. |
| OrchestrationState |
Contêiner de estado unificado para o ponto de verificação do orquestrador. Essa classe de dados padroniza a serialização de ponto de verificação em todos os três padrões de chat de grupo, permitindo extensões específicas de padrão por meio de metadados. Atributos comuns abrangem preocupações de orquestração compartilhada (tarefa, conversa, acompanhamento redondo). O estado específico do padrão vai no ditado de metadados. |
| RequestInfoEvent |
Evento disparado quando um executor de fluxo de trabalho solicita informações externas. Inicialize o evento de informações de solicitação. |
| RequestInfoInterceptor |
Executor interno que pausa o fluxo de trabalho para entrada humana antes da execução do agente. Esse executor é inserido no grafo de fluxo de trabalho pelos construtores quando .with_request_info() é chamado. Ele intercepta mensagens AgentExecutorRequest ANTES que o agente seja executado e pausa o fluxo de trabalho por meio de ctx.request_info() com um AgentInputRequest. Quando uma resposta é recebida, o manipulador de resposta injeta a entrada como uma mensagem de usuário na conversa e encaminha a solicitação para o agente. O parâmetro agent_filter opcional permite limitar quais agentes disparam a pausa. Se a ID do agente de destino não estiver no conjunto de filtros, a solicitação será encaminhada sem pausar. Inicialize o executor do interceptador de informações de solicitação. |
| Role |
Descreve a finalidade pretendida de uma mensagem dentro de uma interação de chat. Propriedades: SYSTEM: a função que instrui ou define o comportamento do sistema de IA. USUÁRIO: A função que fornece entrada do usuário para interações de chat. ASSISTENTE: A função que fornece respostas para entradas orientadas pelo sistema e solicitadas pelo usuário. FERRAMENTA: A função que fornece informações e referências adicionais em resposta às solicitações de uso da ferramenta. Inicializar função com um valor. |
| Runner |
Uma classe para executar um fluxo de trabalho em superespas pregel. Inicialize o executor com bordas, estado compartilhado e contexto. |
| RunnerContext |
Protocolo para o contexto de execução usado pelo executor. Um único contexto que dá suporte a mensagens, eventos e pontos de verificação opcionais. Se o armazenamento de ponto de verificação não estiver configurado, os métodos de ponto de verificação poderão ser gerados. |
| SequentialBuilder |
Construtor de alto nível para fluxos de trabalho sequenciais de agente/executor com contexto compartilhado.
Uso:
|
| SharedState |
Uma classe para gerenciar o estado compartilhado em um fluxo de trabalho. SharedState fornece acesso thread-safe aos dados de estado do fluxo de trabalho que precisam ser compartilhados entre executores durante a execução do fluxo de trabalho. Chaves Reservadas: as seguintes chaves são reservadas para uso interno da estrutura e não devem ser modificadas pelo código do usuário:
Aviso Não use chaves começando com sublinhado (_) pois elas podem ser reservadas para operações da estrutura interna. Inicialize o estado compartilhado. |
| SingleEdgeGroup |
Wrapper de conveniência para uma borda solitária, mantendo o uniforme da API de grupo. Crie um grupo de borda um-para-um entre dois executores. |
| StandardMagenticManager |
Gerenciador magêntico padrão que executa chamadas LLM reais por meio de um ChatAgent. O gerente constrói prompts que espelham a orquestração do Magentic One original:
Inicialize o Gerenciador Magnético Padrão. |
| SubWorkflowRequestMessage |
Mensagem enviada de um sub-fluxo de trabalho para um executor no fluxo de trabalho pai para solicitar informações. Essa mensagem encapsula um RequestInfoEvent emitido pelo executor no sub-fluxo de trabalho. |
| SubWorkflowResponseMessage |
Mensagem enviada de um fluxo de trabalho pai para um sub-fluxo de trabalho por meio de WorkflowExecutor para fornecer informações solicitadas. Essa mensagem encapsula os dados de resposta junto com o RequestInfoEvent original emitido pelo executor de sub-fluxo de trabalho. |
| SuperStepCompletedEvent |
Evento disparado quando um superstep termina. Inicialize o evento superstep. |
| SuperStepStartedEvent |
Evento disparado quando um superstep é iniciado. Inicialize o evento superstep. |
| SwitchCaseEdgeGroup |
Variante do fan-out que imita um fluxo de controle de comutador/caso tradicional. Cada caso inspeciona o conteúdo da mensagem e decide se ele deve lidar com a mensagem. Exatamente um caso ou o branch padrão retorna um destino em runtime, preservando a semântica de expedição única. Configure uma estrutura de roteamento switch/case para um único executor de origem. |
| SwitchCaseEdgeGroupCase |
Descrição persistente de um único branch condicional em um caso de alternância. Ao contrário do objeto Case do runtime, essa variante serializável armazena apenas o identificador de destino e um nome descritivo para o predicado. Quando o callable subjacente está indisponível durante a desserialização, substituimos um espaço reservado de proxy que falha alto, garantindo que a dependência ausente seja imediatamente visível. Registre os metadados de roteamento para um branch de caso condicional. |
| SwitchCaseEdgeGroupDefault |
Descritor persistente para o branch de fallback de um grupo de maiúsculas e minúsculas. O branch padrão tem a garantia de existir e é invocado quando todos os outros casos de predicado não correspondem ao conteúdo. Aponte o branch padrão para o identificador de executor especificado. |
| TextContent |
Representa o conteúdo do texto em um chat. Inicializa uma instância textContent. |
| TextReasoningContent |
Representa o conteúdo do raciocínio de texto em um chat. Comentários: essa classe e TextContent são superficialmente semelhantes, mas distintas. Inicializa uma instância textReasoningContent. |
| TextSpanRegion |
Representa uma região de texto que foi anotada. Inicializar TextSpanRegion. |
| ToolMode |
Define se e como as ferramentas são usadas em uma solicitação de chat. Inicializar ToolMode. |
| ToolProtocol |
Representa uma ferramenta genérica. Esse protocolo define a interface que todas as ferramentas devem implementar para serem compatíveis com a estrutura do agente. Ele é implementado por várias classes de ferramentas, como HostedMCPTool, HostedWebSearchTool e AIFunction. Uma AIFunction geralmente é criada pelo decorador de ai_function . Como cada conector precisa analisar as ferramentas de forma diferente, os usuários podem passar um ditado para especificar uma ferramenta específica do serviço quando nenhuma abstração estiver disponível. |
| TypeCompatibilityError |
Exceção gerada quando a incompatibilidade de tipos é detectada entre executores conectados. |
| UriContent |
Representa um conteúdo de URI. Importante Isso é usado para conteúdo identificado por um URI, como uma imagem ou um arquivo. Para URIs de dados (binários), use DataContent. Inicializa uma instância de UriContent. Comentários: isso é usado para conteúdo identificado por um URI, como uma imagem ou um arquivo. Para URIs de dados (binários), use DataContent . |
| UsageContent |
Representa as informações de uso associadas a uma solicitação de chat e resposta. Inicializa uma instância UsageContent. |
| UsageDetails |
Fornece detalhes de uso sobre uma solicitação/resposta. Inicializa a instância UsageDetails. |
| Workflow |
Um mecanismo de execução baseado em grafo que orquestra executores conectados. Visão geralUm fluxo de trabalho executa um grafo direcionado de executores conectados por meio de grupos de borda usando um modelo semelhante a Pregel, em execução em supersteps até que o grafo fique ocioso. Fluxos de trabalho são criados usando a classe WorkflowBuilder – não instancie essa classe diretamente. Modelo de execuçãoOs executores são executados em superespas sincronizadas em que cada executor:
As mensagens entre executores são entregues no final de cada superestar e não são visíveis no fluxo de eventos. Somente eventos no nível do fluxo de trabalho (saídas, eventos personalizados) e eventos de status são observáveis aos chamadores. Tipos de entrada/saídaOs tipos de fluxo de trabalho são descobertos em runtime inspecionando:
Métodos de execuçãoO fluxo de trabalho fornece duas APIs de execução primária, cada uma com suporte para vários cenários:
Ambos os métodos dão suporte a:
Gerenciamento de estadoAs instâncias de fluxo de trabalho contêm estados e estados são preservados entre chamadas a serem executadas e run_stream. Para executar várias execuções independentes, crie instâncias de fluxo de trabalho separadas por meio do WorkflowBuilder. Solicitações de entrada externasExecutores em um fluxo de trabalho podem solicitar entrada externa usando ctx.request_info():
Definindo o ponto de verificaçãoO ponto de verificação pode ser configurado em tempo de build ou em runtime: Tempo de build (via WorkflowBuilder): fluxo de trabalho = WorkflowBuilder().with_checkpointing(storage).build() Runtime (por meio de parâmetros de execução/run_stream): resultado = await workflow.run(message, checkpoint_storage=runtime_storage) Quando habilitados, os pontos de verificação são criados no final de cada superestar, capturando:
ComposiçãoOs fluxos de trabalho podem ser aninhados usando WorkflowExecutor, que encapsula um fluxo de trabalho filho como executor. Os tipos de entrada/saída do fluxo de trabalho aninhado tornam-se parte dos tipos do WorkflowExecutor. Quando invocado, o WorkflowExecutor executa o fluxo de trabalho aninhado para conclusão e processa suas saídas. Inicialize o fluxo de trabalho com uma lista de bordas. |
| WorkflowAgent |
Uma subclasse agent que encapsula um fluxo de trabalho e o expõe como um agente. Inicialize o WorkflowAgent. |
| WorkflowBuilder |
Uma classe de construtor para construir fluxos de trabalho. Essa classe fornece uma API fluente para definir grafos de fluxo de trabalho conectando executores com bordas e configurando parâmetros de execução. Chame build para criar uma instância imutável Workflow . Inicialize o WorkflowBuilder com uma lista vazia de bordas e nenhum executor inicial. |
| WorkflowCheckpoint |
Representa um ponto de verificação completo do estado do fluxo de trabalho. Os pontos de verificação capturam o estado de execução completo de um fluxo de trabalho em um ponto específico, permitindo que os fluxos de trabalho sejam pausados e retomados. Observação O ditado shared_state pode conter chaves reservadas gerenciadas pela estrutura. Consulte a documentação da classe SharedState para obter detalhes sobre chaves reservadas. |
| WorkflowCheckpointSummary |
Resumo legível por humanos de um ponto de verificação de fluxo de trabalho. |
| WorkflowContext |
Contexto de execução que permite que os executores interajam com fluxos de trabalho e outros executores. Visão geralWorkflowContext fornece uma interface controlada para executores enviarem mensagens, produzirem saídas, gerenciarem o estado e interagirem com o ecossistema de fluxo de trabalho mais amplo. Ele impõe a segurança do tipo por meio de parâmetros genéricos, impedindo o acesso direto a componentes de runtime internos. Parâmetros de tipoO contexto é parametrizado para impor a segurança do tipo para operações diferentes: WorkflowContext (sem parâmetros)Para executores que só executam efeitos colaterais sem enviar mensagens ou produzir saídas:
WorkflowContext[T_Out]Habilita o envio de mensagens do tipo T_Out para outros executores:
WorkflowContext[T_Out, T_W_Out]Habilita o envio de mensagens (T_Out) e a geração de saídas de fluxo de trabalho (T_W_Out):
Tipos de uniãoVários tipos podem ser especificados usando notação de união:
Inicialize o contexto do executor com o contexto de fluxo de trabalho fornecido. |
| WorkflowErrorDetails |
Informações de erro estruturadas a serem exibidas em eventos/resultados de erro. |
| WorkflowEvent |
Classe base para eventos de fluxo de trabalho. Inicialize o evento de fluxo de trabalho com dados opcionais. |
| WorkflowExecutor |
Um executor que encapsula um fluxo de trabalho para habilitar a composição de fluxo de trabalho hierárquica. Visão geralWorkflowExecutor faz com que um fluxo de trabalho se comporte como um único executor dentro de um fluxo de trabalho pai, habilitando arquiteturas de fluxo de trabalho aninhadas. Ele lida com o ciclo de vida completo da execução de fluxo de trabalho, incluindo processamento de eventos, encaminhamento de saída e coordenação de solicitação/resposta entre fluxos de trabalho pai e filho. Modelo de execuçãoQuando invocado, WorkflowExecutor:
Processamento de fluxo de eventosWorkflowExecutor processa eventos após a conclusão do fluxo de trabalho: Encaminhamento de saídaTodas as saídas do subconsulta são encaminhadas automaticamente para o pai: Quando allow_direct_output é False (padrão):
Quando allow_direct_output for True:Coordenação de solicitação/respostaQuando os sub-fluxos de trabalho precisam de informações externas:
Gerenciamento de estadoWorkflowExecutor mantém o estado de execução entre ciclos de solicitação/resposta:
Tipo de Integração do SistemaWorkflowExecutor herda sua assinatura de tipo do fluxo de trabalho encapsulado: Tipos de entradaCorresponde aos tipos de entrada do executor inicial do fluxo de trabalho encapsulado:
Tipos de saídaCombina saídas de sub-fluxo de trabalho com tipos de coordenação de solicitação:
Tratamento de errosWorkflowExecutor propaga falhas de sub-fluxo de trabalho:
Suporte à execução simultâneaO WorkflowExecutor dá suporte total a várias execuções simultâneas de sub-fluxo de trabalho: Isolamento de estado Per-ExecutionCada invocação de sub-fluxo de trabalho cria um ExecutionContext isolado:
Coordenação de solicitação/respostaAs respostas são roteadas corretamente para a execução de origem:
Gerenciamento de memória
Considerações importantesInstância de Fluxo de Trabalho Compartilhado: todas as execuções simultâneas usam a mesma instância de fluxo de trabalho subjacente. Para isolamento adequado, verifique se o fluxo de trabalho encapsulado e seus executores estão sem estado.
Integração com fluxos de trabalho paiOs fluxos de trabalho pai podem interceptar solicitações de sub-fluxo de trabalho: Notas de Implementação
Inicialize o WorkflowExecutor. |
| WorkflowFailedEvent |
Evento de ciclo de vida interno emitido quando uma execução de fluxo de trabalho termina com um erro. |
| WorkflowOutputEvent |
Evento disparado quando um executor de fluxo de trabalho gera saída. Inicialize o evento de saída do fluxo de trabalho. |
| WorkflowRunResult |
Contêiner para eventos gerados durante a execução de fluxo de trabalho sem streaming. Visão geralRepresenta os resultados de execução completos de uma execução de fluxo de trabalho, contendo todos os eventos gerados do estado inicial ao ocioso. Os fluxos de trabalho produzem saídas incrementalmente por meio de chamadas ctx.yield_output() durante a execução. Estrutura de eventosMantém a separação entre eventos do plano de dados e do plano de controle:
Métodos de chave
|
| WorkflowStartedEvent |
Evento de ciclo de vida interno emitido quando uma execução de fluxo de trabalho começa. Inicialize o evento de fluxo de trabalho com dados opcionais. |
| WorkflowStatusEvent |
Evento de ciclo de vida interno emitido para transições de estado de execução de fluxo de trabalho. Inicialize o evento de status do fluxo de trabalho com um novo estado e dados opcionais. |
| WorkflowValidationError |
Exceção base para erros de validação de fluxo de trabalho. |
| WorkflowViz |
Uma classe para visualizar fluxos de trabalho usando graphviz e Sereia. Inicialize o WorkflowViz com um fluxo de trabalho. |
Enumerações
| MagenticHumanInterventionDecision |
Opções de decisão para respostas de intervenção humana. |
| MagenticHumanInterventionKind |
O tipo de intervenção humana que está sendo solicitada. |
| ValidationTypeEnum |
Enumeração de tipos de validação de fluxo de trabalho. |
| WorkflowEventSource |
Identifica se um evento de fluxo de trabalho veio da estrutura ou de um executor. Use o FRAMEWORK para eventos emitidos por caminhos de orquestração internos, mesmo quando o código que os gera vidas em módulos relacionados a executores, e EXECUTOR para eventos exibidos por implementações de executor fornecidas pelo desenvolvedor. |
| WorkflowRunState |
Estado em nível de execução de uma execução de fluxo de trabalho. Semântica:
|
Funções
agent_middleware
Decorador para marcar uma função como middleware do agente.
Esse decorador identifica explicitamente uma função como middleware de agente, que processa objetos AgentRunContext.
agent_middleware(func: Callable[[AgentRunContext, Callable[[AgentRunContext], Awaitable[None]]], Awaitable[None]]) -> Callable[[AgentRunContext, Callable[[AgentRunContext], Awaitable[None]]], Awaitable[None]]
Parâmetros
| Nome | Description |
|---|---|
|
func
Obrigatório
|
A função de middleware para marcar como middleware do agente. |
Retornos
| Tipo | Description |
|---|---|
|
A mesma função com o marcador de middleware do agente. |
Exemplos
from agent_framework import agent_middleware, AgentRunContext, ChatAgent
@agent_middleware
async def logging_middleware(context: AgentRunContext, next):
print(f"Before: {context.agent.name}")
await next(context)
print(f"After: {context.result}")
# Use with an agent
agent = ChatAgent(chat_client=client, name="assistant", middleware=logging_middleware)
ai_function
Decore uma função para transformá-la em uma AIFunction que pode ser passada para modelos e executada automaticamente.
Esse decorador cria um modelo Pydantic a partir da assinatura da função, que será usado para validar os argumentos passados para a função e para gerar o esquema JSON para os parâmetros da função.
Para adicionar descrições aos parâmetros, use o Annotated tipo com uma descrição de cadeia de typing caracteres como o segundo argumento. Você também pode usar a classe Pydantic Field para uma configuração mais avançada.
Observação
Quando approval_mode for definido como "always_require", a função não será executada
até que a aprovação explícita seja dada, isso só se aplica ao fluxo de invocação automática.
Também é importante observar que, se o modelo retornar várias chamadas de função, algumas que exigem aprovação
e outros que não o fizerem, ele pedirá aprovação para todos eles.
ai_function(func: Callable[[...], ReturnT | Awaitable[ReturnT]] | None = None, *, name: str | None = None, description: str | None = None, approval_mode: Literal['always_require', 'never_require'] | None = None, max_invocations: int | None = None, max_invocation_exceptions: int | None = None, additional_properties: dict[str, Any] | None = None) -> AIFunction[Any, ReturnT] | Callable[[Callable[[...], ReturnT | Awaitable[ReturnT]]], AIFunction[Any, ReturnT]]
Parâmetros
| Nome | Description |
|---|---|
|
func
|
Callable[[...], <xref:agent_framework._tools.ReturnT> | Awaitable[<xref:agent_framework._tools.ReturnT>]] | None
A função a ser decorada. Valor padrão: None
|
|
name
Obrigatório
|
|
|
description
Obrigatório
|
|
|
approval_mode
Obrigatório
|
Literal['always_require', 'never_require'] | None
|
|
max_invocations
Obrigatório
|
|
|
max_invocation_exceptions
Obrigatório
|
|
|
additional_properties
Obrigatório
|
|
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
name
|
O nome da função. Se não for fornecido, o atributo da Valor padrão: None
|
|
description
|
Uma descrição da função. Se não for fornecido, o docstring da função será usado. Valor padrão: None
|
|
approval_mode
|
Se a aprovação é necessária ou não para executar essa ferramenta. O padrão é que a aprovação não é necessária. Valor padrão: None
|
|
max_invocations
|
O número máximo de vezes que essa função pode ser invocada. Se Nenhum, não há limite, deve ser pelo menos 1. Valor padrão: None
|
|
max_invocation_exceptions
|
O número máximo de exceções permitidas durante invocações. Se Nenhum, não há limite, deve ser pelo menos 1. Valor padrão: None
|
|
additional_properties
|
Propriedades adicionais a serem definidas na função. Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
AIFunction[Any, <xref:agent_framework._tools.ReturnT>] | Callable[[Callable[[…], <xref:agent_framework._tools.ReturnT> | Awaitable[<xref:agent_framework._tools.ReturnT>]]], AIFunction[Any, <xref:agent_framework._tools.ReturnT>]]
|
Exemplos
from agent_framework import ai_function
from typing import Annotated
@ai_function
def ai_function_example(
arg1: Annotated[str, "The first argument"],
arg2: Annotated[int, "The second argument"],
) -> str:
# An example function that takes two arguments and returns a string.
return f"arg1: {arg1}, arg2: {arg2}"
# the same function but with approval required to run
@ai_function(approval_mode="always_require")
def ai_function_example(
arg1: Annotated[str, "The first argument"],
arg2: Annotated[int, "The second argument"],
) -> str:
# An example function that takes two arguments and returns a string.
return f"arg1: {arg1}, arg2: {arg2}"
# With custom name and description
@ai_function(name="custom_weather", description="Custom weather function")
def another_weather_func(location: str) -> str:
return f"Weather in {location}"
# Async functions are also supported
@ai_function
async def async_get_weather(location: str) -> str:
'''Get weather asynchronously.'''
# Simulate async operation
return f"Weather in {location}"
chat_middleware
Decorador para marcar uma função como middleware de chat.
Esse decorador identifica explicitamente uma função como middleware de chat, que processa objetos ChatContext.
chat_middleware(func: Callable[[ChatContext, Callable[[ChatContext], Awaitable[None]]], Awaitable[None]]) -> Callable[[ChatContext, Callable[[ChatContext], Awaitable[None]]], Awaitable[None]]
Parâmetros
| Nome | Description |
|---|---|
|
func
Obrigatório
|
A função middleware a ser marcado como middleware de chat. |
Retornos
| Tipo | Description |
|---|---|
|
A mesma função com o marcador de middleware de chat. |
Exemplos
from agent_framework import chat_middleware, ChatContext, ChatAgent
@chat_middleware
async def logging_middleware(context: ChatContext, next):
print(f"Messages: {len(context.messages)}")
await next(context)
print(f"Response: {context.result}")
# Use with an agent
agent = ChatAgent(chat_client=client, name="assistant", middleware=logging_middleware)
create_edge_runner
Função de fábrica para criar o executor de borda apropriado para um grupo de borda.
create_edge_runner(edge_group: EdgeGroup, executors: dict[str, Executor]) -> EdgeRunner
Parâmetros
| Nome | Description |
|---|---|
|
edge_group
Obrigatório
|
<xref:agent_framework._workflows._edge.EdgeGroup>
O grupo de borda para o qual criar um executor. |
|
executors
Obrigatório
|
Mapa de IDs do executor para instâncias de executor. |
Retornos
| Tipo | Description |
|---|---|
|
<xref:agent_framework._workflows._edge_runner.EdgeRunner>
|
A instância apropriada do EdgeRunner. |
executor
Decorador que converte uma função autônoma em uma instância do FunctionExecutor.
O @executor decorador foi projetado apenas para funções autônomas no nível do módulo. Para executores baseados em classe, use a classe base Executor com @handler métodos de instância.
Dá suporte a funções síncronas e assíncronas. Funções síncronas são executadas em um pool de threads para evitar o bloqueio do loop de eventos.
Importante
Usar @executor para funções autônomas (funções locais ou no nível do módulo)
Não usar @executor com staticmethod ou classmethod
Para executores baseados em classe, executor de subclasse e uso @handler em métodos de instância
Uso:
# Standalone async function (RECOMMENDED):
@executor(id="upper_case")
async def to_upper(text: str, ctx: WorkflowContext[str]):
await ctx.send_message(text.upper())
# Standalone sync function (runs in thread pool):
@executor
def process_data(data: str):
return data.upper()
# For class-based executors, use @handler instead:
class MyExecutor(Executor):
def __init__(self):
super().__init__(id="my_executor")
@handler
async def process(self, data: str, ctx: WorkflowContext[str]):
await ctx.send_message(data.upper())
executor(func: Callable[[...], Any] | None = None, *, id: str | None = None) -> Callable[[Callable[[...], Any]], FunctionExecutor] | FunctionExecutor
Parâmetros
| Nome | Description |
|---|---|
|
func
|
A função a ser decorada (quando usada sem parênteses) Valor padrão: None
|
|
id
Obrigatório
|
ID personalizada opcional para o executor. Se Nenhum, usará o nome da função. |
Parâmetros somente de palavra-chave
| Nome | Description |
|---|---|
|
id
|
Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
Uma instância do FunctionExecutor que pode ser conectada a um fluxo de trabalho. |
Exceções
| Tipo | Description |
|---|---|
|
Se usado com staticmethod ou classmethod (padrão sem suporte) |
function_middleware
Decorador para marcar uma função como middleware de função.
Esse decorador identifica explicitamente uma função como middleware de função, que processa objetos FunctionInvocationContext.
function_middleware(func: Callable[[FunctionInvocationContext, Callable[[FunctionInvocationContext], Awaitable[None]]], Awaitable[None]]) -> Callable[[FunctionInvocationContext, Callable[[FunctionInvocationContext], Awaitable[None]]], Awaitable[None]]
Parâmetros
| Nome | Description |
|---|---|
|
func
Obrigatório
|
Callable[[FunctionInvocationContext, Callable[[FunctionInvocationContext], Awaitable[None]]], Awaitable[None]]
A função middleware a ser marcado como middleware de função. |
Retornos
| Tipo | Description |
|---|---|
|
A mesma função com o marcador de middleware de função. |
Exemplos
from agent_framework import function_middleware, FunctionInvocationContext, ChatAgent
@function_middleware
async def logging_middleware(context: FunctionInvocationContext, next):
print(f"Calling: {context.function.name}")
await next(context)
print(f"Result: {context.result}")
# Use with an agent
agent = ChatAgent(chat_client=client, name="assistant", middleware=logging_middleware)
get_checkpoint_summary
get_checkpoint_summary(checkpoint: WorkflowCheckpoint) -> WorkflowCheckpointSummary
Parâmetros
| Nome | Description |
|---|---|
|
checkpoint
Obrigatório
|
|
Retornos
| Tipo | Description |
|---|---|
get_logger
Obtenha um agente com o nome especificado, padrão para 'agent_framework'.
get_logger(name: str = 'agent_framework') -> Logger
Parâmetros
| Nome | Description |
|---|---|
|
name
|
O nome do agente. O padrão é "agent_framework". Valor padrão: "agent_framework"
|
Retornos
| Tipo | Description |
|---|---|
|
A instância do agente configurada. |
handler
Decorador para registrar um manipulador para um executor.
handler(func: Callable[[ExecutorT, Any, ContextT], Awaitable[Any]]) -> Callable[[ExecutorT, Any, ContextT], Awaitable[Any]]
Parâmetros
| Nome | Description |
|---|---|
|
func
Obrigatório
|
Callable[[<xref:agent_framework._workflows._executor.ExecutorT>, Any, <xref:agent_framework._workflows._executor.ContextT>], Awaitable[Any]]
A função a ser decorada. Pode ser Nenhum quando usado sem parâmetros. |
Retornos
| Tipo | Description |
|---|---|
|
A função decorada com metadados do manipulador. |
Exemplos
@handler async def handle_string(self, message: str, ctx: WorkflowContext[str]) -> None:
...
@handler async def handle_data(self, message: dict, ctx: WorkflowContext[str | int]) -> Nenhum:
...
prepare_function_call_results
Prepare os valores dos resultados da chamada de função.
prepare_function_call_results(content: TextContent | DataContent | TextReasoningContent | UriContent | FunctionCallContent | FunctionResultContent | ErrorContent | UsageContent | HostedFileContent | HostedVectorStoreContent | FunctionApprovalRequestContent | FunctionApprovalResponseContent | Any | list[TextContent | DataContent | TextReasoningContent | UriContent | FunctionCallContent | FunctionResultContent | ErrorContent | UsageContent | HostedFileContent | HostedVectorStoreContent | FunctionApprovalRequestContent | FunctionApprovalResponseContent | Any]) -> str
Parâmetros
| Nome | Description |
|---|---|
|
content
Obrigatório
|
TextContent | DataContent | TextReasoningContent | UriContent | FunctionCallContent | FunctionResultContent | ErrorContent | UsageContent | HostedFileContent | HostedVectorStoreContent | FunctionApprovalRequestContent | FunctionApprovalResponseContent | Any | list[TextContent | DataContent | TextReasoningContent | UriContent | FunctionCallContent | FunctionResultContent | ErrorContent | UsageContent | HostedFileContent | HostedVectorStoreContent | FunctionApprovalRequestContent | FunctionApprovalResponseContent | Any]
|
Retornos
| Tipo | Description |
|---|---|
prepend_agent_framework_to_user_agent
Prepend "agent-framework" to the User-Agent in the headers.
Quando a telemetria do agente do usuário é desabilitada por meio da AGENT_FRAMEWORK_USER_AGENT_DISABLED variável de ambiente, o cabeçalho User-Agent não incluirá as informações da estrutura do agente.
Ele será enviado de volta como está ou como um ditado vazio quando Nenhum for passado.
prepend_agent_framework_to_user_agent(headers: dict[str, Any] | None = None) -> dict[str, Any]
Parâmetros
| Nome | Description |
|---|---|
|
headers
|
O dicionário de cabeçalhos existente. Valor padrão: None
|
Retornos
| Tipo | Description |
|---|---|
|
Um novo ditado com "User-Agent" definido como "agent-framework-python/{version}" se os cabeçalhos forem Nenhum. O dicionário de cabeçalhos modificado com "agent-framework-python/{version}" anexado ao User-Agent. |
Exemplos
from agent_framework import prepend_agent_framework_to_user_agent
# Add agent-framework to new headers
headers = prepend_agent_framework_to_user_agent()
print(headers["User-Agent"]) # "agent-framework-python/0.1.0"
# Prepend to existing headers
existing = {"User-Agent": "my-app/1.0"}
headers = prepend_agent_framework_to_user_agent(existing)
print(headers["User-Agent"]) # "agent-framework-python/0.1.0 my-app/1.0"
response_handler
Decorador para registrar um manipulador para lidar com as respostas de uma solicitação.
response_handler(func: Callable[[ExecutorT, Any, Any, ContextT], Awaitable[None]]) -> Callable[[ExecutorT, Any, Any, ContextT], Awaitable[None]]
Parâmetros
| Nome | Description |
|---|---|
|
func
Obrigatório
|
Callable[[<xref:agent_framework._workflows._request_info_mixin.ExecutorT>, Any, Any, <xref:agent_framework._workflows._request_info_mixin.ContextT>], Awaitable[None]]
A função a ser decorada. |
Retornos
| Tipo | Description |
|---|---|
|
A função decorada com metadados do manipulador. |
Exemplos
@handler
async def run(self, message: int, context: WorkflowContext[str]) -> None:
# Example of a handler that sends a request
...
# Send a request with a `CustomRequest` payload and expect a `str` response.
await context.request_info(CustomRequest(...), str)
@response_handler
async def handle_response(
self,
original_request: CustomRequest,
response: str,
context: WorkflowContext[str],
) -> None:
# Example of a response handler for the above request
...
@response_handler
async def handle_response(
self,
original_request: CustomRequest,
response: dict,
context: WorkflowContext[int],
) -> None:
# Example of a response handler for a request expecting a dict response
...
setup_logging
Configure a configuração de log para a estrutura do agente.
setup_logging() -> None
Retornos
| Tipo | Description |
|---|---|
use_agent_middleware
Decorador de classe que adiciona suporte a middleware a uma classe de agente.
Esse decorador adiciona funcionalidade de middleware a qualquer classe de agente.
Ele encapsula os run() métodos e run_stream() os métodos para fornecer a execução do middleware.
A execução do middleware pode ser encerrada a qualquer momento definindo a context.terminate propriedade como True. Uma vez definido, o pipeline interromperá a execução de mais middleware assim que o controle retornar ao pipeline.
Observação
Esse decorador já é aplicado a classes de agente internas. Você só precisa usar
se você estiver criando implementações de agente personalizado.
use_agent_middleware(agent_class: type[TAgent]) -> type[TAgent]
Parâmetros
| Nome | Description |
|---|---|
|
agent_class
Obrigatório
|
type[<xref:TAgent>]
A classe de agente à qual adicionar suporte a middleware. |
Retornos
| Tipo | Description |
|---|---|
|
type[~<xref:TAgent>]
|
A classe de agente modificada com suporte a middleware. |
Exemplos
from agent_framework import use_agent_middleware
@use_agent_middleware
class CustomAgent:
async def run(self, messages, **kwargs):
# Agent implementation
pass
async def run_stream(self, messages, **kwargs):
# Streaming implementation
pass
use_chat_middleware
Decorador de classe que adiciona suporte a middleware a uma classe de cliente de chat.
Este decorador adiciona funcionalidade de middleware a qualquer classe de cliente de chat.
Ele encapsula os get_response() métodos e get_streaming_response() os métodos para fornecer a execução do middleware.
Observação
Esse decorador já é aplicado a classes de cliente de chat internas. Você só precisa usar
se você estiver criando implementações personalizadas do cliente de chat.
use_chat_middleware(chat_client_class: type[TChatClient]) -> type[TChatClient]
Parâmetros
| Nome | Description |
|---|---|
|
chat_client_class
Obrigatório
|
type[<xref:TChatClient>]
A classe de cliente de chat à qual adicionar suporte a middleware. |
Retornos
| Tipo | Description |
|---|---|
|
type[~<xref:TChatClient>]
|
A classe de cliente de chat modificada com suporte a middleware. |
Exemplos
from agent_framework import use_chat_middleware
@use_chat_middleware
class CustomChatClient:
async def get_response(self, messages, **kwargs):
# Chat client implementation
pass
async def get_streaming_response(self, messages, **kwargs):
# Streaming implementation
pass
use_function_invocation
Decorador de classe que habilita a ferramenta de chamada para um cliente de chat.
Esse decorador encapsula os métodos e get_response os get_streaming_response métodos para lidar automaticamente com chamadas de função do modelo, executá-las e retornar os resultados para o modelo para processamento adicional.
use_function_invocation(chat_client: type[TChatClient]) -> type[TChatClient]
Parâmetros
| Nome | Description |
|---|---|
|
chat_client
Obrigatório
|
type[<xref:TChatClient>]
A classe de cliente de chat a ser decorada. |
Retornos
| Tipo | Description |
|---|---|
|
type[~<xref:TChatClient>]
|
A classe de cliente de chat decorada com invocação de função habilitada. |
Exceções
| Tipo | Description |
|---|---|
|
Se o cliente de chat não tiver os métodos necessários. |
Exemplos
from agent_framework import use_function_invocation, BaseChatClient
@use_function_invocation
class MyCustomClient(BaseChatClient):
async def get_response(self, messages, **kwargs):
# Implementation here
pass
async def get_streaming_response(self, messages, **kwargs):
# Implementation here
pass
# The client now automatically handles function calls
client = MyCustomClient()
validate_workflow_graph
Função de conveniência para validar um grafo de fluxo de trabalho.
validate_workflow_graph(edge_groups: Sequence[EdgeGroup], executors: dict[str, Executor], start_executor: Executor) -> None
Parâmetros
| Nome | Description |
|---|---|
|
edge_groups
Obrigatório
|
Sequence[<xref:agent_framework._workflows._edge.EdgeGroup>]
lista de grupos de borda no fluxo de trabalho |
|
executors
Obrigatório
|
Mapa de IDs do executor para instâncias de executor |
|
start_executor
Obrigatório
|
O executor inicial (pode ser instância ou ID) |
Retornos
| Tipo | Description |
|---|---|
Exceções
| Tipo | Description |
|---|---|
|
Se alguma validação falhar |