استدعاء وظيفة مساعدي Azure OpenAI

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

إشعار

  • يمكن للبحث عن الملفات استيعاب ما يصل إلى 10000 ملف لكل مساعد - 500 مرة أكثر من ذي قبل. وهو سريع، ويدعم الاستعلامات المتوازية من خلال عمليات البحث متعددة مؤشرات الترابط، وميزات محسنة لإعادة الإرسال وإعادة كتابة الاستعلام.
    • مخزن المتجهات هو كائن جديد في واجهة برمجة التطبيقات. بمجرد إضافة ملف إلى مخزن متجهات، يتم تحليله تلقائيا، وتقسيمه، ودمجه، ويكون جاهزا للبحث فيه. يمكن استخدام مخازن المتجهات عبر المساعدين ومؤشرات الترابط، مما يبسط إدارة الملفات والفوترة.
  • لقد أضفنا دعما للمعلمة tool_choice التي يمكن استخدامها لفرض استخدام أداة معينة (مثل البحث في الملفات أو مترجم التعليمات البرمجية أو وظيفة) في تشغيل معين.

دعم استدعاء الدالة

النماذج المدعومة

تحتوي صفحة النماذج على أحدث المعلومات حول المناطق/النماذج حيث يتم دعم المساعدين.

لاستخدام جميع ميزات استدعاء الدالة بما في ذلك الدوال المتوازية، تحتاج إلى استخدام نموذج تم إصداره بعد 6 نوفمبر 2023.

إصدارات واجهة برمجة التطبيقات

  • 2024-02-15-preview
  • 2024-05-01-preview

مثال تعريف الدالة

إشعار

  • لقد أضفنا دعما للمعلمة tool_choice التي يمكن استخدامها لفرض استخدام أداة معينة (مثل file_searchأو code_interpreterأو function) في تشغيل معين.
  • تنتهي صلاحية عمليات التشغيل بعد عشر دقائق من الإنشاء. تأكد من إرسال مخرجات الأداة قبل انتهاء الصلاحية هذا.
  • يمكنك أيضا إجراء استدعاء دالة باستخدام تطبيقات Azure Logic
from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-02-15-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

assistant = client.beta.assistants.create(
  instructions="You are a weather bot. Use the provided functions to answer questions.",
  model="gpt-4-1106-preview", #Replace with model deployment name
  tools=[{
      "type": "function",
    "function": {
      "name": "getCurrentWeather",
      "description": "Get the weather in location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
          "unit": {"type": "string", "enum": ["c", "f"]}
        },
        "required": ["location"]
      }
    }
  }, {
    "type": "function",
    "function": {
      "name": "getNickname",
      "description": "Get the nickname of a city",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
        },
        "required": ["location"]
      }
    } 
  }]
)

قراءة الدالات

عند بدء تشغيل مع رسالة مستخدم تقوم بتشغيل الدالة، سيدخل تشغيل حالة معلقة. بعد المعالجة، سيدخل التشغيل حالة requires_action التي يمكنك التحقق منها عن طريق استرداد Run.

{
  "id": "run_abc123",
  "object": "thread.run",
  "assistant_id": "asst_abc123",
  "thread_id": "thread_abc123",
  "status": "requires_action",
  "required_action": {
    "type": "submit_tool_outputs",
    "submit_tool_outputs": {
      "tool_calls": [
        {
          "id": "call_abc123",
          "type": "function",
          "function": {
            "name": "getCurrentWeather",
            "arguments": "{\"location\":\"San Francisco\"}"
          }
        },
        {
          "id": "call_abc456",
          "type": "function",
          "function": {
            "name": "getNickname",
            "arguments": "{\"location\":\"Los Angeles\"}"
          }
        }
      ]
    }
  },
...

إرسال مخرجات الدالة

يمكنك بعد ذلك إكمال تشغيل عن طريق إرسال إخراج الأداة من الدالة (الوظائف) التي تستدعيها. tool_call_id مرر المشار إليه في required_action الكائن أعلاه لمطابقة الإخراج مع كل استدعاء دالة.

from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-02-15-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )


run = client.beta.threads.runs.submit_tool_outputs(
  thread_id=thread.id,
  run_id=run.id,
  tool_outputs=[
      {
        "tool_call_id": call_ids[0],
        "output": "22C",
      },
      {
        "tool_call_id": call_ids[1],
        "output": "LA",
      },
    ]
)

بعد إرسال مخرجات الأداة، سيدخل Run الحالة queued قبل متابعة التنفيذ.

(راجع أيضًا )