-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Enable Memory Store operations on AIProjectClient (continuing Paul's work) #43999
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…e-sdk-for-python into dargilco/memory-store
API Change CheckAPIView identified API level changes in this PR and created the following API reviews |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR enables Memory Store operations on AIProjectClient, allowing developers to create, manage, and search conversational memories. The work continues Paul's initial implementation by adding async support, custom LRO polling, and comprehensive samples.
- Adds CRUD operations for Memory Stores (create, read, update, delete, list)
- Implements Memory Search Tool for agents to access past user information
- Includes custom LRO poller classes for memory update operations (sync and async)
- Provides comprehensive samples demonstrating memory management and agent integration
- Fixes Python emitter issue by replacing "items_property" with "items" in generated code
Reviewed Changes
Copilot reviewed 23 out of 25 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| samples/memories/sample_memory_crud.py | Demonstrates basic CRUD operations for memory stores (sync) |
| samples/memories/sample_memory_crud_async.py | Demonstrates basic CRUD operations for memory stores (async) |
| samples/memories/sample_memory_basic.py | Shows how to add and retrieve memories from a store (sync) |
| samples/memories/sample_memory_basic_async.py | Shows how to add and retrieve memories from a store (async) |
| samples/memories/sample_memory_advanced.py | Demonstrates advanced memory operations with chaining and context (sync) |
| samples/memories/sample_memory_advanced_async.py | Demonstrates advanced memory operations with chaining and context (async) |
| samples/agents/tools/sample_agent_memory_search.py | Integrates Memory Search Tool with prompt agents (sync) |
| samples/agents/tools/sample_agent_memory_search_async.py | Integrates Memory Search Tool with prompt agents (async) |
| samples/agents/memory/* | Removes old placeholder memory sample files |
| azure/ai/projects/operations/_patch_memories.py | Implements custom begin_update_memories method with LRO poller (sync) |
| azure/ai/projects/operations/_patch.py | Exports MemoryStoresOperations class (sync) |
| azure/ai/projects/operations/_operations.py | Fixes "items_property" to "items" in generated code (sync) |
| azure/ai/projects/aio/operations/_patch_memories_async.py | Implements custom begin_update_memories method with LRO poller (async) |
| azure/ai/projects/aio/operations/_patch.py | Exports MemoryStoresOperations class (async) |
| azure/ai/projects/aio/operations/_operations.py | Fixes "items_property" to "items" in generated code (async) |
| azure/ai/projects/models/_patch.py | Implements custom LRO poller and polling method classes for memory updates |
| post-emitter-fixes.cmd | Adds PowerShell commands to fix "items_property" issue in emitted code |
| README.md | Documents Memory Search Tool with example code snippet |
| CHANGELOG.md | Documents new memory store operations and samples |
| .env.template | Adds environment variables for memory store model deployments |
This is a continuation of the work done by bojunehsu in his draft PR. Paul did most of the work, here I'm adding async operations and classes, async sample code, putting code in the right location, polishing it getting ready for release. Thank you Paul!
Note that we fix emitted code to change
"items_property": itemsto"items": itemsin methods search_memories and begin_update_memories. "items" is specified in TypeSpec, but Python emitter does not allow it and uses "items_property" as the JSON element in the request payload. Need to follow up on this with the emitter team.