يشعر الكثير من المطورين بالحيرة عند رؤية اسم النموذج gemini-3.1-pro-preview-customtools: ماذا يعني customtools؟ وكيف يختلف عن النسخة القياسية gemini-3.1-pro-preview؟ سيساعدك هذا المقال في توضيح الأمر تماماً خلال 5 دقائق.
القيمة الجوهرية: بعد قراءة هذا المقال، ستعرف متى تستخدم النسخة القياسية ومتى تستخدم نسخة customtools، وكيفية الاختيار الصحيح عند تطوير الوكلاء (Agents).

ما هو Gemini 3.1 Pro Customtools
شرح في جملة واحدة
gemini-3.1-pro-preview-customtools هو إصدار مخصص (Variant) أطلقته جوجل في 19 فبراير 2026 بالتزامن مع النسخة القياسية من Gemini 3.1 Pro. الفرق الجوهري الوحيد بينه وبين النسخة القياسية هو: إعطاء الأولوية لاستخدام الأدوات المخصصة التي قمت بتسجيلها، بدلاً من تشغيل أوامر bash الافتراضية.
النص الأصلي من سجل التغييرات الرسمي لجوجل (Changelog) يقول:
"تم إطلاق نقطة نهاية منفصلة
gemini-3.1-pro-preview-customtoolsتبرع في إعطاء الأولوية للأدوات المخصصة، وهي موجهة للمستخدمين الذين يبنون أنظمة تجمع بين bash والأدوات."
لماذا نحتاج إلى هذا الإصدار؟
في تطوير الوكلاء (Agents)، عادةً ما يمنح المطورون النموذج نوعين من القدرات:
- تنفيذ Bash/الكود: السماح للنموذج بتشغيل أوامر shell مباشرة.
- الأدوات المخصصة (Custom Tools): وظائف منظمة يحددها المطور، مثل
view_fileوsearch_codeوcreate_prوما إلى ذلك.
أين تكمن المشكلة؟ النسخة القياسية من Gemini 3.1 Pro قد "تتكاسل" أحياناً، فتتجاوز الأدوات المخصصة التي صممتها بعناية، وتستخدم أوامر bash مباشرة لإنجاز المهمة. على سبيل المثال، قد تقوم بتسجيل أداة view_file لقراءة الملفات، لكن النموذج قد ينفذ ببساطة cat filename.py متجاوزاً أداتك.
وهذا يمثل مشكلة في سيناريوهات معينة:
- قد تحتوي الأدوات المخصصة على تحكم في الصلاحيات و تسجيل للعمليات (Logging).
- تنسيق المخرجات من الأدوات المخصصة يكون منظماً (Structured)، مما يسهل معالجته لاحقاً.
- قد تكون الأدوات المخصصة مرتبطة بـ أنظمة خارجية (قواعد بيانات، واجهات برمجة تطبيقات، إلخ).
إصدار customtools جاء ليحل هذه المشكلة تحديداً: جعل النموذج يفضل اختيار الأدوات التي قمت بتسجيلها.
الفروق الجوهرية بين Gemini 3.1 Pro الإصدار القياسي وإصدار Customtools
| بُعد المقارنة | الإصدار القياسي | إصدار Customtools |
|---|---|---|
| معرف النموذج (Model ID) | gemini-3.1-pro-preview |
gemini-3.1-pro-preview-customtools |
| تاريخ الإصدار | 19.2.2026 | 19.2.2026 (إصدار متزامن) |
| قدرات الاستدلال | ARC-AGI-2 77.1% | متماثلة |
| قدرات البرمجة | SWE-Bench 80.6% | متماثلة |
| نافذة السياق | 1,048,576 توكن | متماثلة |
| الحد الأقصى للمخرجات | 65,536 توكن | متماثلة |
| سعر الإدخال | $2.00 / مليون توكن | متماثل |
| سعر الإخراج | $12.00 / مليون توكن | متماثل |
| سلوك استدعاء الأدوات | قد يفضل استخدام bash | يفضل استخدام الأدوات المخصصة |
| سيناريوهات الاستخدام | الاستدلال العام، البرمجة، التحليل | تطوير الوكلاء (Agents)، تنسيق الأدوات |
| ملاحظات الجودة | متوازن في جميع السيناريوهات | قد تحدث تقلبات طفيفة في الجودة في السيناريوهات التي لا تتضمن أدوات |
🎯 فهم جوهري: "مستوى الذكاء" في كلا النموذجين متطابق تماماً. الفرق الوحيد يكمن في أنه عند مواجهة خيار "هل أستخدم bash أم الأداة التي قمت بتسجيلها؟"، سيميل إصدار customtools بشكل أكبر لاختيار أدواتك المخصصة.
متى تحتاج إلى استخدام Gemini 3.1 Pro Customtools
السيناريوهات التي تتطلب customtools
| السيناريو | لماذا تحتاجه | أمثلة محددة |
|---|---|---|
| مساعد البرمجة بالذكاء الاصطناعي | يحتاج لاستخدام أدوات منظمة مثل view_file و edit_file | منتجات مثل Claude Code و Cursor |
| وكيل DevOps | يحتاج لاستدعاء أنظمة CI/CD عبر الأدوات بدلاً من bash المباشر | أتمتة النشر، روبوتات مراجعة الأكواد |
| سير عمل MCP | الوكلاء الذين سجلوا بروتوكول أدوات MCP | تنسيق سير عمل متعدد الخطوات |
| وكلاء مع التحكم في الصلاحيات | الأدوات المخصصة تحتوي على فحص مدمج للصلاحيات | تطبيقات الوكلاء على مستوى المؤسسات |
| الوكلاء الذين يتطلبون سجلات منظمة | استدعاء الأدوات يسهل عملية التسجيل والتدقيق | السيناريوهات ذات المتطلبات العالية للامتثال |
السيناريوهات التي لا تتطلب customtools
| السيناريو | يكفي الإصدار القياسي | السبب |
|---|---|---|
| المحادثات العادية / الأسئلة والأجوبة | gemini-3.1-pro-preview |
لا يتضمن استدعاء أدوات |
| تحليل النصوص / الترجمة | gemini-3.1-pro-preview |
مدخلات ومخرجات نصية بحتة |
| توليد الأكواد (بدون أدوات) | gemini-3.1-pro-preview |
يحتاج فقط لكتابة الكود مباشرة |
| تنفيذ نصوص bash البسيطة | gemini-3.1-pro-preview |
الرغبة هي استخدام bash فعلياً |
نصيحة جوجل الرسمية
ذكرت جوجل بوضوح في الأسئلة الشائعة لدليل مطوري Gemini 3:
If you are using
gemini-3.1-pro-previewand the model ignores your custom tools in favor of bash commands, try thegemini-3.1-pro-preview-customtoolsmodel instead.
الترجمة: إذا وجدت أن الإصدار القياسي يتجاهل أدواتك المخصصة ويستخدم bash مباشرة، فجرب التبديل إلى إصدار gemini-3.1-pro-preview-customtools.
طريقة استدعاء API لـ Gemini 3.1 Pro Customtools
استدعاء أساسي: تماماً مثل الإصدار القياسي
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # الواجهة الموحدة لـ APIYI
)
# تحتاج فقط إلى تغيير اسم النموذج (model)، وستبقى بقية الأكواد كما هي تماماً
response = client.chat.completions.create(
model="gemini-3.1-pro-preview-customtools",
messages=[
{"role": "user", "content": "ساعدني في عرض محتوى ملف main.py في المشروع"}
]
)
print(response.choices[0].message.content)
استدعاء Agent مع أدوات مخصصة
تكمن القوة الحقيقية لإصدار customtools في دمجه مع ميزة استدعاء الوظائف (function calling):
import openai
import json
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # الواجهة الموحدة لـ APIYI
)
# تعريف الأدوات المخصصة
tools = [
{
"type": "function",
"function": {
"name": "view_file",
"description": "عرض محتوى ملف محدد",
"parameters": {
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "مسار الملف"
}
},
"required": ["file_path"]
}
}
},
{
"type": "function",
"function": {
"name": "search_code",
"description": "البحث عن كلمات مفتاحية في قاعدة الكود",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "كلمة البحث المفتاحية"
},
"file_pattern": {
"type": "string",
"description": "نمط مطابقة الملفات، مثل *.py"
}
},
"required": ["query"]
}
}
}
]
# سيعطي إصدار customtools الأولوية لاستخدام الأدوات المحددة أعلاه
response = client.chat.completions.create(
model="gemini-3.1-pro-preview-customtools",
messages=[
{"role": "user", "content": "ساعدني في العثور على جميع ملفات Python التي تحتوي على TODO في المشروع"}
],
tools=tools
)
# سيقوم النموذج باستدعاء أداة search_code بدلاً من استخدام grep مباشرة
tool_call = response.choices[0].message.tool_calls[0]
print(f"الأداة: {tool_call.function.name}")
print(f"المعاملات: {tool_call.function.arguments}")
عرض الكود الكامل لحلقة الـ Agent
import openai
import json
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
tools = [
{
"type": "function",
"function": {
"name": "view_file",
"description": "عرض محتوى ملف محدد",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "مسار الملف"}
},
"required": ["file_path"]
}
}
},
{
"type": "function",
"function": {
"name": "search_code",
"description": "البحث عن كلمات مفتاحية في قاعدة الكود",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "كلمة البحث المفتاحية"},
"file_pattern": {"type": "string", "description": "نمط مطابقة الملفات"}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "edit_file",
"description": "تحرير محتوى محدد في الملف",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "مسار الملف"},
"old_content": {"type": "string", "description": "المحتوى القديم المراد استبداله"},
"new_content": {"type": "string", "description": "المحتوى الجديد"}
},
"required": ["file_path", "old_content", "new_content"]
}
}
}
]
# محاكاة تنفيذ الأداة
def execute_tool(name, args):
"""في المشروع الفعلي، استبدل هذا بتنفيذ حقيقي للأدوات"""
if name == "view_file":
return f"محتوى الملف: {args['file_path']} (محاكاة)"
elif name == "search_code":
return f"نتائج البحث عن '{args['query']}': تم العثور على 3 مطابقات (محاكاة)"
elif name == "edit_file":
return f"تم استبدال المحتوى في {args['file_path']} (محاكاة)"
return "أداة غير معروفة"
# الحلقة الرئيسية للـ Agent
messages = [{"role": "user", "content": "ابحث عن جميع تعليقات TODO في المشروع وقم بإصلاحها"}]
max_turns = 5
for turn in range(max_turns):
response = client.chat.completions.create(
model="gemini-3.1-pro-preview-customtools",
messages=messages,
tools=tools
)
msg = response.choices[0].message
messages.append(msg)
if msg.tool_calls:
for tc in msg.tool_calls:
args = json.loads(tc.function.arguments)
result = execute_tool(tc.function.name, args)
messages.append({
"role": "tool",
"tool_call_id": tc.id,
"content": result
})
print(f"[الجولة {turn+1}] استدعاء: {tc.function.name}({args})")
else:
print(f"[اكتمل] {msg.content[:200]}")
break
🚀 بداية سريعة: من خلال منصة APIYI (apiyi.com)، يستخدم الإصدار القياسي وإصدار customtools نفس مفتاح API Key. ما عليك سوى تعديل معلمة النموذج (model) للتبديل بينهما، وهو أمر مثالي لاختبار A/B لتحديد أي إصدار يناسب الـ Agent الخاص بك بشكل أفضل.
العلاقة بين Gemini 3.1 Pro Customtools وإطارات عمل الـ Agent

