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.
Bu kılavuz, .NET veya Python ve Agent Framework ile AG-UI protokolünü kullanarak hem sunucu hem de istemci uygulamalarının nasıl oluşturulacağını açıklar. Etkileşimli konuşmalar için bir yapay zeka aracısını ve ona bağlanan bir istemciyi barındıran bir AG-UI sunucusu oluşturmayı öğreneceksiniz.
Neler Oluşturacaksınız
Bu öğreticinin sonunda şunları elde etmiş olacaksınız:
- HTTP üzerinden erişilebilen bir yapay zeka aracısı barındıran AG-UI sunucusu
- Sunucuya bağlanan ve yanıtları akışla aktaran bir istemci uygulaması
- AG-UI protokolünün Aracı Çerçevesi ile nasıl çalıştığını anlama
Önkoşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
- .NET 8.0 veya üzeri
- Azure OpenAI hizmet uç noktası ve dağıtımı yapılandırıldı
- Azure CLI yüklü ve kimliği doğrulanmış
- Kullanıcı, Azure OpenAI kaynağı rolüne sahiptir
Cognitive Services OpenAI Contributor
Uyarı
Bu örneklerde Azure OpenAI modelleri kullanılır. Daha fazla bilgi için bkz. Azure OpenAI modellerini Azure AI Foundry ile dağıtma.
Uyarı
Bu örnekler kimlik doğrulaması için kullanılır DefaultAzureCredential . Azure ile kimliğinizin doğrulanmış olduğundan emin olun (örneğin aracılığıyla az login). Daha fazla bilgi için Azure Identity belgelerine bakın.
Uyarı
AG-UI protokolü hala geliştirme aşamasındadır ve değiştirilebilir. Protokol geliştikçe bu örnekleri güncel tutacağız.
1. Adım: AG-UI Sunucusu Oluşturma
AG-UI sunucusu yapay zeka aracınızı barındırıyor ve ASP.NET Core kullanarak HTTP uç noktaları aracılığıyla kullanıma sunar.
Uyarı
Sunucu projesi SDK gerektirir Microsoft.NET.Sdk.Web . Sıfırdan yeni bir proje oluşturuyorsanız, dotnet new web yerine .csproj kullanın veya <Project Sdk="Microsoft.NET.Sdk.Web"> dosyanızın Microsoft.NET.Sdk kullandığından emin olun.
Gerekli Paketleri Yükleme
Sunucu için gerekli paketleri yükleyin:
dotnet add package Microsoft.Agents.AI.Hosting.AGUI.AspNetCore --prerelease
dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
Uyarı
OpenAI'nin Microsoft.Extensions.AI.OpenAI'yu, Agent Framework tarafından beklenen AsIChatClient() arabirimine dönüştüren ChatClient uzantı yöntemi için IChatClient paketi gereklidir.
Sunucu Kodu
adlı Program.csbir dosya oluşturun:
// Copyright (c) Microsoft. All rights reserved.
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI.Hosting.AGUI.AspNetCore;
using Microsoft.Extensions.AI;
using OpenAI.Chat;
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Services.AddHttpClient().AddLogging();
builder.Services.AddAGUI();
WebApplication app = builder.Build();
string endpoint = builder.Configuration["AZURE_OPENAI_ENDPOINT"]
?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
string deploymentName = builder.Configuration["AZURE_OPENAI_DEPLOYMENT_NAME"]
?? throw new InvalidOperationException("AZURE_OPENAI_DEPLOYMENT_NAME is not set.");
// Create the AI agent
ChatClient chatClient = new AzureOpenAIClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetChatClient(deploymentName);
AIAgent agent = chatClient.AsIChatClient().AsAIAgent(
name: "AGUIAssistant",
instructions: "You are a helpful assistant.");
// Map the AG-UI agent endpoint
app.MapAGUI("/", agent);
await app.RunAsync();
Önemli Kavramlar
-
AddAGUI: AG-UI hizmetlerini bağımlılık ekleme kapsayıcısına kaydeder -
MapAGUI: otomatik istek/yanıt işleme ve SSE akışı ile AG-UI uç noktasını kaydeden uzantı yöntemi -
ChatClientveAsIChatClient():AzureOpenAIClient.GetChatClient()OpenAI'ninChatClienttürünü döndürür.AsIChatClient()Uzantı yöntemi (kaynakMicrosoft.Extensions.AI.OpenAI), aracıyı Agent Framework'ünIChatClientgerektirdiği arabirime dönüştürür -
AsAIAgent: BirIChatClient'den bir Aracı Çerçevesi ajanı oluşturur. - ASP.NET Core Entegrasyonu: Akış yanıtları için ASP.NET Core'un yerel asenkron desteğini kullanır
- Yönergeler: Aracı, istemci iletileri tarafından geçersiz kılınabilen varsayılan yönergelerle oluşturulur
-
Yapılandırma:
AzureOpenAIClientileDefaultAzureCredentialgüvenli kimlik doğrulaması sağlar
Sunucuyu Yapılandırma ve Çalıştırma
Gerekli ortam değişkenlerini ayarlayın:
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
export AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4o-mini"
Sunucuyu çalıştırın:
dotnet run --urls http://localhost:8888
Sunucu http://localhost:8888 üzerinde dinlemeye başlayacak.
Uyarı
2. Adımda istemciyi ayarlarken ve çalıştırırken bu sunucuyu çalışır durumda tutun. Tüm sistemin çalışması için hem sunucunun hem de istemcinin aynı anda çalışması gerekir.
2. Adım: AG-UI İstemcisi Oluşturma
AG-UI istemcisi uzak sunucuya bağlanır ve akış yanıtlarını görüntüler.
Önemli
İstemciyi çalıştırmadan önce, 1. adımdaki AG-UI sunucusunun konumunda http://localhost:8888çalıştığından emin olun.
Gerekli Paketleri Yükleme
AG-UI istemci kitaplığını yükleyin:
dotnet add package Microsoft.Agents.AI.AGUI --prerelease
dotnet add package Microsoft.Agents.AI --prerelease
Uyarı
Microsoft.Agents.AI paket, uzantı metoduAsAIAgent() sağlar.
İstemci Kodu
adlı Program.csbir dosya oluşturun:
// Copyright (c) Microsoft. All rights reserved.
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.AGUI;
using Microsoft.Extensions.AI;
string serverUrl = Environment.GetEnvironmentVariable("AGUI_SERVER_URL") ?? "http://localhost:8888";
Console.WriteLine($"Connecting to AG-UI server at: {serverUrl}\n");
// Create the AG-UI client agent
using HttpClient httpClient = new()
{
Timeout = TimeSpan.FromSeconds(60)
};
AGUIChatClient chatClient = new(httpClient, serverUrl);
AIAgent agent = chatClient.AsAIAgent(
name: "agui-client",
description: "AG-UI Client Agent");
AgentSession session = await agent.CreateSessionAsync();
List<ChatMessage> messages =
[
new(ChatRole.System, "You are a helpful assistant.")
];
try
{
while (true)
{
// Get user input
Console.Write("\nUser (:q or quit to exit): ");
string? message = Console.ReadLine();
if (string.IsNullOrWhiteSpace(message))
{
Console.WriteLine("Request cannot be empty.");
continue;
}
if (message is ":q" or "quit")
{
break;
}
messages.Add(new ChatMessage(ChatRole.User, message));
// Stream the response
bool isFirstUpdate = true;
string? threadId = null;
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(messages, session))
{
ChatResponseUpdate chatUpdate = update.AsChatResponseUpdate();
// First update indicates run started
if (isFirstUpdate)
{
threadId = chatUpdate.ConversationId;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"\n[Run Started - Thread: {chatUpdate.ConversationId}, Run: {chatUpdate.ResponseId}]");
Console.ResetColor();
isFirstUpdate = false;
}
// Display streaming text content
foreach (AIContent content in update.Contents)
{
if (content is TextContent textContent)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write(textContent.Text);
Console.ResetColor();
}
else if (content is ErrorContent errorContent)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"\n[Error: {errorContent.Message}]");
Console.ResetColor();
}
}
}
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"\n[Run Finished - Thread: {threadId}]");
Console.ResetColor();
}
}
catch (Exception ex)
{
Console.WriteLine($"\nAn error occurred: {ex.Message}");
}
Önemli Kavramlar
- Server-Sent Olayları (SSE): Protokol, akışlı yanıtlar için SSE kullanır
-
AGUIChatClient: AG-UI sunuculara bağlanan ve uygulayan istemci sınıfı
IChatClient -
AsAIAgent: İstemciden bir aracı oluşturmak için
AGUIChatClientüzerinde uzantı yöntemi -
RunStreamingAsync: Yanıtları nesne olarak
AgentResponseUpdateakışla aktarıyor -
AsChatResponseUpdate: Sohbete özgü
ConversationIdveResponseIdgibi özelliklere erişmek için uzantı yöntemi -
Oturum Yönetimi: İstekler
AgentSessionarasında konuşma bağlamını korur -
İçerik Türleri: Yanıtlar
TextContentiletilere veErrorContenthatalara yöneliktir
İstemciyi Yapılandırma ve Çalıştırma
İsteğe bağlı olarak özel bir sunucu URL'si ayarlayın:
export AGUI_SERVER_URL="http://localhost:8888"
İstemciyi ayrı bir terminalde çalıştırın (1. Adımdaki sunucunun çalıştığından emin olun):
dotnet run
3. Adım: Tam Sistemi Test Etme
Hem sunucu hem de istemci çalışırken, artık sistemin tamamını test edebilirsiniz.
Beklenen Çıkış
$ dotnet run
Connecting to AG-UI server at: http://localhost:8888
User (:q or quit to exit): What is 2 + 2?
[Run Started - Thread: thread_abc123, Run: run_xyz789]
2 + 2 equals 4.
[Run Finished - Thread: thread_abc123]
User (:q or quit to exit): Tell me a fun fact about space
[Run Started - Thread: thread_abc123, Run: run_def456]
Here's a fun fact: A day on Venus is longer than its year! Venus takes
about 243 Earth days to rotate once on its axis, but only about 225 Earth
days to orbit the Sun.
[Run Finished - Thread: thread_abc123]
User (:q or quit to exit): :q
Renk Kodlu Çıktı
İstemci, farklı renklerde farklı içerik türleri görüntüler:
- Sarı: Başlatılan bildirimleri çalıştırma
- Cyan: Ajan metin yanıtları (gerçek zamanlı yayın akışı)
- Yeşil: Tamamlama bildirimlerini çalıştırma
- Kırmızı: Hata iletileri
Nasıl Çalışır?
Server-Side Süreci
- İstemci, iletilerle HTTP POST isteği gönderir
- ASP.NET Core uç noktası isteği şu aracılığıyla alır:
MapAGUI - Aracı, Agent Framework kullanarak iletileri işler
- Yanıtlar AG-UI olaylara dönüştürülür
- Olaylar Sunucu Gönderimli Olaylar (SSE) olarak geri gönderilir
- Çalıştırma tamamlandığında bağlantı kapatılır
İstemci Tarafı Süreci
-
AGUIChatClientsunucu uç noktasına HTTP POST isteği gönderir - Sunucu, SSE akışıyla yanıt verir
- İstemci gelen olayları nesnelere ayrıştırıyor
AgentResponseUpdate - Her güncelleştirme içerik türüne göre görüntülenir
-
ConversationIdkonuşma sürekliliği için kaydedilir - Çalıştırma tamamlandığında akış tamamlar
Protokol Ayrıntıları
AG-UI protokolü aşağıdakileri kullanır:
- İstek göndermek için HTTP POST
- Sunucu Tarafından Gönderilen Olaylar (SSE) ile akış yanıtları
- Olay serileştirme için JSON
- Konuşma bağlamını korumak için iş parçacığı kimlikleri (olarak
ConversationId) - Bireysel yürütmeleri izlemek için kimlikler (örneğin
ResponseId) çalıştırılır
Sonraki Adımlar
AG-UI'nin temellerini anladığınıza göre şunları yapabilirsiniz:
- Arka Uç Araçları Ekleme: Etki alanınız için özel işlev araçları oluşturma
Ek Kaynaklar
Önkoşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
- Python 3.10 veya üzeri
- Azure OpenAI hizmet uç noktası ve dağıtımı yapılandırıldı
- Azure CLI yüklü ve kimliği doğrulanmış
- Kullanıcı, Azure OpenAI kaynağı rolüne sahiptir
Cognitive Services OpenAI Contributor
Uyarı
Bu örneklerde Azure OpenAI modelleri kullanılır. Daha fazla bilgi için bkz. Azure OpenAI modellerini Azure AI Foundry ile dağıtma.
Uyarı
Bu örnekler kimlik doğrulaması için kullanılır DefaultAzureCredential . Azure ile kimliğinizin doğrulanmış olduğundan emin olun (örneğin aracılığıyla az login). Daha fazla bilgi için Azure Identity belgelerine bakın.
Uyarı
AG-UI protokolü hala geliştirme aşamasındadır ve değiştirilebilir. Protokol geliştikçe bu örnekleri güncel tutacağız.
1. Adım: AG-UI Sunucusu Oluşturma
AG-UI sunucusu yapay zeka aracınızı barındırıyor ve FastAPI kullanarak HTTP uç noktaları aracılığıyla kullanıma sunar.
Gerekli Paketleri Yükleme
Sunucu için gerekli paketleri yükleyin:
pip install agent-framework-ag-ui --pre
Veya uv kullanarak:
uv pip install agent-framework-ag-ui --prerelease=allow
Bu, agent-framework-core, fastapi ve uvicorn'yi bağımlılık olarak otomatik yükler.
Sunucu Kodu
adlı server.pybir dosya oluşturun:
"""AG-UI server example."""
import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIChatClient
from agent_framework_ag_ui import add_agent_framework_fastapi_endpoint
from azure.identity import AzureCliCredential
from fastapi import FastAPI
# Read required configuration
endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
deployment_name = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")
if not endpoint:
raise ValueError("AZURE_OPENAI_ENDPOINT environment variable is required")
if not deployment_name:
raise ValueError("AZURE_OPENAI_DEPLOYMENT_NAME environment variable is required")
chat_client = AzureOpenAIChatClient(
credential=AzureCliCredential(),
endpoint=endpoint,
deployment_name=deployment_name,
)
# Create the AI agent
agent = Agent(
name="AGUIAssistant",
instructions="You are a helpful assistant.",
chat_client=chat_client,
)
# Create FastAPI app
app = FastAPI(title="AG-UI Server")
# Register the AG-UI endpoint
add_agent_framework_fastapi_endpoint(app, agent, "/")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8888)
Önemli Kavramlar
-
add_agent_framework_fastapi_endpoint: otomatik istek/yanıt işleme ve SSE akışı ile AG-UI uç noktasını kaydeder -
Agent: Gelen istekleri işleyecek Agent Framework aracısı - FastAPI Tümleştirmesi: Akış yanıtları için FastAPI'nin yerel zaman uyumsuz desteğini kullanır
- Yönergeler: Aracı, istemci iletileri tarafından geçersiz kılınabilen varsayılan yönergelerle oluşturulur
-
Yapılandırma:
AzureOpenAIChatClientOrtam değişkenlerinden okur veya parametreleri doğrudan kabul eder
Sunucuyu Yapılandırma ve Çalıştırma
Gerekli ortam değişkenlerini ayarlayın:
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
export AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4o-mini"
Sunucuyu çalıştırın:
python server.py
Veya doğrudan uvicorn kullanarak:
uvicorn server:app --host 127.0.0.1 --port 8888
Sunucu http://127.0.0.1:8888 üzerinde dinlemeye başlayacak.
2. Adım: AG-UI İstemcisi Oluşturma
AG-UI istemcisi uzak sunucuya bağlanır ve akış yanıtlarını görüntüler.
Gerekli Paketleri Yükleme
AG-UI paketi, AGUIChatClient öğesini içeren, zaten yüklüdür.
# Already installed with agent-framework-ag-ui
pip install agent-framework-ag-ui --pre
İstemci Kodu
adlı client.pybir dosya oluşturun:
"""AG-UI client example."""
import asyncio
import os
from agent_framework import Agent
from agent_framework_ag_ui import AGUIChatClient
async def main():
"""Main client loop."""
# Get server URL from environment or use default
server_url = os.environ.get("AGUI_SERVER_URL", "http://127.0.0.1:8888/")
print(f"Connecting to AG-UI server at: {server_url}\n")
# Create AG-UI chat client
chat_client = AGUIChatClient(server_url=server_url)
# Create agent with the chat client
agent = Agent(
name="ClientAgent",
chat_client=chat_client,
instructions="You are a helpful assistant.",
)
# Get a thread for conversation continuity
thread = agent.create_session()
try:
while True:
# Get user input
message = input("\nUser (:q or quit to exit): ")
if not message.strip():
print("Request cannot be empty.")
continue
if message.lower() in (":q", "quit"):
break
# Stream the agent response
print("\nAssistant: ", end="", flush=True)
async for update in agent.run(message, session=thread, stream=True):
# Print text content as it streams
if update.text:
print(f"\033[96m{update.text}\033[0m", end="", flush=True)
print("\n")
except KeyboardInterrupt:
print("\n\nExiting...")
except Exception as e:
print(f"\n\033[91mAn error occurred: {e}\033[0m")
if __name__ == "__main__":
asyncio.run(main())
Önemli Kavramlar
-
Server-Sent Olayları (SSE): Protokol SSE biçimini (
data: {json}\n\n) kullanır -
Olay Türleri: Çeşitli olaylar meta veri ve içerik sağlar (ALT ÇİZGİLİ BÜYÜK HARF).
-
RUN_STARTED: Aracı işlemeye başladı -
TEXT_MESSAGE_START: Aracının gönderdiği kısa mesajın başlangıcı -
TEXT_MESSAGE_CONTENT: Aracıdan,deltaalanıyla akışa alınan artımlı metin -
TEXT_MESSAGE_END: Kısa mesaj sonu -
RUN_FINISHED: Başarılı tamamlama -
RUN_ERROR: Hata bilgileri
-
-
Alan Adlandırma: Olay alanları camelCase kullanır (örneğin,
threadId,runId,messageId) -
İş Parçacığı Yönetimi: İstekler
threadIdarasında konuşma bağlamını korur - Client-Side Yönergeleri: Sistem iletileri istemciden gönderilir
İstemciyi Yapılandırma ve Çalıştırma
İsteğe bağlı olarak özel bir sunucu URL'si ayarlayın:
export AGUI_SERVER_URL="http://127.0.0.1:8888/"
İstemciyi çalıştırın (ayrı bir terminalde):
python client.py
3. Adım: Tam Sistemi Test Etme
Hem sunucu hem de istemci çalışırken, artık sistemin tamamını test edebilirsiniz.
Beklenen Çıkış
$ python client.py
Connecting to AG-UI server at: http://127.0.0.1:8888/
User (:q or quit to exit): What is 2 + 2?
[Run Started - Thread: abc123, Run: xyz789]
2 + 2 equals 4.
[Run Finished - Thread: abc123, Run: xyz789]
User (:q or quit to exit): Tell me a fun fact about space
[Run Started - Thread: abc123, Run: def456]
Here's a fun fact: A day on Venus is longer than its year! Venus takes
about 243 Earth days to rotate once on its axis, but only about 225 Earth
days to orbit the Sun.
[Run Finished - Thread: abc123, Run: def456]
User (:q or quit to exit): :q
Renk Kodlu Çıktı
İstemci, farklı renklerde farklı içerik türleri görüntüler:
- Sarı: Başlatılan bildirimleri çalıştırma
- Cyan: Ajan metin yanıtları (gerçek zamanlı yayın akışı)
- Yeşil: Tamamlama bildirimlerini çalıştırma
- Kırmızı: Hata iletileri
Curl ile test etme (İsteğe bağlı)
İstemciyi çalıştırmadan önce curl kullanarak sunucuyu el ile test edebilirsiniz:
curl -N http://127.0.0.1:8888/ \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"messages": [
{"role": "user", "content": "What is 2 + 2?"}
]
}'
Server-Sent Events akışının geri döndüğünü görmeniz gerekir.
data: {"type":"RUN_STARTED","threadId":"...","runId":"..."}
data: {"type":"TEXT_MESSAGE_START","messageId":"...","role":"assistant"}
data: {"type":"TEXT_MESSAGE_CONTENT","messageId":"...","delta":"The"}
data: {"type":"TEXT_MESSAGE_CONTENT","messageId":"...","delta":" answer"}
...
data: {"type":"TEXT_MESSAGE_END","messageId":"..."}
data: {"type":"RUN_FINISHED","threadId":"...","runId":"..."}
Nasıl Çalışır?
Server-Side Süreci
- İstemci, iletilerle HTTP POST isteği gönderir
- FastAPI uç noktası isteği alır
-
AgentFrameworkAgentsarmalayıcı yürütmeyi koordine eder - Aracı, Agent Framework kullanarak iletileri işler
-
AgentFrameworkEventBridgearacı güncelleştirmelerini AG-UI olaylara dönüştürür - Yanıtlar Server-Sent Olayları (SSE) olarak geri akışa alınır
- Çalıştırma tamamlandığında bağlantı kapatılır
İstemci Tarafı Süreci
- İstemci, sunucu uç noktasına HTTP POST isteği gönderir
- Sunucu, SSE akışıyla yanıt verir
- İstemci gelen
data:satırları JSON olayları olarak ayrıştırıyor - Her olay türüne göre görüntülenir
-
threadIdkonuşma sürekliliği için kaydedilir - Olay
RUN_FINISHEDgeldiğinde akış tamamlanır
Protokol Ayrıntıları
AG-UI protokolü aşağıdakileri kullanır:
- İstek göndermek için HTTP POST
- Sunucu Tarafından Gönderilen Olaylar (SSE) ile akış yanıtları
- Olay serileştirme için JSON
- Konuşma bağlamını korumak için iş parçacığı kimliği
- Tek tek yürütmeleri izlemek için kimlikleri çalıştırma
- Olay türü adlandırma: Alt çizgili BÜYÜK HARF (ör. ,
RUN_STARTEDTEXT_MESSAGE_CONTENT) - Alan adlandırma: camelCase (örn. ,
threadIdrunId,messageId)
Ortak Desenler
Özel Sunucu Yapılandırması
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
# Add CORS for web clients
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
add_agent_framework_fastapi_endpoint(app, agent, "/agent")
Çoklu Temsilciler
app = FastAPI()
weather_agent = Agent(name="weather", ...)
finance_agent = Agent(name="finance", ...)
add_agent_framework_fastapi_endpoint(app, weather_agent, "/weather")
add_agent_framework_fastapi_endpoint(app, finance_agent, "/finance")
Hata İşleme
try:
async for event in client.send_message(message):
if event.get("type") == "RUN_ERROR":
error_msg = event.get("message", "Unknown error")
print(f"Error: {error_msg}")
# Handle error appropriately
except httpx.HTTPError as e:
print(f"HTTP error: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
Sorun giderme
Bağlantı Reddedildi
İstemciyi başlatmadan önce sunucunun çalıştığından emin olun:
# Terminal 1
python server.py
# Terminal 2 (after server starts)
python client.py
Kimlik Doğrulama Hataları
Azure ile kimliğinizin doğrulanmış olduğundan emin olun:
az login
Azure OpenAI kaynağında doğru rol atamasının olduğunu doğrulayın.
Akış Çalışmıyor
İstemci zaman aşımınızın yeterli olup olmadığını denetleyin:
httpx.AsyncClient(timeout=60.0) # 60 seconds should be enough
Uzun süre çalışan aracılar için buna göre zaman aşımını artırın.
İş Parçacığı Bağlamı Kayboldu
İstemci, iş parçacığı sürekliliğini otomatik olarak yönetir. Bağlam kaybolursa:
-
threadIdolaylarındanRUN_STARTED'nin yakalanıp yakalanmadığını kontrol edin. - İletiler arasında aynı istemci örneğinin kullanıldığından emin olun
- Sunucunun sonraki isteklerde
thread_idaldığını doğrulayın.
Sonraki Adımlar
AG-UI'nin temellerini anladığınıza göre şunları yapabilirsiniz:
- Arka Uç Araçları Ekleme: Etki alanınız için özel işlev araçları oluşturma