Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
FoundryAgentaz Ügynök-keretrendszert a Microsoft Foundry Agent Service által felügyelt ügynökdefinícióhoz csatlakoztatja. Az ügynök modellje, utasításai, üzemeltetett eszközei és verziója a Foundryben van konfigurálva; az alkalmazás ehhez a definícióhoz csatlakozik, és a standard Agent Framework-futtatási, streamelési és munkamenet-API-kat használja.
Használja ezt az integrációt a következő célokra:
- A kiszolgálóoldali ügynökdefiníciók nevesített és verziószámozott ügynökdefiníciók kérése.
- Üzemeltetett ügynökök, amelyek ügynökspecifikus végponton keresztül elért üzembe helyezett ügynökalkalmazások.
Ha közvetlen modellkövetkeztetést keres, amelyben az alkalmazásé az ügynökdefiníció, tekintse meg Microsoft Foundry-modell szolgáltatóját. Az Agent Framework-alkalmazás üzemeltetett ügynökként való üzembe helyezéséhez lásd: Foundry Hosted Agents.
A csomagok telepítése
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
Csatlakozás parancssori ügynökhöz
Hozzon létre egy AIProjectClient elemet az Foundry-projekthez, és csomagolja be a AgentReference következőt FoundryAgent: . Rögzítse a verziót, amikor az alkalmazásnak egy adott Parancssori ügynök definíciót kell használnia.
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?"));
Lekérheti ProjectsAgentRecord azt is, hogy a legújabb vagy a ProjectsAgentVersion kifejezetten lekért verziót használja, majd átadja az objektumot.projectClient.AsAIAgent(...)
A Prompt Agent legújabb verziójának lekérése
Akkor használható AgentAdministrationClient , ha az alkalmazásnak név alapján kell feloldania a legújabb regisztrált verziót.
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?"));
Important
Az A FoundryAgent a Foundry definíciójában tárolt modellt, utasításokat és üzemeltetett eszközöket használja. Konfigurálja ezeket a képességeket a Foundryben; az ügyfél nem tudja lecserélni őket futásidőben.
Warning
DefaultAzureCredential a fejlesztéshez kényelmes. Éles környezetben előnyben részesítsen egy adott hitelesítő adatot, például ManagedIdentityCredential hogy elkerülje a nem szándékos hitelesítőadat-készítést.
Csatlakozás üzemeltetett ügynökhöz
Az üzemeltetett ügynökök egy ügynökspecifikus OpenAI-végpontot tehetnek közzé. Hozza létre a végpontot a projektvégpontból és a regisztrált ügynök nevéből, majd adja át neki AIProjectClient.AsAIAgent(...).
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();
A végpont rendszergazda által vezérelt verzióválasztója határozza meg az aktív üzemeltetett ügynök verzióját.
A csomagok telepítése
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"
A parancssori ügynökökhöz használható FOUNDRY_AGENT_VERSION . A üzemeltetett ügynökök kihagyhatják.
Csatlakozás parancssori ügynökhöz
Adja meg a projektvégpontot, az ügynök nevét és az ügynök verzióját. A szolgáltatás biztosítja a tárolt modellt, utasításokat és üzemeltetett eszközök konfigurációját.
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()
Ha egy parancssori ügynök helyi függvényeszközt deklarál, a konstruktálás FoundryAgent során adja át a megfelelő hívható eszközttools=, hogy az ügyfél igény szerint végrehajthassa. Tekintse meg a Prompt Agent közzétételi és csatlakozási mintáját.
Csatlakozás üzemeltetett ügynökhöz
A üzemeltetett ügynökök nem igényelnek agent_version. Csatlakozzon a projektvégponthoz és a regisztrált ügynök nevéhez.
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}")
Mi működik és mi nem működik FoundryAgent
FoundryAgent olyan ügynökdefinícióhoz csatlakozik, amely már létezik a Foundryben. A tárolt utasítások és az eszközkonfiguráció mérvadó, ezért az ügyféloldali viselkedés eltér az alkalmazás tulajdonában lévőtől Agent(client=FoundryChatClient(...)).
Eszközök
A(z) FoundryAgent(...) részére átadott eszköztípus |
Magatartás |
|---|---|
FunctionToolhelyi Python hívható |
Csak akkor támogatott, ha az egyező függvénydefiníció már létezik az Foundry-ügynökön. A hívható az alkalmazásfolyamatban fut, amikor a Foundry kéri. |
| Üzemeltetett eszközök, beleértve a webkeresést, a kódértelmezőt, a fájlkeresést, az MCP-t, a képgenerálást és a Microsoft Foundry Toolboxot | Konfigurálja ezeket az Foundry-ügynök definícióján. Az ügyféloldali átadás nem adja hozzá őket a szolgáltatás által felügyelt ügynökhöz. |
Az eszközkészlet mellékletét és a közvetlen MCP-használati útmutatót az Microsoft Foundry Toolboxban találja.
Nem regisztrálhat új, modellen látható eszközt az építkezéskor. A hívható függvények átadása csak az Öntödei ügynök által már deklarált függvény helyi implementációját biztosítja.
Kontextus biztosítók
| A kontextusszolgáltató működése | Működik a(z) FoundryAgent elemmel? |
|---|---|
| Üzeneteket ad hozzá, például lekért memóriát, RAG-kódrészleteket vagy felhasználói profiladatokat | Yes. Az injektált kontextus a kéréssel együtt továbbításra kerül. |
| Megőrzi vagy megfigyeli a beszélgetést | Yes. A szolgáltató helyileg fut a kérés és a válasz körül. |
| Eszközök dinamikus hozzáadása | Nem, kivéve, ha ezek az eszközök már deklarálva vannak az Foundry-ügynök definícióján. |
Akkor használható Agent(client=FoundryChatClient(...)) , ha az alkalmazásnak dinamikus eszközválasztásra, képességbetöltésre vagy bármilyen olyan viselkedésre van szüksége, amely futásidőben módosítja a modellen látható eszközöket.
Futtatási beállítások
Mivel az Foundry-ügynök definíciója az igazság forrása, nem minden lehetőség halad át default_options vagy agent.run(...) van tiszteletben.
| Option | Az ügynök viselkedésének kérése |
|---|---|
model |
Figyelmen kívül hagyott. A modell az Foundry-ügynök definíciójából származik. |
| \ |
El lett távolítva a kérelemből. Az eszközöket deklarálni kell az Foundry-ügynök definícióján. |
instructions rendszer- vagy fejlesztői üzenetek |
Figyelmen kívül hagyott. A tárolt öntödei utasítások mérvadóak. |
conversation_id |
Adott esetben az Öntödei ügynök munkamenete használható és leképezhető. |
extra_body |
Továbbítva és egyesítve a keretrendszer által biztosított ügynökreferenciával. |
Mintavételezési paraméterek, metaadatok, user, storeés response_format |
Továbbítva, de az Foundry-ügynök vagy a modell konfigurációja felülbírálhatja vagy korlátozhatja őket. |
A üzemeltetett ügynökök ugyanazt az ügyféloldali szűrést kapják, de az üzembe helyezett ügynök bármilyen továbbított beállítást elfogadhat, figyelmen kívül hagyhat vagy újraértelmezhet. Ellenőrizze a viselkedést az adott üzemeltetett ügynökkel szemben.
Tip
Akkor használható Agent(client=FoundryChatClient(...)) , ha futtatásonkénti vezérlésre van szüksége az utasítások, a létrehozási beállítások vagy az eszközök felett.
Üzemeltetett ügynök szolgáltatás munkamenetének kezelése
A szolgáltatásoldali munkameneteket használó üzemeltetett ügynököknek az előzetes Válaszok felületre van szükségük:
Hozza létre explicit módon a szolgáltatási munkamenetet, amikor az alkalmazásnak egy bérlőhöz vagy felhasználóhoz kell kötnie, majd az azonosítóját ügynök-keretrendszer-munkamenetként kell burkolnia.
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
A teljes példáért tekintse meg a using_deployed_agent.py mintát .
Egyéni HTTP-időtúllépés beállítása
FoundryAgent alapértelmezés szerint örökli az OpenAI SDK időtúllépését. Adja át timeout= másodpercek alatt, ha a többfordulós beszélgetések vagy a hálózati feltételek eltérő korlátot igényelnek.
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,
)
Az időtúllépés a HTTP-ügyfél ügynökönkénti példányára van alkalmazva, és nem érinti az azonos elemet AIProjectClienthasználó többi ügynököt.
Megjegyzés:
FoundryAgent A parancssori és a üzemeltetett ügynökök integrációja jelenleg nem érhető el az Agent Framework Go-hoz. A legújabb állapotot az Agent Framework Go-adattárában tekinthet meg.
Beszélgetések futtatása, streamelése és folytatása
A csatlakozás után ugyanazokat az API-kat használja, mint a többi Agent Framework-ügynök:
- Kérelem futtatása a következővel vagy
runa következővelRunAsync: - Frissítések streamelése a vagy
run(..., stream=True)aRunStreamingAsync. - A beszélgetés folytatásához használja újra az ant
AgentSession. - Az Foundry kiszolgálóoldali beszélgetési API-kat akkor használja, ha a beszélgetésnek láthatónak és tartósnak kell lennie az Foundry-projektben.
Az Foundry-ügynök nevei, verziói, végpontjai és beszélgetésazonosítói megbízható kiszolgálóoldali állapotban maradnak. A meglévő beszélgetés folytatása előtt engedélyezze a hívót.