Jemné ladění a volání funkcí
Modely, které používají rozhraní API pro dokončování chatu, podporují volání funkcí. Funkce definované ve voláních pro dokončování chatu bohužel ne vždy fungují podle očekávání. Vyladění modelu pomocí příkladů volání funkcí může vylepšit výstup modelu tím, že vám umožní:
- Získejte podobně formátované odpovědi, i když není k dispozici definice úplné funkce. (Umožňuje vám ušetřit peníze na tokeny výzvy.)
- Získejte přesnější a konzistentnější výstupy.
Vytvoření trénovacího souboru
Při vytváření trénovacího souboru příkladů volání funkcí byste použili definici funkce takto:
{
"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"]
}
}]
}
A vyjádřete .jsonl
informace jako jeden řádek v trénovacím souboru následujícím způsobem:
{"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"]}}]}
Stejně jako u všech vyladění trénování ukázkového souboru vyžaduje alespoň 10 příkladů.
Optimalizace nákladů
OpenAI doporučuje, abyste v případě, že se pokoušíte optimalizovat tak, aby po vyladění modelu v úplných definicích funkcí bylo možné experimentovat s menším počtem tokenů výzvy:
- Vynechat popisy funkcí a parametrů: Odeberte pole popisu z funkce a parametrů.
- Vynechat parametry: Odeberte z objektu parametrů celé pole vlastností.
- Vynechání zcela funkce: Odeberte celý objekt funkce z pole funkcí.
Optimalizace pro kvalitu
Pokud se také pokoušíte zlepšit kvalitu výstupu volání funkce, doporučuje se, aby definice funkcí, které jsou přítomné v jemně vyladěné trénovací datové sadě a následná volání dokončení chatu, zůstala stejná.
Přizpůsobení odpovědí modelu na výstupy funkcí
Vyladění na základě příkladů volání funkcí lze také použít ke zlepšení odezvy modelu na výstupy funkcí. Abyste toho dosáhli, zahrnete příklady skládající se ze zpráv odpovědí funkce a zpráv odpovědí asistenta, kde je odpověď funkce interpretována a vložena do kontextu pomocníkem.
{
"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
}
Stejně jako u příkladu je tento příklad uměle rozšířen pro čitelnost. Skutečná položka v trénovacím .jsonl
souboru by byla jeden řádek:
{"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": []}
Další kroky
- Scénáře jemného ladění funkcí
- Prozkoumejte možnosti jemného ladění v kurzu vyladění Azure OpenAI.
- Kontrola regionální dostupnosti modelu vyladění