Avanserte minneløsninger
Utforsk mer avanserte minnetyper, som sammendragsminne og entitetsminne, og lær hvordan samtalehistorikk kan bevares
Avanserte minneløsninger er en gratis leksjon i AI-agenter med LangChain og autonome arbeidsflyter på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter med LangChain og autonome arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter med LangChain og autonome arbeidsflyter inneholder totalt 4 leksjoner.
Dypere agentminne
I tidligere leksjoner lærte vi om grunnleggende samtaleminne. Men hva skjer hvis samtalene blir svært lange eller inneholder mange spesifikke detaljer?
Avanserte minneløsninger hjelper agenter med å håndtere komplekse interaksjoner ved å oppsummere eller spore entiteter.
Introduksjon til summeringsminne
Summeringsminne komprimerer tidligere samtaler til et kortfattet sammendrag.
- Det hindrer at kontekstvinduene blir overfylt.
- Agenten «husker» fortsatt hovedinnholdet uten å lagre hver eneste melding.
- Det er nyttig i langvarige samtaler der de innledende detaljene blir mindre viktige.
Summeringsminne i praksis
LangChains ConversationSummaryBufferMemory bruker en LLM til å opprette sammendrag. Den beholder en buffer med nylige meldinger og oppsummerer eldre meldinger etter behov.
Prøv dette eksempelet:
from langchain.memory import ConversationSummaryBufferMemory
from langchain_openai import OpenAI
# For demonstration, we'll use a mock LLM
# In a real scenario, you'd use your actual LLM (e.g., OpenAI, HuggingFace)
# from langchain.llms import OpenAI
# llm = OpenAI(temperature=0)
class MockLLM:
def __init__(self):
pass
def invoke(self, prompt):
if "summarize" in prompt.lower():
return "A short summary of the conversation."
return "Mock LLM response to: " + prompt
llm = MockLLM()
# max_token_limit ensures summary happens before context window is full
memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=100)
def run_interaction(user_input, ai_output):
memory.save_context({"input": user_input}, {"output": ai_output})
print(f"Memory buffer: {memory.load_memory_variables({})['history']}")
if __name__ == "__main__":
print("--- Summary Buffer Memory Demo ---")
run_interaction("Hi there!", "Hello! How can I help?")
run_interaction("My name is Alice.", "Nice to meet you, Alice.")
run_interaction("I want to discuss project Alpha.", "Okay, tell me more.")
run_interaction("Project Alpha is about AI agents.", "Interesting! What aspects?")
# After more interactions, older messages would be summarized
print("\nFinal memory (after potential summarization):")
print(memory.load_memory_variables({})['history'])
Spore bestemte entiteter
Entitetsminne er utformet for å huske bestemte «entiteter» (for eksempel personer, steder eller emner) og fakta om dem gjennom en samtale.
- Det vedlikeholder en kunnskapsbase med entiteter.
- Det er nyttig når en agent må hente frem bestemte detaljer om navngitte ting.
- Eksempel: «Alice liker kaffe» -> agenten husker «Alice» og «liker kaffe».
Bruke ConversationEntityMemory
ConversationEntityMemory bruker en LLM til å trekke ut entiteter og attributtene deres fra meldinger. Den bygger opp en profil for hver entitet.
La oss se hvordan det fungerer:
from langchain.memory import ConversationEntityMemory
from langchain_openai import OpenAI
# Using the same MockLLM for consistency
class MockLLM:
def __init__(self):
pass
def invoke(self, prompt):
if "extract entities" in prompt.lower():
if "Alice" in prompt:
return "{'Alice': 'Alice is a person. She likes coffee and project Alpha.'}"
return "{}"
if "summarize" in prompt.lower():
return "A short summary of the conversation."
return "Mock LLM response to: " + prompt
llm = MockLLM()
memory = ConversationEntityMemory(llm=llm)
def run_entity_interaction(user_input, ai_output):
memory.save_context({"input": user_input}, {"output": ai_output})
print(f"Entities: {memory.load_memory_variables({})['entities']}")
if __name__ == "__main__":
print("--- Entity Memory Demo ---")
run_entity_interaction("My name is Alice and I like coffee.", "Nice to meet you, Alice!")
run_entity_interaction("I am working on project Alpha.", "That sounds interesting.")
run_entity_interaction("My colleague Bob will join later.", "Okay, I'll remember Bob.")
print("\nFinal entities stored:")
print(memory.load_memory_variables({})['entities'])
Hybride minnetilnærminger
For å lage enda mer robuste agenter kan De kombinere ulike minnetyper.
- Bruk summeringsminne for den generelle samtaleflyten.
- Bruk entitetsminne til å spore bestemte fakta om sentrale emner.
- Dette skaper en innholdsrik forståelse i flere lag uten å overbelaste LLM-ens kontekstvindu.
Huske på tvers av økter
Som standard går en agents minne tapt når programmet avsluttes. Men hva om De vil at en agent skal huske en bruker i flere dager eller uker?
Vedvarende minne gjør det mulig å lagre og laste inn agentens minne, slik at De får langsiktige samtaler og kontinuitet.
Lagre og laste inn minne
En enkel måte å gjøre minnet vedvarende på er å lagre tilstanden i en fil, for eksempel JSON. Når agenten starter på nytt, kan den laste inn denne filen for å gjenopprette minnet.
Dette eksempelet viser hvordan minnet serialiseres (lagres) og deserialiseres (lastes inn):
import json
from langchain.memory import ConversationBufferMemory
# Example of a simple buffer memory
memory = ConversationBufferMemory()
if __name__ == "__main__":
print("--- Memory Persistence Demo ---")
# 1. Save context
memory.save_context({"input": "Hello!"}, {"output": "Hi there!"})
memory.save_context({"input": "How are you?"}, {"output": "I'm good!"})
# 2. Extract and save memory variables
memory_data = memory.load_memory_variables({})
print(f"Memory before saving: {memory_data}")
# Convert to JSON string and save to a file
with open("agent_memory.json", "w") as f:
json.dump(memory_data, f, indent=2)
print("\nMemory saved to agent_memory.json")
# 3. Create new memory and load from file
new_memory = ConversationBufferMemory()
with open("agent_memory.json", "r") as f:
loaded_data = json.load(f)
# For ConversationBufferMemory, you can set the buffer directly
# More complex memories might have specific load methods
new_memory.buffer = loaded_data.get('history', '')
print(f"\nMemory loaded into new agent: {new_memory.load_memory_variables({})['history']}")
Robuste alternativer for vedvarende lagring
For applikasjoner i produksjonsmiljøer er enkel fillagring ikke tilstrekkelig. Vurder disse alternativene:
- Databaser: SQL (SQLite, PostgreSQL) eller NoSQL (MongoDB, Redis) for strukturert og skalerbar lagring.
- Vektorlagre: For å lagre embedding-er av samtalehistorikk, noe som er nyttig for mer avansert gjenhenting.
- LangChain integreres med mange databaser for sømløs vedvarende lagring av minne.
Quiz om minnetyper
Hvilken minnetype egner seg best for en agent som må huske bestemte detaljer om navngitte kunder (for eksempel preferansene deres og prosjektnavn) gjennom en svært lang samtale?
Oppsummering: Avanserte minneløsninger
I dag utforsket vi avanserte minneløsninger for AI-agenter:
- Summeringsminne: Komprimerer lange samtaler.
- Entitetsminne: Sporer bestemte fakta om navngitte entiteter.
- Vedvarende lagring: Lagrer og laster inn minne for å opprettholde kontekst på tvers av økter, ved hjelp av filer eller databaser.
Disse teknikkene bidrar til å bygge mer intelligente og kontekstbevisste agenter!
Lær deg AI-agenter med LangChain og autonome arbeidsflyter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 50
Ofte stilte spørsmål
Er leksjonen «Avanserte minneløsninger» gratis?
Ja – hele teksten i «Avanserte minneløsninger» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter med LangChain og autonome arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter med LangChain og autonome arbeidsflyter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Avanserte minneløsninger»?
Utforsk mer avanserte minnetyper, som sammendragsminne og entitetsminne, og lær hvordan samtalehistorikk kan bevares Du øver på AI-agenter med LangChain og autonome arbeidsflyter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-agenter med LangChain og autonome arbeidsflyter?
Ingen tidligere erfaring er nødvendig. AI-agenter med LangChain og autonome arbeidsflyter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Avanserte minneløsninger»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-agenter med LangChain og autonome arbeidsflyter-leksjonen?
Ja. Alle AI-agenter med LangChain og autonome arbeidsflyter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Konsepter for agentminne
- Samtalebuffer for minne
- Avanserte minneløsninger
- Strategier for entitets- og sammendragsminne