基于opencode实现聊天室项目的一些AI知识
目录
提示词 (Prompt)
提示词工程(Prompt Engineering)
上下文工程(ContextEngineering)
ai提示词
1.1 提示词 (Prompt)
提示词是你发送给⼤语⾔模型的输⼊内容,用来引导模型生成回答。它可以是⼀句话、⼀个问题、⼀段描述,也可以是包含角色设定、背景信息、示例和输出格式要求的复杂文本。在多轮对话中,系统提示和用户消息等共同构成模型的输入上下文。
1.2 提示词工程(Prompt Engineering)
提示词工程是通过系统化地设计、测试和迭代输入指令,来提升大模型输出质量的方法论。它关注如何让模型更准确、稳定地输出符合需求的结果。
关键词是“系统化”和“迭代”。高质量的 Prompt 往往不是一次写成的,而是经过“初始版本→测试→调优→再测试”的循环打磨出来的。
我让大语言模型重新定义了一下:
提示词工程,就是像写后端接口和单元测试一样写发给大模型的指令:先把需求定义成明确的输入/输出契约和验收标准,再用一组测试用例反复跑;发现输出不准、不稳、格式不对,就改指令、加约束、补示例,循环到模型能稳定产出业务需要的结果。
-
系统化 = 不靠灵光一现,靠“接口契约”
-
写清楚:角色、任务、输入、输出格式、字段类型、约束、示例、禁止项。
-
像 C++ 后端写 API 一样:Prompt 不是“随便说一句”,而是给模型的请求协议。
-
Prompt 要版本化,像代码一样管理。
-
-
迭代 = 不是一次写成,而是“测试驱动打磨”
-
初始 Prompt → 准备测试用例 → 跑一批输入 → 记录失败案例 → 调 Prompt/加约束/加示例 → 回归测试。
-
这就像后端的单元测试和 CI:不是“我觉得行”,而是“跑过测试集且稳定才行”。
-
-
后端视角 = 大模型是不可靠的第三方服务
-
Prompt 是第一道契约,但不能只靠 Prompt。
-
后端还要做:JSON Schema 校验、超时重试、降级兜底、日志监控、安全过滤。
-
新手要记住:Prompt 负责“让模型更可能对”,后端工程负责“错了也能兜住”。
-
用 C++ 类比一句话:
Prompt 像函数声明 + 接口文档 + 测试用例;测试集像单元测试/回归测试;迭代调 Prompt 就像跑 CI 修 bug。
所以高质量 Prompt 不是“写”出来的,而是像后端接口一样:定义契约 → 测试 → 调优 → 再测试 → 版本化沉淀 打磨出来的。
1.3 上下文工程(ContextEngineering)
1.3.1 什么是上下文工程
上下⽂⼯程(ContextEngineering)是指围绕⼤语⾔模型(LLM)的任务⽬标,系统性地设计、组 织、筛选和管理模型在⽣成回答时能够获取的上下⽂信息,从⽽提⾼模型输出的准确性、可靠性和任务完成能⼒。 我们可以类⽐为操作系统。LLM就像CPU,⽽它的上下⽂窗⼝就像RAM,充当模型的⼯作内存。与 RAM类似,LLM上下⽂窗⼝处理各种上下⽂的容量有限。正如操作系统会筛选适合CPURAM的内容 ⼀样,我们可以认为“上下⽂⼯程”扮演着类似的⻆⾊。
简单来说,上下文工程是一门设计和构建动态系统的学科。这个系统的目标是,在模型生成回答之前,为它“有限的工作记忆”(即上下文窗口)精准地填充好所有必需的信息和工具,从而让模型能够可靠地完成任务。
1.3.2 基本特点
1 不仅仅是写提示词
除了告诉 AI 要做什么,还要准备完成任务所需的其他信息。提示词主要说明任务目标和约束,上下文工程则提供 AI 判断和生成所需的事实材料。
例子:让 AI 修复登录接口的 500 错误时,提示词可以只是“请定位并修复登录接口的 500 错误”;上下文工程还需要提供登录接口相关代码、最近的错误日志、接口文档和项目开发规范,必要时通过工具运行测试获取报错信息。这些信息不一定都写成提示词,而可以通过文件、检索结果、日志和工具结果等方式提供给 AI。
2 需要什么,就提供什么
根据当前任务提供相关信息,而不是把所有资料一次性全部塞给 AI。
例子:让 AI 修改登录页面时,只提供登录页面相关代码即可,不必发送整个项目的所有文件;如有需要,再补充接口定义、样式或路由信息。
3 可以随任务进展不断调整
AI 在完成任务的过程中,可能会发现新的问题,需要进一步查找资料或补充信息。
例子:AI 修改代码时发现缺少某个依赖,就进一步查看项目配置,再决定如何修改代码。
4 可以从多个地方获取信息
AI 需要的信息不一定都由用户提供,也可以从历史对话、公司知识库、文件和外部工具中获取。
例子:用户询问公司的请假制度,AI 可以查询公司员工手册,再根据检索到的规定回答。
5 需要不断检查和改进
如果 AI 回答不准确,需要检查是否缺少必要信息、提供了错误资料,或不同信息之间存在冲突。
例子:AI 总是按照旧开发规范编写代码时,需要检查是否检索到了最新规范,并确认新旧规范是否存在冲突、应以哪个版本为准。
1.3.3 为什么需要上下⽂⼯程
1 补全缺失的上下文
LLM(大语言模型)本质上是“无状态”的——每次对话对它而言都是初见,它记不住你3分钟前发了什么,更别提你昨晚的错题记录或三天前的需求沟通。
如果你在 Prompt 里写“根据我们上次讨论的结果继续”,模型只能茫然反问“请问上次讨论了什么?”——它根本没有“上次”。
上下文工程怎么做:在后台动态检索历史对话、用户画像、知识库等分散信息,自动注入当前上下文,让模型从“初次见面的陌生人”变成“知根知底的贴身助教”。
2 对抗上下文退化/腐烂 (Context Rot)
什么是上下文腐烂?
上下文退化/腐烂(Context Rot)指上下文长度增加时,模型提取关键信息、遵循指令、逻辑推理的能力系统性下降。它不是窗口溢出(装不下),而是窗口内的信息“变质”——装得下,但吃不下。

