Choosing Your Integration

Updated on Nov 3, 2026

Which Package to Use

.NET

PackageChoose when
Progress.MemoryYou want to call AddMemoryAsync, RecallMemoryAsync, and ForgetMemoryAsync directly and control when each operation runs.
Progress.Memory.Extensions.AIYou are using IChatClient from Microsoft.Extensions.AI and need automatic memory middleware or LLM-callable memory tools.
Progress.Memory.SemanticKernelYou are building with Semantic Kernel and need memory plugin functions or an IChatCompletionService wrapper for automatic recall.

Python

PackageChoose when
progress-memoryYou 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-langchainYou 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-adkYou 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

ConsiderationMiddleware / automatic modePlugin / tools mode
Who decides when to recall?The SDK — always before each requestThe LLM — invokes the recall tool when it judges it useful
Who decides when to remember?The SDK — when autoRemember: true / auto_remember=True is setThe LLM — calls remember autonomously
Extra LLM callsNoneTool use can require additional model calls to process results
PredictabilityConsistent — the SDK recalls relevant memories before every requestVariable — the LLM decides if and when to use memory
Best forSimple chat agents with predictable context needsComplex 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.

See Also