إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
للمقارنة بين عوامل Foundry المستضافة المدارة Microsoft والاستضافة الذاتية والتنفيذ الدائم مع Durable Extension، راجع تطبيقات إطار عمل عامل الاستضافة.
الاستضافة في ASP.NET Core
يوفر إطار عمل العامل مكتبات استضافة تمكنك من دمج وكلاء الذكاء الاصطناعي في تطبيقات ASP.NET Core. تبسط هذه المكتبات تسجيل العوامل وتكوينها وكشفها من خلال بروتوكولات مختلفة.
كما هو موضح في العوامل، AIAgent هو تجريد العامل الأساسي في إطار عمل العامل. وهو يعرف "برنامج تضمين LLM" الذي يعالج مدخلات المستخدم، ويتخذ القرارات، ويستدعي الأدوات، وينفذ عملا إضافيا لتنفيذ الإجراءات وإنشاء الاستجابات. الكشف عن وكلاء الذكاء الاصطناعي من تطبيق ASP.NET Core الخاص بك ليس أمرا تافها. تحل مكتبات الاستضافة هذا عن طريق تسجيل وكلاء الذكاء الاصطناعي في حاوية حقن التبعية، ما يسمح لك بحلها واستخدامها في خدمات التطبيق الخاصة بك. كما أنها تمكنك من إدارة تبعيات العامل، مثل الأدوات وتخزين الجلسة، من نفس الحاوية. يمكن استضافة الوكلاء جنبا إلى جنب مع البنية الأساسية للتطبيق الخاص بك، بغض النظر عن البروتوكولات التي يستخدمونها. وبالمثل، يمكن استضافة مهام سير العمل والاستفادة من البنية الأساسية الشائعة لتطبيقك.
مكتبة الاستضافة الأساسية
Microsoft.Agents.AI.Hosting المكتبة هي الأساس لاستضافة وكلاء الذكاء الاصطناعي في ASP.NET Core. يوفر ملحقات IHostApplicationBuilder لتسجيل وتكوين عوامل الذكاء الاصطناعي ومهام سير العمل. في ASP.NET Core، IHostApplicationBuilder هو النوع الأساسي الذي يمثل المنشئ للتطبيقات والخدمات المستضافة وإدارة التكوين والتسجيل ومدة البقاء والمزيد.
قبل تكوين العوامل أو مهام سير العمل، قم بتسجيل IChatClient في حاوية إدخال التبعية. في الأمثلة أدناه، يتم تسجيله كقاعدة بيانات مفردة ذات مفتاح تحت الاسم chat-model:
// endpoint is your Microsoft Foundry project endpoint
// deploymentName is 'gpt-4o-mini' for example
IChatClient chatClient = new AIProjectClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetProjectOpenAIClient()
.GetProjectResponsesClient()
.AsIChatClient(deploymentName);
builder.Services.AddSingleton(chatClient);
تحذير
DefaultAzureCredential مناسب للتنمية ولكنه يتطلب دراسة متأنية في الإنتاج. في الإنتاج، ضع في اعتبارك استخدام بيانات اعتماد محددة (على سبيل المثال، ManagedIdentityCredential) لتجنب مشكلات زمن الانتقال، وبحث بيانات الاعتماد غير المقصودة، والمخاطر الأمنية المحتملة من الآليات الاحتياطية.
AddAIAgent
تسجيل عامل الذكاء الاصطناعي مع حقن التبعية:
var pirateAgent = builder.AddAIAgent(
"pirate",
instructions: "You are a pirate. Speak like a pirate",
description: "An agent that speaks like a pirate.",
chatClientServiceKey: "chat-model");
يقوم AddAIAgent() الأسلوب بإرجاع IHostedAgentBuilder، والذي يوفر أساليب ملحق لتكوين العامل. على سبيل المثال، يمكنك إضافة أدوات إلى العامل:
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithAITool(new MyTool()); // MyTool is a custom type derived from AITool
يمكنك أيضا تكوين مخزن الجلسة (تخزين بيانات المحادثة):
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithInMemorySessionStore();
AddWorkflow
تسجيل مهام سير العمل التي تنسق عوامل متعددة. سير العمل هو في الأساس "رسم بياني" حيث تكون كل عقدة AIAgent، ويتواصل الوكلاء مع بعضهم البعض.
في هذا المثال، يعمل عاملان بشكل تسلسلي. يتم إرسال إدخال المستخدم أولا إلى agent-1، والذي ينتج استجابة ويرسلها إلى agent-2. ثم يقوم سير العمل إخراج الاستجابة النهائية. هناك أيضا BuildConcurrent أسلوب يقوم بإنشاء سير عمل عامل متزامن.
builder.AddAIAgent("agent-1", instructions: "you are agent 1!");
builder.AddAIAgent("agent-2", instructions: "you are agent 2!");
var workflow = builder.AddWorkflow("my-workflow", (sp, key) =>
{
var agent1 = sp.GetRequiredKeyedService<AIAgent>("agent-1");
var agent2 = sp.GetRequiredKeyedService<AIAgent>("agent-2");
return AgentWorkflowBuilder.BuildSequential(key, [agent1, agent2]);
});
كشف سير العمل ك AIAgent
لاستخدام تكاملات البروتوكول (مثل A2A أو OpenAI) مع سير عمل، قم بتحويله إلى عامل مستقل. حاليا، لا توفر مهام سير العمل قدرات تكامل مماثلة من تلقاء نفسها، لذا فإن خطوة التحويل هذه مطلوبة:
var workflowAsAgent = builder
.AddWorkflow("science-workflow", (sp, key) => { ... })
.AddAsAIAgent(); // Now the workflow can be used as an agent
تفاصيل التنفيذ
تعمل مكتبات الاستضافة كمحولات بروتوكول تقوم بوصل بروتوكولات الاتصال الخارجية والتنفيذ الداخلي AIAgent لإطار عمل العامل. عند استخدام مكتبة تكامل استضافة، تسترد المكتبة المسجلة AIAgent من حقن التبعية، وتغلفها مع برنامج وسيط خاص بالبروتوكول لترجمة الطلبات الواردة والاستجابات الصادرة، وتستدعي AIAgent لمعالجة الطلبات. تحافظ هذه البنية على بروتوكول تنفيذ العامل الخاص بك غير محدد.
على سبيل المثال، استخدام مكتبة استضافة ASP.NET Core مع محول بروتوكول A2A:
// Register the agent
var pirateAgent = builder.AddAIAgent("pirate",
instructions: "You are a pirate. Speak like a pirate",
description: "An agent that speaks like a pirate.");
// Expose via a protocol (e.g. A2A)
builder.Services.AddA2AServer();
var app = builder.Build();
app.MapA2AServer();
app.Run();
Microsoft Foundry Hosted Agents هو خيار الاستضافة المدارة الأساسي. أكمل المتطلبات الأساسية ل Foundry Hosted Agents، بما في ذلك ملحق عامل AI لمطور CLI Azure وتسجيل الدخول Azure CLI.
ينشئ نموذج البدء عامل مع تعطيل تخزين النموذج من جانب الخادم ويبدأ ResponsesHostServer:
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, ResponsesHostServer
from azure.identity import DefaultAzureCredential
def main() -> None:
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
model="gpt-6-luna",
credential=DefaultAzureCredential(),
),
instructions="You are a friendly assistant. Keep your answers brief.",
default_options={"store": False},
)
ResponsesHostServer(agent=agent, history_source="agent_server").run()
if __name__ == "__main__":
main()
استبدل نقطة نهاية المشروع المشفرة واسم نشر النموذج، ثم قم بتشغيل عينة PEP 723 محليا من جذر مستودع Agent Framework:
uv run python/samples/01-get-started/07_hosting.py
لنشر مشروع عامل مستضاف كامل، قم بتهيئة من النموذج azure.yamlالذي تم الاحتفاظ به:
mkdir my-hosted-agent && cd my-hosted-agent
azd ai agent init -t https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/agent-framework/responses/01-basic/azure.yaml --src .
تشغيل مضيف العامل:
azd ai agent run
في محطة طرفية أخرى، استدع العامل المحلي:
azd ai agent invoke --local "Hello!"
Tip
راجع نموذج بدء الاستخدام الكاملونموذج النشر الكامل. للحصول على إرشادات النشر، راجع Foundry Hosted Agents.
الاستضافة باستخدام بروتوكول A2A
يوفر منفذ Go استضافة A2A من خلال a2aprovider، والذي يلتف عامل في معالج HTTP متوافق مع بروتوكول عامل إلى عامل.
Note
استضافة Durable Extension غير متوفرة حاليا ل Go. للحصول على أحدث حالة Go SDK، راجع مستودع Agent Framework Go.
إنشاء عامل:
import (
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/a2aprovider"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
"github.com/a2aproject/a2a-go/v2/a2a"
"github.com/a2aproject/a2a-go/v2/a2asrv"
)
a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
},
})
كشف العامل عبر A2A:
url := "http://localhost:5000"
card := &a2a.AgentCard{
Name: "MyAgent",
Description: "A helpful assistant.",
Version: "1.0.0",
DefaultInputModes: []string{"text"},
DefaultOutputModes: []string{"text"},
Capabilities: a2a.AgentCapabilities{Streaming: false},
SupportedInterfaces: []*a2a.AgentInterface{
a2a.NewAgentInterface(url, a2a.TransportProtocolJSONRPC),
},
}
mux := http.NewServeMux()
requestHandler := a2asrv.NewHandler(
a2aprovider.NewExecutor(a, a2aprovider.ExecutorConfig{}),
a2asrv.WithExtendedAgentCard(card),
)
mux.Handle("/", a2asrv.NewJSONRPCHandler(requestHandler))
mux.Handle(a2asrv.WellKnownAgentCardPath, a2asrv.NewStaticAgentCardHandler(card))
log.Println("A2A server listening on :5000")
http.ListenAndServe(":5000", mux)
Tip
راجع نموذج خادم عميل A2A الكامل للحصول على مثال كامل قابل للتشغيل.
الخطوات التالية
انتقل إلى أبعد من ذلك:
- خدمة عامل A2A — تستهلك عوامل A2A عن بعد
- استضافة A2A - كشف عوامل إطار عمل العامل من خلال A2A
- Durable Extension - استضافة دائمة ل C# وعامل Python وسير العمل
- بروتوكولAG-UI - واجهات المستخدم الوكيل المستندة إلى الويب
- نظرة عامة على الاستضافة - اختر Foundry Hosted Agents أو self-hosting أو durable hosting
- Foundry Hosted Agents — توزيع عوامل إطار عمل العامل إلى الاستضافة المدارة
- نموذج Foundry Hosted Agents (Python) — قم بتشغيل نموذج الاستجابات الأساسي