Ajuste fino e chamada de função
Os modelos que usam a API de conclusões de chat dão suporte à chamada de função. Infelizmente, as funções definidas nas chamadas de conclusão de chat nem sempre são executadas conforme o esperado. O ajuste fino do modelo com exemplos de chamada de função pode melhorar a saída do modelo, permitindo que você:
- Obtenha respostas formatadas da mesma forma, mesmo quando a definição de função completa não estiver presente. (Permitindo que você possivelmente economize dinheiro em tokens de prompt.)
- Obtenha saídas mais precisas e consistentes.
Construir um arquivo de treinamento
Ao construir um arquivo de treinamento de exemplos de chamada de função, você vai adotar uma definição de função como esta:
{
"messages": [
{"role": "user", "content": "What is the weather in San Francisco?"},
{"role": "assistant", "function_call": {"name": "get_current_weather", "arguments": "{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"}
],
"functions": [{
"name": "get_current_weather",
"description": "Get the current weather",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and country, eg. San Francisco, USA"},
"format": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location", "format"]
}
}]
}
E expresse as informações como uma única linha em seu arquivo de treinamento .jsonl
conforme abaixo:
{"messages": [{"role": "user", "content": "What is the weather in San Francisco?"}, {"role": "assistant", "function_call": {"name": "get_current_weather", "arguments": "{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"}}], "functions": [{"name": "get_current_weather", "description": "Get the current weather", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and country, eg. San Francisco, USA"}, "format": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "format"]}}]}
Assim como acontece com todo o treinamento de ajuste fino, seu arquivo de exemplo requer pelo menos 10 exemplos.
Otimizar para custos
O OpenAI recomenda que, se você estiver tentando otimizar para usar menos tokens de prompt após ajustar seu modelo nas definições de função completas com as quais você pode experimentar, faça o seguinte:
- Omita descrições de função e parâmetro: remova o campo de descrição da função e dos parâmetros.
- Omita parâmetros: remova todo o campo de propriedades do objeto de parâmetros.
- Omita a função inteiramente: remova todo o objeto de função da matriz de funções.
Otimizar para obter qualidade
Como alternativa, se você estiver tentando melhorar a qualidade da saída de chamada de função, é recomendável que as definições de função presentes no conjunto de dados do treinamento de ajuste fino e nas chamadas de conclusão de chat subsequentes permaneçam idênticas.
Personalizar respostas de modelo para saídas de função
O ajuste fino com base em exemplos de chamada de função também pode ser usado para melhorar a resposta do modelo às saídas de função. Para fazer isso, inclua exemplos que consistem em mensagens de resposta de função e mensagens de resposta do assistente onde a resposta da função é interpretada e colocada no contexto pelo assistente.
{
"messages": [
{"role": "user", "content": "What is the weather in San Francisco?"},
{"role": "assistant", "function_call": {"name": "get_current_weather", "arguments": "{\"location\": \"San Francisco, USA\", \"format\": \"celcius\"}"}}
{"role": "function", "name": "get_current_weather", "content": "21.0"},
{"role": "assistant", "content": "It is 21 degrees celsius in San Francisco, CA"}
],
"functions": [...] // same as before
}
Assim como no exemplo anterior, este exemplo é expandido artificialmente para legibilidade. A entrada real no arquivo de treinamento .jsonl
seria uma única linha:
{"messages": [{"role": "user", "content": "What is the weather in San Francisco?"}, {"role": "assistant", "function_call": {"name": "get_current_weather", "arguments": "{\"location\": \"San Francisco, USA\", \"format\": \"celcius\"}"}}, {"role": "function", "name": "get_current_weather", "content": "21.0"}, {"role": "assistant", "content": "It is 21 degrees celsius in San Francisco, CA"}], "functions": []}
Próximas etapas
- Função que chama cenários de ajuste fino.
- Explore os recursos de ajuste fino na tutorial de ajuste fino do Azure OpenAI.
- Examinar a disponibilidade regional do modelo de ajuste fino.