Udostępnij za pośrednictwem


Dostrajanie i wywoływanie funkcji

Modele korzystające z interfejsu API uzupełniania czatów obsługują wywoływanie funkcji. Niestety funkcje zdefiniowane w wywołaniach uzupełniania czatu nie zawsze działają zgodnie z oczekiwaniami. Dostrajanie modelu za pomocą przykładów wywołań funkcji może poprawić dane wyjściowe modelu, umożliwiając:

  • Pobierz podobnie sformatowane odpowiedzi, nawet jeśli pełna definicja funkcji nie jest obecna. (Umożliwia potencjalnie oszczędność pieniędzy na tokenach monitów).
  • Uzyskaj dokładniejsze i spójne dane wyjściowe.

Ważne

Parametry functions i function_call zostały przestarzałe wraz z wydaniem 2023-12-01-preview wersji interfejsu API. Jednak interfejs API dostrajania obecnie wymaga użycia starszych parametrów.

Konstruowanie pliku szkoleniowego

Podczas tworzenia pliku szkoleniowego przykładów wywoływania funkcji należy podjąć definicję funkcji w następujący sposób:

{
    "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"]
        }
    }]
}

I wyrazić informacje jako pojedynczy wiersz w .jsonl pliku treningowym, jak pokazano poniżej:

{"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"]}}]}

Podobnie jak w przypadku wszystkich dostrajania trenowania przykładowy plik wymaga co najmniej 10 przykładów.

Optymalizowanie pod kątem kosztów

Interfejs OpenAI zaleca, aby jeśli próbujesz zoptymalizować użycie mniejszej liczby tokenów monitów po dostrojeniu modelu w pełnych definicjach funkcji, możesz eksperymentować z:

  • Pomiń opisy funkcji i parametrów: usuń pole opisu z funkcji i parametrów.
  • Pomiń parametry: usuń całe pole właściwości z obiektu parameters.
  • Pomiń funkcję całkowicie: usuń cały obiekt funkcji z tablicy funkcji.

Optymalizowanie pod kątem jakości

Alternatywnie, jeśli próbujesz poprawić jakość danych wyjściowych wywoływania funkcji, zaleca się, aby definicje funkcji obecne w zestawie danych trenowania dostrajania, a kolejne wywołania uzupełniania czatu pozostają identyczne.

Dostosowywanie odpowiedzi modelu do danych wyjściowych funkcji

Dostrajanie na podstawie przykładów wywołań funkcji może również służyć do ulepszania odpowiedzi modelu na dane wyjściowe funkcji. W tym celu dołączono przykłady składające się z komunikatów odpowiedzi funkcji i komunikatów odpowiedzi asystenta, w których odpowiedź funkcji jest interpretowana i umieszczana w kontekście przez asystenta.

{
    "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
}

Podobnie jak w przypadku przykładu wcześniej, ten przykład jest sztucznie rozszerzany w celu zapewnienia czytelności. Rzeczywisty wpis w pliku trenowania .jsonl będzie pojedynczym wierszem:

{"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": []}

Następne kroki

  • Zapoznaj się z możliwościami dostosowywania w samouczku dostrajania usługi Azure OpenAI.
  • Przegląd dostępności regionalnej modelu dostosowywania szczegółowego