نظرة عامة على الأدوات

يدعم إطار عمل العامل العديد من أنواع الأدوات المختلفة التي توسع قدرات العامل. تسمح الأدوات للوكلاء بالتفاعل مع الأنظمة الخارجية وتنفيذ التعليمات البرمجية وبيانات البحث والمزيد.

أنواع الأدوات

نوع الأداة Description
أدوات الدالة التعليمات البرمجية المخصصة التي يمكن للوكلاء الاتصال بها أثناء المحادثات
مترجم شفرة تنفيذ التعليمات البرمجية في بيئة الاختبار المعزولة
البحث عن الملفات البحث من خلال الملفات التي تم تحميلها
بحث الويب البحث في الويب عن معلومات
أدوات MCP المستضافة خوادم MCP التي تم استدعاؤها بواسطة وقت تشغيل الموفر
أدوات MCP المحلية خوادم MCP التي تعمل محليا أو على مضيفين مخصصين
Microsoft مربع أدوات Foundry الحزم المسماة، التي تم إصدارها من تكوينات الأدوات المستضافة المدارة في مشروع Foundry
أدوات Shell تنفيذ shell المحلي والمضمن في حاويات مع فحص البيئة وعناصر التحكم في النهج
نوع الأداة Description
أدوات الدالة التعليمات البرمجية المخصصة التي يمكن للوكلاء الاتصال بها أثناء المحادثات
مترجم شفرة تنفيذ التعليمات البرمجية في بيئة الاختبار المعزولة
البحث عن الملفات البحث من خلال الملفات التي تم تحميلها
بحث الويب البحث في الويب عن معلومات
أدوات MCP المستضافة خوادم MCP التي تم استدعاؤها بواسطة وقت تشغيل الموفر
أدوات MCP المحلية خوادم MCP التي تعمل محليا أو على مضيفين مخصصين
Microsoft مربع أدوات Foundry الحزم المسماة، التي تم إصدارها من تكوينات الأدوات المستضافة المدارة في مشروع Foundry
أدوات Shell تنفيذ shell المحلي والمضمن في حاويات مع فحص البيئة وعناصر التحكم في النهج
توليد الصور إنشاء صورة مستضافة في وقت تشغيل استجابات Foundry / OpenAI
Shell تنفيذ shell المستضاف في وقت تشغيل استجابات OpenAI — مميز عن أدوات وقت تشغيل shell/file/URL المضمنة في GitHub Copilot CLI
التأريض في بينج أسس الويب عبر الأرضية الخاصة بك مع مورد Bing Search — تجريبي
بحث Bing المخصص يقتصر أساس Bing على قائمة مجالات منسقة — معاينة
Azure بحث الذكاء الاصطناعي الاستعلام عن فهرس البحث باستخدام الذكاء الاصطناعي في Azure من خلال اتصال Foundry — تجريبي
SharePoint إجابات أساسية في محتوى SharePoint — معاينة
مايكروسوفت فابريك الاستعلام عن عامل بيانات Fabric — معاينة
البحث في الذاكرة البحث في مخزن ذاكرة مدار بواسطة Foundry — معاينة
استخدام الحاسوب محرك بيئة سطح المكتب أو المستعرض — معاينة
أتمتة المتصفح محرك مستعرض عبر Azure Playwright — معاينة
أداة الوكيل إلى الوكيل (A2A) استدعاء عامل A2A عن بعد كأداة من عامل Foundry — معاينة

Note

يتم توثيق الأدوات التي تم وضع علامة تجريبي أو معاينة عليها في صفحة الموفر ذات الصلة وتبعث ExperimentalWarning في المرة الأولى التي يتم استخدامها في عملية.

نوع الأداة الحزمة Description
أدوات الدالة tool/functool دوال Go التي تم كتابتها مع مخططات JSON التي يمكن للعامل استدعائها
عامل كأداة دالة tool/agenttool التفاف عامل كعامل tool.FuncTool آخر حتى يتمكن وكيل آخر من تسميته
أدوات MCP المحلية tool/mcptool الاتصال بخوادم MCP وعرض أدواتها كقيم tool.FuncTool
بحث الويب tool/hostedtool.WebSearch الإعلان عن البحث عن الويب من جانب الموفر عندما تدعمه خدمة الدعم
البحث عن الملفات tool/hostedtool.FileSearch الإعلان عن البحث عن ملف من جانب الموفر أو مخزن المتجهات
مترجم شفرة tool/hostedtool.CodeInterpreter الإعلان عن تنفيذ التعليمات البرمجية من جانب الموفر
أدوات MCP المستضافة tool/hostedtool.MCPServer الإعلان عن خادم MCP لوقت تشغيل الموفر للاتصال به
أداة shell المحلية tool/shelltool تشغيل أوامر shell المحلية من خلال أداة دالة تتطلب الموافقة بشكل افتراضي

تنفذ جميع الأدوات الواجهة tool.Tool :

type Tool interface {
    Name() string
    Description() string
}