توافق إطارات عمل الـ Agent الشائعة
يعد إصدار customtools ذا قيمة خاصة لسيناريوهات تطوير الـ Agent التالية:
| إطار عمل الـ Agent / السيناريو | نصيحة التوافق | السبب |
|---|---|---|
| مساعدات البرمجة مثل Claude Code | نوصي بـ customtools | يحتاج لأدوات هيكلية مثل view_file و edit_file |
| Cursor / GitHub Copilot | نوصي بـ customtools | مجموعة أدوات IDE تحتاج لأن يتم استدعاؤها كأولوية |
| الـ Agents ببروتوكول MCP | نوصي بـ customtools | الأدوات المسجلة عبر MCP تحتاج لضمان الأولوية |
| LangChain / LlamaIndex | نوصي بـ customtools | الأدوات المسجلة في الإطار تحتاج لأن يتم استدعاؤها بشكل صحيح |
| تطبيقات الدردشة البسيطة | استخدم الإصدار القياسي | لا تتضمن استدعاء أدوات |
| الاسترجاع المعزز بالتوليد (RAG) | حسب الحالة | إذا كان الاسترجاع يتم عبر function calling، استخدم customtools |
Gemini 3.1 Pro Customtools 与标准版的行为对比
为了更直观地理解区别,看一个具体的例子:
同一个请求,两个模型的不同反应
用户请求: 「帮我查看 src/main.py 文件的内容」
已注册工具: view_file(file_path: string)
| 模型版本 | 模型行为 | 说明 |
|---|---|---|
| 标准版 | 可能直接执行 cat src/main.py |
用 bash 完成任务,跳过了你的工具 |
| Customtools 版 | 调用 view_file("src/main.py") |
优先使用你注册的自定义工具 |
两种方式都能获取文件内容,但通过自定义工具调用有以下优势:
- 权限控制: 你的
view_file工具可以检查路径是否在白名单内 - 格式化输出: 工具可以返回结构化的 JSON 而非原始文本
- 日志审计: 工具调用会被框架自动记录
- 错误处理: 工具可以提供友好的错误信息而非 bash 报错
谷歌 Gemini 工具调用模型的演进
customtools 是谷歌首次为工具调用提供专用模型变体。以下是谷歌 Gemini 工具相关模型的完整图谱:
| 模型 | 发布时间 | 工具类型 | 说明 |
|---|---|---|---|
| Gemini 2.5 Flash | 2025 | 基础 function calling | 通用工具调用 |
| Gemini 3 Pro Preview | 2025 末 | function calling | 改进的工具调用 |
| Gemini 3.1 Pro Preview | 2026.2.19 | function calling + 并行工具 | 标准版,可能倾向 bash |
| Gemini 3.1 Pro Customtools | 2026.2.19 | function calling 优先 | Agent 专用,优先自定义工具 |
| Computer Use Preview | 2025 | GUI 操作 | 计算机使用 (实验性) |
| Deep Research Preview | 2025 末 | 搜索 + 分析 | 深度研究 Agent |
这表明谷歌正在将模型按使用场景细分,而不是用一个通用模型覆盖所有场景。未来可能会出现更多专用变体。
الأسئلة الشائعة
س1: هل نسخة customtools ستكون أغلى سعراً؟
لا. سعر نسخة customtools هو نفس سعر النسخة القياسية تماماً: المدخلات 2.00 دولار / 1 مليون توكن، والمخرجات 12.00 دولار / 1 مليون توكن. عند الاستخدام عبر منصة APIYI (apiyi.com)، يستخدم الإصداران نفس مفتاح API (API Key) دون أي تكاليف إضافية.
س2: هل ستضعف قدرات الاستنتاج في نسخة customtools؟
تقريباً لا. ذكرت جوجل أنه قد يكون هناك "تقلبات طفيفة في الجودة في السيناريوهات التي لا تتضمن أدوات"، لكن قدرات الاستنتاج الأساسية (ARC-AGI-2 بنسبة 77.1%، وSWE-Bench بنسبة 80.6%) تظل كما هي. إذا كان العميل الذكي (Agent) الخاص بك يستخدم الأدوات بشكل أساسي، فإن الأداء العام لنسخة customtools سيكون أفضل.
س3: متى يجب عليّ الانتقال من النسخة القياسية إلى نسخة customtools؟
يجب عليك الانتقال عندما تلاحظ أن النموذج لا يزال يستخدم أوامر bash بشكل متكرر لإنجاز المهام رغم توفر أدوات مخصصة. على سبيل المثال، إذا قمت بتسجيل أداة view_file ولكن النموذج لا يزال يستخدم cat دائماً، أو سجلت search_code ولكنه يستخدم grep. يمكنك إجراء اختبار A/B سريع بين النسختين عبر منصة APIYI (apiyi.com).
س4: إذا لم أقم بتسجيل أي أدوات مخصصة، فهل هناك فائدة من استخدام نسخة customtools؟
لا فائدة من ذلك. إذا لم يتم تسجيل أدوات مخصصة، فسيكون سلوك النسختين متطابقاً تماماً. يظهر تحسين نسخة customtools فقط عندما "يحتاج النموذج للاختيار بين bash والأدوات المخصصة".
ملخص: دليل Gemini 3.1 Pro Customtools السريع
| السؤال | الإجابة |
|---|---|
| ما هو customtools؟ | نسخة من Gemini 3.1 Pro تعطي الأولوية لاستخدام الأدوات المخصصة |
| ما الفرق عن النسخة القياسية؟ | الاختلاف فقط في أولوية استدعاء الأدوات، أما قدرة الاستنتاج والسعر فهما متطابقان |
| متى يُستخدم؟ | عند تطوير العميل الذكي (Agent)، استخدام MCP، أو عند تسجيل أدوات استدعاء الدوال (function calling) |
| متى لا يُستخدم؟ | في المحادثات البسيطة، الاستنتاج البحت، أو السيناريوهات التي لا تتضمن استدعاء أدوات |
| هل يمكن التبديل بين النسختين؟ | نعم، بمجرد تغيير معامل model فقط |
| هل السعر نفسه؟ | نعم تماماً: 2 دولار للمدخلات / 12 دولار للمخرجات لكل مليون توكن |
الخلاصة في جملة واحدة: gemini-3.1-pro-preview-customtools هو "وضع العميل الذكي المخصص" لنموذج Gemini 3.1 Pro — فهو يجعل النموذج أكثر طاعة في استخدام الأدوات التي سجلتها بدلاً من تشغيل أوامر bash مباشرة. السعر لم يتغير، والذكاء لم يتغير، فقط استراتيجية اختيار الأدوات أصبحت أكثر ملاءمة لتطوير العملاء الأذكياء (Agents).
نوصي بالوصول إلى كلا الإصدارين عبر منصة APIYI (apiyi.com) في وقت واحد، واختيار الأنسب بعد إجراء اختبار A/B في مشروعك الفعلي. بالنسبة لمطوري الـ Agents، فإن نسخة customtools هي الخيار الأفضل دائماً تقريباً.
المراجع
-
وثائق Google AI: صفحة نموذج Gemini 3.1 Pro Preview
- الرابط:
ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview - الوصف: تتضمن توضيحاً للمقارنة بين الإصدار القياسي وإصدار customtools.
- الرابط:
-
سجل تغييرات Gemini API: تحديث 19 فبراير 2026
- الرابط:
ai.google.dev/gemini-api/docs/changelog - الوصف: سجل الإصدار الأول لمتغير customtools.
- الرابط:
-
دليل مطوري Gemini 3: توصيات اختيار الأدوات في الأسئلة الشائعة (FAQ)
- الرابط:
ai.google.dev/gemini-api/docs/gemini-3 - الوصف: متى يجب الانتقال من الإصدار القياسي إلى إصدار customtools.
- الرابط:
-
وثائق Google AI: دليل استدعاء الدوال (Function Calling)
- الرابط:
ai.google.dev/gemini-api/docs/function-calling - الوصف: شرح مفصل لـ API استدعاء الدوال في نماذج Gemini.
- الرابط:
📝 المؤلف: فريق APIYI | للتواصل التقني يرجى زيارة APIYI عبر apiyi.com
📅 تاريخ التحديث: 20 فبراير 2026
🏷️ الكلمات المفتاحية: gemini-3.1-pro-preview-customtools، أدوات مخصصة، تطوير الوكلاء (Agents)، استدعاء الدوال (function calling)، استدعاء الأدوات، استدعاء API.
