fix(llm): 启用工具时最终回复改用主回复配置的 system prompt
此前工具循环把工具路由 prompt 同时塞进最终回复和路由决策,导致用户在 「主 AI 回复配置」编辑的系统提示词被工具路由 prompt 覆盖、未加载到回复。 现在 finalMessages 用主回复 prompt,decisionMessages 用工具路由 prompt。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -76,20 +76,31 @@ func RunAgentToolLoop(ctx context.Context, state *State, profile *llm.Profile, s
|
|||||||
}
|
}
|
||||||
// 每轮调用都重新加载最新配置,确保管理员在 /admin/llm/api 保存后立即生效
|
// 每轮调用都重新加载最新配置,确保管理员在 /admin/llm/api 保存后立即生效
|
||||||
cfg := state.effectiveConfig()
|
cfg := state.effectiveConfig()
|
||||||
// Use tool router system prompt if available, otherwise fall back to primary system prompt
|
// 最终回复使用主回复配置的 system prompt(机器人人设/回复指引);
|
||||||
prompt := strings.TrimSpace(cfg.SystemPrompt)
|
// 工具路由决策使用工具路由的 system prompt(指导如何调用工具),
|
||||||
if prompt == "" {
|
// 为空时回退到主回复 prompt。两者分离,避免工具路由 prompt 覆盖主回复 prompt。
|
||||||
prompt = strings.TrimSpace(systemPrompt)
|
primaryPrompt := strings.TrimSpace(systemPrompt)
|
||||||
|
routerPrompt := strings.TrimSpace(cfg.SystemPrompt)
|
||||||
|
if routerPrompt == "" {
|
||||||
|
routerPrompt = primaryPrompt
|
||||||
}
|
}
|
||||||
if prompt != "" {
|
if primaryPrompt != "" {
|
||||||
systemMessage := &model.ChatCompletionMessage{
|
primarySystemMessage := &model.ChatCompletionMessage{
|
||||||
Role: "system",
|
Role: "system",
|
||||||
Content: &model.ChatCompletionMessageContent{
|
Content: &model.ChatCompletionMessageContent{
|
||||||
StringValue: &prompt,
|
StringValue: &primaryPrompt,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
finalMessages = append([]*model.ChatCompletionMessage{systemMessage}, finalMessages...)
|
finalMessages = append([]*model.ChatCompletionMessage{primarySystemMessage}, finalMessages...)
|
||||||
decisionMessages = append([]*model.ChatCompletionMessage{systemMessage}, decisionMessages...)
|
}
|
||||||
|
if routerPrompt != "" {
|
||||||
|
routerSystemMessage := &model.ChatCompletionMessage{
|
||||||
|
Role: "system",
|
||||||
|
Content: &model.ChatCompletionMessageContent{
|
||||||
|
StringValue: &routerPrompt,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
decisionMessages = append([]*model.ChatCompletionMessage{routerSystemMessage}, decisionMessages...)
|
||||||
}
|
}
|
||||||
for i := 0; i < maxAgentToolIterations; i++ {
|
for i := 0; i < maxAgentToolIterations; i++ {
|
||||||
if emit != nil {
|
if emit != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user