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.
Ez az oktatóanyag bemutatja, hogyan integrálhatók az AI-ügynökök munkafolyamatokba az Agent Framework használatával. Megtudhatja, hogyan hozhat létre olyan munkafolyamatokat, amelyek a speciális AI-ügynökök előnyeit használják ki tartalomlétrehozáshoz, áttekintéshez és egyéb együttműködési feladatokhoz.
Mit fog felépíteni?
Létre fog hozni egy munkafolyamatot, amely:
- Intelligens ügynökök létrehozása az Azure Foundry Agent Service használatával
- Francia fordítóügynököt implementál, amely a bemenetet francia nyelvre fordítja le
- Implementál egy spanyol fordítóügynököt, amely franciát fordít spanyolra
- Implementál egy angol fordítóügynököt, amely a spanyolt angolra fordítja vissza
- Ügynökök csatlakoztatása szekvenciális munkafolyamatban
- Valós idejű frissítések streamelése, miközben az ügynökök kérdéseket dolgoznak fel.
- Az Azure Foundry-ügynökök megfelelő erőforrás-tisztításának bemutatása
A tárgyalt fogalmak
Előfeltételek
- .NET 8.0 SDK vagy újabb
- Az Azure Foundry szolgáltatás végpontja és üzembe helyezése konfigurálva
- Az Azure CLI telepítve és hitelesítve (az Azure hitelesítő adatokkal való hitelesítéshez)
- Új konzolalkalmazás
1. lépés: NuGet-csomagok telepítése
Először telepítse a szükséges csomagokat a .NET-projekthez:
dotnet add package Azure.AI.Agents.Persistent --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.AzureAI --prerelease
dotnet add package Microsoft.Agents.AI.Workflows --prerelease
2. lépés: Az Azure Foundry-ügyfél beállítása
Az Azure Foundry-ügyfél konfigurálása környezeti változókkal és hitelesítéssel:
using System;
using System.Threading.Tasks;
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Workflows;
using Microsoft.Extensions.AI;
public static class Program
{
private static async Task Main()
{
// Set up the Azure Foundry client
var endpoint = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_ENDPOINT") ?? throw new Exception("AZURE_FOUNDRY_PROJECT_ENDPOINT is not set.");
var model = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_MODEL_ID") ?? "gpt-4o-mini";
var persistentAgentsClient = new PersistentAgentsClient(endpoint, new AzureCliCredential());
3. lépés: Az Agent Factory metódus létrehozása
Implementáljon egy segédmetódust az Azure Foundry-ügynökök létrehozásához a következő útmutatással:
/// <summary>
/// Creates a translation agent for the specified target language.
/// </summary>
/// <param name="targetLanguage">The target language for translation</param>
/// <param name="persistentAgentsClient">The PersistentAgentsClient to create the agent</param>
/// <param name="model">The model to use for the agent</param>
/// <returns>A ChatClientAgent configured for the specified language</returns>
private static async Task<ChatClientAgent> GetTranslationAgentAsync(
string targetLanguage,
PersistentAgentsClient persistentAgentsClient,
string model)
{
var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync(
model: model,
name: $"{targetLanguage} Translator",
instructions: $"You are a translation assistant that translates the provided text to {targetLanguage}.");
return await persistentAgentsClient.GetAIAgentAsync(agentMetadata.Value.Id);
}
}
4. lépés: Specializált Azure Foundry-ügynökök létrehozása
Hozzon létre három fordítóügynököt a segédmetódus használatával:
// Create agents
AIAgent frenchAgent = await GetTranslationAgentAsync("French", persistentAgentsClient, model);
AIAgent spanishAgent = await GetTranslationAgentAsync("Spanish", persistentAgentsClient, model);
AIAgent englishAgent = await GetTranslationAgentAsync("English", persistentAgentsClient, model);
5. lépés: A munkafolyamat létrehozása
Csatlakoztassa az ügynököket egy szekvenciális munkafolyamatban a WorkflowBuilder használatával:
// Build the workflow by adding executors and connecting them
var workflow = new WorkflowBuilder(frenchAgent)
.AddEdge(frenchAgent, spanishAgent)
.AddEdge(spanishAgent, englishAgent)
.Build();
6. lépés: Végrehajtás streameléssel
Futtassa a munkafolyamatot streameléssel az összes ügynök valós idejű frissítéseinek megfigyeléséhez:
// Execute the workflow
await using StreamingRun run = await InProcessExecution.StreamAsync(workflow, new ChatMessage(ChatRole.User, "Hello World!"));
// Must send the turn token to trigger the agents.
// The agents are wrapped as executors. When they receive messages,
// they will cache the messages and only start processing when they receive a TurnToken.
await run.TrySendMessageAsync(new TurnToken(emitEvents: true));
await foreach (WorkflowEvent evt in run.WatchStreamAsync().ConfigureAwait(false))
{
if (evt is AgentRunUpdateEvent executorComplete)
{
Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
}
}
7. lépés: Erőforrás-karbantartás
Az Azure Foundry-ügynökök megfelelő tisztítása használat után:
// Cleanup the agents created for the sample.
await persistentAgentsClient.Administration.DeleteAgentAsync(frenchAgent.Id);
await persistentAgentsClient.Administration.DeleteAgentAsync(spanishAgent.Id);
await persistentAgentsClient.Administration.DeleteAgentAsync(englishAgent.Id);
}
Hogyan működik?
-
Azure Foundry-ügyfél beállítása: Azure CLI-hitelesítő adatokkal történő hitelesítés
PersistentAgentsClient - Ügynöklétrehozás: Állandó ügynököket hoz létre az Azure Foundryben a fordításra vonatkozó konkrét utasítások segítségével
- Szekvenciális feldolgozás: a francia ügynök először a bemenetet, majd a spanyol ügynököt, majd az angol ügynököt fordítja le
-
Váltás token minta: Az egységek tárolják az üzeneteket, és csak akkor dolgozzák fel, ha kapnak egy
TurnToken -
Streamelési frissítések:
AgentRunUpdateEventvalós idejű token frissítéseket biztosít az ügynökök válaszának generálásakor - Erőforrás-kezelés: Az Azure Foundry-ügynökök megfelelő tisztítása a Felügyeleti API használatával
Alapfogalmak
- Azure Foundry Agent Service: Felhőalapú AI-ügynökök speciális érvelési képességekkel
- PersistentAgentsClient: Ügyfél ügynökök létrehozására és kezelésére az Azure Foundryben
- AgentRunUpdateEvent: Valós idejű streamelési frissítések az ügynök végrehajtása során
- TurnToken: Az ügynökfeldolgozást az üzenet gyorsítótárazása után aktiváló jel
- Szekvenciális munkafolyamat: Olyan folyamathoz csatlakoztatott ügynökök, ahol a kimeneti folyamatok egyikről a másikra haladnak
Implementáció befejezése
Az Azure Foundry-ügynökök munkafolyamatának teljes körű megvalósításáért tekintse meg a FoundryAgent Program.cs mintát az Agent Framework-adattárban.
Mit fog felépíteni?
Létre fog hozni egy munkafolyamatot, amely:
- Intelligens ügynökök létrehozása az Azure AI Agent Service használatával
- Olyan Íróügynököt implementál, amely kérések alapján hoz létre tartalmat
- Egy véleményező ügynököt implementál, amely visszajelzést ad a tartalomról
- Ügynökök csatlakoztatása szekvenciális munkafolyamatban
- Valós idejű frissítések streamelése, miközben az ügynökök kérdéseket dolgoznak fel.
- Bemutatja az Azure AI-ügyfelek megfelelő aszinkron környezetkezelését
A tárgyalt fogalmak
Előfeltételek
- Python 3.10 vagy újabb
- Telepített Ügynök-keretrendszer:
pip install agent-framework-azure-ai --pre - Megfelelő környezeti változókkal konfigurált Azure AI Agent Service
- Azure CLI-hitelesítés:
az login
1. lépés: Kötelező függőségek importálása
Először importálja az Azure AI-ügynökökhöz és munkafolyamatokhoz szükséges összetevőket:
import asyncio
from collections.abc import Awaitable, Callable
from contextlib import AsyncExitStack
from typing import Any
from agent_framework import AgentRunUpdateEvent, WorkflowBuilder, WorkflowOutputEvent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import AzureCliCredential
2. lépés: Az Azure AI Agent Factory létrehozása
Hozzon létre egy segédfüggvényt az Azure AI-ügynökök létrehozásának megfelelő aszinkron környezetkezeléssel történő kezeléséhez:
async def create_azure_ai_agent() -> tuple[Callable[..., Awaitable[Any]], Callable[[], Awaitable[None]]]:
"""Helper method to create an Azure AI agent factory and a close function.
This makes sure the async context managers are properly handled.
"""
stack = AsyncExitStack()
cred = await stack.enter_async_context(AzureCliCredential())
client = await stack.enter_async_context(AzureAIAgentClient(async_credential=cred))
async def agent(**kwargs: Any) -> Any:
return await stack.enter_async_context(client.create_agent(**kwargs))
async def close() -> None:
await stack.aclose()
return agent, close
3. lépés: Speciális Azure AI-ügynökök létrehozása
Hozzon létre két speciális ügynököt a tartalom létrehozásához és áttekintéséhez:
async def main() -> None:
agent, close = await create_azure_ai_agent()
try:
# Create a Writer agent that generates content
writer = await agent(
name="Writer",
instructions=(
"You are an excellent content writer. You create new content and edit contents based on the feedback."
),
)
# Create a Reviewer agent that provides feedback
reviewer = await agent(
name="Reviewer",
instructions=(
"You are an excellent content reviewer. "
"Provide actionable feedback to the writer about the provided content. "
"Provide the feedback in the most concise manner possible."
),
)
4. lépés: A munkafolyamat létrehozása
Csatlakoztassa az ügynököket szekvenciális munkafolyamatban a fluent builder használatával:
# Build the workflow with agents as executors
workflow = WorkflowBuilder().set_start_executor(writer).add_edge(writer, reviewer).build()
5. lépés: Végrehajtás streameléssel
Futtassa a munkafolyamatot streameléssel a két ügynök valós idejű frissítéseinek megfigyeléséhez:
last_executor_id: str | None = None
events = workflow.run_stream("Create a slogan for a new electric SUV that is affordable and fun to drive.")
async for event in events:
if isinstance(event, AgentRunUpdateEvent):
# Handle streaming updates from agents
eid = event.executor_id
if eid != last_executor_id:
if last_executor_id is not None:
print()
print(f"{eid}:", end=" ", flush=True)
last_executor_id = eid
print(event.data, end="", flush=True)
elif isinstance(event, WorkflowOutputEvent):
print("\n===== Final output =====")
print(event.data)
finally:
await close()
6. lépés: Fő függvény befejezése
A fő függvény minden elemének körbefuttatása megfelelő aszinkron végrehajtással:
if __name__ == "__main__":
asyncio.run(main())
Hogyan működik?
-
Azure AI-ügyfél beállítása: Azure CLI-hitelesítő adatokkal történő hitelesítés
AzureAIAgentClient - Ügynök-előállító minta: Létrehoz egy gyárfüggvényt, amely több ügynök aszinkron környezeti életciklusát kezeli
- Szekvenciális feldolgozás: Az íróügynök először létrehozza a tartalmat, majd átadja azt a Véleményező ügynöknek
-
Streamelési frissítések:
AgentRunUpdateEventvalós idejű token frissítéseket biztosít az ügynökök válaszának generálásakor -
Környezetkezelés: Az Azure AI erőforrások megfelelő tisztítása a
AsyncExitStackhasználatával.
Alapfogalmak
- Azure AI Agent Service: Felhőalapú AI-ügynökök speciális érvelési képességekkel
- AgentRunUpdateEvent: Valós idejű streamelési frissítések az ügynök végrehajtása során
- AsyncExitStack: Megfelelő aszinkron környezetkezelés több erőforráshoz
- Ügynök-előállító minta: Újrahasználható ügynök létrehozása megosztott ügyfélkonfigurációval
- Szekvenciális munkafolyamat: Olyan folyamathoz csatlakoztatott ügynökök, ahol a kimeneti folyamatok egyikről a másikra haladnak
Implementáció befejezése
Az Azure AI-ügynökök munkafolyamatának teljes körű megvalósításáért tekintse meg az Ügynök keretrendszer adattárában található azure_ai_agents_streaming.py mintát.