ضبط دقيق واستدعاء الدالة

تدعم النماذج التي تستخدم استدعاء وظيفة دعم واجهة برمجة التطبيقات لإكمال الدردشة. لسوء الحظ، لا تعمل الوظائف المحددة في مكالمات إكمال الدردشة دائما كما هو متوقع. يمكن أن يؤدي ضبط النموذج الخاص بك باستخدام أمثلة استدعاء الدالة إلى تحسين إخراج النموذج من خلال تمكينك من:

  • احصل على استجابات منسقة بشكل مماثل حتى عندما لا يكون تعريف الدالة الكامل موجودا. (مما يسمح لك بتوفير المال على الرموز المميزة للمطالبة.)
  • احصل على مخرجات أكثر دقة واتساقا.

هام

functions تم إهمال المعلمات و function_call مع إصدار 2023-12-01-preview إصدار واجهة برمجة التطبيقات. ومع ذلك، تتطلب واجهة برمجة تطبيقات الضبط الدقيقة حاليا استخدام المعلمات القديمة.

إنشاء ملف تدريب

عند إنشاء ملف تدريب لأمثلة استدعاء الدالة، يمكنك اتخاذ تعريف دالة مثل هذا:

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

والتعبير عن المعلومات كخط واحد داخل ملف التدريب الخاص بك .jsonl كما يلي:

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

كما هو الحال مع جميع التدريبات الدقيقة، يتطلب ملف المثال 10 أمثلة على الأقل.

تحسين التكلفة

يوصي OpenAI بأنه إذا كنت تحاول التحسين لاستخدام عدد أقل من الرموز المميزة للمطالبة بعد ضبط النموذج الخاص بك على تعريفات الوظائف الكاملة، يمكنك تجربة:

  • حذف أوصاف الدالة والمعلمة: قم بإزالة حقل الوصف من الدالة والمعلمات.
  • حذف المعلمات: إزالة حقل الخصائص بالكامل من كائن المعلمات.
  • حذف الدالة بالكامل: إزالة كائن الدالة بأكمله من صفيف الوظائف.

تحسين الجودة

بدلا من ذلك، إذا كنت تحاول تحسين جودة إخراج استدعاء الدالة، فمن المستحسن أن تظل تعريفات الدالة الموجودة في مجموعة بيانات التدريب الدقيقة ومكالمات إكمال الدردشة اللاحقة متطابقة.

تخصيص استجابات النموذج لمخرجات الوظائف

يمكن أيضا استخدام الضبط الدقيق استنادا إلى أمثلة استدعاء الدالة لتحسين استجابة النموذج لمخرجات الدالة. لتحقيق ذلك، يمكنك تضمين أمثلة تتكون من رسائل استجابة الدالة ورسائل استجابة المساعد حيث يتم تفسير استجابة الدالة ووضعها في السياق بواسطة المساعد.

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

كما هو الحال مع المثال السابق، يتم توسيع هذا المثال بشكل مصطنع لسهولة القراءة. سيكون الإدخال الفعلي في .jsonl ملف التدريب سطرا واحدا:

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

الخطوات التالية