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.
Adjon hozzá kontextust az ügynökhöz, hogy megjegyezhesse a felhasználói beállításokat, a múltbeli interakciókat vagy a külső ismereteket.
Memória beállítása egyéni ChatHistoryProviderbeállítással:
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
?? throw new InvalidOperationException("Set AZURE_OPENAI_ENDPOINT");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new AzureCliCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are a friendly assistant. Keep your answers brief.", name: "MemoryAgent");
Munkamenet használata az állapot futások közötti megtartására:
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine(await agent.RunAsync("Hello! What's the square root of 9?", session));
Console.WriteLine(await agent.RunAsync("My name is Alice", session));
Console.WriteLine(await agent.RunAsync("What is my name?", session));
Jótanács
Tekintse meg a teljes futtatható fájl teljes mintáját .
Definiáljon egy környezetszolgáltatót, amely további környezetet injektál minden ügynökhívásba:
class UserNameProvider(BaseContextProvider):
"""A simple context provider that remembers the user's name."""
def __init__(self) -> None:
super().__init__(source_id="user-name-provider")
self.user_name: str | None = None
async def before_run(
self,
*,
agent: Any,
session: AgentSession,
context: SessionContext,
state: dict[str, Any],
) -> None:
"""Called before each agent invocation — add extra instructions."""
if self.user_name:
context.instructions.append(f"The user's name is {self.user_name}. Always address them by name.")
else:
context.instructions.append("You don't know the user's name yet. Ask for it politely.")
async def after_run(
self,
*,
agent: Any,
session: AgentSession,
context: SessionContext,
state: dict[str, Any],
) -> None:
"""Called after each agent invocation — extract information."""
for msg in context.input_messages:
text = msg.text if hasattr(msg, "text") else ""
if isinstance(text, str) and "my name is" in text.lower():
# Simple extraction — production code should use structured extraction
self.user_name = text.lower().split("my name is")[-1].strip().split()[0].capitalize()
Hozzon létre egy ügynököt a kontextus biztosítójával:
credential = AzureCliCredential()
client = AzureOpenAIResponsesClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
deployment_name=os.environ["AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"],
credential=credential,
)
memory = UserNameProvider()
agent = client.as_agent(
name="MemoryAgent",
instructions="You are a friendly assistant.",
context_providers=[memory],
)
Megjegyzés:
A Pythonban az adatmegőrzést/memóriát az előzményszolgáltatók kezelik. Egy BaseHistoryProvider is egy BaseContextProvider, és a InMemoryHistoryProvider a beépített helyi megvalósítás.
RawAgent bizonyos esetekben automatikusan hozzáadható InMemoryHistoryProvider("memory") (például ha konfigurált környezetszolgáltatók nélküli munkamenetet használ, és nincs szolgáltatásoldali tárolási mutató), de ez nem minden esetben garantált.
Ha mindig helyi adatmegőrzést szeretne, adjon meg egy InMemoryHistoryProvider elemet kifejezetten. Győződjön meg arról is, hogy csak egy előzménytár szolgáltatót használ load_messages=True, hogy ne játsszon vissza több tárolót ugyanazon hívás során.
A napló tárat úgy is hozzáadhatja, hogy a(z) context_providers végére hozzáfűz egy újabb előzményszolgáltatót store_context_messages=True felhasználásával.
from agent_framework import InMemoryHistoryProvider
memory_store = InMemoryHistoryProvider("memory", load_messages=True)
audit_store = InMemoryHistoryProvider(
"audit",
load_messages=False,
store_context_messages=True, # include context added by other providers
)
agent = client.as_agent(
name="MemoryAgent",
instructions="You are a friendly assistant.",
context_providers=[memory, memory_store, audit_store], # audit store last
)
futtassa, az ügynök mostantól hozzáfér a kontextushoz:
session = agent.create_session()
# The provider doesn't know the user yet — it will ask for a name
result = await agent.run("Hello! What's the square root of 9?", session=session)
print(f"Agent: {result}\n")
# Now provide the name — the provider extracts and stores it
result = await agent.run("My name is Alice", session=session)
print(f"Agent: {result}\n")
# Subsequent calls are personalized
result = await agent.run("What is 2 + 2?", session=session)
print(f"Agent: {result}\n")
print(f"[Memory] Stored user name: {memory.user_name}")
Jótanács
Tekintse meg a teljes futtatható fájl teljes mintáját .
Következő lépések
Mélyedjen el:
- Állandó tárterület – beszélgetések tárolása adatbázisokban
- Csevegési előzmények – csevegési előzmények és memória kezelése