fix: 记忆嵌入兼容性 + 管理员称呼 + 记忆归因三大修复
记忆嵌入修复: - 新增 EMBEDDING_API_URL/EMBEDDING_MODEL 环境变量,嵌入端点可独立配置 - 启动时测试嵌入API可用性,不可用则自动降级为关键词匹配并记录日志 - DeepSeek等不提供embedding的API不再静默失败 管理员称呼修复: - 管理员消息nickname不再包含数字UID,防止LLM用QQ号称呼 - 管理员身份提示中加入名字并强调禁止使用数字ID 记忆归因修复: - persona注入新增规则10:记忆归属——群友的事不是开拓者做的 - persona注入新增规则11:禁止用数字ID称呼人 - 群聊规则新增7/8条:不要张冠李戴、用昵称不用数字 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -119,12 +119,24 @@ func main() {
|
||||
memStore = memory.NewStore(cfg.DatabaseURL)
|
||||
defer memStore.Close()
|
||||
|
||||
// 使用真实嵌入模型 (text-embedding-3-small),通过 OpenAI 兼容 API
|
||||
memEmbedder := memory.NewAPIEmbedder(cfg.LLMBaseURL, cfg.LLMAPIKey, "text-embedding-3-small")
|
||||
// 嵌入 API 可独立配置(DeepSeek 等不提供 embedding 端点时,可指向其他服务)
|
||||
embedURL := getEnv("EMBEDDING_API_URL", cfg.LLMBaseURL)
|
||||
embedModel := getEnv("EMBEDDING_MODEL", "text-embedding-3-small")
|
||||
memEmbedder := memory.NewAPIEmbedder(embedURL, cfg.LLMAPIKey, embedModel)
|
||||
if memEmbedder.IsAvailable() {
|
||||
log.Println("记忆嵌入服务已就绪 (text-embedding-3-small)")
|
||||
// 测试嵌入端点是否真的可用
|
||||
testCtx, testCancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
_, testErr := memEmbedder.Embed(testCtx, "test")
|
||||
testCancel()
|
||||
if testErr != nil {
|
||||
log.Printf("⚠ 嵌入 API 不可用 (%v),记忆检索将仅使用关键词匹配", testErr)
|
||||
memEmbedder = nil
|
||||
} else {
|
||||
log.Printf("记忆嵌入服务已就绪 (%s @ %s)", embedModel, embedURL)
|
||||
}
|
||||
} else {
|
||||
log.Println("⚠ 记忆嵌入服务未配置 API Key,降级为字符频率嵌入(检索质量较差)")
|
||||
log.Println("⚠ 嵌入服务未配置,记忆检索将仅使用关键词匹配")
|
||||
memEmbedder = nil
|
||||
}
|
||||
|
||||
memRetriever = memory.NewRetriever(memStore, memEmbedder)
|
||||
|
||||
Reference in New Issue
Block a user