Ferramentas#
Aprenda como conectar LLMs a ferramentas externas.
Introdução#
Através da funcionalidade tools, você pode fazer com que seu modelo utilize ferramentas externas.
Assim como a API de Chamada de Função da OpenAI <https://platform.openai.com/docs/guides/function-calling>_, você pode definir funções com parâmetros e fazer com que o modelo selecione dinamicamente qual função chamar e quais argumentos passar para ela.
Este é o processo geral de chamada de funções:
Você submete uma consulta, detalhando as funções, seus parâmetros e descrições.
O LLM decide se deve ativar a funcionalidade. Se optar por não ativar, ele responde em linguagem cotidiana, fornecendo uma solução com base em seu entendimento interno ou solicitando mais detalhes sobre a consulta e o uso das ferramentas. Ao decidir usar as ferramentas, ele recomenda APIs adequadas e instruções de uso no formato JSON.
Em seguida, você implementa a chamada de API no aplicativo, envia a resposta retornada de volta ao LLM para análise dos resultados e prossegue com a próxima etapa.
Atualmente, não há um endpoint de API dedicado implementado para a funcionalidade tools. Ele deve ser utilizado em conjunto com a API de Chat.
Lista de modelos suportados#
Xinference suporta que os seguintes modelos utilizem a funcionalidade tools:
Início Rápido#
O parâmetro opcional tools na API Chat pode ser usado para fornecer especificações de funções. Seu objetivo é permitir que o modelo gere parâmetros de função que estejam em conformidade com as especificações fornecidas.
Exemplo de uso do cliente OpenAI#
import openai
client = openai.Client(
api_key="cannot be empty",
base_url="http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1"
)
response = client.chat.completions.create(
model="<MODEL_UID>",
messages=[{
"role": "user",
"content": "Call me an Uber ride type 'Plus' in Berkeley at zipcode 94704 in 10 minutes"
}],
tools=[
{
"type": "function",
"function": {
"name": "uber_ride",
"description": "Find suitable ride for customers given the location, "
"type of ride, and the amount of time the customer is "
"willing to wait as parameters",
"parameters": {
"type": "object",
"properties": {
"loc": {
"type": "int",
"description": "Location of the starting place of the Uber ride",
},
"type": {
"type": "string",
"enum": ["plus", "comfort", "black"],
"description": "Types of Uber ride user is ordering",
},
"time": {
"type": "int",
"description": "The amount of time in minutes the customer is willing to wait",
},
},
},
},
}
],
)
print(response.choices[0].message)
O resultado da saída é:
{
"role": "assistant",
"content": null,
"tool_calls": [
"id": "call_ad2f383f-31c7-47d9-87b7-3abe928e629c",
"type": "function",
"function": {
"name": "uber_ride",
"arguments": "{\"loc\": 94704, \"type\": \"plus\", \"time\": 10}"
}
],
}
Exemplo de uso do cliente Anthropic#
import anthropic
import json
import uuid
client = anthropic.Anthropic(
api_key="cannot be empty",
base_url="http://localhost:9997"
)
response = client.messages.create(
model="qwen3",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "What's the weather like in Beijing?"
}
],
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather information for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city name",
},
},
"required": ["city"]
},
},
}
],
tool_choice={"type": "auto"}
)
O resultado da saída é:
{
"role": "assistant",
"content": null,
"tool_calls": [
"id": "call_26884d11-ff6b-48fb-ada7-734f3fd0dfcc",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"Beijing\"}"
}
],
}
Nota
Se o LLM usar chamadas de ferramenta, o motivo da conclusão será tool_calls. Caso contrário, será o motivo de conclusão padrão.
Nota
A API em si não executa nenhuma chamada de função. Os desenvolvedores precisam usar a saída do modelo para executar as chamadas de função.
Você pode encontrar mais exemplos sobre as capacidades de tools no tutorial de notebooks.
Aprenda com um exemplo completo que demonstra o processo de chamada de função.