» هوش مصنوعی » نحوه استفاده از OpenAI Function Calling
هوش مصنوعی

نحوه استفاده از OpenAI Function Calling

دی 11, 1348 1049

فراخوانی تابع OpenAI یک ویژگی جدید است که به شما امکان می دهد خروجی های ساخت یافته را از مدل های GPT-4 و GPT-3.5 بازیابی کنید. این می تواند برای فراخوانی API های راه دور، ایجاد داده های JSON یا حتی کنترل دستگاه های دیگر استفاده شود. برای استفاده از فراخوانی تابع OpenAI، ابتدا باید مجموعه ای از توابع را اعلام کنید که می خواهید مدل بتواند آنها را فراخوانی کند.

در این مقاله، نحوه استفاده موثر از فراخوانی تابع OpenAI را بررسی خواهیم کرد و شما را گام به گام این فرآیند را راهنمایی خواهیم کرد.

ChatGPT’s Function Calling چگونه کار می کند؟

در ChatGPT، فراخوانی تابع OpenAI فرآیند تولید یک پاسخ شامل اطلاعات تابعی که باید فراخوانی می‌شود و آرگومان‌های آن است. لازم به ذکر است که مدل های هوش مصنوعی مانند ChatGPT به طور مستقیم توابع را اجرا نمی کنند. در عوض، آنها اطلاعات مربوطه را به توسعه دهندگان منتقل می کنند، که متعاقباً تابع را پیاده سازی کرده و خروجی را به مدل ارائه می دهند.

توابع را تعریف کنید؟

برای تعریف توابع برای ChatGPT، می‌توانید از OpenAI Completion API جدید استفاده کنید و پارامترهای لازم را ارائه دهید. در اینجا یک روش گام به گام برای تعریف توابع آمده است:

  1. پارامتر توابع را مشخص کنید: یک پارامتر “functions” را در OpenAI Completion API اضافه کنید که شامل فهرستی از فرهنگ لغت‌ها است که توابع ممکن را مشخص می‌کند. هر فرهنگ لغت باید یک تابع واحد را نشان دهد و حاوی اطلاعات زیر باشد:
  • “name”: نام تابع.
  • «توضیح»: توضیحی در مورد عملکرد این تابع.
  • «پارامترها»: فرهنگ لغت حاوی نام‌ها و انواع آرگومان‌های تابع.
  1. تعریف آرگومان های تابع: در فرهنگ لغت “پارامترها”، آرگومان های تابع را تعریف کنید. به هر پارامتر یک نام و یک نوع بدهید. می‌توانید از انواع داده‌های ساده مانند رشته، عدد یا بولی و همچنین انواع داده‌های پیچیده‌تر مانند فهرست‌ها یا اشیا استفاده کنید.
  2. مشخص کردن آرگومان مورد نیاز: اگر آرگومان‌های خاصی برای عملکرد صحیح تابع مورد نیاز است، می‌توانید با افزودن یک جفت کلید-مقدار اضافی به توضیحات آرگومان نشان دهید. برای مثال، می‌توانید برای اعلام اینکه یک آرگومان مورد نیاز است، یک ورودی «الزامی»: درست را وارد کنید.
  3. تعریف مقادیر مجاز آرگومان: می‌توانید یک کلید “enum” را در مشخصات آرگومان قرار دهید تا مقادیر مجاز یک آرگومان را محدود کنید. مقدار “enum” باید آرایه‌ای باشد که همه احتمالات ممکن را در خود داشته باشد.
  4. پیکربندی فراخوانی تابع: پارامتر “function_call” را می توان برای فعال یا غیرفعال کردن فراخوانی تابع OpenAI در ChatGPT استفاده کرد. تنظیم آن بر روی “خودکار” به ChatGPT دستور می دهد تا از هر تابعی از لیست مشخص شده استفاده کند. تنظیم “function_call” روی “none” فراخوانی عملکرد را به طور کامل غیرفعال می کند.

چگونه OpenAI را نصب کنیم؟

این مراحل ساده را برای نصب OpenAI با pip دنبال کنید:

واسط خط فرمان را راه اندازی کنید.

openai نصب پیپ

خط فرمان را برای Open AI اجرا کنید. سپس اجازه دهید فرآیند نصب به پایان برسد.

ویژگی های فراخوانی تابع

  1. ربات‌های چت ایجاد کنید که با تماس با برنامه‌های خارجی (مانند افزونه‌های ChatGPT) به سؤالات پاسخ دهند.
  2. زبان طبیعی را می توان به درخواست های API یا جستجوهای پایگاه داده تبدیل کرد.
  3. استخراج داده های ساخت یافته متنی

