Choosing Your Integration
Updated on Nov 3, 2026
Which Package to Use
.NET
| Package | Choose when |
|---|---|
| Progress.Memory | You want to call AddMemoryAsync, RecallMemoryAsync, and ForgetMemoryAsync directly and control when each operation runs. |
| Progress.Memory.Extensions.AI | You are using IChatClient from Microsoft.Extensions.AI and need automatic memory middleware or LLM-callable memory tools. |
| Progress.Memory.SemanticKernel | You are building with Semantic Kernel and need memory plugin functions or an IChatCompletionService wrapper for automatic recall. |
Python
| Package | Choose when |
|---|---|
| progress-memory | You want direct async control — call add_memory, recall_memory, and forget_memory yourself, or you are integrating with a framework not listed below. |
| progress-memory-langchain | You are building LangChain chains or agents and want memory added automatically (Memory mode) or exposed as StructuredTool objects the LLM can invoke (Tools mode). |
| progress-memory-google-adk | You are using Google ADK and want memory integrated via ADK's BaseMemoryService lifecycle (Service mode) or as explicit ADK tool functions (Tools mode). |
Which Integration Mode to Use
| Consideration | Middleware / automatic mode | Plugin / tools mode |
|---|---|---|
| Who decides when to recall? | The SDK — always before each request | The LLM — invokes the recall tool when it judges it useful |
| Who decides when to remember? | The SDK — when autoRemember: true / auto_remember=True is set | The LLM — calls remember autonomously |
| Extra LLM calls | None | Tool use can require additional model calls to process results |
| Predictability | Consistent — the SDK recalls relevant memories before every request | Variable — the LLM decides if and when to use memory |
| Best for | Simple chat agents with predictable context needs | Complex agentic pipelines with dynamic tool orchestration |
.NET mapping: Extensions.AI and SemanticKernel both support middleware mode and tools/plugin mode. Use UseProgressMemory() for middleware; use WithProgressMemoryTools() (Extensions.AI) or AddProgressMemoryPlugin() (Semantic Kernel) for tools/plugin mode.
Python mapping: LangChain supports Memory mode (automatic) and Tools mode. Google ADK supports Service mode (automatic via BaseMemoryService) and Tools mode. Use the core ProgressMemoryClient directly for full manual control in any framework.