فراخوانی عملکرد OpenAI – انجمن DEV

اعتبار تصویر: OpenAI
سلام دوستان کدنویس اگر دنیای هوش مصنوعی و چت بات ها را کاوش کرده باشید، احتمالاً در مورد مدل زبان شگفت انگیز OpenAI، GPT-4 و همتای آن GPT-3.5 Turbo شنیده اید. آنها ابزار قدرتمندی برای تغییر نحوه تعامل ما با فناوری هستند.
در این پست، ما به یکی از ویژگی های جذاب آنها می پردازیم: فراخوانی تابع. ما از چیستی آن، چرایی مفید بودن آن و نحوه استفاده از آن، حتی اگر مبتدی هستید، ابهام زدایی خواهیم کرد. پس یک فنجان قهوه بردارید، بنشینید و بیایید شروع کنیم!
فراخوانی تابع چیست؟
فراخوانی تابع در زمینه GPT-4 و GPT-3.5 Turbo توانایی این مدل ها برای درک و تولید اشیاء JSON برای فراخوانی عملکردهای خاص بر اساس پرس و جوهای کاربر است. این بدان معنا نیست که مدل در حال اجرای تابع است، بلکه اطلاعات لازم را برای فراخوانی تابع در کد خود در اختیار شما قرار می دهد.
چرا فراخوانی تابع مفید است؟
این ویژگی دنیایی از امکانات را باز می کند. تو می توانی:
- چتباتهایی ایجاد کنید که با فراخوانی APIهای خارجی به سؤالات پاسخ میدهند (مثلاً یک API آب و هوا).
- زبان طبیعی را به تماسهای API تبدیل کنید (تصور کنید «مشتریان برتر من چه کسانی هستند؟» را به یک تماس واقعی API تبدیل کنید.
- استخراج داده های ساخت یافته از یک بلوک متن.
و این فقط خراش دادن سطح است!
نحوه استفاده از فراخوانی تابع
فراخوانی تابع شامل چهار مرحله اصلی است:
- مدل را با درخواست کاربر و مجموعه ای از توابع فراخوانی کنید. شما عملکردهایی را که می خواهید مدل هنگام تجزیه و تحلیل ورودی کاربر در نظر بگیرد، توصیف می کنید.
- بررسی کنید که آیا مدل یک شی JSON برای فراخوانی تابع تولید می کند یا خیر. اگر مدل فکر کند یک تابع باید بر اساس پرس و جو کاربر فراخوانی شود، یک شی JSON ایجاد می کند.
- JSON را تجزیه کنید و تابع خود را فراخوانی کنید. خروجی را از مدل بگیرید و از آن برای فراخوانی تابع خود با آرگومان های مناسب استفاده کنید.
- دوباره مدل را با پاسخ تابع فراخوانی کنید. اجازه دهید مدل نتایج را به کاربر خلاصه کند.
بیایید به مثال پایتون نگاهی بیندازیم:
python
import openai
import json
# A dummy function that always returns the same weather information
def get_current_weather(location, unit="fahrenheit"):
weather_info = {
"location": location,
"temperature": "72",
"unit": unit,
"forecast": ["sunny", "windy"],
}
return json.dumps(weather_info)
def run_conversation():
messages = [{"role": "user", "content": "What's the weather like in Boston?"}]
functions = [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
messages=messages,
functions=functions,
function_call="auto",
)
response_message = response["choices"][0]["message"]
if response_message.get("function_call"):
available_functions = {"get_current_weather": get_current_weather}
function_name = response_message["function_call"]["name"]
function_to_call = available_functions[function_name]
function_args = json.loads(response_message["function_call"]["arguments"])
function_response = function_to_call(
location=function_args.get("location"),
unit=function_args.get("unit"),
)
messages.append(response_message)
messages.append(
{"role": "function", "name": function_name, "content": function_response}
)
second_response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
messages=messages,
)
return second_response
print(run_conversation())
نمونه با حسن نیت از OpenAI
این اسکریپت تعامل چت بات با کاربر را تقلید می کند که در مورد آب و هوا در بوستون سوال می کند. تابع run_conversation مکالمه را با استفاده از ویژگی فراخوانی تابع GPT-3.5 Turbo مدیریت می کند.
مدیریت خروجی های توهم زده
گاهی اوقات، مدل ممکن است فراخوانی های تابعی را ایجاد کند که برای آن ارائه نشده است – ما به این خروجی های توهم می گوییم. برای کاهش این مشکل، از یک پیام سیستمی برای یادآوری مدل استفاده کنید تا فقط از عملکردهایی که ارائه شده است استفاده کند.
نتیجه
خودشه! با این مقدمه ساده، اکنون آماده کاوش در دنیای فراخوانی تابع در GPT-4 و GPT-3.5 Turbo هستید. این ابزار قدرتمندی است که می تواند به شما در ساخت ربات های گفتگوی پیشرفته و تعاملی یا روش های استخراج داده کمک کند. پس منتظر نباشید – شروع به کدنویسی کنید و ببینید این ابزارهای شگفت انگیز می توانند شما را به کجا ببرند!