أدوات الدالة بالإضافة إلى ذلك تنفيذ tool.FuncTool:

import "context"

type FuncTool interface {
    Tool
    Schema() any
    ReturnSchema() any
    Call(ctx context.Context, arguments string) (any, error)
}

تنشئ معظم التطبيقات أدوات وظيفية مع functool.New أو functool.MustNew بدلا من تنفيذها FuncTool مباشرة. يستخدم إطار العمل توقيع الدالة Go أو علامات البنية لإنشاء المخطط المكشوف للنموذج.

تمرير الأدوات إلى العامل عبر agent.Config.Tools:

a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You are a helpful assistant.",
    Config: agent.Config{
        Tools: []tool.Tool{weatherTool, calculatorTool},
    },
})

أو أضف أدوات لكل تشغيل:

resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()

الموافقة على الأداة

الموافقة على الأداة هي ميزة إطار عمل تتيح لك استدعاءات الأدوات من خلال قرار بشري في الحلقة قبل أن يتلقى النموذج النتيجة. وهو يعمل مع موفري الخدمة الذين يستدعي عملاؤهم الأدوات محليا؛ تتبع الأدوات المستضافة من جانب الخدمة سلوك الموافقة الخاص بالموفر. راجع صفحة الموافقة على الأدوات للحصول على النمط الكامل، بما في ذلك كيفية تفاعل الموافقات مع الجلسات والتدفق والبرامج الوسيطة.

بالنسبة إلى Go، ضع علامة على أداة قابلة للنقض باستخدام tool.ApprovalRequiredFunc أو استخدم أداة تنفذ tool.ApprovalRequiredToolبالفعل ، مثل أداة shell المحلية. تتدفق طلبات الموافقة والاستجابات من خلال البرنامج الوسيط للاتصال التلقائي للأداة، بحيث تعمل مع موفري الخدمة الذين يقومون بإرجاع استدعاءات الوظائف المحلية.

مصفوفة دعم الموفر

يقدم كل من موفري OpenAI وOpenAI Azure نوعين من العملاء - الاستجابات وإكمال الدردشة - مع قدرات أدوات مختلفة. Azure عملاء OpenAI يعكسون مكافئات OpenAI الخاصة بهم. يتم تشغيل Copilot Studio وعوامل A2A على خدمة بعيدة بحيث يتم تكوين قدراتهم على العامل البعيد بدلا من عميل إطار عمل العامل - فهي غير مدرجة في المصفوفة.

نوع الأداة الردود إكمال الدردشة المسبك الأنثروبي أولاما GitHub Copilot
أدوات الدالة
مترجم شفرة
البحث عن الملفات
بحث الويب
أدوات MCP المستضافة
أدوات MCP المحلية

Note

تنطبق أعمدة الاستجاباتوإكمال الدردشة على كل من OpenAI وOpenAI Azure — تعكس المتغيرات Azure نفس دعم الأدوات مثل نظرائهم من OpenAI. لم تعد واجهة برمجة تطبيقات مساعدي OpenAI المهملة موثقة؛ للحصول على إرشادات الترحيل، راجع دليل الترحيل نواة دلالية.

مصفوفة دعم الموفر

يقدم كل من OpenAI وموفري OpenAI Azure أنواع عملاء متعددة مع قدرات أدوات مختلفة. Azure عملاء OpenAI يعكسون مكافئات OpenAI الخاصة بهم. ينطبق عمود Foundry على FoundryChatClient — ل FoundryAgent، يتم تكوين الأدوات على تعريف عامل Foundry (راجع ما الذي يعمل وما لا يعمل مع FoundryAgent). يتم تشغيل Copilot Studio وعوامل A2A على خدمة بعيدة بحيث يتم تكوين قدراتهم على العامل البعيد بدلا من عميل إطار عمل العامل - فهي غير مدرجة في المصفوفة.

نوع الأداة الردود إكمال الدردشة المسبك الأنثروبي أولاما فاوندري لوكال GitHub Copilot
أدوات الدالة ⚠️¹ ⚠️¹
مترجم شفرة
البحث عن الملفات
بحث الويب
توليد الصور
Hosted Shell (get_shell_tool)
shell / نظام الملفات المضمن / إحضار عنوان URL ✅²
أدوات MCP المستضافة
أدوات MCP المحلية
Microsoft مربع أدوات Foundry
Bing Grounding (تجريبي)
بحث Bing المخصص (معاينة)
البحث باستخدام الذكاء الاصطناعي في Azure (تجريبي)
SharePoint (معاينة)
Microsoft Fabric (معاينة)
البحث في الذاكرة (معاينة)
استخدام الكمبيوتر (معاينة)
أتمتة المستعرض (معاينة)
أداة عامل إلى عامل (A2A) ( معاينة)

¹ يعتمد على استدعاء وظيفة دعم النموذج المحلي المختار. ² مضمن في وقت تشغيل GitHub Copilot CLI، مسور بواسطة معالج أذونات. سطح مختلف عن OpenAI get_shell_tool.

Note

