fix:1.修复mcp提示词没有加载用户提示词模板问题
This commit is contained in:
@@ -83,23 +83,14 @@ async def world_building_generator(
|
||||
if available_tools:
|
||||
yield await SSEResponse.send_progress("🔍 尝试使用MCP工具收集参考资料...", 18)
|
||||
|
||||
# 构建资料收集提示词
|
||||
planning_prompt = f"""你正在为小说《{title}》设计世界观。
|
||||
|
||||
【小说信息】
|
||||
- 题材:{genre}
|
||||
- 主题:{theme}
|
||||
- 简介:{description}
|
||||
|
||||
【任务】
|
||||
请使用可用工具搜索相关背景资料,帮助构建更真实、更有深度的世界观设定。
|
||||
你可以查询:
|
||||
1. 历史背景(如果是历史题材)
|
||||
2. 地理环境和文化特征
|
||||
3. 相关领域的专业知识
|
||||
4. 类似作品的设定参考
|
||||
|
||||
请查询最关键的1个问题(不要超过1个)。"""
|
||||
mcp_template = await PromptService.get_template("MCP_WORLD_BUILDING_PLANNING", user_id, db)
|
||||
planning_prompt = PromptService.format_prompt(
|
||||
mcp_template,
|
||||
title=title,
|
||||
genre=genre,
|
||||
theme=theme,
|
||||
description=description
|
||||
)
|
||||
|
||||
# 调用MCP增强的AI(非流式,最多1轮工具调用,避免超时)
|
||||
planning_result = await user_ai_service.generate_text_with_mcp(
|
||||
@@ -357,24 +348,15 @@ async def characters_generator(
|
||||
if available_tools:
|
||||
yield await SSEResponse.send_progress("🔍 尝试使用MCP工具收集角色参考资料...", 8)
|
||||
|
||||
# 构建角色资料收集提示词
|
||||
planning_prompt = f"""你正在为小说《{project.title}》设计角色。
|
||||
|
||||
【小说信息】
|
||||
- 题材:{genre or project.genre}
|
||||
- 主题:{theme or project.theme}
|
||||
- 时代背景:{world_context.get('time_period', '未设定')}
|
||||
- 地理位置:{world_context.get('location', '未设定')}
|
||||
|
||||
【任务】
|
||||
请使用可用工具搜索相关参考资料,帮助设计更真实、更有深度的角色。
|
||||
你可以查询:
|
||||
1. 该时代/地域的真实历史人物特征
|
||||
2. 文化背景和社会习俗
|
||||
3. 职业特点和生活方式
|
||||
4. 相关领域的人物原型
|
||||
|
||||
请查询最关键的1个问题(不要超过1个)。"""
|
||||
mcp_template = await PromptService.get_template("MCP_CHARACTER_PLANNING", user_id, db)
|
||||
planning_prompt = PromptService.format_prompt(
|
||||
mcp_template,
|
||||
title=project.title,
|
||||
genre=genre or project.genre,
|
||||
theme=theme or project.theme,
|
||||
time_period=world_context.get('time_period', '未设定'),
|
||||
location=world_context.get('location', '未设定')
|
||||
)
|
||||
|
||||
# 调用MCP增强的AI(非流式,最多1轮工具调用,避免超时)
|
||||
planning_result = await user_ai_service.generate_text_with_mcp(
|
||||
@@ -1185,22 +1167,14 @@ async def world_building_regenerate_generator(
|
||||
if available_tools:
|
||||
yield await SSEResponse.send_progress("🔍 尝试使用MCP工具收集参考资料...", 18)
|
||||
|
||||
planning_prompt = f"""你正在为小说《{project.title}》重新设计世界观。
|
||||
|
||||
【小说信息】
|
||||
- 题材:{project.genre}
|
||||
- 主题:{project.theme}
|
||||
- 简介:{project.description or '未设定'}
|
||||
|
||||
【任务】
|
||||
请使用可用工具搜索相关背景资料,帮助构建更真实、更有深度的世界观设定。
|
||||
你可以查询:
|
||||
1. 历史背景(如果是历史题材)
|
||||
2. 地理环境和文化特征
|
||||
3. 相关领域的专业知识
|
||||
4. 类似作品的设定参考
|
||||
|
||||
请查询最关键的1个问题(不要超过1个)。"""
|
||||
mcp_template = await PromptService.get_template("MCP_WORLD_BUILDING_PLANNING", user_id, db)
|
||||
planning_prompt = PromptService.format_prompt(
|
||||
mcp_template,
|
||||
title=project.title,
|
||||
genre=project.genre,
|
||||
theme=project.theme,
|
||||
description=project.description or '未设定'
|
||||
)
|
||||
|
||||
planning_result = await user_ai_service.generate_text_with_mcp(
|
||||
prompt=planning_prompt,
|
||||
|
||||
@@ -168,8 +168,12 @@ class MCPTestService:
|
||||
logger.info(f"📋 转换后的OpenAI工具数量: {len(openai_tools)}")
|
||||
logger.debug(f"📋 OpenAI工具列表: {[t['function']['name'] for t in openai_tools]}")
|
||||
|
||||
# 调用AI选择工具
|
||||
prompts = prompt_service.get_mcp_tool_test_prompts(plugin.plugin_name)
|
||||
# 调用AI选择工具(使用自定义模板系统)
|
||||
prompts = await prompt_service.get_mcp_tool_test_prompts(
|
||||
plugin_name=plugin.plugin_name,
|
||||
user_id=user.user_id,
|
||||
db=db_session
|
||||
)
|
||||
|
||||
ai_response = await ai_service.generate_text(
|
||||
prompt=prompts["user"],
|
||||
|
||||
@@ -2018,11 +2018,38 @@ class PromptService:
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def get_mcp_tool_test_prompts(cls, plugin_name: str) -> Dict[str, str]:
|
||||
"""获取MCP工具测试的提示词"""
|
||||
async def get_mcp_tool_test_prompts(
|
||||
cls,
|
||||
plugin_name: str,
|
||||
user_id: str = None,
|
||||
db = None
|
||||
) -> Dict[str, str]:
|
||||
"""
|
||||
获取MCP工具测试的提示词(支持自定义)
|
||||
|
||||
Args:
|
||||
plugin_name: 插件名称
|
||||
user_id: 用户ID(可选)
|
||||
db: 数据库会话(可选)
|
||||
|
||||
Returns:
|
||||
包含user和system提示词的字典
|
||||
"""
|
||||
# 获取用户自定义或系统默认的user提示词
|
||||
if user_id and db:
|
||||
user_template = await cls.get_template("MCP_TOOL_TEST", user_id, db)
|
||||
else:
|
||||
user_template = cls.MCP_TOOL_TEST
|
||||
|
||||
# 获取用户自定义或系统默认的system提示词
|
||||
if user_id and db:
|
||||
system_template = await cls.get_template("MCP_TOOL_TEST_SYSTEM", user_id, db)
|
||||
else:
|
||||
system_template = cls.MCP_TOOL_TEST_SYSTEM
|
||||
|
||||
return {
|
||||
"user": cls.format_prompt(cls.MCP_TOOL_TEST, plugin_name=plugin_name),
|
||||
"system": cls.MCP_TOOL_TEST_SYSTEM
|
||||
"user": cls.format_prompt(user_template, plugin_name=plugin_name),
|
||||
"system": system_template
|
||||
}
|
||||
# 创建全局提示词服务实例
|
||||
|
||||
@@ -2233,11 +2260,17 @@ class PromptService:
|
||||
"end_index", "target_chapter_count", "scene_instruction", "scene_field"]
|
||||
},
|
||||
"MCP_TOOL_TEST": {
|
||||
"name": "MCP工具测试",
|
||||
"name": "MCP工具测试(用户提示词)",
|
||||
"category": "MCP测试",
|
||||
"description": "用于测试MCP插件功能",
|
||||
"description": "用于测试MCP插件功能的用户提示词",
|
||||
"parameters": ["plugin_name"]
|
||||
},
|
||||
"MCP_TOOL_TEST_SYSTEM": {
|
||||
"name": "MCP工具测试(系统提示词)",
|
||||
"category": "MCP测试",
|
||||
"description": "用于测试MCP插件功能的系统提示词",
|
||||
"parameters": []
|
||||
},
|
||||
"MCP_WORLD_BUILDING_PLANNING": {
|
||||
"name": "MCP世界观规划",
|
||||
"category": "MCP增强",
|
||||
|
||||
Reference in New Issue
Block a user