Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avvertimento
La funzionalità di memoria dell'agente kernel semantico è sperimentale, è soggetta a modifiche e verrà finalizzata solo in base al feedback e alla valutazione.
È spesso importante che un agente ricordi informazioni importanti. Queste informazioni possono essere conservate per la durata di una conversazione o più a lungo termine per l'estensione di più conversazioni. Le informazioni possono essere apprese dall'interazione con un utente e possono essere specifiche per tale utente.
Chiamiamo queste informazioni ricordi.
Per acquisire e conservare i ricordi, sono supportati i componenti che possono essere usati con un AgentThread per estrarre i ricordi da tutti i messaggi aggiunti al thread e fornire tali memorie all'agente in base alle esigenze.
Uso di Mem0 per la memoria dell'agente
Mem0 è uno strato di memoria che si migliora automaticamente per le applicazioni LLM, abilitando capacità di intelligenza artificiale personalizzate.
Microsoft.SemanticKernel.Memory.Mem0Provider si integra con il servizio Mem0, consentendo agli agenti di ricordare le preferenze utente e il contesto attraverso più thread, garantendo un'esperienza utente senza interruzioni.
Ogni messaggio aggiunto al thread viene inviato al servizio Mem0 per estrarre i ricordi. Per ogni chiamata dell'agente, Mem0 viene eseguita una query per individuare i ricordi corrispondenti alla richiesta utente specificata e tutti i ricordi vengono aggiunti al contesto dell'agente per tale chiamata.
Il provider di memoria Mem0 può essere configurato con un ID utente per consentire l'archiviazione dei ricordi relativi all'utente, a lungo termine, tra più thread. Può anche essere configurato con un ID thread o per usare l'ID thread del thread dell'agente, per consentire memorie a breve termine collegate solo a un singolo thread.
Ecco un esempio di come usare questo componente.
// Create an HttpClient for the Mem0 service.
using var httpClient = new HttpClient()
{
BaseAddress = new Uri("https://api.mem0.ai")
};
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", "<Your_Mem0_API_Key>");
// Create a Mem0 provider for the current user.
var mem0Provider = new Mem0Provider(httpClient, options: new()
{
UserId = "U1"
});
// Clear any previous memories (optional).
await mem0Provider.ClearStoredMemoriesAsync();
// Add the mem0 provider to the agent thread.
ChatHistoryAgentThread agentThread = new();
agentThread.AIContextProviders.Add(mem0Provider);
// Use the agent with mem0 memory.
ChatMessageContent response = await agent.InvokeAsync("Please retrieve my company report", agentThread).FirstAsync();
Console.WriteLine(response.Content);
Opzioni Mem0Provider
Mem0Provider Può essere configurato con varie opzioni per personalizzarne il comportamento.
Le opzioni vengono fornite usando la Mem0ProviderOptions classe per il Mem0Provider costruttore.
Opzioni di definizione dell'ambito
Mem0 consente di definire l'ambito dei ricordi in base ad applicazione, agente, thread e utente.
Sono disponibili opzioni per fornire identificatori per questi ambiti, in modo che le memorie possano essere archiviate in mem0 sotto questi identificatori.
Vedere le proprietà ApplicationId, AgentId, ThreadId e UserId su Mem0ProviderOptions.
In alcuni casi è possibile usare l'ID thread del thread dell'agente lato server quando si usa un agente basato su servizi.
Il thread potrebbe tuttavia non essere stato ancora creato quando l'oggetto Mem0Provider viene costruito.
In questo caso, è possibile impostare l'opzione ScopeToPerOperationThreadId su truee Mem0Provider userà l'ID di AgentThread quando è disponibile.
Prompt del contesto
L'opzione ContextPrompt consente di eseguire l'override del prompt predefinito preceduto da memorie.
Il prompt viene usato per contestualizzare i ricordi forniti al modello di intelligenza artificiale, in modo che il modello di intelligenza artificiale sappia cosa sono e come usarli.
Uso della memoria della lavagna per contesto Short-Term
La funzionalità di memoria della lavagna consente agli agenti di acquisire e conservare le informazioni più rilevanti da una conversazione, anche quando la cronologia delle chat viene troncata.
Ogni messaggio aggiunto alla conversazione viene elaborato da Microsoft.SemanticKernel.Memory.WhiteboardProvider per estrarre requisiti, proposte, decisioni, azioni.
Questi vengono archiviati in una lavagna e forniti all'agente come contesto aggiuntivo in ogni chiamata.
Di seguito è riportato un esempio di come configurare la memoria della lavagna:
// Create a whiteboard provider.
var whiteboardProvider = new WhiteboardProvider(chatClient);
// Add the whiteboard provider to the agent thread.
ChatHistoryAgentThread agentThread = new();
agentThread.AIContextProviders.Add(whiteboardProvider);
// Simulate a conversation with the agent.
await agent.InvokeAsync("I would like to book a trip to Paris.", agentThread);
// Whiteboard should now contain a requirement that the user wants to book a trip to Paris.
Vantaggi della memoria della lavagna
- Short-Term Contesto: mantiene le informazioni chiave sugli obiettivi delle conversazioni in corso.
- Consente il troncamento della cronologia chat: supporta la gestione del contesto critico se la cronologia delle chat viene troncata.
Opzioni di "WhiteboardProvider"
WhiteboardProvider Può essere configurato con varie opzioni per personalizzarne il comportamento.
Le opzioni vengono fornite usando la WhiteboardProviderOptions classe per il WhiteboardProvider costruttore.
MaxWhiteboardMessages
Specifica un numero massimo di messaggi da conservare nella lavagna. Quando viene raggiunto il valore massimo, verranno rimossi messaggi meno importanti.
ContextPrompt
Quando si fornisce il contenuto della lavagna al modello di intelligenza artificiale, è importante descrivere cosa servono i messaggi.
Questa impostazione consente di eseguire l'override della messaggistica predefinita incorporata in WhiteboardProvider.
WhiteboardEmptyPrompt
Quando la lavagna è vuota, restituisce WhiteboardProvider un messaggio che indica che è vuoto.
Questa impostazione consente di eseguire l'override della messaggistica predefinita incorporata in WhiteboardProvider.
ModelloDiAvvisoDiManutenzione
WhiteboardProvider usa un modello di intelligenza artificiale per aggiungere/aggiornare/rimuovere messaggi nella lavagna.
Ha un prompt predefinito per l'esecuzione di questi aggiornamenti.
Questa impostazione consente di eseguire l'override di questo prompt predefinito.
I parametri seguenti possono essere usati nel modello:
-
{{$maxWhiteboardMessages}}: numero massimo di messaggi consentiti nella lavagna. -
{{$inputMessages}}: i messaggi di input da aggiungere alla lavagna. -
{{$currentWhiteboard}}: Lo stato corrente della lavagna.
Combinazione di mem0 e memoria lavagna
È possibile usare sia mem0 che memoria lavagna nello stesso agente per ottenere un equilibrio tra funzionalità di memoria a lungo termine e a breve termine.
// Add both Mem0 and whiteboard providers to the agent thread.
agentThread.AIContextProviders.Add(mem0Provider);
agentThread.AIContextProviders.Add(whiteboardProvider);
// Use the agent with combined memory capabilities.
ChatMessageContent response = await agent.InvokeAsync("Please retrieve my company report", agentThread).FirstAsync();
Console.WriteLine(response.Content);
Combinando queste funzionalità di memoria, gli agenti possono offrire un'esperienza più personalizzata e compatibile con il contesto per gli utenti.
Passaggi successivi
Presto disponibili
Altre informazioni saranno presto disponibili.
Presto disponibili
Altre informazioni saranno presto disponibili.