Ajuste fino e chamada de função
Os modelos que usam a API de conclusão de chat suportam a chamada de função. Infelizmente, as funções definidas em suas chamadas de conclusão de bate-papo nem sempre funcionam como esperado. O ajuste fino do seu modelo com exemplos de chamada de função pode melhorar a saída do modelo, permitindo-lhe:
- Obtenha respostas formatadas de forma semelhante, mesmo quando a definição completa da função não estiver presente. (Permitindo que você economize dinheiro em tokens de prompt.)
- Obtenha saídas mais precisas e consistentes.
Construindo um arquivo de treinamento
Ao construir um arquivo de treinamento de exemplos de chamada de função, você tomaria 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 dentro do seu .jsonl
arquivo de treinamento, 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"]}}]}
Como em todo treinamento de ajuste fino, seu arquivo de exemplo requer pelo menos 10 exemplos.
Otimize para custos
A OpenAI recomenda que, se você estiver tentando otimizar para usar menos tokens de prompt, publique o ajuste fino do seu modelo nas definições de função completas, você pode experimentar:
- Omitir descrições de funções e parâmetros: remova o campo de descrição da função e dos parâmetros.
- Omitir parâmetros: remova todo o campo de propriedades do objeto parameters.
- Omitir totalmente a função: remova todo o objeto de função da matriz de funções.
Otimize para a 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 de treinamento de ajuste fino e nas chamadas de conclusão de bate-papo subsequentes permaneçam idênticas.
Personalizar respostas do 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, você inclui exemplos que consistem em mensagens de resposta de função e mensagens de resposta do assistente onde a resposta da função é interpretada e contextualizada 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
}
Tal como no exemplo anterior, este exemplo é artificialmente expandido para facilitar a leitura. A entrada real no .jsonl
arquivo de treinamento 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óximos passos
- Função chamando cenários de ajuste fino.
- Explore os recursos de ajuste fino no tutorial de ajuste fino do Azure OpenAI.
- Revise a disponibilidade regional do modelo de ajuste fino.