Sdílet prostřednictvím


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.

Důležité

Parametry functions jsou function_call zastaralé s vydáním 2023-12-01-preview verze rozhraní API. Rozhraní API pro vyladění v současné době ale vyžaduje použití starších parametrů.

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

  • Prozkoumejte možnosti jemného ladění v kurzu vyladění Azure OpenAI.
  • Kontrola regionální dostupnosti modelu vyladění