CAMEL-AI
Expose GoodMem's RAG memory as a CAMEL BaseToolkit so a ChatAgent can store and recall documents.
Overview
GoodMem is a memory layer for AI agents that handles embedding, vector search, reranking, and
LLM-powered answering server-side. This integration packages the GoodMem API as a CAMEL
BaseToolkit: drop GoodMemToolkit into a CAMEL ChatAgent and the agent can store, list, and
semantically retrieve documents from a GoodMem space alongside its other tools.
Installation
pip install camel-goodmemThe pip package is camel-goodmem; the import name is camel_goodmem. The optional example
runner needs OpenAI, installable with pip install camel-goodmem[examples].
Configuration
| Variable | Description |
|---|---|
GOODMEM_BASE_URL | Base URL of your GoodMem server (no /v1 suffix), e.g. https://your-goodmem-server.example.com. |
GOODMEM_API_KEY | API key sent as X-API-Key to authenticate requests. |
GOODMEM_VERIFY_SSL | Set to false to skip TLS verification for self-signed dev certs (default: true). |
When all three are set, GoodMemToolkit() can be constructed with no arguments.
Quick start
import os
os.environ["GOODMEM_BASE_URL"] = "https://your-goodmem-server.example.com"
os.environ["GOODMEM_API_KEY"] = "gm_xxxxxxxxxxxxxxxxxxxxxxxx"
os.environ["GOODMEM_VERIFY_SSL"] = "false" # self-signed local server
from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType
from camel_goodmem import GoodMemToolkit
toolkit = GoodMemToolkit()
embedder_id = toolkit.goodmem_list_embedders()[0]["embedderId"]
space_id = toolkit.goodmem_create_space(
name="quickstart", embedder_id=embedder_id
)["spaceId"]
agent = ChatAgent(
system_message=(
f"You are an assistant whose long-term memory lives in GoodMem "
f"space '{space_id}'. Store facts the user shares, and answer "
"their questions from that space."
),
model=ModelFactory.create(
model_platform=ModelPlatformType.DEFAULT,
model_type=ModelType.DEFAULT,
),
tools=toolkit.get_tools(),
)Local development. The example above uses a TLS-verified production URL. If you are running
GoodMem locally with a self-signed certificate, use https://localhost:8080 and disable TLS
verification with the client's verify-SSL option (see the Configuration table above). Keep TLS
verification enabled for any deployed server.
Retrieval post-processing
GoodMem's retrieval call accepts these optional post-processing parameters (each framework exposes them under its own naming convention):
| Parameter | Range | Description |
|---|---|---|
reranker_id | UUID | Reranker model that reorders matched chunks by relevance. |
llm_id | UUID | LLM that generates a contextual answer (abstractReply) alongside the chunks. |
relevance_threshold | 0–1 | Minimum relevance score for a result to be included. |
llm_temperature | 0–2 | Sampling temperature for the LLM post-processor. |
max_results | integer | Maximum number of results to return. |
chronological_resort | boolean | Re-sort the final results by creation time instead of relevance. |
Learn more
The full README, examples, and API reference are available on the PyPI package page.