feat: update prompts and backend
This commit is contained in:
parent
d0af9755c6
commit
089a3ad0c9
@ -42,6 +42,10 @@ from modules.sub_agent_manager import SubAgentManager
|
|||||||
from modules.webpage_extractor import extract_webpage_content, tavily_extract
|
from modules.webpage_extractor import extract_webpage_content, tavily_extract
|
||||||
from modules.ocr_client import OCRClient
|
from modules.ocr_client import OCRClient
|
||||||
from modules.easter_egg_manager import EasterEggManager
|
from modules.easter_egg_manager import EasterEggManager
|
||||||
|
from modules.personalization_manager import (
|
||||||
|
load_personalization_config,
|
||||||
|
build_personalization_prompt,
|
||||||
|
)
|
||||||
from core.tool_config import TOOL_CATEGORIES
|
from core.tool_config import TOOL_CATEGORIES
|
||||||
from utils.api_client import DeepSeekClient
|
from utils.api_client import DeepSeekClient
|
||||||
from utils.context_manager import ContextManager
|
from utils.context_manager import ContextManager
|
||||||
@ -2165,6 +2169,18 @@ class MainTerminal:
|
|||||||
if thinking_prompt:
|
if thinking_prompt:
|
||||||
messages.append({"role": "system", "content": thinking_prompt})
|
messages.append({"role": "system", "content": thinking_prompt})
|
||||||
|
|
||||||
|
personalization_config = load_personalization_config(self.data_dir)
|
||||||
|
personalization_block = build_personalization_prompt(personalization_config, include_header=False)
|
||||||
|
if personalization_block:
|
||||||
|
personalization_template = self.load_prompt("personalization").strip()
|
||||||
|
if personalization_template and "{personalization_block}" in personalization_template:
|
||||||
|
personalization_text = personalization_template.format(personalization_block=personalization_block)
|
||||||
|
elif personalization_template:
|
||||||
|
personalization_text = f"{personalization_template}\n{personalization_block}"
|
||||||
|
else:
|
||||||
|
personalization_text = personalization_block
|
||||||
|
messages.append({"role": "system", "content": personalization_text})
|
||||||
|
|
||||||
# 添加对话历史(保留完整结构,包括tool_calls和tool消息)
|
# 添加对话历史(保留完整结构,包括tool_calls和tool消息)
|
||||||
conversation = context["conversation"]
|
conversation = context["conversation"]
|
||||||
for idx, conv in enumerate(conversation):
|
for idx, conv in enumerate(conversation):
|
||||||
|
|||||||
@ -16,6 +16,7 @@ from config import (
|
|||||||
USER_SPACE_DIR,
|
USER_SPACE_DIR,
|
||||||
USERS_DB_FILE,
|
USERS_DB_FILE,
|
||||||
)
|
)
|
||||||
|
from modules.personalization_manager import ensure_personalization_config
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -128,6 +129,7 @@ class UserManager:
|
|||||||
# 初始化数据子目录
|
# 初始化数据子目录
|
||||||
(data_dir / "conversations").mkdir(parents=True, exist_ok=True)
|
(data_dir / "conversations").mkdir(parents=True, exist_ok=True)
|
||||||
(data_dir / "backups").mkdir(parents=True, exist_ok=True)
|
(data_dir / "backups").mkdir(parents=True, exist_ok=True)
|
||||||
|
ensure_personalization_config(data_dir)
|
||||||
|
|
||||||
return UserWorkspace(
|
return UserWorkspace(
|
||||||
username=username,
|
username=username,
|
||||||
|
|||||||
@ -257,3 +257,5 @@ tree -L 2
|
|||||||
5. **正确执行**:和用户主动确认细节,用户明确告知可以开始任务后,再开始工作流程
|
5. **正确执行**:和用户主动确认细节,用户明确告知可以开始任务后,再开始工作流程
|
||||||
|
|
||||||
记住:你的用户可能不懂技术,你的目标是让他们感觉到"这个助手真好用",而不是"怎么这么复杂"。
|
记住:你的用户可能不懂技术,你的目标是让他们感觉到"这个助手真好用",而不是"怎么这么复杂"。
|
||||||
|
|
||||||
|
如果用户设置了个性化信息,根据用户的个性化需求回答
|
||||||
2
prompts/personalization.txt
Normal file
2
prompts/personalization.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
以下内容为用户提供的个性化设置信息,请务必在整个任务过程中遵循:
|
||||||
|
{personalization_block}
|
||||||
@ -13,6 +13,7 @@
|
|||||||
* 是否需要创建/修改/删除文件、运行终端命令或脚本?
|
* 是否需要创建/修改/删除文件、运行终端命令或脚本?
|
||||||
* 是否需要创建/等待/关闭子智能体?
|
* 是否需要创建/等待/关闭子智能体?
|
||||||
* 是否需要更新主记忆或任务记忆?
|
* 是否需要更新主记忆或任务记忆?
|
||||||
|
* 如果用户开启了个性化模式,要考虑哪些用户要求的必须考虑的点?
|
||||||
|
|
||||||
2. **正式输出阶段**
|
2. **正式输出阶段**
|
||||||
- 直接向用户说明你的计划:描述每一步准备做什么、需要哪些工具或文件。
|
- 直接向用户说明你的计划:描述每一步准备做什么、需要哪些工具或文件。
|
||||||
|
|||||||
@ -46,6 +46,10 @@ from config import (
|
|||||||
)
|
)
|
||||||
from modules.user_manager import UserManager, UserWorkspace
|
from modules.user_manager import UserManager, UserWorkspace
|
||||||
from modules.gui_file_manager import GuiFileManager
|
from modules.gui_file_manager import GuiFileManager
|
||||||
|
from modules.personalization_manager import (
|
||||||
|
load_personalization_config,
|
||||||
|
save_personalization_config,
|
||||||
|
)
|
||||||
|
|
||||||
app = Flask(__name__, static_folder='static')
|
app = Flask(__name__, static_folder='static')
|
||||||
app.config['MAX_CONTENT_LENGTH'] = MAX_UPLOAD_SIZE
|
app.config['MAX_CONTENT_LENGTH'] = MAX_UPLOAD_SIZE
|
||||||
@ -649,6 +653,33 @@ def update_thinking_mode(terminal: WebTerminal, workspace: UserWorkspace, userna
|
|||||||
"message": "切换思考模式时发生异常"
|
"message": "切换思考模式时发生异常"
|
||||||
}), 500
|
}), 500
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/api/personalization', methods=['GET'])
|
||||||
|
@api_login_required
|
||||||
|
@with_terminal
|
||||||
|
def get_personalization_settings(terminal: WebTerminal, workspace: UserWorkspace, username: str):
|
||||||
|
"""获取个性化配置"""
|
||||||
|
try:
|
||||||
|
data = load_personalization_config(workspace.data_dir)
|
||||||
|
return jsonify({"success": True, "data": data})
|
||||||
|
except Exception as exc:
|
||||||
|
return jsonify({"success": False, "error": str(exc)}), 500
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/api/personalization', methods=['POST'])
|
||||||
|
@api_login_required
|
||||||
|
@with_terminal
|
||||||
|
def update_personalization_settings(terminal: WebTerminal, workspace: UserWorkspace, username: str):
|
||||||
|
"""更新个性化配置"""
|
||||||
|
payload = request.get_json() or {}
|
||||||
|
try:
|
||||||
|
config = save_personalization_config(workspace.data_dir, payload)
|
||||||
|
return jsonify({"success": True, "data": config})
|
||||||
|
except ValueError as exc:
|
||||||
|
return jsonify({"success": False, "error": str(exc)}), 400
|
||||||
|
except Exception as exc:
|
||||||
|
return jsonify({"success": False, "error": str(exc)}), 500
|
||||||
|
|
||||||
@app.route('/api/files')
|
@app.route('/api/files')
|
||||||
@api_login_required
|
@api_login_required
|
||||||
@with_terminal
|
@with_terminal
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user