0Pricing
AI Agents with LangChain & Autonomous Workflows · レッスン

高度なメモリソリューション

要約メモリやエンティティメモリなど、より高度なメモリの種類と会話履歴を永続化する方法を学びます。

「高度なメモリソリューション」はCoddyKit上の無料AI Agents with LangChain & Autonomous Workflowsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents with LangChain & Autonomous Workflows学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agents with LangChain & Autonomous Workflowsコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Deeper Agent Memory

In previous lessons, we learned about basic conversational memory. But what if conversations get very long or involve many specific details?

Advanced memory solutions help agents manage complex interactions by summarizing or tracking entities.

Introducing Summary Memory

Summary Memory condenses past conversations into a concise summary.

  • It prevents context windows from overflowing.
  • The agent still "remembers" the gist without storing every single message.
  • Useful for long-running chats where initial details become less important.

Summary Memory in Action

LangChain's ConversationSummaryBufferMemory uses an LLM to create summaries. It keeps a buffer of recent messages, then summarizes older ones as needed.

Try this example:

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'])

Tracking Specific Entities

Entity Memory is designed to remember specific "entities" (like people, places, or topics) and facts about them throughout a conversation.

  • It maintains a knowledge base of entities.
  • Useful when an agent needs to recall specific details about named things.
  • Example: "Alice likes coffee" -> agent remembers "Alice" and "likes coffee".

Using ConversationEntityMemory

ConversationEntityMemory uses an LLM to extract entities and their attributes from messages. It builds up a profile for each entity.

Let's see it work:

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'])

Hybrid Memory Approaches

For even more robust agents, you can combine different memory types.

  • Use Summary Memory for general conversation flow.
  • Use Entity Memory to track specific facts about key subjects.
  • This creates a rich, layered understanding without overwhelming the LLM's context window.

Remembering Across Sessions

By default, an agent's memory is lost when the program ends. But what if you want an agent to remember a user over days or weeks?

Persistent Memory allows you to save and load an agent's memory, enabling long-term conversations and continuity.

Saving & Loading Memory

A simple way to persist memory is to save its state to a file, like JSON. When the agent restarts, it can load this file to restore its memory.

This example shows how to serialize (save) and deserialize (load) memory:

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']}")

Robust Persistence Options

For production-grade applications, simple file persistence isn't enough. Consider these options:

  • Databases: SQL (SQLite, PostgreSQL) or NoSQL (MongoDB, Redis) for structured and scalable storage.
  • Vector Stores: For persisting embeddings of conversational history, useful for more advanced retrieval.
  • LangChain integrates with many databases for seamless memory persistence.

Memory Types Quiz

Which memory type would be best suited for an agent that needs to remember specific details about named clients (e.g., their preferences, project names) over a very long conversation?

Recap: Advanced Memory Solutions

Today, we explored advanced memory solutions for AI agents:

  • Summary Memory: Condenses long conversations.
  • Entity Memory: Tracks specific facts about named entities.
  • Persistence: Saving and loading memory to maintain context across sessions, using files or databases.

These techniques help build more intelligent and context-aware agents!

よくある質問

「高度なメモリソリューション」レッスンは無料ですか?

はい。「高度なメモリソリューション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agents with LangChain & Autonomous Workflowsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agents with LangChain & Autonomous Workflowsコースには全4レッスンが含まれています。

「高度なメモリソリューション」で何を学びますか?

要約メモリやエンティティメモリなど、より高度なメモリの種類と会話履歴を永続化する方法を学びます。 ブラウザで直接実行するハンズオンコードでAI Agents with LangChain & Autonomous Workflowsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agents with LangChain & Autonomous Workflowsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agents with LangChain & Autonomous Workflowsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「高度なメモリソリューション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agents with LangChain & Autonomous Workflowsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agents with LangChain & Autonomous Workflowsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. エージェントメモリの概念
  2. 会話バッファメモリ
  3. 高度なメモリソリューション
  4. エンティティと要約のメモリ戦略
← AI Agents with LangChain & Autonomous Workflowsに戻る