AI APIs

بناء سير عمل ذكاء اصطناعي موثوق باستخدام وضع JSON واستدعاء الوظائف المتوازي في OpenAI

عندما يدمج المطورون نماذج اللغات الكبيرة (LLMs) في تطبيقات جاهزة للإنتاج، يصبح التحول من التجارب المحادثة إلى الهندسة الحتمية أمراً بالغ الأهمية. من أقوى الميزات المتاحة حالياً في نظام OpenAI API هما وضع JSON واستدعاء الوظائف المتوازي. عند دمجهما، تتيح هذه الميزات للمهندسين استخراج بيانات عالية الهيكلية وتنفيذ إجراءات معقدة ومتزامنة بموثوقية غير مسبوقة. يستكشف هذا المنشور كيفية الاستفادة من هذه القدرات لبناء أنظمة مدعومة بالذكاء الاصطناعي أكثر متانة.

تحدي المخرجات غير المهيكلة

تقليدياً، كان الحصول على هيكل بيانات محدد من نموذج LLM يتطلب حيل هندسة الأوامر (Prompt Engineering)، أو نصوص معالجة لاحقة تعتمد على التعبيرات النمطية (Regex)، أو الاعتماد على مكتبات طرف ثالث تغلف واجهة برمجة التطبيقات. وعلى الرغم من فعالية هذه الأساليب إلى حد ما، إلا أنها غالباً ما كانت تقدم تأخيراً وهشاشة. هنا يأتي دور وضع JSON. من خلال ضبط معلمة response_format على {"type": "json_object"}، فإنك توجه النموذج لإخراج كائن JSON صارم. هذا مفيد بشكل خاص عندما تحتاج إلى أن يعمل نموذج LLM كمحلل للبيانات، لاستخراج الكيانات، أو المشاعر، أو أزواج المفاتيح والقيم من نص غير مهيكلة.

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

إتقان استدعاء الوظائف المتوازي

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

التنفيذ العملي باستخدام Python

لننظر إلى مثال ملموس باستخدام عميل Python من OpenAI. تخيل سيناريو حجز سفر حيث نحتاج إلى استخراج تفاصيل الرحلة وحجز فندق في نفس الوقت. سنحدد وظيفتين: get_flight_info و book_hotel.

import openai
import json

client = openai.OpenAI(api_key="your-api-key")

def get_flight_info(departure, arrival):
    """Retrieve flight information between two airports."""
    return {"status": "success", "flights": ["AA101", "UA202"]}

def book_hotel(destination, check_in_date):
    """Book a hotel room for the given destination and date."""
    return {"status": "success", "confirmation_id": "HTL-9988"}

messages = [
    {"role": "system", "content": "You are a travel assistant. Return JSON responses only."},
    {"role": "user", "content": "I want to fly to Paris on Friday and book a hotel there."}
]

response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=messages,
    response_format={"type": "json_object"},
    functions=[
        get_flight_info,
        book_hotel
    ],
    parallel_tool_calls=True  # Enable parallel execution
)

# Parse the JSON response
try:
    tool_calls = json.loads(response.choices[0].message.content)
    
    # Execute functions in parallel using asyncio or threads
    # For simplicity, we demonstrate sequential iteration here
    for tool in tool_calls.get('functions', []):
        func_name = tool['name']
        args = tool['arguments']
        
        if func_name == 'get_flight_info':
            print(get_flight_info(**args))
        elif func_name == 'book_hotel':
            print(book_hotel(**args))
            
except json.JSONDecodeError:
    print("Failed to parse JSON response")

أفضل الممارسات للإنتاج

على الرغم من قوة هذه الميزات، إلا أنها تتطلب معالجة دقيقة. أولاً، يجب دائماً تنفيذ معالجة أخطاء قوية لفشل تحليل JSON، حيث يمكن أن يهذي نماذج LLM أحياناً بـ JSON غير صالح. ثانياً، تحقق من الحجج الممررة إلى وظائفك بدقة قبل التنفيذ لمنع ثغرات الأمان. أخيراً، ضع في اعتبارك الآثار المالية؛ بينما تقلل الاستدعاءات المتوازية من زمن الاستجابة، إلا أنها لا تقلل بالضرورة من عدد الرموز (Tokens) المستهلكة. استخدمها بحكمة لتحسين تجربة المستخدم بدلاً من السرعة فقط.

الخاتمة

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

Share: