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
}
}