تنطبق أعمدة الاستجاباتوإكمال الدردشة على كل من OpenAI وOpenAI Azure — تعكس المتغيرات Azure نفس دعم الأدوات مثل نظرائهم من OpenAI. تعمل أدوات MCP المحلية مع أي موفر يدعم أدوات الوظائف.

مصفوفة دعم الموفر

يعرض Go SDK Microsoft Foundry من خلال foundryprovider OpenAI/Azure OpenAI من خلال openaiprovider. الأدوات المستضافة في tool/hostedtool هي الإعلانات: يرسلها Go SDK إلى الموفر، ويقرر الموفر ما إذا كانت هذه الإمكانية المستضافة متوفرة.

نوع الأداة المسبك الردود إكمال الدردشة الأنثروبي
أدوات الدالة
عامل كأداة دالة
أدوات MCP المحلية
بحث الويب
البحث عن الملفات
مترجم شفرة
أدوات MCP المستضافة
أداة shell المحلية

Note

أدوات MCP المحلية وأداة shell المحلية هي أدوات وظيفية من وجهة نظر الموفر، لذلك تتبع دعم أداة الوظيفة. يتم تنفيذ الأدوات المستضافة مثل hostedtool.FileSearchو hostedtool.CodeInterpreterو hostedtool.MCPServer بواسطة خدمة الذكاء الاصطناعي، وليس من خلال عملية Go.

استخدام عامل كأداة دالة

يمكنك استخدام عامل كأداة دالة لعامل آخر، ما يتيح تكوين العامل ومهام سير العمل الأكثر تقدما. يتم تحويل العامل الداخلي إلى أداة دالة وتوفيره إلى العامل الخارجي، والذي يمكنه بعد ذلك استدعائه حسب الحاجة.

AIAgent استدعاء .AsAIFunction() لتحويله إلى أداة دالة يمكن توفيرها إلى عامل آخر:

// Create the inner agent with its own tools
AIAgent weatherAgent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
     .AsAIAgent(
        model: "gpt-4o-mini",
        instructions: "You answer questions about the weather.",
        name: "WeatherAgent",
        description: "An agent that answers questions about the weather.",
        tools: [AIFunctionFactory.Create(GetWeather)]);

// Create the main agent and provide the inner agent as a function tool
AIAgent agent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
     .AsAIAgent(
        model: "gpt-4o-mini",
        instructions: "You are a helpful assistant.",
        tools: [weatherAgent.AsAIFunction()]);

// The main agent can now call the weather agent as a tool
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));

تحذير

DefaultAzureCredential مناسب للتنمية ولكنه يتطلب دراسة متأنية في الإنتاج. في الإنتاج، ضع في اعتبارك استخدام بيانات اعتماد محددة (على سبيل المثال، ManagedIdentityCredential) لتجنب مشكلات زمن الانتقال، وبحث بيانات الاعتماد غير المقصودة، والمخاطر الأمنية المحتملة من الآليات الاحتياطية.

استدعاء .as_tool() عامل لتحويله إلى أداة دالة يمكن توفيرها إلى عامل آخر:

import os
from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential

# Create the inner agent with its own tools
weather_agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    name="WeatherAgent",
    description="An agent that answers questions about the weather.",
    instructions="You answer questions about the weather.",
    tools=get_weather
)

# Create the main agent and provide the inner agent as a function tool
main_agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    instructions="You are a helpful assistant.",
    tools=weather_agent.as_tool()
)

# The main agent can now call the weather agent as a tool
result = await main_agent.run("What is the weather like in Amsterdam?")
print(result.text)

يمكنك أيضا تخصيص اسم الأداة والوصف واسم الوسيطة:

weather_tool = weather_agent.as_tool(
    name="WeatherLookup",
    description="Look up weather information for any location",
    arg_name="query",
    arg_description="The weather query or location"
)

التفاف عامل مع agenttool.New لجعله متاحا كعامل tool.FuncTool آخر:

import (
    "github.com/microsoft/agent-framework-go/agent"
    "github.com/microsoft/agent-framework-go/provider/foundryprovider"
    "github.com/microsoft/agent-framework-go/tool"
    "github.com/microsoft/agent-framework-go/tool/agenttool"
)

weatherAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You answer questions about the weather.",
    Config: agent.Config{
        Name:        "WeatherAgent",
        Description: "An agent that answers weather questions.",
        Tools:       []tool.Tool{weatherTool},
    },
})

mainAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You are a helpful assistant.",
    Config: agent.Config{
        Tools: []tool.Tool{agenttool.New(weatherAgent, agenttool.Config{})},
    },
})

resp, err := mainAgent.RunText(ctx, "Should I bring an umbrella to Amsterdam?").Collect()

يمكنك أيضا عرض نفس العامل الملتف من خلال MCP مع mcptool.AddTool، لأن agenttool.New إرجاع أداة دالة.

Tip

راجع العامل كعينة أداة دالةوالعامل كعينة أداة MCP للحصول على أمثلة كاملة قابلة للتشغيل.

الخطوات التالية