fleet-memory/hindsight-integrations/ag2/README.md
Faridun Mirzoev 731238707d
feat(integrations): add AG2 framework integration (#720)
Add hindsight-ag2 package providing persistent memory tools for AG2 agents via retain/recall/reflect operations.
2026-03-27 09:41:37 +01:00

143 lines
4.5 KiB
Markdown

# hindsight-ag2
AG2 integration for [Hindsight](https://github.com/vectorize-io/hindsight) — persistent long-term memory for AI agents.
Provides Hindsight-backed tool functions that give [AG2](https://ag2.ai) agents long-term memory across conversations via retain/recall/reflect operations.
## Prerequisites
- Python 3.10+
- Running Hindsight instance ([quickstart](https://github.com/vectorize-io/hindsight#quick-start))
## Installation
```bash
pip install hindsight-ag2
```
## Quick Start
```python
from autogen import AssistantAgent, UserProxyAgent, LLMConfig
from hindsight_ag2 import register_hindsight_tools
llm_config = LLMConfig(api_type="openai", model="gpt-4o-mini")
with llm_config:
assistant = AssistantAgent(
name="assistant",
system_message="You are a helpful assistant with long-term memory.",
)
user_proxy = UserProxyAgent(
name="user",
human_input_mode="NEVER",
)
# Register Hindsight memory tools on both agents
register_hindsight_tools(
assistant, user_proxy,
bank_id="my-bank",
hindsight_api_url="http://localhost:8888",
)
# The assistant can now use hindsight_retain, hindsight_recall, hindsight_reflect
result = user_proxy.initiate_chat(
assistant,
message="Remember that I prefer Python over JavaScript.",
)
```
## Tools
| Tool | Operation | Description |
|------|-----------|-------------|
| `hindsight_retain` | Retain | Store facts, preferences, decisions to long-term memory |
| `hindsight_recall` | Recall | Multi-strategy search across stored memories |
| `hindsight_reflect` | Reflect | Synthesize reasoned answers from memories |
## Configuration
### Global config
```python
from hindsight_ag2 import configure
configure(
hindsight_api_url="http://localhost:8888",
api_key="your-key", # or set HINDSIGHT_API_KEY env var
budget="mid", # low / mid / high
max_tokens=4096,
tags=["source:ag2"], # default tags for retain
)
```
### Per-call overrides
All global settings can be overridden per `create_hindsight_tools()` call:
| Parameter | Description | Default |
|-----------|-------------|---------|
| `bank_id` | Memory bank ID (required) | — |
| `client` | Pre-configured `Hindsight` client | — |
| `hindsight_api_url` | API URL | Global config or production |
| `api_key` | API key | Global config or env var |
| `budget` | Recall/reflect budget | `"mid"` |
| `max_tokens` | Max tokens for recall | `4096` |
| `tags` | Tags for retain operations | `None` |
| `recall_tags` | Tags to filter recall | `None` |
| `recall_tags_match` | Tag match mode | `"any"` |
| `retain_metadata` | Metadata dict for retain | `None` |
| `retain_document_id` | Document ID for retain | `None` |
| `recall_types` | Fact types to filter | `None` |
| `recall_include_entities` | Include entities in recall | `False` |
| `reflect_context` | Additional context for reflect | `None` |
| `reflect_max_tokens` | Max tokens for reflect | `max_tokens` |
| `reflect_response_schema` | JSON schema for reflect output | `None` |
| `reflect_tags` | Tags for reflect (fallback: `recall_tags`) | `None` |
| `reflect_tags_match` | Tag match for reflect | `recall_tags_match` |
## Advanced: Manual Registration
```python
from hindsight_ag2 import create_hindsight_tools
tools = create_hindsight_tools(
bank_id="my-bank",
hindsight_api_url="http://localhost:8888",
)
for tool_fn in tools:
assistant.register_for_llm(description=tool_fn.__doc__)(tool_fn)
user_proxy.register_for_execution()(tool_fn)
```
## Advanced: GroupChat with Shared Memory
```python
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager, LLMConfig
from hindsight_ag2 import register_hindsight_tools
llm_config = LLMConfig(api_type="openai", model="gpt-4o-mini")
with llm_config:
researcher = AssistantAgent(name="researcher", system_message="You research topics.")
writer = AssistantAgent(name="writer", system_message="You write content.")
executor = UserProxyAgent(name="executor", human_input_mode="NEVER")
# All agents share the same memory bank
for agent in [researcher, writer]:
register_hindsight_tools(agent, executor, bank_id="team-memory")
group_chat = GroupChat(agents=[researcher, writer, executor], messages=[])
manager = GroupChatManager(groupchat=group_chat)
```
## Requirements
- `ag2>=0.9.0`
- `hindsight-client>=0.4.0`
## Documentation
- [Hindsight Documentation](https://hindsight.docs.vectorize.io)
- [AG2 Documentation](https://docs.ag2.ai)
- [API Reference](https://hindsight.docs.vectorize.io/api)