Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Modeller som använder chattkompletterings-API:et stödjer verktygsanrop. Funktioner som definieras i dina samtal för chattens slutförande fungerar inte alltid som förväntat. Finjustering av din modell med verktygsanropsexempel kan förbättra modellutdata:
| Förmån | Description |
|---|---|
| Minska prompttokener | Få liknande formaterade svar även när den fullständiga funktionsdefinitionen inte finns. |
| Förbättra noggrannheten | Få mer exakta och konsekventa utdata. |
Anmärkning
function_call och functions har blivit inaktuell till förmån för tools.
Använd parametern tools i stället.
Verktygsanrop (rekommenderas)
Skapa en träningsfil
När du skapar en träningsfil med verktygsanropsexempel ska du ta en funktionsdefinition som den här:
{
"messages": [
{ "role": "user", "content": "What is the weather in San Francisco?" },
{
"role": "assistant",
"tool_calls": [
{
"id": "call_id",
"type": "function",
"function": {
"name": "get_current_weather",
"arguments": "{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"
}
}
]
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and country/region, eg. San Francisco, USA"
},
"format": { "type": "string", "enum": ["celsius", "fahrenheit"] }
},
"required": ["location", "format"]
}
}
}
]
}
Och uttrycka informationen som en enda rad i träningsfilen .jsonl enligt nedan:
{"messages":[{"role":"user","content":"What is the weather in San Francisco?"},{"role":"assistant","tool_calls":[{"id":"call_id","type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"}}]}],"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and country/region, eg. San Francisco, USA"},"format":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location","format"]}}}]}
Som med all finjusteringsträning kräver exempelfilen minst 10 exempel.
Optimera för kostnad
Om du vill använda färre prompttoken efter finjustering av fullständiga funktionsdefinitioner experimenterar du med följande strategier:
| Strategi | Description |
|---|---|
| Utelämna beskrivningar | Ta bort fältet description från funktionen och parametrarna. |
| Utelämna parametrar | Ta bort hela properties fältet från objektet parameters . |
| Utelämna funktionen helt | Ta bort hela funktionsobjektet från funktionsmatrisen. |
Optimera för kvalitet
För att förbättra kvaliteten på verktygsanropsutdata behåller du funktionsdefinitionerna i din finjusterande träningsdatauppsättning och efterföljande samtal om chattens slutförande identiska.
Anpassa modellsvar till funktionsutdata
Du kan också finjustera verktygsanropsexempel för att förbättra modellens svar på funktionsutdata. Inkludera exempel som består av funktionssvarsmeddelanden och assistentsvarsmeddelanden där funktionssvaret tolkas och sätts i kontext av assistenten.
{
"messages": [
{"role": "user", "content": "What is the weather in San Francisco?"},
{"role": "assistant", "tool_calls": [{"id": "call_id", "type": "function", "function": {"name": "get_current_weather", "arguments": "{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"}}]}
{"role": "tool", "tool_call_id": "call_id", "content": "21.0"},
{"role": "assistant", "content": "It is 21 degrees celsius in San Francisco, CA"}
],
"tools": [] // same as before
}
Precis som med exemplet tidigare utökas det här exemplet artificiellt för läsbarhet. Den egentliga inmatningen i .jsonl träningsfilen skulle bestå av en enda rad.
{"messages":[{"role":"user","content":"What is the weather in San Francisco?"},{"role":"assistant","tool_calls":[{"id":"call_id","type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": \"San Francisco, USA\", \"format\": \"celsius\"}"}}]},{"role":"tool","tool_call_id":"call_id","content":"21.0"},{"role":"assistant","content":"It is 21 degrees celsius in San Francisco, CA"}],"tools":[]}
Skapa en träningsfil
När du skapar en träningsfil med funktionsanropsexempel ska du ta en funktionsdefinition som den här:
{
"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"]
}
}]
}
Och uttrycka informationen som en enda rad i träningsfilen .jsonl enligt nedan:
{"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/region, eg. San Francisco, USA"}, "format": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "format"]}}]}
Som med all finjusteringsträning kräver exempelfilen minst 10 exempel.
Optimera för kostnad
Om du vill använda färre prompttoken efter finjustering av fullständiga funktionsdefinitioner experimenterar du med följande strategier:
| Strategi | Description |
|---|---|
| Utelämna beskrivningar | Ta bort fältet description från funktionen och parametrarna. |
| Utelämna parametrar | Ta bort hela properties fältet från objektet parameters . |
| Utelämna funktionen helt | Ta bort hela funktionsobjektet från funktionsmatrisen. |
Optimera för kvalitet
För att förbättra kvaliteten på utdata från funktionsanrop ska du hålla funktionsdefinitionerna i din finjusteringsdatamängd och efterföljande chattanrop identiska.
Anpassa modellsvar till funktionsutdata
Du kan också finjustera funktionsanropsexempel för att förbättra modellens svar på funktionsutdata. Inkludera exempel som består av funktionssvarsmeddelanden och assistentsvarsmeddelanden där funktionssvaret tolkas och sätts i kontext av assistenten.
{
"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\"}"}}
{"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
}
Precis som med exemplet tidigare utökas det här exemplet artificiellt för läsbarhet. Den egentliga inmatningen i .jsonl träningsfilen skulle bestå av en enda rad.
{"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\"}"}}, {"role": "function", "name": "get_current_weather", "content": "21.0"}, {"role": "assistant", "content": "It is 21 degrees celsius in San Francisco, CA"}], "functions": []}
Nästa steg
- Funktionsanropsscenarier för finjustering.
- Utforska finjusteringsfunktionerna i självstudiekursen Azure OpenAI.
- Granska finjustera modellens regionala tillgången.