مثال: فراخوانی تابع OpenAI

تابع OpenAI خروجی ساختارها را برای مصرف ماشین به شکل یک API فراخوانی می کند، برخلاف مصرف زبان طبیعی بدون ساختار توسط انسان. این بدان معناست که خروجی در قالب قابل خواندن توسط ماشین، مانند JSON یا XML است. این کار توسعه دهندگان را برای ادغام فراخوانی تابع OpenAI در برنامه های خود آسان تر می کند.

به عنوان مثال، اگر در حال ایجاد یک برنامه رزرو سفر هستید، ممکن است از عملکرد OpenAI برای رزرو پرواز و اقامتگاه استفاده کنید. نتیجه فراخوانی تابع در قالبی خواهد بود که برنامه شما بتواند آن را درک کند، مانند JSON. این به شما این امکان را می دهد که سفرها را برای مصرف کنندگان خود سریع و بدون زحمت برنامه ریزی کنید.

به عنوان مثال، خروجی فراخوانی تابع می‌تواند یک شی JSON حاوی داده‌های زیر باشد:

  • لیستی از پروازهای موجود، از جمله شرکت هواپیمایی، شماره پرواز، تاریخ و زمان حرکت و ورود، و هزینه.
  • لیستی از هتل های موجود، از جمله نام، آدرس، و نرخ شب.

پس از آن برنامه شما ممکن است از این اطلاعات برای برنامه ریزی سفر برای کاربرانتان استفاده کند. به عنوان مثال، ممکن است فهرستی از پروازها و هتل ها را به کاربر نشان دهد و به او اجازه دهد انتخاب کند که کدام یک را می خواهد رزرو کند. سپس ممکن است برنامه از شی JSON برای رزرو سفر کاربر استفاده کند.

وارد کردن json
واردات openai
درخواست های واردات
از تلاش مجدد وارد کردن سرسختی، wait_random_exponential، stop_after_tempt
از termcolor واردات رنگی

GPT_MODEL = "gpt-3.5-turbo-0613"

در اینجا چند عملکرد اضافی برای فراخوانی Chat Completions API و حفظ وضعیت مکالمه وجود دارد:

