Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aracınızı oluşturduktan sonra, kullanıcıların ve diğer aracıların etkileşim kurabilmesi için aracıyı barındırmanız gerekir.
Barındırma Seçenekleri
| Seçenek | Description | En Uygun |
|---|---|---|
| A2A Protokolü | Agent-to-Agent protokolü aracılığıyla ajanları açığa çıkarma | Çok aracılı sistemler |
| OpenAI ile uyumlu uç noktalar | Sohbet Tamamlamaları veya Yanıtlar API'leri aracılığıyla aracıları kullanıma sunma | OpenAI uyumlu istemciler |
| Dayanıklı Uzantı | C# ve Python ajanlarını ve iş akışlarını Azure İşlevleri'ta veya kendi barındırdığınız işlem altyapısında dayanıklı duruma getirin | Uzun süre çalışan, güvenilir iş yükleri |
| AG-UI Protokolü | Web tabanlı yapay zeka aracısı uygulamaları oluşturma | Web ön uçları |
ASP.NET Core'da barındırma
Agent Framework, yapay zeka aracılarını ASP.NET Core uygulamalarıyla tümleştirmenizi sağlayan barındırma kitaplıkları sağlar. Bu kitaplıklar çeşitli protokoller aracılığıyla aracıları kaydetmeyi, yapılandırmayı ve ortaya çıkarmayı basitleştirir.
Aracılara Genel Bakış bölümünde açıklandığı gibi, AIAgent Aracı Çerçevesi'nin temel kavramıdır. Kullanıcı girişlerini işleyen, kararlar alan, araçları çağıran ve eylemleri yürütmek ve yanıtlar oluşturmak için ek iş gerçekleştiren bir "LLM sarmalayıcı" tanımlar. ASP.NET Core uygulamanızdan yapay zeka aracılarını kullanıma çıkarmak önemsiz değildir. Barındırma kitaplıkları, yapay zeka aracılarını bir bağımlılık ekleme kapsayıcısına kaydederek bu sorunu çözer ve bunları uygulama hizmetlerinizde çözmenize ve kullanmanıza olanak sağlar. Ayrıca araçlar ve oturum depolama gibi aracı bağımlılıklarını aynı kapsayıcıdan yönetmenize de olanak tanır. Aracılar, kullandıkları protokollerden bağımsız olarak uygulama altyapınızla birlikte barındırılabilir. Benzer şekilde, iş akışları barındırılabilir ve uygulamanızın ortak altyapısını kullanabilir.
Çekirdek Barındırma Kitaplığı
Kitaplık Microsoft.Agents.AI.Hosting , ASP.NET Core'da yapay zeka aracılarını barındırmanın temelini oluşturur. Yapay zeka aracılarını ve iş akışlarını kaydetmek ve yapılandırmak için IHostApplicationBuilder için uzantılar sağlar. ASP.NET Core'da, IHostApplicationBuilder yapılandırmayı, günlüğe kaydetmeyi, yaşam süresini ve daha fazlasını yöneten, barındırılan uygulamalar ve hizmetler için oluşturucuyu temsil eden temel türdür.
Aracıları veya iş akışlarını yapılandırmadan önce bağımlılık ekleme kapsayıcısında bir IChatClient kaydedin. Aşağıdaki örneklerde adı chat-modelaltında anahtarlı tekil olarak kaydedilir:
// 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);
Uyarı
DefaultAzureCredential geliştirme için uygundur ancak üretimde dikkatli bir şekilde dikkate alınması gerekir. Üretimde gecikme sorunları, istenmeyen kimlik bilgisi yoklama ve geri dönüş mekanizmalarından kaynaklanan olası güvenlik risklerini önlemek için belirli bir kimlik bilgisi (ör ManagedIdentityCredential. ) kullanmayı göz önünde bulundurun.
YapayZekaAjanıEkle
Bağımlılık ekleme ile yapay zeka aracısının kaydını yapın:
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() yöntemi, aracıyı yapılandırmak için uzantı yöntemleri sağlayan bir IHostedAgentBuilder döndürür. Örneğin aracıya araçlar ekleyebilirsiniz:
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
Oturum depoyu da yapılandırabilirsiniz (konuşma verileri için depolama):
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithInMemorySessionStore();
AddWorkflow
Birden çok aracıyı koordine eden iş akışlarını kaydedin. İş akışı temelde her düğümün bir olduğu ve aracıların birbiriyle iletişim kurduğu bir AIAgent"grafiktir".
Bu örnekte, iki ajan sırayla çalışmaktadır. Önce kullanıcı girişi agent-1 öğesine gönderilir; bu da bir yanıt üretir ve yanıt agent-2 öğesine gönderilir. Ardından iş akışı son yanıtı döndürür. Eşzamanlı aracı iş akışı oluşturan bir yöntem de BuildConcurrent vardır.
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]);
});
İş Akışını AI Agent Olarak Sunma
İş akışıyla protokol tümleştirmelerini (A2A veya OpenAI gibi) kullanmak için bunu tek başına bir aracıya dönüştürün. Şu anda iş akışları kendi başına benzer tümleştirme özellikleri sağlamadığından bu dönüştürme adımı gereklidir:
var workflowAsAgent = builder
.AddWorkflow("science-workflow", (sp, key) => { ... })
.AddAsAIAgent(); // Now the workflow can be used as an agent
Uygulama Ayrıntıları
Barındırma kitaplıkları, dış iletişim protokollerine ve Aracı Çerçevesi'nin iç AIAgent uygulamasına köprü oluşturan protokol bağdaştırıcıları olarak hareket eder. Barındırma tümleştirme kitaplığını kullandığınızda, kitaplık bağımlılık enjeksiyonundan kaydedilmiş olan AIAgent öğesini alır, gelen istekleri ve giden yanıtları çevirmek için protokole özgü bir ara yazılımla sarar ve istekleri işlemek üzere AIAgent öğesini çağırır. Bu mimari, aracı uygulamanızın protokolden bağımsız kalmasını sağlar.
Örneğin, A2A protokol bağdaştırıcısı ile ASP.NET Core barındırma kitaplığını kullanma:
// 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();
Tip
Azure İşlevleri ve kendi kendine barındırılan örnekler için Durable Agents örneklerine göz atın.
Azure İşlevleri barındırma paketini, Foundry istemcisini ve Azure kimlik doğrulama paketini yükleyin:
pip install agent-framework-azurefunctions agent-framework-foundry azure-identity
Ajan oluşturma:
# 1. Instantiate the agent with the chosen deployment and instructions.
def _create_agent() -> Any:
"""Create the Joker agent."""
return Agent(
client=FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["FOUNDRY_MODEL"],
credential=AzureCliCredential(),
),
name="Joker",
instructions="You are good at telling jokes.",
)
Ajanı AgentFunctionApp ile kaydedin:
# 2. Register the agent with AgentFunctionApp so Azure Functions exposes the required triggers.
app = AgentFunctionApp(agents=[_create_agent()], enable_health_check=True, max_poll_retries=50)
Azure İşlevleri Temel Araçları ile yerel olarak çalıştırın:
az login
pip install -r requirements.txt
# Start Azurite and copy local.settings.json.template to local.settings.json first.
func start
Ardından şu çağrıyı yapın:
curl -X POST http://localhost:7071/api/agents/Joker/run \
-H "Content-Type: text/plain" \
-d "Tell me a short joke about cloud computing."
Tip
Çalıştırılabilir dosyanın tamamı için tam örneğe ve daha fazla desen için Azure İşlevleri barındırma örneklerine bakın.
A2A Protokolü ile Barındırma
Go sürümü, bir aracıyı Agent-to-Agent protokolüyle uyumlu bir HTTP işleyicisi içinde saran a2aprovider aracılığıyla A2A barındırma sağlar.
Note
Dayanıklı Uzantı barındırma şu anda Go için kullanılamıyor. En son Go SDK'sı durumu için bkz. Agent Framework Go deposu.
Ajan oluşturma:
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{
},
})
Ajanı A2A üzerinden yayımlayın:
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
Tam bir çalıştırılabilir örnek için tam A2A istemci-sunucu örneğine bakın.
Sonraki Adımlar
Daha derine gidin:
- A2A Protokolü — A2A aracılığıyla aracıları kullanıma sunma ve kullanma
- Dayanıklı Uzantı — dayanıklı C# ve Python aracısı ve iş akışı barındırma
- AG-UI Protokolü — web tabanlı aracı kullanıcı arayüzleri
- Foundry Barındırılan Ajanlar belgeleri — Microsoft Foundry'de barındırılan ajanları anlama
- Foundry Barındırılan Aracılar örneği (Python) — uçtan uca Agent Framework aracısı örneği çalıştırma