当前位置: 首页 > news >正文

AI应用开发(3)

多轮对话与上下文管理

大模型的无状态特性

大模型具备无状态特性,即每次对话独立,不包含上下文信息。因此,我们需要自己把历史消息一条条拼接回去,每轮都手动维护上下文。

msg={'role':'user','content':userin}resp=api.chat(messages=[msg])userin=input("用户")#在终端输入我是小明,模型回复你好小明,再次调用后输入我叫什么,模型回复我不确定

将用户的每一轮对话都存入一个列表中,在每次的对话时将这个列表中的内容给大模型作为背景,大模型就可以拥有“记忆”了。但是随着对话数越来越长,背景信息的token就会达到最大限制,从而记不住更早的信息,常见的模型上下文窗口限制在4k token或8k token ,这是物理限制,与代码逻辑无关。因此我们需要对上下文进行管理。

上下文管理

截断

顾名思义,截断就是保留最近的几条消息,将更早的前面的对话忘掉。这种管理方式适合前后文联系不强的内容,比如简单问答,翻译等任务。

滑动窗口策略

这种方式既能控制长度,又能保留重要内容。
首先,这种方式可以将重要信息固定为锚点从而保留信息。除此之外,它还能进行动态调整,实时计算token,在token即将达到限制时进行截断,防止暴力截断丢失重要信息。

总结

由于大模型具备无状态特性,所以会忘记前面对话的内容,因此需要将每次对话的上下文信息作为背景与新对话的问题一起给大模型,这样大模型就有了记忆。然而随着对话数越来越多,上下文信息会超过最大token限制,这个时候就要进行上下文管理。上下文管理有两种方式:一是截断,只保留最近的N条对话内容,前面的对话内容则丢弃,然而这种方式会导致重要信息丢失,比如第一轮对话的角色信息等;二是滑动窗口策略,将重要信息固定为锚点,同时主动计算token,在快要达到限制前及时丢弃前面的信息,处理更加平滑。

Zero-shot/Few-shot/系统提示词

Zero-shot

无样本示例,直接向模型提问,简单快捷,但有时可能得不到精确的输出格式。

优点:操作简单,快速上手,零成本准备示例。当你需要快速验证一个想法,或者任务本身很简单时,Zero-shot 是最便捷的选择。

缺点:输出格式不稳定,比如有时会附带无关的解释,也可能完全偏离任务要求。而且性能严重依赖模型的通用能力,对于需要严格格式的任务,风险较高。

典型的应用场景:翻译、总结这类简单问题,写诗、故事等创意生成,以及通用知识检索。在这些场景下,Zero-shot 往往能直接给出令人满意的结果。

例子:直接要求模型提取 JSON 数据,它可能返回被 Markdown 代码块包裹的 JSON,而不是纯数据,这就给程序解析带来了麻烦。Zero-shot 虽然方便,但在格式控制上确实容易出问题。

Few-shot

我们提供少量示例来引导模型输出期望的样式,这大大提高了输出可控性。在提示中直接提供一组输入-输出对作为示范。比如,给出一个问题和你期望的答案格式,模型就会模仿这个样式来回答。而且例子不用多,一般 1 到 3 个就非常有效。

对比我们刚才讨论的 Zero-shot,Few-shot 在格式一致性和准确率上都有质的飞跃。但有一个非常重要的注意事项:你选的示例必须覆盖目标的边界情况,否则会引入偏差。比如做情感分类,如果只给正面的例子,模型就可能把所有输入都判成正面。所以用心选好案例,是 Few-shot 成功的关键。

System Prompt

通过设定角色和行为约束,它能让模型在整个对话中保持特定的身份和规则,非常适合复杂应用场景。
System Prompt 位于对话的最前端,它就像舞台导演,为模型预先定义好角色、专业领域、输出风格,甚至安全护栏。比如,你可以告诉模型:“你是一位严谨的法律顾问,回答必须引用法条。”这样,后续的所有对话都会在这个框架下运行。