@retry(wait=wait_random_exponential(min=1, max=40)، stop=stop_after_attempt(3)
def chat_completion_request(پیام ها، توابع=هیچکدام، function_call=هیچکدام، مدل=GPT_MODEL):
    سرصفحه = {
        "Content-Type": "application/json"،
        "Authorization": "Bearer" + openai.api_key،
    }
    json_data = {"model": model، "messages": messages}
    اگر توابع None نباشد:
        json_data.update({"functions": functions})
    اگر function_call None نباشد:
        json_data.update({"function_call": function_call})
    تلاش كردن:
        پاسخ = requests.post(
            "https://api.openai.com/v1/chat/completions"،
            سربرگ = سرصفحه،
            json=json_data،
        )
        پاسخ بازگشت
    به جز استثنا به عنوان e:
        print ("نمی توان پاسخ ChatCompletion ایجاد کرد")
        print(f"Exception: {e}")
        e

را برگردانید

def beautiful_print_conversation(messages):
    نقش_به_رنگ = {
        "سیستم": "قرمز"،
        "کاربر": "سبز"،
        "دستیار": "آبی"،
        "عملکرد": "سرخابی"،
    }
    قالب بندی شده_پیام = []
    برای پیام در پیام ها:
        if message["role"] == "سیستم":
            formatted_messages.append(f"system: {message['content']}n")
        پیام elif["role"] == "کاربر":
            formatted_messages.append(f"user: {message['content']}n")
        elif message["role"] == "دستیار" و message.get("function_call"):
            formatted_messages.append(f"assistant: {message['function_call']}n")
        elif message["role"] == "دستیار" و نه message.get("function_call"):
            formatted_messages.append(f"assistant: {message['content']}n")
        پیام elif["role"] == "عملکرد":
            formatted_messages.append(f"function ({message['name']}): {message['content']}n")
    برای formatted_message در formatted_messages:
        چاپ(
            رنگی(
                formatted_message،
                role_to_color[پیامها[formatted_messages.index(formatted_message)]["نقش"]]،
            )
        )

بیایید برخی از مشخصات عملکرد را برای ارتباط با Travel API ایجاد کنیم. سپس می‌توانیم این مشخصات تابع را به Chat Completions API ارسال کنیم تا آرگومان‌های تابعی را تولید کنیم که به مشخصات پایبند هستند.

به عنوان مثال، خروجی فراخوانی تابع OpenAI می‌تواند یک شی JSON حاوی داده‌های زیر باشد:

  • لیستی از پروازهای موجود، از جمله شرکت هواپیمایی، شماره پرواز، تاریخ و زمان حرکت و ورود، و هزینه.
  • لیستی از هتل های موجود، از جمله نام، آدرس، و نرخ شب.

پس از آن برنامه شما ممکن است از این اطلاعات برای برنامه ریزی سفر برای کاربرانتان استفاده کند. برای مثال، ممکن است فهرستی از

را به کاربر نشان دهد

{
  "model": "gpt-3.5-turbo-0613"،
  "پیام ها": [
    {"نقش": "کاربر"، "محتوا": "من باید برای همسر، مادر و دو پسر و دخترم سفری از بن به آمستردام رزرو کنم. من نیز به آنها ملحق خواهم شد. ایرلاین باید مستقیم پرواز کند."}
  ]،
  "کارکرد": [
    {
      "name": "کتاب_سفر"،
      "توضیحات": "رزرو سفر"،
      "مولفه های": {
        "نوع": "شیء"،
        "خواص": {
          "مقصد": {
            "نوع": "رشته",
            "description": "مقصد سفر شما."
          }،
          "مرکز": {
            "نوع": "رشته",
            "description": "از کجا سفر می کنی"
          }،
          "number_people": {
            "نوع": "رشته",
            "توضیحات": "چند نفر در حال سفر هستند"
            }،
          "travel_mode": {
            "نوع": "رشته",
            "description": "چه حالتی از سفر خواهد بود."
          }
        }
      }
    }
  ]
}

و این خروجی است:

{
    "id": "chatcmpl-7R3vsPC6JndweAQZXvCIvSWnaXDMP"،
    "object": "chat.completion"،
    "ایجاد": 1686684328،
    "model": "gpt-3.5-turbo-0613"،
    "انتخاب ها": [
        {
            "شاخص": 0،
            "پیام": {
                "نقش": "دستیار"،
                "محتوا": پوچ،
                "function_call": {
                    "name": "کتاب_سفر"،
                    "Arguments": "{n "مقصد": "Amsterdam",n "Deparute": "Bonn",n "number_people": "6",n "travel_mode": "Airline"n}"
                }
            }،
            "finish_reason": "function_call"
        }
    ]،
    "استفاده": {
        "prompt_tokens": 122،
        "Completion_Tokens": 42،
        "Total_Tokens": 164
    }
}

چند نمونه از تعریف توابع برای ChatGPT:

مثال 1 – ارسال ایمیل

  • به هالی ایمیل بزنید تا ببینید آیا می‌خواهد شنبه آینده قهوه بخورد
  • send_email (به: رشته، بدنه: رشته)

مثال ۲ – API آب و هوا

  • آب و هوا در چنای چگونه است؟
  • get_current_weather (مکان: رشته، واحد: “سانتیگراد” | فارنهایت”)

مثال 3 – زبان طبیعی برای عملکرد/SQL

  • ده مشتری برتر من در این ماه چه کسانی هستند؟
    get_customers_by_revenue(start_date: string, date end: string, limit: int)
  • Acme, Inc. ماه گذشته چند سفارش داده است؟
  • ddhgiuery (پرسش: رشته)

نکات و ترفندهای فراخوانی عملکرد OpenAI

  • مطمئن شوید که نام توابع شما قابل درک است.
  • نام‌های توصیفی را به پارامترهای خود بدهید.
  • نوع داده ای را که توابع شما برمی گرداند مشخص کنید.
  • قبل از اینکه عملکردهای خود را در مرحله تولید قرار دهید، آنها را به شدت آزمایش کنید.

همچنین بخوانید: Aptureaz به استفاده از سرویس Chatgpt.

نتیجه گیری

برای استفاده موثر از فراخوانی تابع OpenAI، درک توابع موجود، پارامترهای آنها و نحو صحیح بسیار مهم است. ارائه ورودی های مناسب، مدیریت خروجی ها و تکرار برای بهبود منجر به اجرای موفقیت آمیز خواهد شد. لطفاً نظرات و انتقادات خود را در بخش نظرات زیر به اشتراک بگذارید.

به این نوشته امتیاز بدهید!

افراد نیوز

افراد نیوز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  • ×