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 őrizhet meg egy ügynökbeszélgetést (AgentThread) a tárolóban, és hogyan töltheti be később.
Amikor ügynököt üzemeltet egy szolgáltatásban vagy akár egy ügyfélalkalmazásban, gyakran több kérés vagy munkamenet beszélgetési állapotát szeretné fenntartani. A AgentThread megőrzésével mentheti a beszélgetési környezetet, és később újra betöltheti.
Előfeltételek
Az előfeltételekről és a NuGet-csomagok telepítéséről lásd az egyszerű ügynök létrehozása és futtatása lépést ebben az oktatóanyagban.
A beszélgetés megőrzése és folytatása
Hozzon létre egy ügynököt, és szerezzen be egy új szálat, amely a beszélgetés állapotát fogja tárolni.
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using OpenAI;
AIAgent agent = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential())
.GetChatClient("gpt-4o-mini")
.CreateAIAgent(instructions: "You are a helpful assistant.", name: "Assistant");
AgentThread thread = agent.GetNewThread();
Futtassa az ügynököt úgy, hogy megadja a szálat, így ez a AgentThread csere belekerül.
// Run the agent and append the exchange to the thread
Console.WriteLine(await agent.RunAsync("Tell me a short pirate joke.", thread));
Hívja meg a Serialize szál metódusát, hogy szerializálja azt egy JsonElementre.
Ezután átalakítható egy tároló sztringjeként, és menthető adatbázisba, blobtárolóba vagy fájlba.
using System.IO;
using System.Text.Json;
// Serialize the thread state
string serializedJson = thread.Serialize(JsonSerializerOptions.Web).GetRawText();
// Example: save to a local file (replace with DB or blob storage in production)
string filePath = Path.Combine(Path.GetTempPath(), "agent_thread.json");
await File.WriteAllTextAsync(filePath, serializedJson);
Töltse be a tárolt JSON-t a tárolóból, és hozza létre újra belőle az AgentThread-példányt. A szálat ügynökpéldány használatával kell deszerializálni. Ennek az eredeti szál létrehozásához használt ügynöktípusnak kell lennie. Ennek az az oka, hogy az ügynökök saját száltípusokkal rendelkeznek, és olyan szálakat hozhatnak létre, amelyek az adott ügynöktípusra jellemző további funkciókkal rendelkeznek.
// Read persisted JSON
string loadedJson = await File.ReadAllTextAsync(filePath);
JsonElement reloaded = JsonSerializer.Deserialize<JsonElement>(loadedJson, JsonSerializerOptions.Web);
// Deserialize the thread into an AgentThread tied to the same agent type
AgentThread resumedThread = agent.DeserializeThread(reloaded, JsonSerializerOptions.Web);
A beszélgetés folytatásához használja az újrakezdett szálat.
// Continue the conversation with resumed thread
Console.WriteLine(await agent.RunAsync("Now tell that joke in the voice of a pirate.", resumedThread));
Ez az oktatóanyag bemutatja, hogyan őrizhet meg egy ügynökbeszélgetést (AgentThread) a tárolóban, és hogyan töltheti be később.
Amikor ügynököt üzemeltet egy szolgáltatásban vagy akár egy ügyfélalkalmazásban, gyakran több kérés vagy munkamenet beszélgetési állapotát szeretné fenntartani. A AgentThread megőrzésével mentheti a beszélgetési környezetet, és később újra betöltheti.
Előfeltételek
Az előfeltételekről és a Python-csomagok telepítéséről lásd a Hozzon létre és futtasson egy egyszerű ügynököt lépést ebben az oktatóanyagban.
A beszélgetés megőrzése és folytatása
Hozzon létre egy ügynököt, és szerezzen be egy új szálat, amely a beszélgetés állapotát fogja tárolni.
from azure.identity import AzureCliCredential
from agent_framework import ChatAgent
from agent_framework.azure import AzureOpenAIChatClient
agent = ChatAgent(
chat_client=AzureOpenAIChatClient(
endpoint="https://<myresource>.openai.azure.com",
credential=AzureCliCredential(),
ai_model_id="gpt-4o-mini"
),
name="Assistant",
instructions="You are a helpful assistant."
)
thread = agent.get_new_thread()
Futtassa az ügynököt úgy, hogy megadja a szálat, így ez a AgentThread csere belekerül.
# Run the agent and append the exchange to the thread
response = await agent.run("Tell me a short pirate joke.", thread=thread)
print(response.text)
Hívja meg a serialize szál metódusát, hogy szerializálja azt egy szótárba.
Ezután átalakítható JSON-tárolóvá, és menthető adatbázisba, blobtárolóba vagy fájlba.
import json
import tempfile
import os
# Serialize the thread state
serialized_thread = await thread.serialize()
serialized_json = json.dumps(serialized_thread)
# Example: save to a local file (replace with DB or blob storage in production)
temp_dir = tempfile.gettempdir()
file_path = os.path.join(temp_dir, "agent_thread.json")
with open(file_path, "w") as f:
f.write(serialized_json)
Töltse be a tárolt JSON-t a tárolóból, és hozza létre újra belőle az AgentThread-példányt. A szálat ügynökpéldány használatával kell deszerializálni. Ennek az eredeti szál létrehozásához használt ügynöktípusnak kell lennie. Ennek az az oka, hogy az ügynökök saját száltípusokkal rendelkeznek, és olyan szálakat hozhatnak létre, amelyek az adott ügynöktípusra jellemző további funkciókkal rendelkeznek.
# Read persisted JSON
with open(file_path, "r") as f:
loaded_json = f.read()
reloaded_data = json.loads(loaded_json)
# Deserialize the thread into an AgentThread tied to the same agent type
resumed_thread = await agent.deserialize_thread(reloaded_data)
A beszélgetés folytatásához használja az újrakezdett szálat.
# Continue the conversation with resumed thread
response = await agent.run("Now tell that joke in the voice of a pirate.", thread=resumed_thread)
print(response.text)