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.
FoundryAgentAgent Framework'i Microsoft Foundry Agent Service tarafından yönetilen bir aracı tanımına bağlar. Aracının modeli, yönergeleri, barındırılan araçları ve sürümü Foundry'de yapılandırılır; uygulamanız bu tanıma bağlanır ve standart Agent Framework çalıştırma, akış ve oturum API'lerini kullanır.
Aşağıdakiler için bu tümleştirmeyi kullanın:
- Prompt Aracıları, adlandırılmış ve sürümlendirilmiş sunucu taraflı aracı tanımlarıdır.
- Barındırılan Aracılar, aracıya özgü bir uç nokta üzerinden erişilen, dağıtımı yapılmış aracı uygulamalardır.
Uygulamanızın aracı tanımına sahip olduğu doğrudan model çıkarımı için bkz. Microsoft Döküm modeli sağlayıcısı. Agent Framework uygulamasını barındırılan bir aracı olarak dağıtmak için bkz. Foundry Hosted Agents.
Paketleri yükleme
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
İstem Aracısı'na bağlanma
Foundry projesi için bir AIProjectClient oluşturun ve bir AgentReference öğesini FoundryAgent olarak sarın. Uygulamanın belirli bir Prompt Agent tanımını kullanması gerektiğinde sürümü sabitleyin.
using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
using Microsoft.Agents.AI.Foundry;
var projectClient = new AIProjectClient(
new Uri(Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT")!),
new DefaultAzureCredential());
FoundryAgent agent = projectClient.AsAIAgent(
new AgentReference(
Environment.GetEnvironmentVariable("FOUNDRY_AGENT_NAME")!,
Environment.GetEnvironmentVariable("FOUNDRY_AGENT_VERSION")!));
Console.WriteLine(await agent.RunAsync("What can you help me with?"));
Ayrıca, en son sürümünü kullanmak için bir ProjectsAgentRecord veya açıkça alınmış bir sürümü kullanmak için bir ProjectsAgentVersion alabilir, ardından bu nesneyi projectClient.AsAIAgent(...) öğesine geçirebilirsiniz.
En son Prompt Agent sürümünü alma
Uygulamanın ada göre kayıtlı en son sürümü belirlemesi gerektiğinde AgentAdministrationClient kullanın.
ProjectsAgentRecord agentRecord =
await projectClient.AgentAdministrationClient.GetAgentAsync(
Environment.GetEnvironmentVariable("FOUNDRY_AGENT_NAME")!);
FoundryAgent latestAgent = projectClient.AsAIAgent(agentRecord);
Console.WriteLine(await latestAgent.RunAsync("What can you help me with?"));
Önemli
A FoundryAgent , Foundry tanımında depolanan modeli, yönergeleri ve barındırılan araçları kullanır. Foundry'de bu özellikleri yapılandırın; istemci, çalışma zamanında bunları değiştiremez.
Warning
DefaultAzureCredential geliştirme için uygundur. Üretim ortamında, istenmeyen kimlik bilgisi yoklamasını önlemek için ManagedIdentityCredential gibi belirli bir kimlik bilgisini tercih edin.
Barındırılan Aracıya Bağlan
Barındırılan Aracılar, aracıya özgü bir OpenAI uç noktası sunar. Uç noktayı proje uç noktasını ve kayıtlı aracı adını kullanarak oluşturun, ardından bunu AIProjectClient.AsAIAgent(...) öğesine iletin.
Env.TraversePath().Load();
// Port the Hosted-* samples listen on when run locally with `dotnet run`.
const int LocalAgentPort = 8088;
// AZURE_AI_AGENT_NAME is the registered server-side agent name.
string agentName = Environment.GetEnvironmentVariable("AZURE_AI_AGENT_NAME")
?? throw new InvalidOperationException("AZURE_AI_AGENT_NAME is not set.");
// Pick the server to talk to. `--local` and `--remote` mirror the flag `azd ai agent invoke`
// exposes; with neither, ask at startup.
══════════════════════════════════════════════════════════
""");
Console.ResetColor();
Console.WriteLine();
Uç noktanın yönetici tarafından denetlenen sürüm seçicisi etkin Barındırılan Aracı sürümünü belirler.
Paketleri yükleme
pip install agent-framework-foundry
Configuration
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com"
FOUNDRY_AGENT_NAME="my-agent"
FOUNDRY_AGENT_VERSION="1.0"
İstem Aracıları için FOUNDRY_AGENT_VERSION kullanın. Barındırılan Aracılar bunu atlayabilir.
Komut Aracısı'na Bağlan
Proje uç noktasını, aracı adını ve aracı sürümünü sağlayın. Hizmet depolanan modeli, yönergeleri ve barındırılan araç yapılandırmasını sağlar.
async def main() -> None:
agent = FoundryAgent(
project_endpoint="https://your-project.services.ai.azure.com",
agent_name="my-prompt-agent",
agent_version="1.0",
credential=AzureCliCredential(),
)
result = await agent.run("What is the capital of France?")
print(f"Agent: {result}")
# Streaming
print("Agent (streaming): ", end="", flush=True)
async for chunk in agent.run("Tell me a fun fact.", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print()
Bir İstem Aracısı yerel bir işlev aracı tanımlarsa, istemcinin istendiğinde bunu yürütebilmesi için FoundryAgent oluşturulurken eşleşen çağrılabilir öğeyi tools= üzerinden iletin.
Bkz. Prompt Agent yayımlama ve bağlama örneği.
Barındırılan Aracıya Bağlan
Barındırılan Aracılar agent_version gerektirmez. Proje uç noktası ve kayıtlı aracı adıyla bağlanın.
async def main() -> None:
# HostedAgents don't need agent_version
agent = FoundryAgent(
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
agent_name=os.getenv("FOUNDRY_AGENT_NAME"),
credential=AzureCliCredential(),
)
result = await agent.run("Summarize the latest news about AI.")
print(f"Agent: {result}")
Ne işe yarar ve nelerle çalışmaz? FoundryAgent
FoundryAgent Foundry'de zaten var olan bir aracı tanımına bağlanır. Depolanan yönergeler ve araç yapılandırması esas alındığından, istemci tarafındaki davranış uygulamaya ait olan Agent(client=FoundryChatClient(...))’den farklıdır.
Tools
Araç türü FoundryAgent(...) öğesine iletildi |
Davranış |
|---|---|
FunctionTool yerel bir çağrılabilir Python işleviyle |
Yalnızca Eşleşen işlev tanımı Foundry aracısının üzerinde zaten mevcut olduğunda desteklenir. Çağrılabilir işlev, Foundry tarafından istendiğinde uygulama sürecinde çalışır. |
| Web araması, kod yorumlayıcı, dosya arama, MCP, görüntü oluşturma ve Microsoft Döküm Aracı Kutusu gibi barındırılan araçlar | Bunları Foundry aracı tanımında yapılandırın. Bunları istemci tarafında geçirmek, bunları hizmet tarafından yönetilen aracıya eklemez. |
Toolbox bağlantısı ve doğrudan MCP kullanımıyla ilgili yönergeler için bkz. Microsoft Foundry Toolbox.
Yeni bir model görünür aracı yapım zamanında kaydedemezsiniz. Çağrılabilen bir işlev geçirilmesi yalnızca Foundry aracısının önceden bildirmiş olduğu bir işlev için yerel uygulamayı sağlar.
Bağlam sağlayıcıları
| Bağlam sağlayıcısı davranışı |
FoundryAgent ile çalışır mı? |
|---|---|
| Alınan bellek, RAG kod parçacıkları veya kullanıcı profili bilgileri gibi iletiler ekler | Yes. Eklenen bağlam istekle birlikte iletilir. |
| Konuşmayı saklar veya gözlemler | Yes. Sağlayıcı, istek ve yanıt çevresinde yerel olarak çalışır. |
| Araçları dinamik olarak ekler | Hayır, bu araçlar zaten Foundry ajan tanımında belirtilmiş değilse. |
Uygulamanın dinamik araç seçimine, beceri yüklemesine veya çalışma zamanında model görünür araçları değiştiren herhangi bir davranışa ihtiyacı olduğunda kullanın Agent(client=FoundryChatClient(...)) .
Çalıştırma seçenekleri
Foundry aracı tanımı asıl referans olduğundan, default_options veya agent.run(...) üzerinden iletilen seçeneklerin tümü geçerli sayılmaz.
| Seçenek | İstem Aracısı davranışı |
|---|---|
model |
Göz ardı edildi. Model, Foundry ajan tanımından gelir. |
tools, tool_choice, parallel_tool_calls |
İstekten kaldırıldı. Araçlar, Foundry aracı tanımında bildirilmelidir. |
instructions ve sistem veya geliştirici iletileri |
Göz ardı edildi. Depolanan Foundry yönergeleri yetkilidir. |
conversation_id |
Uygun olduğunda Foundry aracısı oturumunda kullanılır ve bu oturumla eşlenir. |
extra_body |
Çerçevenin sağladığı aracı referansıyla iletildi ve birleştirildi. |
Örnekleme parametreleri, meta veriler, user, storeve response_format |
İletildi, ancak Foundry aracısı veya model yapılandırması bunları geçersiz kılabilir veya kısıtlayabilir. |
Barındırılan aracılar da aynı istemci taraflı filtrelemeye tabi olur, ancak dağıtılan aracı kendisine iletilen herhangi bir seçeneği kabul edebilir, yok sayabilir veya yeniden yorumlayabilir. Belirli bir Barındırılan Aracıya karşı davranışı doğrulayın.
Tip
Yönergeler, oluşturma seçenekleri veya araçlar üzerinde çalıştırma başına denetime ihtiyacınız olduğunda kullanın Agent(client=FoundryChatClient(...)) .
Barındırılan Aracı hizmeti oturumunu yönetin
Hizmet tarafı oturumları kullanan barındırılan Aracılar için önizleme Yanıtları yüzeyi gerekir:
Uygulamanın onu bir kiracıya veya kullanıcıya bağlaması gerektiğinde, hizmet oturumunu açıkça oluşturun; ardından tanımlayıcısını bir Agent Framework oturumu olarak kapsülleştirin.
queries = [
"Hi!",
"Your name is Javis. What can you do?",
"What is your name?",
]
for query in queries:
print(f"\nUser: {query}")
print("Agent: ", end="", flush=True)
async for chunk in agent.run(query, session=session, stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print()
async def run_service_managed_session(
*,
agent: FoundryAgent,
project_client: AIProjectClient,
agent_name: str,
) -> None:
"""Let Foundry create the hosted-agent session, then delete it when finished."""
session = AgentSession()
print("\nService-managed hosted-agent session")
print(f"Before first request: {session.state.get(FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY)}")
try:
await run_conversation(agent, session)
print(f"After conversation: {session.state.get(FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY)}")
finally:
hosted_session_id = session.state.get(FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY)
if isinstance(hosted_session_id, str) and hosted_session_id:
await project_client.agents.delete_session(agent_name, hosted_session_id)
print(f"Deleted session: {hosted_session_id}")
async def run_user_managed_session(
*,
agent: FoundryAgent,
project_client: AIProjectClient,
agent_name: str,
agent_version: str | None,
) -> None:
"""Create, attach, and delete a hosted-agent session explicitly."""
resolved_agent_version = agent_version
if resolved_agent_version is None:
agent_details = await project_client.agents.get(agent_name)
resolved_agent_version = agent_details.versions.latest.version
hosted_session = await project_client.agents.create_session(
agent_name,
version_indicator=VersionRefIndicator(agent_version=resolved_agent_version),
)
session = AgentSession()
session.state[FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY] = hosted_session.agent_session_id
print("\nUser-managed hosted-agent session")
print(f"Created session: {hosted_session.agent_session_id}")
try:
await run_conversation(agent, session)
finally:
await project_client.agents.delete_session(agent_name, hosted_session.agent_session_id)
print(f"Deleted session: {hosted_session.agent_session_id}")
async def main() -> None:
credential = AzureCliCredential()
project_endpoint = os.environ["FOUNDRY_PROJECT_ENDPOINT"]
agent_name = os.environ["FOUNDRY_AGENT_NAME"]
agent_version = os.getenv("FOUNDRY_AGENT_VERSION")
project_client = AIProjectClient(
Tip
Eksiksiz bir örnek için using_deployed_agent.py örneğe bakın.
Özel HTTP zaman aşımı ayarlama
FoundryAgent , OpenAI SDK zaman aşımını varsayılan olarak devralır. Çok turlu konuşmalar veya ağ koşulları farklı bir sınır değeri gerektirdiğinde, timeout= değerini saniye cinsinden iletin.
from agent_framework.foundry import FoundryAgent
from azure.identity import AzureCliCredential
agent = FoundryAgent(
project_endpoint="https://your-project.services.ai.azure.com",
agent_name="my-prompt-agent",
credential=AzureCliCredential(),
timeout=120.0,
)
Zaman aşımı HTTP istemcisinin aracı başına kopyasına uygulanır ve aynı AIProjectClientöğesini paylaşan diğer aracıları etkilemez.
Uyarı
FoundryAgent Prompt ve Hosted Agents entegrasyonu şu anda Agent Framework Go için mevcut değildir. En son durum için bkz. Agent Framework Go deposu .
Konuşmaları çalıştırma, akışla yayınlama ve sürdürme
Bağlandıktan sonra, diğer Agent Framework aracıları ile aynı API'leri kullanın:
- Bir isteği
RunAsyncveyarunile çalıştırın. - Güncellemeleri
RunStreamingAsyncile veyarun(..., stream=True)ile alın. - Bir konuşmayı sürdürmek için
AgentSessionöğesini yeniden kullanın. - Konuşmanın Foundry projesinde görünür ve kalıcı olması gerektiğinde, Foundry sunucu tarafı konuşma API'lerini kullanın.
Foundry aracısı adlarını, sürümlerini, uç noktalarını ve konuşma tanımlayıcılarını güvenilir sunucu tarafındaki durumda tutun. Var olan bir konuşmayı sürdürmeden önce çağıranı yetkilandırın.