Hermes Agent与Harness Engineering:构建生产级AI智能体的完整指南
在 AI Agent 开发领域Hermes Agent 和 Harness Engineering 正在成为构建可靠、可控智能应用的关键技术组合。很多开发者第一次接触这两个概念时容易陷入“又要学新框架”的焦虑但实际上它们解决的是工程实践中更本质的问题如何让大语言模型在真实业务场景中稳定执行复杂任务而不仅仅是生成文本。Hermes Agent 提供了一个轻量级但功能完整的 Agent 框架特别适合需要长期运行、状态保持和多步骤任务协调的场景。Harness Engineering 则是一套工程实践方法论关注如何通过提示工程、上下文管理和流程控制来提升 Agent 的可靠性和可预测性。两者结合能够帮助开发者从“演示级”的 AI 应用走向“生产级”的智能系统。本文将从零开始带你完成 Hermes Agent 的环境搭建、基础配置、核心功能实现并通过一个完整的项目实战展示如何应用 Harness Engineering 原则来构建可靠的 AI Agent。无论你是刚开始接触 AI Agent 开发还是已经有一定经验但希望提升工程化能力都能从中获得实用的技术指导。1. 理解 Hermes Agent 与 Harness Engineering 的核心价值1.1 Hermes Agent 解决了什么问题传统的大语言模型调用往往是一次性的问答或文本生成但在真实业务场景中我们经常需要模型完成多步骤的复杂任务。比如数据分析任务可能需要先查询数据库、再进行计算、最后生成报告客服场景可能需要先理解用户问题、查询知识库、然后给出解决方案。Hermes Agent 的核心价值在于提供了任务分解、状态管理和工具调用的框架能力。它允许开发者定义可复用的工具函数如数据库查询、API 调用、文件操作将复杂任务自动分解为可执行的步骤序列在长时间运行的任务中保持对话上下文和任务状态集成多种大语言模型后端并统一接口与一些重量级的 Agent 框架相比Hermes 的设计更加轻量学习曲线相对平缓适合中小型项目的快速落地。1.2 Harness Engineering 的工程化思维Harness Engineering 这个词可能听起来比较学术但其核心理念很实用通过系统化的工程方法让 AI 行为更加可控和可靠。它包含三个关键层面提示工程Prompt Engineering不仅仅是写提示词而是设计完整的交互协议包括系统角色设定、任务分解指令、输出格式约束等。上下文工程Context Engineering关注如何为模型提供恰到好处的背景信息既不能信息不足导致模型瞎猜也不能信息过载淹没关键指令。控制工程Control Engineering确保 Agent 的行为在预设边界内包括错误处理、重试机制、超时控制和安全检查。在实际项目中这三个层面需要协同设计而不是孤立优化。后文的具体实现会展示如何将这些原则落地。1.3 技术选型考量为什么选择这个组合对于大多数从零开始构建 AI Agent 的团队Hermes Agent Harness Engineering 组合提供了良好的平衡点学习成本可控API 设计直观文档结构清晰不需要深入理解复杂的分布式系统原理灵活性足够支持自定义工具、可插拔的模型后端、灵活的任务流程定义社区生态活跃有持续的更新和问题解答资源生产就绪度提供了基本的监控、日志和错误处理机制如果项目已经在使用其他大型框架如 LangChain迁移到 Hermes 可能需要评估收益成本比。但对于新项目特别是资源有限的小团队这个组合的启动效率优势明显。2. 环境准备与 Hermes Agent 安装部署2.1 系统环境要求Hermes Agent 支持主流的操作系统环境但不同环境下的安装细节有所差异。以下是详细的环境要求环境组件最低要求推荐版本备注Python3.83.93.12 需确认依赖兼容性操作系统Windows 10 / macOS 10.15 / Ubuntu 18.04最新稳定版服务器环境推荐 Ubuntu 20.04内存4GB8GB运行大模型需要更多内存存储空间1GB10GB模型文件占用较大空间网络能访问 PyPI 和模型仓库稳定网络连接部分模型需要下载权重对于开发环境建议使用虚拟环境隔离项目依赖避免与系统Python环境冲突。2.2 安装步骤详解创建并激活虚拟环境# 创建项目目录 mkdir hermes-agent-project cd hermes-agent-project # 创建虚拟环境选择一种方式 # 方式一使用 venvPython 3.3 内置 python -m venv hermes_env # 方式二使用 conda如果已安装 conda create -n hermes_env python3.9 conda activate hermes_env # 激活虚拟环境 # Windows hermes_env\Scripts\activate # Linux/macOS source hermes_env/bin/activate安装 Hermes Agent 核心包# 基础安装 pip install hermes-agent # 安装扩展功能根据项目需要选择 pip install hermes-agent[web] # Web 界面支持 pip install hermes-agent[redis] # Redis 后端支持 pip install hermes-agent[all] # 所有扩展功能验证安装是否成功# 创建测试脚本 test_install.py import hermes_agent print(fHermes Agent 版本: {hermes_agent.__version__}) # 检查核心组件 from hermes_agent import Agent, Tool print(核心组件导入成功) # 运行测试 python test_install.py预期输出应该显示版本号和无报错信息。如果遇到权限问题可以尝试使用pip install --user或调整虚拟环境权限。2.3 模型后端配置Hermes Agent 支持多种大语言模型后端你需要根据实际可用的模型服务进行配置。配置 OpenAI 兼容的 API# config.py - 模型配置示例 import os # 设置环境变量推荐方式 os.environ[OPENAI_API_KEY] your-api-key-here os.environ[OPENAI_BASE_URL] https://api.openai.com/v1 # 或自定义端点 # 或者使用本地模型如 Ollama os.environ[OLLAMA_HOST] http://localhost:11434测试模型连接# test_model.py - 测试模型连接 from hermes_agent import HermesAgent # 简单测试 agent HermesAgent( modelgpt-3.5-turbo, # 或本地模型名称 temperature0.1 ) try: response agent.run(请用一句话介绍你自己) print(模型响应:, response) print(模型连接测试成功) except Exception as e: print(f连接失败: {e})2.4 常见安装问题排查安装过程中可能会遇到各种环境问题以下是典型问题的解决方案依赖冲突问题# 如果出现依赖冲突可以尝试强制安装指定版本 pip install hermes-agent --force-reinstall # 或者先清理冲突包 pip freeze | grep conflict-package-name | xargs pip uninstall -y网络超时问题# 使用国内镜像源加速下载 pip install hermes-agent -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 或者设置永久镜像 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/权限问题Linux/macOS# 如果遇到权限错误可以尝试用户安装 pip install --user hermes-agent # 或者修改虚拟环境权限 chmod -R 755 hermes_env完成以上步骤后你的基础开发环境就已经准备好了。接下来进入核心功能的学习和实践。3. Hermes Agent 核心功能与基础用法3.1 Agent 初始化与基本配置Hermes Agent 的核心是HermesAgent类正确的初始化配置是后续所有功能的基础。基础初始化示例from hermes_agent import HermesAgent import os # 最基本的初始化 agent HermesAgent( modelgpt-3.5-turbo, # 使用的模型名称 api_keyos.getenv(OPENAI_API_KEY), # API 密钥 temperature0.3, # 创造性控制0-1 max_tokens1000, # 最大输出长度 timeout30 # 请求超时时间 ) # 高级配置示例 advanced_agent HermesAgent( modelgpt-4, temperature0.1, # 低温度值让输出更确定性 top_p0.9, # 核采样参数 frequency_penalty0.1, # 减少重复用词 presence_penalty0.1, # 鼓励新话题引入 stop[\n\n, ###], # 停止序列 request_timeout60 # 请求超时 )配置参数详解参数类型默认值说明modelstr必填模型标识符如 gpt-3.5-turbotemperaturefloat0.7控制随机性0-1范围值越低输出越确定max_tokensint1000生成的最大token数量timeoutint30网络请求超时时间秒top_pfloat1.0核采样参数0-1范围frequency_penaltyfloat0.0频率惩罚减少重复用词presence_penaltyfloat0.0存在惩罚鼓励新内容3.2 工具Tools的定义与使用工具是 Hermes Agent 的核心扩展机制允许 Agent 调用外部函数或API来完成具体任务。基础工具定义from hermes_agent import Tool from datetime import datetime # 定义一个获取当前时间的工具 Tool def get_current_time(): 获取当前的日期和时间 return datetime.now().strftime(%Y-%m-%d %H:%M:%S) # 定义带参数的工具 Tool def calculate_bmi(weight: float, height: float) - dict: 计算身体质量指数(BMI) Args: weight: 体重千克 height: 身高米 Returns: dict: 包含BMI值和分类的字典 bmi weight / (height ** 2) if bmi 18.5: category 偏瘦 elif bmi 24: category 正常 elif bmi 28: category 超重 else: category 肥胖 return {bmi: round(bmi, 2), category: category} # 注册工具到Agent agent.register_tool(get_current_time) agent.register_tool(calculate_bmi)工具使用示例# 让Agent使用工具解决问题 result agent.run(请计算一个体重70公斤、身高1.75米的人的BMI指数并告诉我当前时间) print(Agent响应:, result) # 预期输出会包含BMI计算结果和当前时间信息3.3 对话管理与上下文保持Hermes Agent 支持多轮对话能够保持上下文连贯性这是构建复杂交互应用的基础。基础对话管理# 初始化带记忆的Agent from hermes_agent import HermesAgent agent HermesAgent( modelgpt-3.5-turbo, memory_enabledTrue # 启用对话记忆 ) # 多轮对话示例 conversation [ 你好我是小明喜欢编程和篮球, 你记得我的兴趣爱好是什么吗, 根据我的爱好推荐一些周末活动 ] for i, message in enumerate(conversation): print(f第{i1}轮对话:) print(f用户: {message}) response agent.run(message) print(fAgent: {response}\n)高级上下文管理在实际项目中我们经常需要更精细的上下文控制# 自定义上下文管理 class ConversationManager: def __init__(self, max_turns10): self.history [] self.max_turns max_turns def add_message(self, role, content): 添加消息到历史记录 self.history.append({role: role, content: content}) # 保持历史记录长度 if len(self.history) self.max_turns * 2: # 每轮包含用户和AI两条消息 self.history self.history[-self.max_turns*2:] def get_context(self): 获取当前对话上下文 return self.history.copy() # 使用自定义上下文管理器 manager ConversationManager(max_turns5) agent HermesAgent(modelgpt-3.5-turbo) user_message 请问Python中如何读取文件 manager.add_message(user, user_message) # 将上下文传递给Agent context manager.get_context() response agent.run(user_message, contextcontext) manager.add_message(assistant, response)3.4 任务分解与执行流程Hermes Agent 的核心能力之一是自动将复杂任务分解为可执行的子任务。简单任务分解示例# 定义多个协作工具 Tool def search_weather(city: str) - str: 查询城市天气信息模拟实现 # 实际项目中这里会调用天气API return f{city}今天晴天温度25°C Tool def suggest_activity(weather: str, interest: str) - str: 根据天气和兴趣推荐活动 if 晴天 in weather and 户外 in interest: return 推荐进行户外运动 else: return 推荐室内活动 Tool def plan_schedule(activities: list) - str: 制定时间安排 return f建议安排: { - .join(activities)} # 注册所有工具 tools [search_weather, suggest_activity, plan_schedule] for tool in tools: agent.register_tool(tool) # 复杂任务让Agent自动分解执行 complex_task 我需要规划周末活动。首先查询北京的天气然后根据我喜欢户外运动的特点推荐具体活动 最后制定一个时间安排表。 result agent.run(complex_task) print(任务执行结果:, result)通过这个基础功能的学习你已经掌握了 Hermes Agent 的核心用法。接下来我们将进入 Harness Engineering 的实践部分学习如何让这些功能更加可靠和可控。4. Harness Engineering 实战应用4.1 设计有效的系统提示词系统提示词是 Harness Engineering 中最关键的部分它决定了 Agent 的行为基调和能力边界。基础系统提示词设计# 基础系统角色设定 base_system_prompt 你是一个专业的助理具有以下特点 1. 回答准确、简洁、有用 2. 如果信息不足会主动询问澄清 3. 对于不确定的内容会明确说明 4. 遵守职业道德和法律法规 请根据以上原则与用户对话。 # 专业领域特化提示词 finance_agent_prompt 你是一个金融分析专家专注于股票市场、经济数据和投资建议。 能力范围 - 分析财务数据和市场趋势 - 解释经济指标和术语 - 提供一般性投资教育信息 限制 - 不提供具体的投资建议 - 不预测个股价格走势 - 不讨论内幕信息或非法内容 回答风格专业、严谨、基于数据。 # 初始化专业Agent finance_agent HermesAgent( modelgpt-3.5-turbo, system_promptfinance_agent_prompt )动态提示词策略在实际应用中提示词可能需要根据上下文动态调整class AdaptivePromptManager: def __init__(self): self.base_prompt 你是一个有帮助的AI助理。 self.context_rules { technical: 请用技术专家的角度回答注重准确性和细节。, simple: 请用简单易懂的语言解释适合初学者理解。, detailed: 请提供详细的步骤说明和背景知识。 } def get_prompt(self, context_typedefault, user_levelbeginner): 根据上下文和用户水平生成提示词 prompt self.base_prompt if context_type in self.context_rules: prompt self.context_rules[context_type] if user_level beginner: prompt 用户是初学者请用简单语言避免专业术语。 elif user_level expert: prompt 用户是专家可以使用专业术语和深入分析。 return prompt # 使用动态提示词 prompt_manager AdaptivePromptManager() agent HermesAgent(modelgpt-3.5-turbo) # 根据场景调整提示词 technical_prompt prompt_manager.get_prompt(technical, expert) agent.system_prompt technical_prompt4.2 上下文工程的最佳实践上下文管理是确保 Agent 理解复杂任务的关键既要提供足够信息又要避免信息过载。分层上下文管理class LayeredContextManager: def __init__(self, max_token_limit4000): self.max_token_limit max_token_limit self.essential_context [] # 必需上下文 self.recent_context [] # 近期对话 self.background_context [] # 背景信息 def add_essential(self, content): 添加必需上下文如用户个人信息 self.essential_context.append(content) def add_recent(self, role, content): 添加近期对话记录 self.recent_context.append({role: role, content: content}) # 保持最近10轮对话 if len(self.recent_context) 20: # 10轮对话用户AI各10条 self.recent_context self.recent_context[-20:] def compile_context(self): 编译完整上下文考虑token限制 # 必需上下文始终包含 full_context self.essential_context.copy() # 添加近期对话从新到旧 recent_to_include [] current_tokens sum(len(str(item)) for item in full_context) // 4 # 粗略估算 for message in reversed(self.recent_context): message_tokens len(message[content]) // 4 if current_tokens message_tokens self.max_token_limit: break recent_to_include.append(message) current_tokens message_tokens # 将近期对话按正确顺序添加 full_context.extend(reversed(recent_to_include)) return full_context # 使用分层上下文管理 context_manager LayeredContextManager() context_manager.add_essential(用户是软件工程师擅长Python和Java。) agent HermesAgent(modelgpt-3.5-turbo) # 在每次对话时使用优化后的上下文 user_input 帮我优化这段代码 context_manager.add_recent(user, user_input) context context_manager.compile_context() response agent.run(user_input, contextcontext) context_manager.add_recent(assistant, response)4.3 控制工程错误处理与重试机制生产环境中的 Agent 必须能够优雅处理各种异常情况。完整的错误处理框架import time from typing import Any, Callable class RobustAgentController: def __init__(self, agent: HermesAgent, max_retries3, retry_delay1): self.agent agent self.max_retries max_retries self.retry_delay retry_delay def execute_with_retry(self, task: str, context: list None) - dict: 带重试机制的任务执行 Returns: dict: 包含执行结果和元数据 attempts 0 last_error None while attempts self.max_retries: try: start_time time.time() # 执行任务 result self.agent.run(task, contextcontext) execution_time time.time() - start_time return { success: True, result: result, attempts: attempts 1, execution_time: execution_time, error: None } except Exception as e: last_error e attempts 1 print(f第{attempts}次尝试失败: {e}) if attempts self.max_retries: print(f等待{self.retry_delay}秒后重试...) time.sleep(self.retry_delay) else: print(达到最大重试次数任务失败) return { success: False, result: None, attempts: attempts, execution_time: 0, error: str(last_error) } def safe_tool_execution(self, tool_func: Callable, *args, **kwargs) - Any: 安全执行工具函数 try: return tool_func(*args, **kwargs) except Exception as e: error_msg f工具执行失败: {e} print(error_msg) # 可以在这里添加日志记录、监控上报等 return error_msg # 使用健壮的Agent控制器 basic_agent HermesAgent(modelgpt-3.5-turbo) controller RobustAgentController(basic_agent, max_retries3) result controller.execute_with_retry(请分析一下当前AI行业的发展趋势) if result[success]: print(任务成功:, result[result]) else: print(任务失败:, result[error])4.4 监控与评估体系要确保 Agent 在生产环境中可靠运行需要建立完整的监控评估体系。基础监控指标收集import time from datetime import datetime from typing import Dict, List class AgentMonitor: def __init__(self): self.metrics { total_requests: 0, successful_requests: 0, failed_requests: 0, average_response_time: 0, total_tokens_used: 0 } self.request_log: List[Dict] [] def record_request(self, prompt: str, response: str None, error: str None, tokens_used: int 0, response_time: float 0): 记录单次请求的详细信息 self.metrics[total_requests] 1 self.metrics[total_tokens_used] tokens_used log_entry { timestamp: datetime.now().isoformat(), prompt: prompt[:500], # 限制日志长度 response: response[:500] if response else None, error: error, tokens_used: tokens_used, response_time: response_time } self.request_log.append(log_entry) if error: self.metrics[failed_requests] 1 else: self.metrics[successful_requests] 1 # 更新平均响应时间 total_time self.metrics[average_response_time] * (self.metrics[total_requests] - 1) self.metrics[average_response_time] (total_time response_time) / self.metrics[total_requests] def get_health_report(self) - Dict: 获取系统健康报告 success_rate (self.metrics[successful_requests] / self.metrics[total_requests] * 100 if self.metrics[total_requests] 0 else 0) return { success_rate: f{success_rate:.1f}%, average_response_time: f{self.metrics[average_response_time]:.2f}s, total_tokens_used: self.metrics[total_tokens_used], requests_per_minute: self._calculate_rpm() } def _calculate_rpm(self) - float: 计算每分钟请求数 if len(self.request_log) 2: return 0 first_time datetime.fromisoformat(self.request_log[0][timestamp]) last_time datetime.fromisoformat(self.request_log[-1][timestamp]) time_diff (last_time - first_time).total_seconds() / 60 # 转换为分钟 return len(self.request_log) / time_diff if time_diff 0 else 0 # 集成监控到Agent使用中 monitor AgentMonitor() agent HermesAgent(modelgpt-3.5-turbo) def monitored_agent_run(prompt: str) - str: start_time time.time() try: response agent.run(prompt) response_time time.time() - start_time # 估算token使用实际项目应该从API响应中获取 estimated_tokens len(prompt) // 4 len(response) // 4 monitor.record_request( promptprompt, responseresponse, tokens_usedestimated_tokens, response_timeresponse_time ) return response except Exception as e: response_time time.time() - start_time monitor.record_request( promptprompt, errorstr(e), tokens_usedlen(prompt) // 4, response_timeresponse_time ) raise e # 使用带监控的Agent response monitored_agent_run(请介绍机器学习的基本概念) print(响应:, response) print(系统状态:, monitor.get_health_report())5. 完整项目实战构建智能技术问答系统现在我们将综合运用前面学到的所有知识构建一个完整的智能技术问答系统。这个系统能够回答编程相关问题查询文档并给出代码示例。5.1 项目需求分析与设计系统需求支持多种编程语言的技术问答能够查询官方文档和常见问题提供可运行的代码示例保持对话上下文连贯性具备错误处理和降级方案系统架构设计用户界面 → 问答Agent → 工具集文档查询、代码验证 ↓ 上下文管理 → 监控系统 → 日志记录5.2 核心工具开发首先开发系统需要的核心工具函数。from hermes_agent import Tool, HermesAgent import requests import re class TechQASystem: def __init__(self): self.agent HermesAgent( modelgpt-3.5-turbo, temperature0.1, max_tokens1500 ) self.setup_tools() self.setup_system_prompt() def setup_system_prompt(self): 设置专业的技术问答系统提示词 system_prompt 你是一个资深的技术专家专门回答编程和技术问题。 你的能力包括 1. 准确回答编程语言相关问题Python、Java、JavaScript等 2. 提供实用的代码示例和最佳实践 3. 解释复杂的技术概念 4. 帮助调试和优化代码 重要原则 - 代码示例必须准确、可运行 - 对于不确定的内容要明确说明 - 遵循各语言的最新标准和规范 - 注重代码的安全性和性能 请用专业但易懂的方式帮助用户。 self.agent.system_prompt system_prompt def setup_tools(self): 注册所有工具函数 Tool def search_official_docs(language: str, topic: str) - str: 搜索编程语言官方文档模拟实现 # 实际项目中这里会集成真实文档API docs_data { python: { list: Python列表是可变序列支持索引、切片等操作..., dict: 字典是键值对集合使用花括号{}创建..., class: 类定义使用class关键字支持继承和多态... }, java: { array: Java数组是固定长度的同类元素集合..., string: String类是不可变的字符序列..., thread: 线程可以通过继承Thread类或实现Runnable接口创建... } } if language.lower() in docs_data: lang_data docs_data[language.lower()] if topic.lower() in lang_data: return f{language} {topic} 官方文档:\n{lang_data[topic.lower()]} else: return f未找到{language}中关于{topic}的文档 else: return f暂不支持{language}语言文档查询 Tool def validate_code_syntax(code: str, language: str) - dict: 验证代码语法模拟实现 # 实际项目中可以集成真实语法检查器 basic_checks { python: [ (rprint\s*\(, print函数调用正确), (rdef\s\w\s*\(, 函数定义语法正确), (rclass\s\w, 类定义语法正确) ], java: [ (rpublic\sclass, 类定义语法正确), (rSystem\.out\.print, 输出语句语法正确), (rvoid\s\w\s*\(, 方法定义语法正确) ] } results [] if language.lower() in basic_checks: for pattern, message in basic_checks[language.lower()]: if re.search(pattern, code): results.append(message) return { language: language, code_preview: code[:100] ... if len(code) 100 else code, basic_checks: results, has_obvious_errors: len(results) 0 and len(code) 10 } Tool def get_code_example(language: str, concept: str) - str: 获取编程概念代码示例 examples { python: { function: python\ndef greet(name):\n return f\Hello, {name}!\\n\nprint(greet(\Alice\)) # 输出: Hello, Alice!\n, class: python\nclass Dog:\n def __init__(self, name):\n self.name name\n \n def bark(self):\n return f\{self.name} says woof!\\n\nmy_dog Dog(\Buddy\)\nprint(my_dog.bark()) # 输出: Buddy says woof!\n }, java: { hello: java\npublic class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\Hello, World!\);\n }\n}\n, class: java\npublic class Car {\n private String brand;\n \n public Car(String brand) {\n this.brand brand;\n }\n \n public String getBrand() {\n return brand;\n }\n}\n } } if language in examples and concept in examples[language]: return examples[language][concept] else: return f暂无{language}中{concept}的示例代码 # 注册所有工具 tools [search_official_docs, validate_code_syntax, get_code_example] for tool in tools: self.agent.register_tool(tool) def ask_question(self, question: str, context: list None) - str: 提问并获取答案 try: response self.agent.run(question, contextcontext) return response except Exception as e: return f抱歉回答问题时出现错误: {str(e)} def get_supported_languages(self) - list: 获取支持的语言列表 return [Python, Java, JavaScript, C, Go] # 使用技术问答系统 qa_system TechQASystem() # 测试问答功能 questions [ Python中如何定义和使用类, 请给我一个Java的Hello World示例, 解释一下JavaScript的闭包概念 ] for i, question in enumerate(questions): print(f\n问题 {i1}: {question}) answer qa_system.ask_question(question) print(f答案: {answer})5.3 系统集成与测试现在将各个模块集成在一起进行完整的系统测试。class IntegratedTechQA: def __init__(self): self.qa_system TechQASystem() self.context_manager LayeredContextManager() self.monitor AgentMonitor() self.conversation_history [] def process_query(self, user_query: str, user_context: str ) - dict: 处理用户查询的完整流程 start_time time.time() # 添加上下文信息 if user_context: self.context_manager.add_essential(f用户背景: {user_context}) # 构建完整上下文 context self.context_manager.compile_context() try: # 执行问答 response self.qa_system.ask_question(user_query, contextcontext) # 记录对话历史 self.conversation_history.append({ query: user_query, response: response, timestamp: datetime.now().isoformat() }) # 更新上下文 self.context_manager.add_recent(user, user_query) self.context_manager.add_recent(assistant, response) execution_time time.time() - start_time # 记录监控数据 self.monitor.record_request( promptuser_query, responseresponse, tokens_usedlen(user_query response) // 4, response_timeexecution_time ) return { success: True, response: response, execution_time: execution_time, supported_languages: self.qa_system.get_supported_languages() } except Exception as e: execution_time time.time() - start_time error_msg f系统处理错误: {str(e)} self.monitor.record_request( promptuser_query, errorerror_msg, tokens_usedlen(user_query) // 4, response_timeexecution_time ) return { success: False, error: error_msg, execution_time: execution_time } def get_system_status(self) - dict: 获取系统状态报告 health_report self.monitor.get_health_report() return { health: health_report, total_conversations: len(self.conversation_history), active_contexts: len(self.context_manager.essential_context) len(self.context_manager.recent_context),

相关新闻