news 2026/8/29 10:39:58

智能产品里上下文和工具如何分工

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
智能产品里上下文和工具如何分工

智能产品里上下文和工具如何分工

智能文档、设计软件和代码编辑器都需要让模型理解当前工作区,又不能把整个文档、画布或仓库每轮都塞进提示词。判断分工时可以用一个简单标准:帮助模型理解当前任务的信息进入上下文;需要读取最新状态、做确定性计算或产生副作用的动作交给工具。两者之间还要有权限和数据校验,不能只靠模型自觉。


1. 上下文保存决策所需信息

上下文通常包含系统规则、当前请求、用户主动选择的对象、近期已确认决定和完成任务所需的少量引用材料。每段内容应标明来源与有效期。页面导航、文件修改或选择变化后,旧快照要失效;长期偏好则单独保存,经用户确认后再按需注入。

系统规则与外部内容不能混成一段。文档、网页和工具结果都属于不可信数据,即使其中写着“忽略规则”也不应获得指令优先级。当前选择也可能含有敏感信息,采集前要按产品权限过滤,并让用户知道模型正在使用什么。

历史不是越多越好。摘要要保留尚未解决的问题、已经执行的副作用和关键约束,而不是只压缩措辞。对“准备删除”和“已经删除”这类状态,应用应保存结构化记录,不能让模型从自然语言摘要里猜。

2. 工具读取真相并执行动作

画布坐标、文件内容、字数、编译结果和数据库状态会变化,适合通过工具按需读取。移动节点、替换文本、保存文件和发起外部请求会改变状态,也必须由工具执行。模型负责提出参数,工具层负责 Schema 校验、权限、目标解析、超时、幂等和审计。

工具不必切得过碎。若完成一次用户动作必然需要连续读取多个内部字段,可以由一个业务工具在程序内完成,减少模型来回协调。反过来,一个“执行任意命令”或“修改任意对象”的万能工具权限太宽,也难以准确确认影响。工具粒度应围绕可理解、可授权的业务动作。


3. 调度器要管理预算与循环

调度器先保留不可丢的系统规则和当前请求,再根据任务选择上下文。预算应按真实 Token 计数、模型窗口和预留输出计算,不能用固定对话轮数代替。工具调用要有单轮上限与总时间预算;连续得到同一错误时应停止,并把缺少的信息告诉用户。


4. TypeScript 调度模块示例

下面的代码展示了工具注册、消息裁剪和调用分发的基本结构。它是一个原型,需要结合产品权限继续补全。

import { ChatCompletionMessageParam, ChatCompletionTool } from 'openai/resources/chat'; export interface ToolDefinition { name: string; description: string; parameters: Record<string, any>; execute: (args: Record<string, any>) => Promise<any>; } export class AIContextAndToolManager { private tools: Map<string, ToolDefinition> = new Map(); private maxContextTokens: number; constructor(maxContextTokens: number = 3000) { this.maxContextTokens = maxContextTokens; } // 注册确定性工具 public registerTool(tool: ToolDefinition) { this.tools.set(tool.name, tool); } // 导出 OpenAi 适配的 Tool 描述符 public getOpenAITools(): ChatCompletionTool[] { return Array.from(this.tools.values()).map((tool) => ({ type: 'function', function: { name: tool.name, description: tool.description, parameters: tool.parameters, }, })); } // 上下文预算裁剪(模拟按 token 计数裁剪历史) public pruneContext( systemPrompt: string, historyMessages: ChatCompletionMessageParam[], currentSelectionState: string ): ChatCompletionMessageParam[] { const systemMsg: ChatCompletionMessageParam = { role: 'system', content: `${systemPrompt}\n\n[当前视口状态摘要]: ${currentSelectionState}`, }; // 仅保留最近 3 轮对话,避免长上下文带来的注意力分散与成本拉升 const recentHistory = historyMessages.slice(-6); return [systemMsg, ...recentHistory]; } // Tool Call 执行器与分发适配 public async dispatchToolCall(toolName: string, rawArgs: string): Promise<string> { const tool = this.tools.get(toolName); if (!tool) { throw new Error(`未注册的 Tool 名称: ${toolName}`); } try { const parsedArgs = JSON.parse(rawArgs); const result = await tool.execute(parsedArgs); return JSON.stringify({ status: 'SUCCESS', data: result }); } catch (err: any) { return JSON.stringify({ status: 'ERROR', message: err.message || 'Tool 执行失败' }); } } }

5. 示例代码的缺口

类中保存了maxContextTokenspruneContext却没有使用它,只截取最后六条消息。消息长短差异很大,这不构成 Token 预算;系统提示和当前选择拼接后也可能单独超限。当前选择属于外部数据,直接拼进 system content 会模糊指令与数据边界,适合改为带明确标签的用户上下文消息,并先过滤敏感内容。

工具参数与结果都使用anyJSON.parse后没有按parameters校验,也没有权限、超时、取消和调用次数限制。execute抛出的错误文本可能含内部细节,直接返回模型前应映射为安全的错误类型。结果还要限制大小并处理无法 JSON 序列化的对象。工具名存在于 Map 只证明已注册,不证明当前用户可以调用。

评估分工效果时,用产品自己的任务集比较:回答是否引用了正确上下文,修改是否命中正确对象,工具失败后能否停止,延迟和 Token 分别花在哪一步。没有可复查实验时,不给出精确的成本下降或准确率数字。


6. 落地时逐项确认

  1. 确定性计算进入程序:尺寸、计数、语法解析和对象定位由代码执行,模型使用结果做语义判断。
  2. 工具输入输出有 Schema:参数校验后再执行,返回最少必要字段,并标明截断、版本和错误类型。
  3. 副作用有权限与确认:读取和写入分开授权,高风险修改先展示准确目标与预览。
  4. 循环有停止条件:总步骤、总时间和重复错误都有上限,停止后保留已完成状态,不自动无限重试。
  5. 上下文按任务选择:Focus 或选择可以提示相关范围,但 Hover 这类瞬时行为不应自动发送敏感内容,采集需符合用户预期。

上下文与工具不是此消彼长的两个桶。上下文负责让模型知道正在解决什么,工具负责提供最新事实和受控行动,调度器负责预算与停止。责任分开后,错误也更容易定位:材料选错、模型判断错,还是工具执行边界没有守住。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 10:39:27

单片机无线粮仓监控系统设计:从传感器到云端的物联网实践

简介&#xff1a;本资源是一套面向电子类专业学生与嵌入式初学者的单片机实践项目&#xff0c;聚焦粮仓环境智能监控这一典型农业物联网应用场景&#xff0c;解决传统粮仓温湿度监测依赖人工、响应滞后、缺乏远程干预的问题。资源包含完整硬件设计与软件实现&#xff1a;含2块独…

作者头像 李华
网站建设 2026/8/29 10:37:46

智能美术资产的上下文与工具分工

智能美术资产的上下文与工具分工不少方案在演示环境里显得顺畅&#xff0c;进入多人协作或长期运行后才暴露问题。“智能美术资产的上下文与工具分工”关注的正是这段落差。对软件工程交付链路而言&#xff0c;可维护的实现不靠一句“已经处理异常”&#xff0c;而靠清楚的触发…

作者头像 李华
网站建设 2026/8/29 10:36:46

人形机器人金属腿的意志力:结构、算力与部署全解析

人形机器人金属腿上的“纯粹意志力”&#xff1a;从结构、算力到部署落地人形机器人这两年不是停留在实验室演示层面的“概念品”&#xff0c;而是开始进入实际验证阶段。金属腿、关节电机、传感器、端侧计算芯片&#xff0c;加上运动控制算法&#xff0c;组成了一套完整的机电…

作者头像 李华
网站建设 2026/8/29 10:35:14

大模型API依赖风险与应对:抽象层、本地模型与混合架构实战

最近有句话在 AI 行业里讨论度很高&#xff1a;“AI Fortunes Are Reviving an Old Debate About Private Power”&#xff0c;大意是 AI 带来的巨额财富&#xff0c;正在重新点燃一场关于“私人权力”的古老争论。很多人看到这种标题&#xff0c;第一反应是“这又是一篇宏观社…

作者头像 李华
网站建设 2026/8/29 10:35:05

张雪峰.skill完整教程:从安装到第一次对话,新手零门槛上手指南

张雪峰.skill完整教程&#xff1a;从安装到第一次对话&#xff0c;新手零门槛上手指南 【免费下载链接】zhangxuefeng-skill 张雪峰.skill — 张雪峰的认知操作系统。高考志愿/考研/职业规划的实战思维框架。由女娲.skill生成。 项目地址: https://gitcode.com/GitHub_Trendi…

作者头像 李华
网站建设 2026/8/29 10:33:10

告别React写视频!HyperFrames纯HTML动画渲染工作流完全指南

告别React写视频&#xff01;HyperFrames纯HTML动画渲染工作流完全指南 【免费下载链接】hyperframes Write HTML. Render video. Built for agents. 项目地址: https://gitcode.com/GitHub_Trending/hy/hyperframes HyperFrames 是一个开源的 HTML 动画渲染框架&#x…

作者头像 李华