Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Microsoft Agent Framework számos ügynöktípust támogat a különböző használati esetek és követelmények kielégítése érdekében.
Minden ügynök egy közös alaposztályból származik, AIAgentamely konzisztens felületet biztosít minden ügynöktípushoz. Ez lehetővé teszi a gyakori, ügynök-agnosztikus, magasabb szintű funkciók, például a többügynök-vezénylések kiépítését.
Minden ügynök egy közös alaposztályból származik, Agentamely konzisztens felületet biztosít minden ügynöktípushoz. Ez lehetővé teszi a gyakori, ügynök-agnosztikus, magasabb szintű funkciók, például a többügynök-vezénylések kiépítését.
Az ügynök futásidejének alapértelmezett végrehajtási modellje
A Microsoft Agent Framework összes ügynöke egy strukturált futtatókörnyezeti modellel fut. Ez a modell egy determinisztikus ciklusban koordinálja a felhasználói interakciót, a modell következtetését és az eszközök végrehajtását.
Fontos
Ha a Microsoft Agent Framework használatával olyan alkalmazásokat hoz létre, amelyek külső kiszolgálókkal vagy ügynökökkel működnek, ezt saját felelősségére teheti meg. Javasoljuk, hogy tekintse át a külső kiszolgálókkal vagy ügynökökkel megosztott összes adatot, és hogy megismerje az adatok megőrzésére és elhelyezésére vonatkozó, harmadik féltől származó eljárásokat. Az Ön felelőssége annak kezelése, hogy az adatok a szervezet Azure-beli megfelelőségi és földrajzi határain kívülre kerülnek-e, valamint az ezzel kapcsolatos következményekkel.
Egyszerű ügynökök következtetési szolgáltatások alapján
Az Agent Framework segítségével egyszerűen hozhat létre egyszerű ügynököket számos különböző következtetési szolgáltatás alapján.
Megvalósítással Microsoft.Extensions.AI.IChatClient rendelkező következtetési szolgáltatások használhatók ezen ügynökök létrehozásához. Az Microsoft.Agents.AI.ChatClientAgent ügynökosztály a IChatClient bármely implementáció számára ügynök biztosítására szolgál.
Ezek az ügynökök számos funkciót támogatnak a dobozon kívül:
- Függvényhívás.
- Többfordulós beszélgetések helyi csevegési előzmények kezelésével vagy szolgáltatás által biztosított csevegési előzmények kezelésével.
- Egyéni szolgáltatás által biztosított eszközök (például MCP, Kódvégrehajtás).
- Strukturált kimenet.
Az egyik ilyen ügynök létrehozásához egyszerűen készítsen egy ChatClientAgent-t a választott IChatClient implementáció felhasználásával.
using Microsoft.Agents.AI;
var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");
Ezeknek az ügynököknek a létrehozása még egyszerűbbé tétele érdekében az Agent Framework számos népszerű szolgáltatáshoz nyújt segítséget. További információkért tekintse meg az egyes szolgáltatások dokumentációját.
| Mögöttes következtetési szolgáltatás | Description | A szolgáltatás csevegési előzményeinek tárolása támogatott | Az InMemory/Egyéni csevegési előzmények tárolása támogatott |
|---|---|---|---|
| Azure AI Foundry-ügynök | Az Azure AI Foundry Agents Service-t háttérrendszerként használó ügynök. | Igen | Nem |
| Azure AI Foundry Models ChatCompletion | Olyan ügynök, amely az Azure AI Foundry Service-ben üzembe helyezett modellek bármelyikét használja háttérként a ChatCompletionon keresztül. | Nem | Igen |
| Azure AI Foundry-modellek válaszai | Olyan ügynök, amely az Azure AI Foundry Service-ben üzembe helyezett modellek bármelyikét használja háttérként a Válaszok segítségével. | Igen | Igen |
| Azure OpenAI ChatCompletion | Az Azure OpenAI ChatCompletion szolgáltatást használó ügynök. | Nem | Igen |
| Azure OpenAI-válaszok | Az Azure OpenAI Responses szolgáltatást használó ügynök. | Igen | Igen |
| OpenAI ChatCompletion | Az OpenAI ChatCompletion szolgáltatást használó ügynök. | Nem | Igen |
| OpenAI-válaszok | Az OpenAI Responses szolgáltatást használó ügynök. | Igen | Igen |
| OpenAI Assistants | Az OpenAI Assistants szolgáltatást használó ügynök. | Igen | Nem |
Bármely más IChatClient |
Bármely más Microsoft.Extensions.AI.IChatClient implementációval is létrehozhat ügynököt. |
Varies | Varies |
Összetett egyéni ügynökök
Teljesen testreszabott ügynököket is létrehozhat, amelyek nem csak egy IChatClient összekötői.
Az ügynök-keretrendszer biztosítja az alaptípust AIAgent .
Ez az alaptípus az összes ügynök alapvető absztrakciója, amely alosztályozott állapot esetén lehetővé teszi az ügynök viselkedésének és képességeinek teljes ellenőrzését.
További információkért tekintse meg az egyéni ügynökök dokumentációját.
Proxyk távoli ügynökökhöz
Az Agent Framework készre konfigurált AIAgent implementációkat biztosít a szokásos, szolgáltatás által üzemeltetett ügynökprotokollokhoz, mint például az A2A. Így egyszerűen csatlakozhat az alkalmazás távoli ügynökeihez, és használhatja azt.
További információkért tekintse meg az egyes ügynöktípusok dokumentációját:
| Protokoll | Description |
|---|---|
| A2A | Olyan ügynök, amely proxyként szolgál egy távoli ügynökhöz az A2A protokollon keresztül. |
Az Azure és az OpenAI SDK beállításainak ismertetése
Az Azure AI Foundry, az Azure OpenAI vagy az OpenAI szolgáltatások használatakor különböző SDK-lehetőségek állnak rendelkezésre ezekhez a szolgáltatásokhoz való csatlakozáshoz. Bizonyos esetekben több SDK is használható ugyanahhoz a szolgáltatáshoz való csatlakozáshoz, vagy ugyanazt az SDK-t használhatja a különböző szolgáltatásokhoz való csatlakozáshoz. Az alábbiakban felsoroljuk a különböző lehetőségeket, amelyekhez az url-címet kell használnia, amikor mindegyikhez csatlakozik. Mindenképpen cserélje le a <resource> és <project> címkéket a tényleges erőforrás- és projektnevekre.
| AI-szolgáltatás | SDK | Nuget | URL vagy webcím |
|---|---|---|---|
| Azure AI Innovációs Platform Modellek | Azure OpenAI SDK 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Azure AI Innovációs Platform Modellek | OpenAI SDK 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Azure AI Innovációs Platform Modellek | Azure AI-inferálási SDK 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Azure AI Foundry ügynökök | Azure AI Állandóügynökök SDK | Azure.AI.Agents.Persistent | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | Azure OpenAI SDK 2 | Azure.AI.OpenAI | <https:// resource.openai.azure.com/> |
| Azure OpenAI1 | OpenAI SDK | OpenAI | <https://resource.openai.azure.com/openai/v1/> |
| OpenAI | OpenAI SDK | OpenAI | Nincs szükség URL-címre |
- Frissítés az Azure OpenAI-ról az Azure AI Foundryre
- Az OpenAI SDK használatát javasoljuk.
- Bár az OpenAI SDK használatát javasoljuk az Azure AI Foundry-modellek eléréséhez, az Azure AI Foundry Models számos különböző gyártó modelljeit támogatja, nem csak az OpenAI-t. Ezeket a modelleket az OpenAI SDK támogatja.
Az OpenAI SDK használata
Ahogy a fenti táblázatban látható, az OpenAI SDK több szolgáltatáshoz is csatlakoztatható.
Attól függően, hogy melyik szolgáltatáshoz csatlakozik, előfordulhat, hogy egyéni URL-címet kell beállítania a OpenAIClientlétrehozásakor.
A szolgáltatástól függően különböző hitelesítési mechanizmusokat is használhat.
Ha egyéni URL-címre van szükség (lásd a fenti táblázatot), beállíthatja az OpenAIClientOptions használatával.
var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };
Az ügyfél létrehozásakor api-kulcsot is használhat.
OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);
Azure-szolgáltatás használata esetén AZ API-kulcs helyett Azure-hitelesítő adatokat is használhat.
OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)
Figyelmeztetés
DefaultAzureCredential a fejlesztéshez kényelmes, de a termelési környezetben gondos megfontolást igényel. Éles környezetben fontolja meg egy adott hitelesítő adat (pl. ManagedIdentityCredential) használatát a késési problémák elkerülése, a hitelesítő adatok nem szándékos próbálgatásának és a tartalék mechanizmusokból eredő esetleges biztonsági kockázatok elkerülése érdekében.
Az OpenAIClient létrehozása után lekérhet egy alügyfelet a használni kívánt szolgáltatáshoz, majd létrehozhat egy AIAgent-t belőle.
AIAgent agent = client
.GetChatClient(model)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Az Azure OpenAI SDK használata
Ez az SDK használható az Azure OpenAI és az Azure AI Foundry Models szolgáltatásokhoz való csatlakozáshoz.
Akárhogy is, a megfelelő szolgáltatás URL-címét kell megadnia a AzureOpenAIClientlétrehozásakor.
A megfelelő URL-címet a fenti táblázatban találhatja meg.
AIAgent agent = new AzureOpenAIClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Az Azure AI Persistent Agents SDK használata
Ez az SDK csak az Azure AI Foundry Agents szolgáltatással támogatott. A megfelelő URL-címet a fenti táblázatban találhatja meg.
var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
model: deploymentName,
name: "Joker",
instructions: "You are good at telling jokes.");
Egyszerű ügynökök következtetési szolgáltatások alapján
Az Agent Framework segítségével egyszerűen hozhat létre egyszerű ügynököket számos különböző következtetési szolgáltatás alapján.
Olyan következtetési szolgáltatások, amelyek csevegőügyfél implementációt biztosítanak, használhatók ezeknek az ügynököknek a létrehozására.
Ez az SupportsChatGetResponse, amely meghatározza azokat a metódusokat, amelyeket az ügyfélnek támogatnia kell a standard Agent osztály használatához.
Ezek az ügynökök számos funkciót támogatnak a dobozon kívül:
- Függvényhívás
- Többfordulós beszélgetések helyi csevegési előzmények kezelésével vagy szolgáltatás által biztosított csevegési előzmények kezelésével
- Egyéni szolgáltatás által biztosított eszközök (például MCP, Kódvégrehajtás)
- Strukturált kimenet
- Válaszok streamelése
Ezen ügynökök egyikének létrehozásához egyszerűen konstruáljon egy Agent a választott csevegőügyfél-implementáció használatával.
import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
Agent(
client=AzureOpenAIResponsesClient(credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")),
instructions="You are a helpful assistant"
) as agent
response = await agent.run("Hello!")
Másik lehetőségként a csevegőügyfél kényelmi módszerét is használhatja:
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
agent = AzureOpenAIResponsesClient(async_credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")).as_agent(
instructions="You are a helpful assistant"
)
Megjegyzés:
Ez a példa az AzureOpenAIResponsesClient használatát mutatja be, de ugyanez a minta minden implementálandó SupportsChatGetResponsecsevegőügyfélre vonatkozik– a többi ügyfélről a szolgáltatók áttekintésében talál további információt.
Részletes példákért tekintse meg az ügynökspecifikus dokumentáció alábbi szakaszait.
Támogatott csevegésszolgáltatók
| Mögöttes következtetési szolgáltatás | Description | A szolgáltatás csevegési előzményeinek tárolása támogatott |
|---|---|---|
| Azure AI Foundry-ügynök | Az Azure AI Agents Service-t háttérrendszerként használó ügynök. | Igen |
| Azure OpenAI-csevegés befejezése | Az Azure OpenAI Chat Completion szolgáltatást használó ügynök. | Nem |
| Azure OpenAI-válaszok | Az Azure OpenAI Responses szolgáltatást használó ügynök. | Igen |
| Azure OpenAI Assistants | Az Azure OpenAI Assistants szolgáltatást használó ügynök. | Igen |
| OpenAI Csevegés Kiegészítés | Az OpenAI Csevegés befejezése szolgáltatást használó ügynök. | Nem |
| OpenAI-válaszok | Az OpenAI Responses szolgáltatást használó ügynök. | Igen |
| OpenAI Assistants | Az OpenAI Assistants szolgáltatást használó ügynök. | Igen |
| Anthropic Claude | Egy ügynök, aki antropikus Claude-modelleket használ. | Nem |
| Amazon alapkőzet | Egy ügynök, amely Amazon Bedrock-modelleket használ az Agent Framework Bedrock csevegési ügyfélprogramon keresztül. | Nem |
| GitHub Copilot | A GitHub Copilot SDK háttérrendszerét használó ügynök. | Nem |
| Ollama (OpenAI-kompatibilis) | Olyan ügynök, amely helyileg üzemeltetett Ollama-modelleket használ OpenAI-kompatibilis API-kon keresztül. | Nem |
| Bármilyen más Chatkliens | Az ügynök létrehozására bármely más implementációt SupportsChatGetResponse is használhat. |
Varies |
Az egyéni csevegési előzmények tárolója akkor támogatott, ha a munkamenet-alapú beszélgetési állapot támogatott.
Adatfolyam válaszok
Az ügynökök támogatják a rendszeres és a streaming válaszokat is.
# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)
# Streaming response (get results as they are generated)
async for chunk in agent.run("What's the weather like in Portland?", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
A streamelési példákért lásd:
További meghívási mintákért lásd a Futó ügynökök című részt.
Függvényeszközök
Továbbfejlesztett képességek érdekében funkciókat biztosíthat az ügynököknek.
import os
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient
def get_weather(location: Annotated[str, "The location to get the weather for."]) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny with a high of 25°C."
async with DefaultAzureCredential() as credential:
agent = AzureOpenAIResponsesClient(
async_credential=credential,
project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"),
).as_agent(
instructions="You are a helpful weather assistant.",
tools=get_weather,
)
response = await agent.run("What's the weather in Seattle?")
Az eszközökről és az eszközmintákról az Eszközök áttekintésében olvashat.
Egyéni ügynökök
A teljesen egyéni implementációk (például determinisztikus ügynökök vagy API-alapú ügynökök) esetében lásd az Egyéni ügynökök című témakört. Ez az oldal SupportsAgentRun megvalósításának vagy BaseAgent kiterjesztésének módját ismerteti, beleértve a streamelési frissítéseket a AgentResponseUpdate segítségével.
Egyéb ügynöktípusok
Az Agent Framework protokollalapú ügynököket is tartalmaz, például:
| Ügynök típusa | Description |
|---|---|
| A2A | Olyan proxyügynök, amely távoli A2A-kompatibilis ügynökökhöz csatlakozik és meghív. |