هنگام استفاده از یک مدل هوش مصنوعی مولد (AI) مانند Gemma، ممکن است بخواهید از این مدل برای اجرای رابط های برنامه نویسی به منظور تکمیل وظایف یا پاسخ به سؤالات استفاده کنید. دستور دادن به یک مدل با تعریف یک رابط برنامه نویسی و سپس درخواستی که از آن رابط استفاده می کند فراخوانی تابع نامیده می شود.
جما توکن خاصی از ابزار را خروجی نمی دهد. چارچوب شما باید با بررسی اینکه آیا ساختار خروجی با مشخصات خروجی تابع درخواستی شما مطابقت دارد، یک فراخوانی ابزار را شناسایی کند.
می توانید از فراخوانی تابع برای تعدادی از برنامه ها استفاده کنید:
- یک رابط زبان طبیعی برای API برنامه نویسی ایجاد کنید تا به غیر برنامه نویسان اجازه دهد تا یک رابط برنامه نویسی را بدون کدنویسی کار کنند.
- تماس های برنامه نویسی را به عنوان بخشی از گردش کار عامل هوش مصنوعی ایجاد کنید
فراخوانی تابع در Gemma 3 پشتیبانی می شود، اما تکنیک فراخوانی تابع را می توان با نسخه های قبلی Gemma استفاده کرد. این راهنما دستورالعمل هایی را در مورد نحوه ساخت اعلان های Gemma که از فراخوانی تابع استفاده می کنند ارائه می دهد. ما Gemma3 27B را برای بهترین عملکرد و Gemma3 12B را برای عملکرد متعادل و تأخیر توصیه می کنیم.
فراخوانی توابع برنامه نویسی
میتوانید با ساختن اعلانی که فرمت خروجی را مشخص میکند و توابع موجود را مشخص میکند، از فراخوانی تابع با Gemma استفاده کنید.
هنگامی که درخواست کاربر اضافه می شود، مدل یک فراخوانی تابع را خروجی می دهد، که رشته ای است که با فرمت خروجی مشخص شده شما مطابقت دارد. این سیگنال یک درخواست برای تجزیه و تحلیل توسط چارچوب مدل شما برای فراخوانی توابع تعریف شده است.
نمونه درخواستی زیر یک بلوک تعریف تابع، همراه با نحو فراخوانی تابع و خروجی فراخوانی تابع از مدل را نشان میدهد. درخواست مثال زیر برای استفاده با یک رابط برنامه نویسی برای کاتالوگ محصول است:
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
این اعلان باید پاسخ زیر را ایجاد کند:
[get_product_name_by_PID(PID="807ZPKBL9V")]
این مثال از خروجی فراخوانی تابع سبک پایتون استفاده می کند. همچنین، میتوانید فرمت خروجی سبک JSON را همانطور که در مثال زیر نشان داده شده است تعیین کنید:
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
این اعلان باید پاسخ زیر را ایجاد کند:
{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}
اجزای دستور فراخوانی تابع
هنگام استفاده از فراخوانی تابع با مدل های Gemma، دستور شما از مدل باید از این ترتیب و ساختار خاص پیروی کند:
بخشهای زیر جزئیات بیشتری را در مورد هر یک از این مؤلفههای محرک ارائه میکنند.
تنظیم فراخوانی تابع
بخش راهاندازی فرمان فراخوانی تابع، رفتار کلی مورد انتظار مدل را تنظیم میکند. میتوانید دستورالعملهای کلی و اضافی را برای رفتار مدل در این بخش اضافه کنید، مانند تعیین اینکه خروجی باید با استفاده از تابع print
یا console.log
نمایش داده شود. برای نشان دادن نحو کد از بکتیک های تکی به سبک Markdown ( func_name
) استفاده کنید.
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function
این دستورالعمل ها باید تا حد امکان واضح و مختصر باشد. مهم ترین دستورالعمل ها را اولویت بندی کنید و در ارائه بسیاری از دستورالعمل های کلی محتاط باشید. مدلهای Gemma ممکن است دستورالعملهایی را که بیش از حد جزئی هستند یا به وضوح بیان نشدهاند، نادیده بگیرند، بهویژه زمانی که از نسخههای مدل با تعداد پارامتر کمتر استفاده میکنید.
تعریف تابع
بخش تعریف فرمان نام تابع، پارامترها و خروجی را شامل توضیحاتی برای هر کدام ارائه می دهد. شما می توانید توابع را در قالب نشان داده شده اعلام کنید. توابع منفرد یا چندگانه را می توان در بلوک اعلان تابع تعریف کرد.
[ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } }, { "name": "get_product_price_by_PID", "description": "Finds the price of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ]
مراحل بعدی
راههای استقرار و اجرای مدلهای Gemma را بررسی کنید: