feat: add system environment information retrieval to LocalAgent
- Introduced a new method to gather and display system environment details, including OS, Python version, architecture, home directory, workspace path, and current directory. - Updated system prompts in chat messages to include user environment information, enhancing the context for responses. - Improved guidance prompts to provide tailored instructions based on the user's operating system.
This commit is contained in:
59
app/agent.py
59
app/agent.py
@@ -4,6 +4,8 @@ LocalAgent 主应用类
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
import platform
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from tkinter import messagebox
|
from tkinter import messagebox
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -223,11 +225,50 @@ class LocalAgentApp:
|
|||||||
|
|
||||||
self.chat_view.set_input_enabled(True)
|
self.chat_view.set_input_enabled(True)
|
||||||
|
|
||||||
|
def _get_system_environment_info(self) -> str:
|
||||||
|
"""获取当前系统运行环境信息"""
|
||||||
|
info_parts = []
|
||||||
|
|
||||||
|
# 操作系统信息
|
||||||
|
os_name = platform.system()
|
||||||
|
os_version = platform.version()
|
||||||
|
os_release = platform.release()
|
||||||
|
info_parts.append(f"操作系统: {os_name} {os_release} ({os_version})")
|
||||||
|
|
||||||
|
# Python 版本
|
||||||
|
python_version = sys.version.split()[0]
|
||||||
|
info_parts.append(f"Python版本: {python_version}")
|
||||||
|
|
||||||
|
# 系统架构
|
||||||
|
arch = platform.machine()
|
||||||
|
info_parts.append(f"系统架构: {arch}")
|
||||||
|
|
||||||
|
# 用户主目录
|
||||||
|
home_dir = Path.home()
|
||||||
|
info_parts.append(f"用户主目录: {home_dir}")
|
||||||
|
|
||||||
|
# 工作空间路径
|
||||||
|
info_parts.append(f"工作空间: {self.workspace}")
|
||||||
|
|
||||||
|
# 当前工作目录
|
||||||
|
cwd = os.getcwd()
|
||||||
|
info_parts.append(f"当前目录: {cwd}")
|
||||||
|
|
||||||
|
return "\n".join(info_parts)
|
||||||
|
|
||||||
def _build_chat_messages(self) -> List[Dict[str, str]]:
|
def _build_chat_messages(self) -> List[Dict[str, str]]:
|
||||||
"""构建带上下文的消息列表"""
|
"""构建带上下文的消息列表"""
|
||||||
system_prompt = """你是一个智能助手,可以回答各种问题。请用中文回答。
|
env_info = self._get_system_environment_info()
|
||||||
|
|
||||||
如果用户的问题涉及之前的对话内容,请结合上下文进行回答。"""
|
system_prompt = f"""你是一个智能助手,可以回答各种问题。请用中文回答。
|
||||||
|
|
||||||
|
## 用户运行环境
|
||||||
|
{env_info}
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
- 如果用户的问题涉及之前的对话内容,请结合上下文进行回答
|
||||||
|
- 根据用户的操作系统和环境,给出适合其系统的建议和解答
|
||||||
|
- 如果涉及文件路径,请使用适合用户操作系统的路径格式"""
|
||||||
|
|
||||||
messages = [{"role": "system", "content": system_prompt}]
|
messages = [{"role": "system", "content": system_prompt}]
|
||||||
messages.extend(self._chat_context)
|
messages.extend(self._chat_context)
|
||||||
@@ -263,15 +304,23 @@ class LocalAgentApp:
|
|||||||
client = get_client()
|
client = get_client()
|
||||||
model = os.getenv("CHAT_MODEL_NAME") or os.getenv("GENERATION_MODEL_NAME")
|
model = os.getenv("CHAT_MODEL_NAME") or os.getenv("GENERATION_MODEL_NAME")
|
||||||
|
|
||||||
# 构建专门的操作指导 Prompt
|
# 获取环境信息
|
||||||
system_prompt = """你是一个操作指导助手。用户询问的是一个无法通过本地Python代码完成的任务(如软件设置、系统配置、GUI操作等)。
|
env_info = self._get_system_environment_info()
|
||||||
|
|
||||||
|
# 构建专门的操作指导 Prompt
|
||||||
|
system_prompt = f"""你是一个操作指导助手。用户询问的是一个无法通过本地Python代码完成的任务(如软件设置、系统配置、GUI操作等)。
|
||||||
|
|
||||||
|
## 用户运行环境
|
||||||
|
{env_info}
|
||||||
|
|
||||||
|
## 回答要求
|
||||||
请提供清晰、详细的操作步骤指导:
|
请提供清晰、详细的操作步骤指导:
|
||||||
1. 使用编号列表,步骤清晰
|
1. 使用编号列表,步骤清晰
|
||||||
2. 如果有多种方法,列出最常用的1-2种
|
2. 如果有多种方法,列出最常用的1-2种
|
||||||
3. 如果涉及不同操作系统/软件版本,说明适用范围
|
3. **重要**: 根据用户的操作系统({platform.system()})给出针对性的操作指导
|
||||||
4. 可以适当配合说明截图位置或界面元素名称
|
4. 可以适当配合说明截图位置或界面元素名称
|
||||||
5. 如果操作有风险,给出提醒
|
5. 如果操作有风险,给出提醒
|
||||||
|
6. 如果涉及文件路径,使用适合用户系统的路径格式
|
||||||
|
|
||||||
用中文回答。"""
|
用中文回答。"""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user