这是一个展示如何使用 Mem4j 的示例项目。
首先确保主项目已经安装到本地 Maven 仓库:
cd ..
mvn clean install -DskipTests
cd example-usage设置 DashScope API Key 环境变量(推荐):
export DASHSCOPE_API_KEY="your-dashscope-api-key"或者编辑 src/main/resources/application.yml 直接修改配置:
github:
mem4j:
llm:
api-key: "your-actual-api-key-here"
embeddings:
type: dashscope./start-example.shmvn spring-boot:run# 在另一个终端窗口运行
./test-api.sh示例应用会在 http://localhost:19090 启动,提供以下 API:
curl -X POST "http://localhost:19090/api/chat/send" \
-H "Content-Type: application/json" \
-d '{
"userId": "user1",
"message": "我是张三,我喜欢吃披萨"
}'curl "http://localhost:19090/api/chat/memories/user1"curl -X DELETE "http://localhost:19090/api/chat/memories/user1"此示例使用了以下配置:
- 向量存储: 内存模式 (
inmemory),适合演示和测试 - LLM: DashScope (
qwen-turbo),需要 API Key - 嵌入: DashScope (
text-embedding-v1),使用相同的 API Key
示例默认使用 DashScope 服务,您需要:
- 访问 DashScope 控制台 获取 API Key
- 设置环境变量
DASHSCOPE_API_KEY - 或者直接在配置文件中修改
api-key值
如果您想使用 OpenAI 服务,可以修改配置:
github:
mem4j:
llm:
type: openai
api-key: ${OPENAI_API_KEY}
model: gpt-3.5-turbo
embeddings:
type: openai
model: text-embedding-ada-002在生产环境中,建议:
- 使用真实的向量数据库 (如 Qdrant)
- 根据需求选择合适的 LLM 服务
- 配置合适的相似度阈值和记忆数量限制
src/main/resources/application.yml- 应用配置文件src/main/java/com/example/ChatController.java- REST API 控制器start-example.sh- 便捷启动脚本test-api.sh- API 自动化测试脚本
@Autowired
private Memory memory;import io.github.mem4j.memory.Message;
import java.util.Arrays;
import java.util.List;
List<Message> messages = Arrays.asList(
new Message("user", "我是张三,我喜欢吃披萨"),
new Message("assistant", "很高兴认识你张三!我会记住你喜欢吃披萨。")
);
memory.add(messages, "user1");import io.github.mem4j.memory.MemoryItem;
import java.util.List;
List<MemoryItem> memories = memory.search("张三喜欢什么?", "user1");import io.github.mem4j.memory.MemoryItem;
import java.util.List;
List<MemoryItem> allMemories = memory.getAll("user1", null, 50);