Chamada de função para modelos abertos

Neste guia, mostramos como usar a chamada de função com modelos abertos na Vertex AI, abordando os seguintes tópicos:

  • Usar a chamada de função:aprenda a estruturar uma solicitação ao modelo que inclua uma definição de função.
  • Exemplo detalhado:confira um exemplo completo e multiturno de uma conversa que usa a chamada de função.

O diagrama a seguir resume o fluxo de trabalho geral:

A chamada de função permite que um modelo identifique quando invocar uma ferramenta ou API externa e gere dados estruturados com a função e os argumentos necessários para a execução. Todos os modelos abertos disponíveis no modelo como serviço (MaaS) da Vertex AI são compatíveis com a chamada de função.

Para mais informações conceituais sobre a capacidade de chamada de função, consulte Introdução à chamada de função.

Usar a chamada de função

Para usar a chamada de função, forneça ao modelo um conjunto de definições de ferramentas na sua solicitação. O modelo usa essas definições para determinar se precisa chamar uma função para responder à sua consulta.

O exemplo a seguir mostra uma solicitação que pede ao modelo para comparar o clima em duas cidades. A solicitação inclui uma matriz tools com uma declaração de função para get_current_weather.

{
  "model": "MODEL_NAME",
  "messages": [
    {
      "role": "user",
      "content": "Which city has a higher temperature, Boston or new Delhi, and by how much in F?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_current_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"]
            }
          },
          "required": ["location"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}

Depois de receber a solicitação, o modelo determina que precisa chamar a função get_current_weather para as duas cidades. Ela retorna uma resposta que contém uma matriz tool_calls com os argumentos adequados para cada chamada de função.

Os snippets a seguir mostram os dois objetos de chamada de função que o modelo retorna na matriz tool_calls.

Boston

{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"} "id":"get_current_weather","type":"function"}

Nova Délhi

{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}

exemplo detalhado

Esta seção continua o exemplo anterior e mostra a conversa completa de várias interações.

Depois que o aplicativo executa as funções com base no tool_calls do modelo, você envia outra solicitação ao modelo. Essa nova solicitação precisa incluir o histórico da conversa e os resultados das chamadas de função. Os resultados são fornecidos em mensagens com a função tool.

Confira a seguir um exemplo do payload da solicitação que inclui os resultados da ferramenta:

{
  "model": "MODEL_NAME",
  "messages": [
    {
      "role": "user",
      "content": "Which city has a higher temperature, Boston or new Delhi and by how much in F?"
    },
    {
      "role": "assistant",
      "content": "I'll check the current temperatures for Boston and New Delhi in Fahrenheit and compare them. I'll call the weather function for both cities.",
      "tool_calls": [{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"},{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}]
    },
    {
      "role": "tool",
      "content": "The temperature in Boston is 75 degrees Fahrenheit.",
      "tool_call_id": "get_weather"
    },
    {
      "role": "tool",
      "content": "The temperature in New Delhi is 50 degrees Fahrenheit.",
      "tool_call_id": "get_weather"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_current_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"]
            }
          },
          "required": ["location"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}

O modelo usa os resultados da função para responder à sua pergunta original. Confira a seguir um exemplo da resposta final do modelo:

{
 "choices": [
  {
   "finish_reason": "stop",
   "index": 0,
   "logprobs": null,
   "message": {
    "content": "Based on the current weather data:\n\n- **Boston, MA**: 75°F 
    \n- **New Delhi, India**: 50°F  \n\n**Comparison**:
    \nBoston is **25°F warmer** than New Delhi.  \n\n**Answer**:
    \nBoston has a higher temperature than New Delhi by 25 degrees Fahrenheit.",
    "role": "assistant"
   }
  }
 ],
 "created": 1750450289,
 "id": "2025-06-20|13:11:29.240295-07|6.230.75.101|-987540014",
 "model": "MODEL_NAME",
 "object": "chat.completion",
 "system_fingerprint": "",
 "usage": {
  "completion_tokens": 66,
  "prompt_tokens": 217,
  "total_tokens": 283
 }
}