而 User Prompt,也就是用户提示,是每一次对话中我们直接提出的具体任务或问题。如果把 System Prompt 比作搭建好的舞台和演员角色,那么 User Prompt 就是每一幕的台词和情节。一个负责顶层设计,一个负责具体执行,分工非常明确。理解了这种职责分离,我们就能更高效地驾驭大模型。

例子:设计一个 Python 专用助手。System Prompt 明确写道:“你是一名 Python 助手,仅回答与 Python 相关的问题,拒绝无关提问。”一旦设定,无论用户怎么追问,它都会坚守 Python 专家的身份,这种稳定性在专用服务中至关重要。为了提高 System Prompt 的遵循度,建议使用清晰的列表、加粗或“重要提示”之类的强调语法。比如用“你必须始终…”这样的强力措辞,能有效降低模型偏离轨道的概率。

总结

zero-shot是不给例子,直接让大模型生成,不过生成的内容可能会有问题;few-shot是给少量样本,让大模型根据样本和问题生成内容,例子需要覆盖边界情况,尽量包含所有可能的结果以及结果的答案;系统提示词则是对大模型下一个角色定义,将它的岗位职责规定清楚,用角色特点约束它的行为,赋予它能力。

http://www.jsqmd.com/news/1040068/

相关文章:

  • 芯片纳米技术
  • MySQL 忘记 root 密码重置教程(Windows + Linux,区分 5.7 / 8.0)
  • 搭建 Squid HTTP 代理服务器
  • 2026年评价高的柏莱妮化妆培训/化妆培训学校/昆明美容化妆培训/云南化妆培训本地推荐 - 行业平台推荐
  • 终极Gofile批量下载解决方案:5分钟实现自动化文件管理
  • 2026年知名的江苏试剂级氨水/泰州试剂级氨水精选厂家推荐 - 品牌宣传支持者
  • AI Agent风口来袭!2个月从零打造智能体系统,成为未来开发者!
  • APK Installer:在Windows上轻松安装安卓应用的完整指南
  • 2026年诚信的钢结构专用银粉漆/防腐银粉漆精选推荐公司 - 品牌宣传支持者
  • 2026年比较好的全屋定制板材/环保板材/衣柜板公司选择指南 - 行业平台推荐
  • MC68HC16Y3寄存器配置详解:从SCIM到芯片选择的嵌入式开发实战
  • 2026年靠谱的泰州试剂级氨水/江苏试剂级氨水/试剂级氨水源头工厂推荐 - 行业平台推荐
  • 2026年诚信的温州不锈钢电表箱壳体/温州不锈钢箱壳体稳定供货厂家推荐 - 行业平台推荐
  • 3步掌握Gofile下载神器:让批量文件下载像喝水一样简单
  • 2026年诚信的江西断桥铝隔热条/门窗隔热条/江西门窗隔热条/幕墙隔热条厂家选择推荐 - 品牌宣传支持者
  • macOS自动点击器完整指南:如何快速实现鼠标键盘自动化操作
  • 自动机器学习pycaret 处理分类简单用法
  • 转转618二手消费洞察: 大内存大容量硬盘成数码产品选购标配
  • 株洲瓷砖空鼓松动修复:本地口碑好的 5 家正规靠谱门店推荐 | 卫生间 / 客厅空鼓专修(2026 最新) - 金修达家庭维修
  • 2026年有实力的胶合板/环保板材/板材/阻燃板实力工厂推荐 - 品牌宣传支持者
  • 08 深度学习入门:神经网络与反向传播
  • ASIL D汽车安全系统设计:MPC5643L外部监控方案详解
  • MPC857T MMU配置实战:从虚拟内存原理到嵌入式系统内存管理
  • JMeter性能测试从入门到精通:核心概念、实战脚本与结果分析
  • uni-app 客户端照片水印:外勤打卡实战教程
  • 5分钟终极指南:免费解锁Cursor Pro完整功能
  • GraphRAG又进化了, WWW 2026新作:chunk和entity终于合体了
  • 亚太顶尖EMBA客观测评:高管理性选型全指南
  • 嵌入式开发中SAR与ΔΣ ADC选型指南:从原理到实战应用
  • TC7135双积分ADC原理与±2V电压表设计实战