For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal

Funções

Defina funções, processe chamadas pendentes e retorne resultados.

As ferramentas de função permitem que um agente chame o código da sua aplicação. Você define a função e seus argumentos. O agente solicita uma chamada, seu código retorna um resultado e o harness dá continuidade ao turno.

Seu código de tratamento pode ser executado em um servidor de aplicações, em um processo executor ou em um ambiente que você controla. Associar um ambiente a uma sessão não faz com que as ferramentas de função sejam executadas automaticamente nele.

Se você usa chamada de função na API Responses, pode reutilizar a implementação da sua função com o fluxo de sessão descrito aqui.

Defina uma função

Adicione uma definição de função a agent.tools ao configurar o agente. Defina um nome, uma descrição e um JSON Schema para os argumentos da função:

{
  "type": "function",
  "name": "get_customer",
  "description": "Look up a customer by ID.",
  "parameters": {
    "type": "object",
    "properties": { "customer_id": { "type": "string" } },
    "required": ["customer_id"],
    "additionalProperties": false
  }
}

Processe as ações necessárias

Quando o agente precisa do resultado de uma função, a sessão emite agent.session.requires_action. Leia as chamadas pendentes em event.session.required_actions. Você também pode recuperar a sessão e ler session.required_actions sem streaming.

Uma entrada de função em required_actions tem este formato:

{
  "type": "function_call",
  "turn_id": "turn_123",
  "call_id": "call_123",
  "name": "get_customer",
  "arguments": { "customer_id": "123" }
}

Execute a função indicada com os argumentos fornecidos. Use required_actions para determinar quais chamadas precisam de resultados; um item function_call no histórico da sessão, por si só, não confirma que há um resultado pendente.

Retorne o resultado

Envie agent.session.input.tool_result para o endpoint de eventos da sessão. Copie turn_id e call_id da ação pendente:

  • Em caso de sucesso, defina success: true e forneça output como uma string ou um array de conteúdo compatível. Serialize objetos JSON em strings.
  • Em caso de erro, defina success: false e forneça em error uma mensagem que o agente possa usar.

Para cada chamada pendente de get_customer, execute sua consulta e retorne o resultado. Aqui, action é a entrada de required_actions:

Retorne o resultado de uma função
const result = {
  turn_id: action.turn_id,
  call_id: action.call_id,
};
let outcome;

outcome = {
  success: true,
  output: JSON.stringify(getCustomer(action.arguments)),
};

await client.beta.agents.sessions.events.create(sessionId, {
  events: [
    { type: "agent.session.input.tool_result", ...result, ...outcome },
  ],
});

O harness dá continuidade ao turno após receber os resultados necessários. Acompanhe os eventos e itens da sessão para verificar o desfecho do turno e recuperar sua saída.

Retome após uma desconexão

Recupere a sessão para encontrar ações pendentes. Se você já executou uma função, envie o resultado salvo com os mesmos valores de turn_id e call_id.

Para funções com efeitos colaterais, armazene os resultados de forma persistente, organizados por sessão, turno e ID da chamada. Se a execução pode ter sido bem-sucedida, mas nenhum resultado foi salvo, verifique o desfecho antes de executar a função novamente.

Carregue funções sob demanda

Por padrão, as funções são carregadas antecipadamente. Para adiar o carregamento de uma função, defina defer_loading: true na definição dela e inclua { "type": "tool_search" } em agent.tools. Consulte Pesquisa de ferramentas para ver um exemplo completo.