Afstemmen en functie-aanroepen
Modellen die gebruikmaken van de API voor chat-voltooiingen, bieden ondersteuning voor functie-aanroepen. Helaas worden functies die zijn gedefinieerd in uw chatopvullingsgesprekken niet altijd zoals verwacht uitgevoerd. Door uw model af te stemmen met voorbeelden van functiegesprekken, kunt u modeluitvoer verbeteren door het volgende mogelijk te maken:
- Haal vergelijkbare opgemaakte antwoorden op, zelfs wanneer de volledige functiedefinitie niet aanwezig is. (Hiermee kunt u mogelijk geld besparen op prompttokens.)
- Krijg nauwkeurigere en consistente uitvoer.
Een trainingsbestand samenstellen
Wanneer u een trainingsbestand maakt van voorbeelden van functie-aanroepen, moet u een functiedefinitie als volgt gebruiken:
{
"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"]
}
}]
}
En geef de informatie weer als één regel in uw .jsonl
trainingsbestand, zoals hieronder:
{"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"]}}]}
Net als bij alle afstemmingstrainingen vereist uw voorbeeldbestand ten minste 10 voorbeelden.
Optimaliseren voor kosten
OpenAI raadt aan dat als u probeert te optimaliseren om minder prompttokens te gebruiken na het afstemmen van uw model op de volledige functiedefinities waarmee u kunt experimenteren:
- Laat functie- en parameterbeschrijvingen weg: verwijder het beschrijvingsveld uit de functie en parameters.
- Laat parameters weg: verwijder het hele eigenschappenveld uit het parameterobject.
- Laat de functie volledig weg: verwijder het hele functieobject uit de functiematrix.
Optimaliseren voor kwaliteit
Als u de kwaliteit van de uitvoer van het aanroepen van functies probeert te verbeteren, wordt u aangeraden dat de functiedefinities die aanwezig zijn in de trainingsgegevensset voor het verfijnen van de training en daaropvolgende chatopvullingsgesprekken identiek blijven.
Modelantwoorden aanpassen aan functie-uitvoer
Afstemming op basis van voorbeelden van functiegesprekken kan ook worden gebruikt om het antwoord van het model op functie-uitvoer te verbeteren. Hiervoor voegt u voorbeelden toe die bestaan uit functieantwoordberichten en antwoordberichten van assistenten, waarbij het antwoord van de functie wordt geïnterpreteerd en in context wordt geplaatst door de assistent.
{
"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
}
Net als bij het voorbeeld wordt dit voorbeeld kunstmatig uitgebreid voor leesbaarheid. De werkelijke vermelding in het .jsonl
trainingsbestand zou één regel zijn:
{"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": []}
Volgende stappen
- Scenario's voor het afstemmen van functies.
- Verken de mogelijkheden voor het afstemmen van de Azure OpenAI in de zelfstudie voor het verfijnen van Azure OpenAI.
- Bekijk de regionale beschikbaarheid van het model.