تكامل الأدوات واستدعاء الوظائف
صيغة استدعاء الوظائف عبر المنصات
5 دقيقة للقراءة
كل منصة ذكاء اصطناعي رئيسية لديها صيغة استدعاء وظائف خاصة بها. فهم هذه الأنماط يتيح لك بناء تكاملات أدوات قابلة للنقل والتحسين لنقاط قوة كل منصة.
استدعاء وظائف Claude (Anthropic)
تنسيق تعريف الأداة
{
"tools": [
{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City name or coordinates"
},
"units": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}
استجابة استخدام الأداة (Claude Opus 4.5/Sonnet 4.5)
{
"content": [
{
"type": "tool_use",
"id": "toolu_01ABC123",
"name": "get_weather",
"input": {
"location": "San Francisco",
"units": "fahrenheit"
}
}
],
"stop_reason": "tool_use"
}
تنسيق نتيجة الأداة
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01ABC123",
"content": "72°F, sunny, humidity 45%"
}
]
}
استدعاء وظائف OpenAI (GPT-5.2)
تنسيق تعريف الأداة
{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City name"
}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}
استجابة استدعاء الأداة
{
"choices": [
{
"message": {
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\": \"Tokyo\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
]
}
استدعاء وظائف Google (Gemini 3)
تنسيق تعريف الأداة
{
"tools": [
{
"function_declarations": [
{
"name": "get_weather",
"description": "Returns weather for location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
]
}
]
}
جدول المقارنة
| الميزة | Claude | OpenAI | Gemini |
|---|---|---|---|
| المخطط | input_schema | parameters | parameters |
| معرف الاستدعاء | tool_use_id | tool_call_id | ضمني |
| دور النتيجة | user (tool_result) | tool | function_response |
| استدعاءات متوازية | نعم | نعم | نعم |
| البث | نعم | نعم | نعم |
MCP (بروتوكول سياق النموذج)
Claude Code يستخدم MCP لتوسيع الأدوات:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"],
"env": {
"ALLOWED_PATHS": "/home/user/projects"
}
}
}
}
أفضل الممارسات للأدوات عبر المنصات
1. استخدم معيار JSON Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
},
"required": ["query"],
"additionalProperties": false
}
2. توحيد معالجة الاستجابة
def handle_tool_response(platform, response):
if platform == "claude":
return response["content"][0]["input"]
elif platform == "openai":
return json.loads(response["tool_calls"][0]["function"]["arguments"])
elif platform == "gemini":
return response["candidates"][0]["content"]["parts"][0]["functionCall"]["args"]
أوضاع استدعاء الأدوات
استراتيجيات استدعاء مختلفة:
| الوضع | الوصف | حالة الاستخدام |
|---|---|---|
| auto | النموذج يقرر | استخدام عام |
| required | يجب استدعاء الأداة | استرجاع البيانات |
| none | بدون أدوات | توليد نقي |
| specific | إجبار أداة محددة | تدفقات متحكم بها |
رؤية رئيسية: بينما تختلف الصيغة عبر المنصات، المفاهيم الأساسية متطابقة: عرّف الأدوات بـ JSON Schema، استقبل استدعاءات منظمة، أعد نتائج منسقة. بناء طبقات التجريد يتيح لك كتابة الأدوات مرة واستخدامها في كل مكان.
بعد ذلك، سنستكشف تكامل MCP وأنماط تنسيق الأدوات. :::