Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tutorial ini menunjukkan cara mempertahankan percakapan agen (AgentSession) ke penyimpanan dan memuat ulang nanti.
Saat menghosting agen dalam layanan atau bahkan dalam aplikasi klien, Anda sering ingin mempertahankan status percakapan di beberapa permintaan atau sesi. Dengan mempertahankan AgentSession, Anda dapat menyimpan konteks percakapan dan memuat ulang nanti.
Prasyarat
Untuk prasyarat dan menginstal paket NuGet, lihat langkah Membuat dan menjalankan agen sederhana dalam tutorial ini.
Mempertahankan dan meneruskan percakapan
Buat agen dan dapatkan sesi baru yang akan menyimpan status percakapan.
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")
.AsAIAgent(instructions: "You are a helpful assistant.", name: "Assistant");
AgentSession session = await agent.GetNewSessionAsync();
Jalankan agen, dengan memasukkan sesi, sehingga AgentSession mencakup pertukaran ini.
// Run the agent and append the exchange to the session
Console.WriteLine(await agent.RunAsync("Tell me a short pirate joke.", session));
Serialize Panggil metode pada sesi untuk menserialisasikannya ke JsonElement.
Kemudian dapat dikonversi ke string untuk penyimpanan dan disimpan ke database, penyimpanan blob, atau file.
using System.IO;
using System.Text.Json;
// Serialize the session state
string serializedJson = session.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_session.json");
await File.WriteAllTextAsync(filePath, serializedJson);
Muat JSON yang bertahan dari penyimpanan dan buat ulang instans AgentSession darinya. Sesi harus dideserialisasi dengan menggunakan instance agen. Ini harus merupakan jenis agen yang sama yang digunakan untuk membuat sesi asli. Ini karena agen mungkin memiliki jenis sesi mereka sendiri dan mungkin membangun sesi dengan fungsionalitas tambahan yang khusus untuk jenis agen tersebut.
// Read persisted JSON
string loadedJson = await File.ReadAllTextAsync(filePath);
JsonElement reloaded = JsonSerializer.Deserialize<JsonElement>(loadedJson, JsonSerializerOptions.Web);
// Deserialize the session into an AgentSession tied to the same agent type
AgentSession resumedSession = await agent.DeserializeSessionAsync(reloaded, JsonSerializerOptions.Web);
Gunakan sesi yang dilanjutkan untuk melanjutkan percakapan.
// Continue the conversation with resumed session
Console.WriteLine(await agent.RunAsync("Now tell that joke in the voice of a pirate.", resumedSession));
Tutorial ini menunjukkan cara menyimpan percakapan agen (AgentThread) ke penyimpanan dan memuatnya kembali nanti.
Saat menghosting agen dalam layanan atau bahkan dalam aplikasi klien, Anda sering ingin mempertahankan status percakapan di beberapa permintaan atau sesi. Dengan mempertahankan AgentThread, Anda dapat menyimpan konteks percakapan dan memuat ulang nanti.
Prasyarat
Untuk prasyarat dan menginstal paket Python, lihat langkah Membuat dan menjalankan agen sederhana dalam tutorial ini.
Mempertahankan dan meneruskan percakapan
Buat agen dan dapatkan utas baru yang akan menyimpan status percakapan.
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()
Jalankan agen, dengan melewatkan utas, agar AgentThread ini termasuk dalam pertukaran tersebut.
# 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)
serialize Panggil metode pada utas untuk menserialisasikannya ke kamus.
Kemudian dapat dikonversi ke JSON untuk penyimpanan dan disimpan ke database, penyimpanan blob, atau file.
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)
Muat JSON yang bertahan dari penyimpanan dan buat ulang instans AgentThread darinya. Benang harus dideserialisasi menggunakan instans agen. Ini harus merupakan tipe agen yang sama yang digunakan untuk membuat utas asli. Ini karena agen mungkin memiliki jenis thread mereka sendiri dan mungkin membuat thread dengan fungsi tambahan yang spesifik untuk jenis agen tersebut.
# 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)
Gunakan utas yang telah dilanjutkan untuk melanjutkan percakapan.
# 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)