agent_framework Pacote
Módulos
| exceptions | |
| observability |
Classes
| AIFunction |
Uma ferramenta que envolve uma função Python para a tornar chamável por modelos de IA. Esta classe envolve uma função Python para a tornar chamável por modelos de IA com validação automática de parâmetros e geração de esquemas JSON. Inicialize a Introdução da AIFunction. |
| AgentExecutor |
executor incorporado que envolve um agente para o tratamento de mensagens. O AgentExecutor adapta o seu comportamento com base no modo de execução do fluxo de trabalho:
O executor deteta automaticamente o modo através de WorkflowContext.is_streaming(). Inicialize o executor com um identificador único. |
| AgentExecutorRequest |
Um pedido a um agente executor. |
| AgentExecutorResponse |
Uma resposta de um executor agente. |
| AgentInputRequest |
Pede input humano antes de um agente correr em fluxos de trabalho de alto nível do builder. Emitido via RequestInfoEvent quando um fluxo de trabalho pausa antes de um agente ser executado. A resposta é injetada na conversa como uma mensagem do utilizador para orientar o comportamento do agente. Este é o tipo de pedido padrão usado por .with_request_info() no SequentialBuilder, ConcurrentBuilder, GroupChatBuilder e HandoffBuilder. |
| AgentMiddleware |
Classe base abstrata para middleware de agentes que pode intercetar invocações de agentes. O middleware de agentes permite intercetar e modificar invocações de agentes antes e depois da execução. Pode inspecionar mensagens, modificar o contexto, sobrescrever resultados ou terminar a execução mais cedo. Observação AgentMiddleware é uma classe base abstrata. Tens de o subclassificar e implementar O método Process() para criar middleware de agentes personalizados. |
| AgentProtocol |
Um protocolo para um agente que pode ser invocado. Este 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 (tipagem duck). As aulas não precisam herdar explicitamente deste protocolo para ser considerado compatível. Isto permite-lhe criar agentes completamente personalizados sem usar quaisquer classes base do Agent Framework. |
| AgentRunContext |
Objeto de contexto para invocações de middleware de agentes. Este contexto é passado pelo pipeline de middleware do agente e contém toda a informação sobre a invocação do agente. Inicialize o AgentRunContext. |
| AgentRunEvent |
Evento desencadeado quando uma execução de agente é concluída. Inicialize o evento de execução do agente. |
| AgentRunResponse |
Representa a resposta a um pedido de execução de Agente. Fornece uma ou mais mensagens de resposta e metadados sobre a resposta. Uma resposta típica conterá uma única mensagem, mas pode conter múltiplas mensagens em cenários que envolvam chamadas de funções, recuperações RAG ou lógica complexa. Inicialize um AgentRunResponse. |
| AgentRunResponseUpdate |
Representa um único bloco de resposta em streaming de um Agente. Inicializar um AgentRunResponseUpdate. |
| AgentRunUpdateEvent |
Evento desencadeado quando um agente está a transmitir mensagens. Inicia o evento de streaming do agente. |
| AgentThread |
A classe thread Agent, que pode representar tanto uma thread gerida localmente como uma thread gerida pelo serviço. An Inicialize um AgentThread, não use este método manualmente, use sempre: Observação Podem ser definidos service_thread_id ou message_store, mas não ambos. |
| AggregateContextProvider |
Um ContextProvider que contém múltiplos fornecedores de contexto. Delega eventos a múltiplos fornecedores de contexto e agrega respostas desses eventos antes de regressar. Isto permite combinar vários fornecedores de contexto num único fornecedor. Observação Um AggregateContextProvider é criado automaticamente quando passa um único contexto ou uma sequência de fornecedores de contexto para o construtor agente. Inicialize o AggregateContextProvider com fornecedores de contexto. |
| BaseAgent |
Classe base para todos os agentes do Agent Framework. Esta classe fornece funcionalidades essenciais para implementações de agentes, incluindo fornecedores de contexto, suporte a middleware e gestão de threads. Observação O BaseAgent não pode ser instanciado diretamente porque não implementa o run(), run_stream(), e outros métodos exigidos pelo AgentProtocol. Usa uma implementação concreta como o ChatAgent ou cria uma subclasse. Inicializar uma instância BaseAgent. |
| BaseAnnotation |
Classe base para todos os tipos de Anotação de IA. Inicializar BaseAnnotation. |
| BaseChatClient |
Classe base para clientes de chat. Esta classe base abstrata fornece funcionalidades essenciais para implementações de clientes de chat, incluindo suporte a middleware, preparação de mensagens e normalização de ferramentas. Observação BaseChatClient não pode ser instanciado diretamente porque é uma classe base abstrata. Subclasses devem implementar _inner_get_response() e _inner_get_streaming_response(). Inicializar uma instância BaseChatClient. |
| BaseContent |
Representa o conteúdo utilizado por serviços de IA. Inicializar o BaseContent. |
| Case |
Wrapper em tempo de execução que combina um predicado switch-case com o seu destino. Cada Caso associa um predicado booleano ao executor que deve tratar da mensagem quando o predicado for avaliado para Verdadeiro. O runtime mantém este contentor leve separado do SwitchCaseEdgeGroupCase serializável, permitindo que a execução possa operar com chamadas ao vivo sem poluir o estado persistente. |
| ChatAgent |
Um Agente de Chat para Clientes. Esta é a implementação principal do agente que utiliza um cliente de chat para interagir com modelos de linguagem. Suporta ferramentas, fornecedores de contexto, middleware e respostas tanto em streaming como em não-streaming. Inicializar uma instância ChatAgent. Observação O conjunto de parâmetros de frequency_penalty a request_kwargs é usado para Liga para o cliente de chat. Também podem ser passados para ambos os métodos de execução. Quando ambos são definidos, os que passam para os métodos de execução têm prioridade. |
| ChatClientProtocol |
Um protocolo para um cliente de chat que pode gerar respostas. Este protocolo define a interface que todos os clientes de chat devem implementar, incluindo métodos para gerar respostas tanto em streaming como em não-streaming. Observação Os protocolos usam subtipagem estrutural (tipagem duck). As aulas não precisam herdar explicitamente deste protocolo para ser considerado compatível. |
| ChatContext |
Objeto de contexto para invocações de middleware de chat. Este contexto é passado pelo pipeline de middleware de chat e contém toda a informação sobre o pedido de chat. Inicialize o ChatContext. |
| ChatMessage |
Representa uma mensagem de chat. Inicializar ChatMessage. |
| ChatMessageStore |
Uma implementação em memória do ChatMessageStoreProtocol que armazena mensagens numa lista. Esta implementação fornece um armazenamento simples baseado em listas para mensagens de chat, com suporte para serialização e desserialização. Implementa todos os métodos necessários do O armazenamento mantém mensagens em memória e fornece métodos para serializar e desserializar o estado para fins de persistência. Crie um ChatMessageStore para usar num tópico. |
| ChatMessageStoreProtocol |
Define métodos para armazenar e recuperar mensagens de chat associadas a um tópico específico. As implementações deste protocolo são responsáveis por gerir o armazenamento das mensagens de chat, incluindo o manuseamento de grandes volumes de dados através de truncamento ou resumo das mensagens conforme necessário. |
| ChatMiddleware |
Classe base abstrata para middleware de chat que pode interceptar pedidos de clientes de chat. O middleware de chat permite-lhe intercetar e modificar pedidos do cliente de chat antes e depois da execução. Pode modificar mensagens, adicionar comandos de sistema, registar pedidos ou sobrepor respostas do chat. Observação ChatMiddleware é uma classe base abstrata. Tens de o subclassificar e implementar O método Process() para criar middleware de chat personalizado. |
| ChatOptions |
Definições comuns de pedidos para serviços de IA. Inicializar o ChatOptions. |
| ChatResponse |
Representa a resposta a um pedido de chat. Inicializa um ChatResponse com os parâmetros fornecidos. |
| ChatResponseUpdate |
Representa um único bloco de resposta em streaming de um ChatClient. Inicializa um ChatResponseUpdate com os parâmetros fornecidos. |
| CheckpointStorage |
Protocolo para backends de armazenamento em checkpoint. |
| CitationAnnotation |
Representa uma anotação de citação. Inicializar CitationAnnotation. |
| ConcurrentBuilder |
Construtor de alto nível para fluxos de trabalho concorrentes de agentes.
Utilização:
|
| Context |
Uma classe contendo qualquer contexto que deva ser fornecido ao modelo de IA, conforme fornecido por um ContextProvider. Cada ContextProvider tem a capacidade de fornecer o seu próprio contexto para cada invocação. A classe Context contém o contexto adicional fornecido pelo ContextProvider. Este contexto será combinado com o fornecido por outros fornecedores antes de ser passado para o modelo de IA. Este contexto é por invocação e não será armazenado como parte do histórico do chat. Crie um novo objeto de Contexto. |
| ContextProvider |
Classe base para todos os fornecedores de contexto. Um fornecedor de contexto é um componente que pode ser usado para melhorar a gestão de contexto da IA. Pode ouvir alterações na conversa e fornecer contexto adicional ao modelo de IA pouco antes da invocação. Observação ContextProvider é uma classe base abstrata. Tens de o subclassificar e implementar o método invoking() para criar um fornecedor de contexto personalizado. Idealmente, devias implemente também os métodos invocado() e thread_created() para acompanhar conversas mas estes são opcionais. |
| DataContent |
Representa conteúdo de dados binários com um tipo de media associado (também conhecido como tipo MIME). Importante Isto é para dados binários que são representados como um URI de dados, não para recursos online. Use o UriContent para recursos online. Inicializa uma instância DataContent. Importante Isto é para dados binários que são representados como um URI de dados, não para recursos online. Use o UriContent para recursos online. |
| Default |
Representação em tempo de execução do ramo padrão num grupo switch-case. O desvio padrão é invocado apenas quando nenhum outro predicado de caso coincide. Na prática, é garantido que existe para que o encaminhamento nunca produza um alvo vazio. |
| Edge |
Modele uma transferência direcionada, opcionalmente condicional, entre dois executores. Cada Edge captura os metadados mínimos necessários para mover uma mensagem de um executor para outro dentro do grafo de workflow. Opcionalmente, incorpora um predicado booleano que decide se a aresta deve ser tomada em tempo de execução. Ao serializar a aresta até às primitivas, podemos reconstruir a topologia de um fluxo de trabalho independentemente do processo original em Python. Inicialize uma aresta totalmente especificada entre dois executores de workflow. |
| EdgeDuplicationError |
Exceção levantada quando são detetadas arestas duplicadas no fluxo de trabalho. |
| ErrorContent |
Representa um erro. Observações: Normalmente usado para erros não fatais, quando algo correu mal como parte da operação, mas a operação ainda assim conseguiu continuar. Inicializa uma instância ErrorContent. |
| Executor |
Classe base para todos os executores de workflow que processam mensagens e realizam cálculos. Visão geralOs executores são os blocos fundamentais dos fluxos de trabalho, representando unidades de processamento individuais que recebem mensagens, realizam operações e produzem resultados. Cada executor é identificado de forma única e pode lidar com tipos específicos de mensagens através de métodos de handler decorados. Sistema de TiposOs executores têm um sistema de tipos rico que define as suas capacidades: Tipos de entradaOs tipos de mensagens que um executor pode processar, descobertos a partir das assinaturas do método handler:
Acesso através da propriedade input_types . Tipos de SaídaOs tipos de mensagens que um executor pode enviar a outros executores via ctx.send_message():
Acesso através da propriedade output_types . Tipos de Saída do Fluxo de TrabalhoOs tipos de dados que um executor pode emitir como saídas ao nível do fluxo de trabalho via ctx.yield_output():
Acesso através da propriedade workflow_output_types . Descoberta do HandlerOs executores descobrem as suas capacidades através de métodos decorados: @handler DecoradorMarca métodos que processam mensagens recebidas:
Interceção de Pedidos de Subfluxo de TrabalhoUse @handler métodos para intercetar pedidos de subfluxo de trabalho:
Tipos de contextoOs métodos handler recebem diferentes variantes do WorkflowContext com base nas suas anotações de tipos: WorkflowContext (sem parâmetros de tipo)Para manipuladores que só realizam efeitos secundários sem enviar mensagens ou obter saídas:
WorkflowContexto[T_Out]Permite enviar mensagens do tipo T_Out via ctx.send_message():
WorkflowContext[T_Out, T_W_Out]Permite tanto o envio de mensagens (T_Out) como a obtençã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 Subfluxos de TrabalhoOs executores podem conter subfluxos de trabalho usando o WorkflowExecutor. Os subfluxos de trabalho podem fazer pedidos que os fluxos de trabalho pais podem interceptar. Consulte a documentação do WorkflowExecutor para detalhes sobre padrões de composição de workflow e gestão de pedidos/respostas. Gestão do EstadoOs executores podem conter estados que persistem através das execuções de fluxo de trabalho e pontos de controlo. Substitua os métodos on_checkpoint_save e on_checkpoint_restore para implementar serialização de estado personalizada e lógica de restauração. Notas de implementação
Inicialize o executor com um identificador único. |
| ExecutorCompletedEvent |
Evento desencadeado quando um handler executor é concluído. Inicialize o evento executor com um ID do executor e dados opcionais. |
| ExecutorEvent |
Classe base para eventos de executor. Inicialize o evento executor com um ID do executor e dados opcionais. |
| ExecutorFailedEvent |
Evento desencadeado quando um handler executor apresenta um erro. |
| ExecutorInvokedEvent |
Evento desencadeado quando um executor handler é invocado. Inicialize o evento executor com um ID do executor e dados opcionais. |
| FanInEdgeGroup |
Representa um conjunto convergente de arestas que alimentam um único executor a jusante. Os grupos fan-in são tipicamente usados quando múltiplos estágios ascendentes produzem independentemente mensagens que devem chegar todas ao mesmo processador a jusante. Constrói um mapeamento fan-in que funde várias fontes num único alvo. |
| FanOutEdgeGroup |
Representa um grupo de bordas de estilo broadcast 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 a jusante. Em tempo de execução, podemos restringir ainda mais os alvos executando um selection_func que inspeciona a carga útil e devolve o subconjunto de ids que deve receber a mensagem. Crie um mapeamento disperso de uma única fonte para muitos alvos. |
| FileCheckpointStorage |
Armazenamento de checkpoint baseado em ficheiros para persistência. Inicialize o armazenamento de ficheiros. |
| FinishReason |
Representa a razão pela qual uma resposta no chat foi concluída. Inicialize o FinishReason com um valor. |
| FunctionApprovalRequestContent |
Representa um pedido de aprovação do utilizador para uma chamada de função. Inicializa uma instância FunctionApprovalRequestContent. |
| FunctionApprovalResponseContent |
Representa uma resposta para aprovação do utilizador a uma chamada de função. Inicializa uma instância FunctionApprovalResponseContent. |
| FunctionCallContent |
Representa um pedido de chamada de função. Inicializa uma instância FunctionCallContent. |
| FunctionExecutor |
Executor que envolve uma função definida pelo utilizador. Este executor permite aos utilizadores definir funções simples (tanto sincronizadas como assíncronas) e usá-las como executores de workflow sem necessidade de criar classes executoras completas. As funções síncronas são executadas num pool de threads usando asyncio.to_thread() para evitar bloquear o ciclo de eventos. Inicialize o FunctionExecutor com uma função definida pelo utilizador. |
| FunctionInvocationConfiguration |
Configuração para invocação de funções em clientes de chat. Esta classe é criada automaticamente em todos os clientes de chat que suportam invocação de funções. Isto significa que, na maioria dos casos, pode simplesmente alterar os atributos da instância, em vez de criar uma nova. Inicializar FunctionInvocationConfiguration. |
| FunctionInvocationContext |
Objeto de contexto para invocações de middleware de funções. Este contexto é passado pelo pipeline de middleware de funções e contém toda a informação sobre a invocação de funções. Inicialize o FunctionInvocationContext. |
| FunctionMiddleware |
Classe base abstrata para middleware de funções que pode intercetar invocações de funções. O middleware de funções permite-te intercetar e modificar invocações de funções/ferramentas antes e depois da execução. Podes validar argumentos, resultados em cache, invocações de registo ou sobrescrever a execução de funções. Observação FunctionMiddleware é uma classe base abstrata. Tens de o subclassificar e implementar O método Process() para criar middleware de funções personalizadas. |
| FunctionResultContent |
Representa o resultado de uma chamada de função. Inicializa uma instância FunctionResultContent. |
| GraphConnectivityError |
Exceção levantada quando são detetados problemas de conectividade de grafos. |
| GroupChatBuilder |
Um construtor de alto nível para fluxos de trabalho de chat de grupo dirigidos pelo gestor com orquestração dinâmica. O GroupChat coordena conversas entre múltiplos agentes através de um gestor que seleciona qual o participante que fala a seguir. O gestor pode ser uma simples função Python (set_select_speakers_func) ou um seletor baseado em agentes via set_manager. Estas duas abordagens são mutuamente exclusivas. Fluxo de Trabalho Principal:
Padrões de Seleção de Oradores: Padrão 1: Seleção simples baseada em funções (recomendado)
Padrão 2: Seleção baseada em LLM
Padrão 3: Pedir informações para feedback a meio da conversa
Especificação do Participante: Duas formas de especificar os participantes:
Estrutura do Snapshot 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 de gestor de chat de grupo. |
| HandoffBuilder |
Fluent Builder para fluxos de trabalho conversacionais de handoff com coordenadores e agentes especializados. O padrão de handoff permite a um agente coordenador encaminhar pedidos para agentes especialistas. O modo de interação controla se o fluxo de trabalho solicita input do utilizador após cada resposta do agente ou se conclui autonomamente quando os agentes terminam de responder. Uma condição de terminação determina quando o fluxo de trabalho deve deixar de pedir entrada e completar. Padrões de Roteamento: Single-Tier (Padrão): Só o coordenador pode passar para especialistas. Por defeito, após qualquer especialista responder, o controlo regressa ao utilizador para mais entrada. Isto cria um fluxo cíclico: utilizador -> coordenador -> [especialista opcional] -> utilizador -> coordenador -> ... Use with_interaction_mode ("autónoma") para evitar pedir input adicional do utilizador e obter a conversa final quando um agente responde sem delegar. Multi-Nível (Avançado): Os especialistas podem passar para outros especialistas usando .add_handoff(). Isto proporciona mais flexibilidade para fluxos de trabalho complexos, mas é menos controlável do que o padrão de nível único. Os utilizadores perdem visibilidade em tempo real dos passos intermédios durante as transferências entre especialistas (embora o histórico completo de conversas, incluindo todas as transferências, seja preservado e possa ser inspecionado posteriormente). Principais Funcionalidades:
Utilização (Single-Tier):
Roteamento Multi-Nível com .add_handoff():
Use as Fábricas Participantes para o Isolamento do Estado: Condição de Terminação Personalizada:
Pontos de controlo:
Inicialize um HandoffBuilder para criar fluxos de trabalho de handoff conversacionais. O construtor começa num estado não configurado e exige que chame:
Métodos de configuração opcionais permitem-lhe personalizar a gestão do contexto, a lógica de terminação e a persistência. Observação Os participantes devem ter nomes/IDs estáveis porque o fluxo de trabalho mapeia o Ferramentas de transferência para estes identificadores. Os nomes dos agentes devem coincidir as strings emitidas pela ferramenta de handoff do coordenador (por exemplo, uma ferramenta que outputs {"handoff_to": "billing"} requer um agente chamado faturamento). |
| HandoffUserInputRequest |
Mensagem de pedido emitida quando o fluxo de trabalho necessita de input novo do utilizador. Nota: O campo de conversa é intencionalmente excluído da serialização por checkpoint para evitar duplicação. A conversa é preservada no estado do coordenador e será reconstruída na restauração. Ver edição #2667. |
| HostedCodeInterpreterTool |
Representa uma ferramenta alojada que pode ser especificada a um serviço de IA para permitir a execução de código gerado. Esta ferramenta não implementa a interpretação de código por si só. Serve como um marcador para informar um serviço de que pode executar código gerado se o serviço for capaz de o fazer. Inicialize o HostedCodeInterpreterTool. |
| HostedFileContent |
Representa o conteúdo de um ficheiro alojado. Inicializa uma instância HostedFileContent. |
| HostedFileSearchTool |
Representa uma ferramenta de pesquisa de ficheiros que pode ser especificada a um serviço de IA para permitir a realização de pesquisas de ficheiros. Inicialize uma ferramenta de pesquisa de ficheiros. |
| HostedMCPSpecificApproval |
Representa o modo específico para uma ferramenta alojada. Ao usar este modo, o utilizador deve especificar quais as ferramentas que sempre ou nunca requerem aprovação. Isto é representado como um dicionário com duas chaves opcionais: |
| HostedMCPTool |
Representa uma ferramenta MCP que é gerida e executada pelo serviço. Crie uma ferramenta MCP alojada. |
| HostedVectorStoreContent |
Representa um conteúdo de armazenamento vetorial alojado. Inicializa uma instância HostedVectorStoreContent. |
| HostedWebSearchTool |
Representa uma ferramenta de pesquisa web que pode ser especificada a um serviço de IA para lhe permitir realizar pesquisas na web. Inicialize uma HostedWebSearchTool. |
| InMemoryCheckpointStorage |
Armazenamento em checkpoint em memória para testes e desenvolvimento. Inicialize o armazenamento de memória. |
| InProcRunnerContext |
Contexto de execução em processo para execução local e checkpointing opcional. Inicialize o contexto de execução em processo. |
| MCPStdioTool |
Ferramenta MCP para ligação a servidores MCP baseados em stdio. Esta classe liga-se a servidores MCP que comunicam através de entrada/saída padrão, normalmente usados para processos locais. Inicialize a ferramenta MCP stdio. Observação Os argumentos são usados para criar um objeto StdioServerParstates, que é então usado para criar um cliente stdio. Ver mcp.client.stdio.stdio_client e mcp.client.stdio.stdio_server_parameters para mais detalhes. |
| MCPStreamableHTTPTool |
Ferramenta MCP para ligação a servidores MCP baseados em HTTP. Esta classe liga-se a servidores MCP que comunicam via HTTP/SSE streamable. Inicialize a ferramenta HTTP streamable MCP. Observação Os argumentos são usados para criar um cliente HTTP streamable. Consulte mcp.client.streamable_http.streamablehttp_client para mais detalhes. Quaisquer argumentos extra passados ao construtor serão entregues ao construtor cliente HTTP streamable. |
| MCPWebsocketTool |
Ferramenta MCP para ligação a servidores MCP baseados em WebSocket. Esta classe liga-se a servidores MCP que comunicam via WebSocket. Inicialize a ferramenta MCP WebSocket. Observação Os argumentos são usados para criar um cliente WebSocket. Consulte mcp.client.websocket.websocket_client para mais detalhes. Quaisquer argumentos extra passados ao construtor serão entregues ao Construtor cliente WebSocket. |
| MagenticBuilder |
Fluent Builder para criar fluxos de trabalho de orquestração multi-agente do Magentic One. Os fluxos de trabalho do Magentic One utilizam um gestor alimentado por LLM para coordenar múltiplos agentes através de planeamento dinâmico de tarefas, acompanhamento de progresso e replaneamento adaptativo. O gestor cria planos, seleciona agentes, monitoriza o progresso e decide quando replanear ou concluir. O construtor fornece uma API fluente para configurar participantes, o gestor, revisão opcional do plano, checkpointing e callbacks de eventos. Suporte Humano no Ciclo: A Magentic fornece mecanismos especializados de HITL através de:
Estas emitem eventos MagenticHumanInterventionRequest que fornecem opções estruturadas de decisão (APROVAR, REVISAR, CONTINUAR, REPLANEAR, ORIENTAR) apropriadas para a orquestração baseada no planeamento da Magentic. Utilização:
Com gestor personalizado:
|
| MagenticContext |
Contexto para o treinador do Magent. |
| MagenticManagerBase |
Classe base para o gestor do Magentic One. |
| ManagerDirectiveModel |
Modelo pidântico para saída estruturada de diretivas de gestores. Crie um novo modelo analisando e validando dados de entrada a partir de argumentos de palavras-chave. Aumenta [ValidationError][pydantic_core. ValidationError] se os dados de entrada não puderem ser validados para formar um modelo válido. self é explicitamente apenas posicional para permitir self como nome de campo. |
| ManagerSelectionRequest |
Pedido enviado ao agente gestor para a seleção do próximo orador. Esta dataclass reúne o estado completo da conversa e o contexto da tarefa para que o agente gestor possa analisar e tomar uma decisão de seleção de oradores. |
| ManagerSelectionResponse |
Resposta do agente gestor com decisão de seleção do orador. O agente gestor deve produzir esta estrutura (ou dit/JSON compatível) para comunicar a sua decisão de volta ao orquestrador. Crie um novo modelo analisando e validando dados de entrada a partir de argumentos de palavras-chave. Aumenta [ValidationError][pydantic_core. ValidationError] se os dados de entrada não puderem ser validados para formar um modelo válido. self é explicitamente apenas posicional para permitir self como nome de campo. |
| Message |
Uma classe que representa uma mensagem no fluxo de trabalho. |
| OrchestrationState |
Contentor de estado unificado para checkpointing do orquestrador. Esta dataclass padroniza a serialização de checkpoints em todos os três padrões de chat de grupo, permitindo extensões específicas do padrão através de metadados. Atributos comuns abrangem preocupações de orquestração partilhada (tarefa, conversa, acompanhamento de rondas). O estado específico do padrão entra no ditado de metadados. |
| RequestInfoEvent |
Evento desencadeado quando um executor de workflow solicita informação externa. Inicialize o evento de pedido de informação. |
| RequestInfoInterceptor |
Executor interno que pausa o fluxo de trabalho para input humano antes da execução do agente. Este executor é inserido no gráfico de workflow pelos construtores quando .with_request_info() é chamado. Interceta mensagens AgentExecutorRequest ANTES da execução do agente e pausa o fluxo de trabalho via ctx.request_info() com um AgentInputRequest. Quando uma resposta é recebida, o responsável pela resposta injeta a entrada como uma mensagem de utilizador na conversa e encaminha o pedido para o agente. O parâmetro opcional agent_filter permite limitar quais os agentes que acionam a pausa. Se o ID do agente alvo não estiver no conjunto de filtros, o pedido é encaminhado sem pausa. Inicialize o executor interceptor de informação de pedido. |
| Role |
Descreve o propósito pretendido de uma mensagem numa interação de chat. Propriedades: SISTEMA: O papel que instrui ou define o comportamento do sistema de IA. UTILIZADOR: O papel que fornece input do utilizador para interações no chat. ASSISTENTE: O papel que fornece respostas a input instruído pelo sistema e solicitado pelo utilizador. FERRAMENTA: O papel que fornece informações adicionais e referências em resposta a pedidos de utilização de ferramentas. Inicializar o Papel com um valor. |
| Runner |
Uma classe para executar um fluxo de trabalho no Pregel supersteps. Inicialize o runner com arestas, estado partilhado e contexto. |
| RunnerContext |
Protocolo para o contexto de execução usado pelo runner. Um único contexto que suporta mensagens, eventos e checkpoints opcionais. Se o armazenamento de checkpoint não estiver configurado, os métodos de checkpoint podem aumentar. |
| SequentialBuilder |
Construtor de alto nível para fluxos de trabalho sequenciais de agentes/executores com contexto partilhado.
Utilização:
|
| SharedState |
Uma classe para gerir estado partilhado num fluxo de trabalho. O SharedState fornece acesso seguro em thread a dados do estado do fluxo de trabalho que precisam de ser partilhados entre executores durante a execução do fluxo de trabalho. Chaves Reservadas: As seguintes chaves são reservadas para uso interno na estrutura e não devem ser modificadas pelo código do utilizador:
Advertência Não use teclas que começam por sublinhado (_), pois podem ser reservadas para Operações do quadro interno. Inicialize o estado partilhado. |
| SingleEdgeGroup |
Wrapper de conveniência para uma aresta solitária, mantendo a API do grupo uniforme. Crie um grupo de arestas um-para-um entre dois executores. |
| StandardMagenticManager |
Gestor Magentic padrão que realiza chamadas reais de LLM através de um ChatAgent. O gestor constrói prompts que espelham a orquestração original do Magentic One:
Inicialize o Gestor Magentic Padrão. |
| SubWorkflowRequestMessage |
Mensagem enviada de um sub-fluxo de trabalho para um executor no fluxo de trabalho pai para solicitar informação. Esta mensagem envolve um RequestInfoEvent emitido pelo executor no subfluxo de trabalho. |
| SubWorkflowResponseMessage |
Mensagem enviada de um fluxo de trabalho pai para um subfluxo de trabalho via WorkflowExecutor para fornecer a informação solicitada. Esta mensagem envolve os dados da resposta juntamente com o RequestInfoEvent original emitido pelo executor do sub-workflow. |
| SuperStepCompletedEvent |
Evento desencadeado quando um superpasso termina. Inicializar o evento superstep. |
| SuperStepStartedEvent |
Evento desencadeado quando começa um superpasso. Inicializar o evento superstep. |
| SwitchCaseEdgeGroup |
Variante com leque que imita um fluxo tradicional de controlo de interruptores/caixas. Cada caso inspeciona o payload da mensagem e decide se deve tratar a mensagem. Exatamente um caso — ou o ramo padrão — devolve um alvo em tempo de execução, preservando a semântica de despacho único. Configure uma estrutura de encaminhamento switch/case para um único executor de origem. |
| SwitchCaseEdgeGroupCase |
Descrição persistente de um único ramo condicional num caso de comutação. Ao contrário do objeto Case em tempo de execução, esta variante serializável armazena apenas o identificador de destino e um nome descritivo para o predicado. Quando a chamada subjacente não está disponível durante a desserialização, substituimos por um substituto proxy que falha de forma ruidosa, garantindo que a dependência em falta é imediatamente visível. Registar os metadados de encaminhamento para um desvio condicional de caso. |
| SwitchCaseEdgeGroupDefault |
Descritor persistente para o ramo de retenção de um grupo switch-case. A ramificação padrão é garantida e é invocada quando todos os outros predicados de caso falham em corresponder à carga útil. Aponte o ramo padrão para o identificador do executor indicado. |
| TextContent |
Representa o conteúdo de texto numa conversa. Inicializa uma instância TextContent. |
| TextReasoningContent |
Representa conteúdo de raciocínio textual num chat. Observações: Esta aula e o TextContent são superficialmente semelhantes, mas distintos. Inicializa uma instância de TextReasoningContent. |
| TextSpanRegion |
Representa uma região de texto que foi anotada. Inicializar TextSpanRegion. |
| ToolMode |
Define se e como as ferramentas são usadas num pedido de chat. Inicializar o ToolMode. |
| ToolProtocol |
Representa uma ferramenta genérica. Este protocolo define a interface que todas as ferramentas devem implementar para serem compatíveis com a framework do agente. É implementado por várias classes de ferramentas como HostedMCPTool, HostedWebSearchTool e AIFunction. Uma AIFunction é geralmente criada pelo ai_function decorador. Como cada conector precisa de analisar ferramentas de forma diferente, os utilizadores podem passar um dict para especificar uma ferramenta específica de serviço quando não houver abstração disponível. |
| TypeCompatibilityError |
Exceção levantada quando é detetada incompatibilidade de tipo entre executores ligados. |
| UriContent |
Representa um conteúdo de URI. Importante Isto é usado para conteúdos identificados por um URI, como uma imagem ou um ficheiro. Para URIs de dados (binários), use DataContent em vez disso. Inicializa uma instância UriContent. Observações: Isto é usado para conteúdos identificados por um URI, como uma imagem ou um ficheiro. Para URIs de dados (binários), use DataContent em vez disso. |
| UsageContent |
Representa informações de utilização associadas a um pedido e resposta por chat. Inicializa uma instância UsageContent. |
| UsageDetails |
Fornece detalhes de utilização sobre um pedido/resposta. Inicializa a instância UsageDetails. |
| Workflow |
Um motor de execução baseado em grafos que orquestra executores ligados. Visão geralUm fluxo de trabalho executa um grafo direcionado de executores ligados por grupos de arestas usando um modelo semelhante a Pregel, executando em superpassos até o grafo ficar inativo. Os fluxos de trabalho são criados usando a classe WorkflowBuilder – não instancias esta classe diretamente. Modelo de ExecuçãoOs executores executam em superpassos sincronizados onde cada executor:
As mensagens entre executores são entregues no final de cada superpasso e não são visíveis no fluxo de eventos. Apenas os eventos ao nível do fluxo de trabalho (saídas, eventos personalizados) e os eventos de estado são observáveis pelos chamadores. Tipos de Entrada/SaídaOs tipos de fluxo de trabalho são descobertos em tempo de execução através da inspeção:
Métodos de ExecuçãoO fluxo de trabalho fornece duas APIs principais de execução, cada uma suportando múltiplos cenários:
Ambos os métodos suportam:
Gestão do EstadoAs instâncias de workflow contêm estados e os estados são preservados entre chamadas para execução e run_stream. Para executar múltiplas execuções independentes, crie instâncias de fluxo de trabalho separadas através do WorkflowBuilder. Pedidos de Entrada ExternaExecutores dentro de um fluxo de trabalho podem solicitar entrada externa usando ctx.request_info():
Pontos de verificaçãoO checkpointing pode ser configurado em tempo de compilação ou em tempo de execução: Build-time (via WorkflowBuilder): workflow = WorkflowBuilder().with_checkpointing(storage).build() Runtime (via parâmetros run/run_stream): result = await workflow.run(message, checkpoint_storage=runtime_storage) Quando ativados, são criados pontos de controlo no final de cada superpasso, capturando:
ComposiçãoOs fluxos de trabalho podem ser aninhados usando o WorkflowExecutor, que envolve um fluxo de trabalho filho como executor. Os tipos de entrada/saída do fluxo de trabalho aninhado passam a fazer parte dos tipos do WorkflowExecutor. Quando invocado, o WorkflowExecutor executa o fluxo de trabalho aninhado até à conclusão e processa as suas saídas. Inicialize o fluxo de trabalho com uma lista de arestas. |
| WorkflowAgent |
Uma subclasse Agent que envolve um fluxo de trabalho e o expõe como agente. Inicialize o WorkflowAgent. |
| WorkflowBuilder |
Uma classe de construção para construir fluxos de trabalho. Esta classe fornece uma API fluente para definir grafos de workflow, ligando executores com arestas e configurando parâmetros de execução. Chamada build para criar uma instância imutável Workflow . Inicialize o WorkflowBuilder com uma lista vazia de arestas e sem executor inicial. |
| WorkflowCheckpoint |
Representa um ponto de verificação completo do estado do fluxo de trabalho. Os checkpoints captam o estado completo de execução de um fluxo de trabalho num ponto específico, permitindo que os fluxos de trabalho sejam pausados e retomados. Observação O shared_state dictado pode conter chaves reservadas geridas pelo framework. Consulte a documentação da classe SharedState para detalhes sobre chaves reservadas. |
| WorkflowCheckpointSummary |
Resumo legível por humanos de um ponto de verificação do fluxo de trabalho. |
| WorkflowContext |
Contexto de execução que permite aos executores interagir com fluxos de trabalho e outros executores. Visão geralO WorkflowContext fornece uma interface controlada para executores enviarem mensagens, gerirem resultados, gerirem o estado e interagirem com o ecossistema mais amplo do fluxo de trabalho. Garante a segurança do tipo através de parâmetros genéricos, impedindo o acesso direto a componentes internos de execução. Parâmetros de Tipo GenéricoO contexto é parametrizado para garantir a segurança do tipo em diferentes operações: WorkflowContext (sem parâmetros)Para executores que apenas realizam efeitos secundários sem enviar mensagens ou obter resultados:
WorkflowContexto[T_Out]Permite enviar mensagens do tipo T_Out para outros executores:
WorkflowContext[T_Out, T_W_Out]Permite tanto o envio de mensagens (T_Out) como a obtenção de saídas de fluxo de trabalho (T_W_Out):
Tipos de UniãoPodem ser especificados vários tipos usando notação de união:
Inicialize o contexto do executor com o contexto de fluxo de trabalho indicado. |
| WorkflowErrorDetails |
Informação estruturada de erro para emergir em eventos/resultados de erro. |
| WorkflowEvent |
Classe base para eventos de fluxo de trabalho. Inicialize o evento do fluxo de trabalho com dados opcionais. |
| WorkflowExecutor |
Um executor que envolve um fluxo de trabalho para permitir a composição hierárquica de fluxos de trabalho. Visão geralO WorkflowExecutor faz com que um fluxo de trabalho se comporte como um único executor dentro de um fluxo de trabalho pai, permitindo arquiteturas de fluxos de trabalho aninhadas. Trata de todo o ciclo de vida da execução de subfluxos de trabalho, incluindo processamento de eventos, encaminhamento de saída e coordenação de pedidos/respostas entre os fluxos de trabalho pai e filho. Modelo de ExecuçãoQuando invocado, WorkflowExecutor:
Processamento de Fluxo de EventosO WorkflowExecutor processa eventos após a conclusão do subfluxo de trabalho: Encaminhamento de SaídaTodas as saídas do sub-fluxo de trabalho são automaticamente encaminhadas para o pai: Quando allow_direct_output é Falso (padrão):
Quando allow_direct_output é Verdade:Coordenação de Pedidos/RespostasQuando sub-fluxos de trabalho precisam de informação externa:
Gestão do EstadoO WorkflowExecutor mantém o estado de execução ao longo dos ciclos de pedido/resposta:
Integração de Sistemas de TiposO WorkflowExecutor herda a sua assinatura de tipo do fluxo de trabalho wrapped: Tipos de entradaCorresponde aos tipos de entrada do executor de início do fluxo de trabalho encapsulado:
Tipos de SaídaCombina saídas de sub-workflow com tipos de coordenação de pedidos:
Tratamento de errosO WorkflowExecutor propaga falhas sub-workflow:
Suporte à Execução ConcorrenteO WorkflowExecutor suporta totalmente múltiplas execuções simultâneas de subfluxos de trabalho: Per-Execution Isolamento do EstadoCada invocação de subfluxo de trabalho cria um ExecutionContext isolado:
Coordenação de Pedidos/RespostasAs respostas são corretamente encaminhadas para a execução de origem:
Gerenciamento de memória
Considerações importantesInstância de Fluxo de Trabalho Partilhada: Todas as execuções concorrentes usam a mesma instância de fluxo de trabalho subjacente. Para um isolamento adequado, certifique-se de que o fluxo de trabalho wrappeado e os seus executores são stateless.
Integração com os Fluxos de Trabalho ParentaisOs fluxos de trabalho pais podem intercetar sub-pedidos de workflow: Notas de implementação
Inicialize o WorkflowExecutor. |
| WorkflowFailedEvent |
Evento de ciclo de vida incorporado emitido quando uma execução de workflow termina com um erro. |
| WorkflowOutputEvent |
Evento desencadeado quando um executor de workflow gera saída. Inicialize o evento de saída do fluxo de trabalho. |
| WorkflowRunResult |
Contentor para eventos gerados durante a execução de fluxos de trabalho não em streaming. Visão geralRepresenta os resultados completos da execução de um fluxo de trabalho, contendo todos os eventos gerados desde o início até ao estado de inatividade. Os fluxos de trabalho produzem saídas incrementalmente através de chamadas ctx.yield_output() durante a execução. Estrutura do EventoMantém a separação entre eventos no plano de dados e no plano de controlo:
Métodos Chave
|
| WorkflowStartedEvent |
Evento de ciclo de vida incorporado emitido quando uma execução de fluxo de trabalho começa. Inicialize o evento do fluxo de trabalho com dados opcionais. |
| WorkflowStatusEvent |
Evento de ciclo de vida incorporado emitido para transições de estado de execução de fluxos de trabalho. Inicialize o evento de estado do fluxo de trabalho com um novo estado e dados opcionais. |
| WorkflowValidationError |
Exceção base para erros de validação de workflow. |
| WorkflowViz |
Uma aula para visualizar fluxos de trabalho usando graphviz e Mermaid. Inicialize o WorkflowViz com um fluxo de trabalho. |
Enums
| MagenticHumanInterventionDecision |
Opções de decisão para respostas de intervenção humana. |
| MagenticHumanInterventionKind |
O tipo de intervenção humana que está a ser solicitada. |
| ValidationTypeEnum |
Enumeração dos tipos de validação de fluxos de trabalho. |
| WorkflowEventSource |
Identifica se um evento de workflow veio do framework ou de um executor. Use o FRAMEWORK para eventos emitidos por caminhos de orquestração incorporados — mesmo quando o código que os gera está em módulos relacionados com o runner — e o EXECUTOR para eventos surgidos por implementações de executores fornecidos pelos desenvolvedores. |
| WorkflowRunState |
Estado ao nível da execução de um fluxo de trabalho. Semântica:
|
Funções
agent_middleware
Decorador para marcar uma função como middleware de agente.
Este decorador identifica explicitamente uma função como middleware 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 | Descrição |
|---|---|
|
func
Necessário
|
O middleware funciona para marcar como middleware agente. |
Regressos
| Tipo | Descrição |
|---|---|
|
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
Decora uma função para a transformar numa AIFunction que pode ser passada para os modelos e executada automaticamente.
Este decorador cria um modelo Pydantic a partir da assinatura da função, que será usado para validar os argumentos passados à 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 de typing com uma descrição em cadeia como segundo argumento. Também podes usar a classe do Field Pydantic para configurações mais avançadas.
Observação
Quando approval_mode está definido para "always_require", a função não será executada
Até que a aprovação explícita seja dada, isto aplica-se apenas ao fluxo de auto-invocação.
Também é importante notar que, se o modelo devolver múltiplas chamadas de função, algumas que requerem aprovação
e outros que não o fazem, 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 | Descrição |
|---|---|
|
func
|
Callable[[...], <xref:agent_framework._tools.ReturnT> | Awaitable[<xref:agent_framework._tools.ReturnT>]] | None
A função de decorar. Valor padrão: None
|
|
name
Necessário
|
|
|
description
Necessário
|
|
|
approval_mode
Necessário
|
Literal['always_require', 'never_require'] | None
|
|
max_invocations
Necessário
|
|
|
max_invocation_exceptions
Necessário
|
|
|
additional_properties
Necessário
|
|
Keyword-Only Parâmetros
| Nome | Descrição |
|---|---|
|
name
|
O nome da função. Se não for fornecido, será utilizado o atributo da Valor padrão: None
|
|
description
|
Uma descrição da função. Se não for fornecido, será utilizado o docstring da função. Valor padrão: None
|
|
approval_mode
|
Se é ou não necessária aprovação para executar esta 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 esta função pode ser invocada. Se não houver, não há limite, deve haver pelo menos 1. Valor padrão: None
|
|
max_invocation_exceptions
|
O número máximo de exceções permitidas durante as invocações. Se não houver, não há limite, deve haver pelo menos 1. Valor padrão: None
|
|
additional_properties
|
Propriedades adicionais a definir na função. Valor padrão: None
|
Regressos
| Tipo | Descrição |
|---|---|
|
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.
Este 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 | Descrição |
|---|---|
|
func
Necessário
|
O middleware funciona para marcar como middleware de chat. |
Regressos
| Tipo | Descrição |
|---|---|
|
A mesma função com o marcador middleware do 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 runner de arestas apropriado para um grupo de arestas.
create_edge_runner(edge_group: EdgeGroup, executors: dict[str, Executor]) -> EdgeRunner
Parâmetros
| Nome | Descrição |
|---|---|
|
edge_group
Necessário
|
<xref:agent_framework._workflows._edge.EdgeGroup>
O grupo de arestas para criar um corredor. |
|
executors
Necessário
|
Mapeamento dos IDs do executor para as instâncias do executor. |
Regressos
| Tipo | Descrição |
|---|---|
|
<xref:agent_framework._workflows._edge_runner.EdgeRunner>
|
A instância apropriada do EdgeRunner. |
executor
Decorator que converte uma função autónoma numa instância FunctionExecutor.
O @executor decorador foi concebido apenas para funções autónomas ao nível do módulo. Para executores baseados em classes, use a classe base Executor com @handler métodos on instance.
Suporta funções síncronas e assíncronas. As funções síncronas são executadas num pool de threads para evitar bloquear o ciclo de eventos.
Importante
Utilização @executor para funções autónomas (funções ao nível do módulo ou locais)
NÃO usar @executor com staticmethod ou classmethod
Para executores baseados em classes, subclasse Executor e uso @handler em métodos de instância
Utilização:
# 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 | Descrição |
|---|---|
|
func
|
A função de decorar (quando usada sem parênteses) Valor padrão: None
|
|
id
Necessário
|
ID personalizado opcional para o executor. Se Não, usa o nome da função. |
Keyword-Only Parâmetros
| Nome | Descrição |
|---|---|
|
id
|
Valor padrão: None
|
Regressos
| Tipo | Descrição |
|---|---|
|
Uma instância de FunctionExecutor que pode ser ligada a um Workflow. |
Exceções
| Tipo | Descrição |
|---|---|
|
Se usado com staticmethod ou classmethod (padrão não suportado) |
function_middleware
Decorador para marcar uma função como middleware funcional.
Este decorador identifica explicitamente uma função como middleware de funções, 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 | Descrição |
|---|---|
|
func
Necessário
|
Callable[[FunctionInvocationContext, Callable[[FunctionInvocationContext], Awaitable[None]]], Awaitable[None]]
A função do middleware para marcar como middleware de função. |
Regressos
| Tipo | Descrição |
|---|---|
|
A mesma função com 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 | Descrição |
|---|---|
|
checkpoint
Necessário
|
|
Regressos
| Tipo | Descrição |
|---|---|
get_logger
Arranja um logger com o nome especificado, usando por defeito 'agent_framework'.
get_logger(name: str = 'agent_framework') -> Logger
Parâmetros
| Nome | Descrição |
|---|---|
|
name
|
O nome do lenhador. Por defeito, é 'agent_framework'. Valor padrão: "agent_framework"
|
Regressos
| Tipo | Descrição |
|---|---|
|
A instância do logger configurada. |
handler
Decorador para registar um tratador para um executor.
handler(func: Callable[[ExecutorT, Any, ContextT], Awaitable[Any]]) -> Callable[[ExecutorT, Any, ContextT], Awaitable[Any]]
Parâmetros
| Nome | Descrição |
|---|---|
|
func
Necessário
|
Callable[[<xref:agent_framework._workflows._executor.ExecutorT>, Any, <xref:agent_framework._workflows._executor.ContextT>], Awaitable[Any]]
A função de decorar. Pode ser Nenhum quando usado sem parâmetros. |
Regressos
| Tipo | Descrição |
|---|---|
|
A função decorada com metadados do handler. |
Exemplos
@handler async def handle_string(self, message: str, ctx: WorkflowContext[str]) -> Nenhum:
...
@handler async def handle_data(self, message: dict, ctx: WorkflowContext[str | int]) -> Nenhum:
...
prepare_function_call_results
Prepare os valores dos resultados das chamadas 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
Regressos
| Tipo | Descrição |
|---|---|
prepend_agent_framework_to_user_agent
Anteponha "agent-framework" ao User-Agent nos cabeçalhos.
Quando a telemetria do agente do utilizador é desativada através da AGENT_FRAMEWORK_USER_AGENT_DISABLED variável de ambiente, o cabeçalho User-Agent não incluirá a informação do agent-framework.
Será devolvida tal como está, ou como um ditado vazio quando Nenhum for aprovado.
prepend_agent_framework_to_user_agent(headers: dict[str, Any] | None = None) -> dict[str, Any]
Parâmetros
| Nome | Descrição |
|---|---|
|
headers
|
O dicionário de cabeçalhos existente. Valor padrão: None
|
Regressos
| Tipo | Descrição |
|---|---|
|
Um novo dict com "User-Agent" definido para "agent-framework-python/{version}" se os cabeçalhos forem Nenhum. O dicionário de cabeçalhos modificados com "agent-framework-python/{version}" prependido 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 registar um handler para tratar das respostas a um pedido.
response_handler(func: Callable[[ExecutorT, Any, Any, ContextT], Awaitable[None]]) -> Callable[[ExecutorT, Any, Any, ContextT], Awaitable[None]]
Parâmetros
| Nome | Descrição |
|---|---|
|
func
Necessá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 de decorar. |
Regressos
| Tipo | Descrição |
|---|---|
|
A função decorada com metadados do handler. |
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
Configura a configuração de registos para o framework do agente.
setup_logging() -> None
Regressos
| Tipo | Descrição |
|---|---|
use_agent_middleware
Decorador de classe que adiciona suporte de middleware a uma classe de agente.
Este decorador adiciona funcionalidade de middleware a qualquer classe de agente.
Envolve os run() métodos e run_stream() para fornecer a execução de middleware.
A execução do middleware pode ser terminada a qualquer momento ao definir a context.terminate propriedade como True. Uma vez definido, o pipeline deixa de executar mais middleware assim que o controlo regressa ao pipeline.
Observação
Este decorador já está aplicado a aulas integradas para agentes. Só precisas de usar
Se estiveres a criar implementações de agentes personalizados.
use_agent_middleware(agent_class: type[TAgent]) -> type[TAgent]
Parâmetros
| Nome | Descrição |
|---|---|
|
agent_class
Necessário
|
type[<xref:TAgent>]
A classe agente para adicionar suporte a middleware. |
Regressos
| Tipo | Descrição |
|---|---|
|
type[~<xref:TAgent>]
|
A classe 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 de middleware a uma classe cliente de chat.
Este decorador adiciona funcionalidade de middleware a qualquer classe de cliente de chat.
Envolve os get_response() métodos e get_streaming_response() para fornecer a execução de middleware.
Observação
Este decorador já é aplicado a classes de chat integradas para clientes. Só precisas de usar
É se estiveres a criar implementações personalizadas de clientes de chat.
use_chat_middleware(chat_client_class: type[TChatClient]) -> type[TChatClient]
Parâmetros
| Nome | Descrição |
|---|---|
|
chat_client_class
Necessário
|
type[<xref:TChatClient>]
A classe cliente de chat para adicionar suporte a middleware. |
Regressos
| Tipo | Descrição |
|---|---|
|
type[~<xref:TChatClient>]
|
A classe 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 permite chamadas de ferramentas para um cliente de chat.
Este decorador envolve os get_response métodos e get_streaming_response para tratar automaticamente chamadas de funções do modelo, executá-las e devolver os resultados ao modelo para processamento posterior.
use_function_invocation(chat_client: type[TChatClient]) -> type[TChatClient]
Parâmetros
| Nome | Descrição |
|---|---|
|
chat_client
Necessário
|
type[<xref:TChatClient>]
A classe do cliente de chat para decorar. |
Regressos
| Tipo | Descrição |
|---|---|
|
type[~<xref:TChatClient>]
|
A classe cliente de chat decorada com invocação de função ativada. |
Exceções
| Tipo | Descrição |
|---|---|
|
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 gráfico de fluxo de trabalho.
validate_workflow_graph(edge_groups: Sequence[EdgeGroup], executors: dict[str, Executor], start_executor: Executor) -> None
Parâmetros
| Nome | Descrição |
|---|---|
|
edge_groups
Necessário
|
Sequence[<xref:agent_framework._workflows._edge.EdgeGroup>]
Lista de grupos de arestas no fluxo de trabalho |
|
executors
Necessário
|
Mapeamento dos IDs do executor para as instâncias do executor |
|
start_executor
Necessário
|
O executor inicial (pode ser instância ou ID) |
Regressos
| Tipo | Descrição |
|---|---|
Exceções
| Tipo | Descrição |
|---|---|
|
Se alguma validação falhar |