| 诱因 | 现象 | 通俗理解 |
|---|---|---|
| 注意力稀释 | 关键Token被百万级上下文稀释至不足0.5%权重 | 人多耳杂,听不清重点 |
| 中部遗忘 | 中间60%-70%信息被系统性忽视 | 开会只记得开头和结尾 |
| 上下文干扰 | 工具日志、错误堆栈等噪音持续累积 | 垃圾堆里找珍珠 |
上下文工程怎么做:检索截断(只喂Top-K相关段落)、关键信息放首尾、分段处理+进度笔记传递、工具结果提纯后回填。
心法:上下文是草稿纸,不是书架。
上下文退化/腐烂(Context Rot)的解决思路:
1. 注意力稀释
-
通俗解法:别让 AI“通读全文”,教它“跳读划重点”。
-
操作方法:就像你查字典找某个字,不会把整本字典从头背一遍,而是直接看索引。不把几万字的聊天记录一次性硬塞给 AI,而是先用一个简单的程序(检索器)快速扫一遍,只把最相关的3-5段内容挑出来喂给 AI;或者强制 AI“只看最近500字”和“最开头的话”,中间的大段废话直接忽略。
2. 中间内容遗忘
-
通俗解法:把最重要的东西放在“开头”或“结尾”,别塞中间。
-
现象解释:这现象很像开会做汇报——领导通常只记得你第一句(开场重点)和最后一句(总结结论),中间你讲了20分钟数据,领导全走神了。(注:研究表明,模型对上下文中间部分的记忆准确率呈U型曲线,中间最低)。
-
操作方法:如果你有一条关键规则(比如“必须输出JSON格式”),要么放在 Prompt 的最开头(加粗强调),要么放在最结尾(再叮嘱一遍)。如果中间有一段证据特别重要,就在开头单独拎出来写一句:“注意!第X段内容最关键,请重点看!”
3. 上下文干扰
-
通俗解法:喂 AI 前先“洗菜摘菜”,别把烂菜叶也扔了。
-
举例说明:你问 AI:“现在谁能管住孙悟空?”
-
上下文只塞三句:
-
花果山旧话:“我是美猴王,谁也不管。”(旧身份)
-
天庭传言:“齐天大圣归玉帝管。”(老传言)
-
当前事实:唐僧会念紧箍咒,孙悟空听唐僧的。(当前权威)
-
-
结果:AI 容易被“美猴王”“齐天大圣”这些旧名号带偏,答成“没人管”或“玉帝管”。
-
正确做法:喂之前只留一句——“当前:唐僧会念紧箍咒,能管住孙悟空。”
-
-
总结:一句话,上下文干扰不是塞了垃圾,而是塞了“旧名号、老传言”,看着都像答案,AI 容易抓错。你要做的是标记“旧数据/新数据”,确认接口;原始结果可存外部日志,上下文里只放摘要和引用。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)