模型不是“记性差”,只是“提示不清”。


为什么理解上下文对话很重要?

大模型具备 “上下文窗口” 的能力,可以“记住”你当前对话中的信息并持续参考。但如果你的 Prompt 没有明确引用上下文内容,AI 就很可能误解你想表达的内容或直接“忘记”之前说过的事情。


模型如何“记住”你说过的话?

AI 的上下文机制:Prompt + 历史对话

大多数对话式模型(如 ChatGPT)通过一个“对话历史窗口”来保持对话连贯。

这个窗口包括:

  1. 你的每一轮输入
  2. 模型的每一轮回复
  3. 你新输入的 Prompt

这些信息会一并被传入模型中作为“背景知识”,所以如果你前后指令不一致、指代不清,模型很可能会输出不符合你预期的结果。


Prompt 与上下文结合的 3 个技巧

技巧 1:明确复用信息,而非依赖“记忆力”

弱提示:

根据上面那个产品,写个文案。

强提示:

请根据我们之前讨论的“便携蓝牙键盘”产品特性(轻便、续航强、兼容性好),撰写一段适合京东电商平台的推广文案,控制在 150 字以内。

技巧 2:摘要历史内容,引导模型记住重点

我们目前的结论是:该产品适合年轻商务人群,主打轻量化和便携性。请基于此结论继续补充目标用户的使用场景。

技巧 3:多轮对话任务拆解,分阶段推进

我们接下来分三步完成这个产品策划案:

第一步,请帮我列出竞品分析的结构框架;
第二步,再填写主要竞品的数据;
第三步,撰写分析总结。 我们现在开始第一步。

实战练习:连续三轮对话 Prompt 编写

尝试用三轮对话完成一个任务(如撰写项目介绍页)。 以下是一个完整的参考流程:


任务目标:写一个面向投资人的项目介绍页内容。

第 1 轮 Prompt:

我们团队正在准备一个项目介绍页,目标是吸引早期投资人关注。请帮我列出介绍页的核心结构模块,如项目简介、市场分析、商业模式等,控制在 6 个模块以内。

第 2 轮 Prompt:

谢谢。现在请帮我围绕“市场分析”部分展开写作,要求数据真实、有说服力,语气专业,控制在 300 字以内。

第 3 轮 Prompt:

我们继续写“商业模式”部分。请用简洁但具逻辑性的语言,介绍项目的盈利方式和可持续性,适合出现在融资 PPT 中。

实战应用案例:Streamlit 多轮 Prompt 教学助手

你可以将上面逻辑封装成一个多轮引导式的 Streamlit App,帮助用户一步步完成一个复杂任务的 Prompt 设计

示例代码 context_prompt_trainer.py

import streamlit as st
from openai import OpenAI
from dotenv import load_dotenv
import os # 加载 API 密钥
load_dotenv()
client = OpenAI() st.set_page_config(page_title="多轮对话 Prompt 教学助手", layout="centered")
st.title(" 多轮 Prompt 教学助手")
st.write("通过三轮对话,学习如何逐步构建有效的上下文 Prompt。") # Session state 存储上下文
if "history" not in st.session_state:
st.session_state.history = [] # 三轮提示
rounds = [
"第 1 轮:请描述你的目标任务与预期用途(如项目介绍页、AI 报告生成等)",
"第 2 轮:请挑选某个模块,继续写作要求(如市场分析)",
"第 3 轮:再完成剩余模块,保持语气和风格一致"
] for i in range(3):
with st.expander(f" {rounds[i]}"):
user_input = st.text_area(f"输入你的第 {i+1} 轮 Prompt", key=f"round_{i}")
if st.button(f"生成第 {i+1} 轮结果", key=f"btn_{i}"):
try:
full_context = "\n\n".join(st.session_state.history + [user_input])
response = client.chat.completions.create(
model="anthropic/claude-3.7-sonnet",
messages=[
{"role": "system", "content": "你是一位资深的 Prompt 写作教练,帮助用户在上下文中逐步完善复杂任务。"},
{"role": "user", "content": full_context}
],
temperature=0.7
)
result = response.choices[0].message.content
st.markdown(" **AI 回复:**")
st.write(result) # 更新上下文历史
st.session_state.history.append(user_input)
st.session_state.history.append(result)
except Exception as e:
st.error(f"出错了:{e}")


小结:让上下文成为你的“提示加速器”

错误用法 问题表现 推荐策略
指代模糊 “它”“上面那个” → 模型迷失 用关键词复述前文内容
忽略历史信息 模型“遗忘”上下文内容 显式复述要点,引导聚焦
一次说太多 输出杂乱、遗漏 拆解成多轮交互
跳跃式命令 任务切换频繁导致输出跑偏 明确阶段,引导任务流



实战需求:为企业撰写一篇 AI 年度技术回顾报告

背景说明:

一家互联网公司希望用大语言模型撰写 2024 年 AI 技术的企业内部回顾报告。团队打算将写作任务分为三轮,通过 Prompt 和上下文串联,让 AI 理解写作意图并保持风格一致。


三轮任务拆解(对话式上下文设计)

第 1 轮:提出任务目标与整体风格

Prompt:

我们希望你帮忙撰写一篇“2024 年 AI 技术趋势企业回顾报告”,面向公司内部研发团队阅读,语言专业但不晦涩,内容真实、有洞见。字数控制在 1000-1500 字以内。

第 2 轮:展开一个重点模块(例如:大模型应用落地)

Prompt:

请继续扩展报告中的“行业大模型应用实践”部分,涵盖金融、政务、医疗三个领域的典型案例和挑战,每个子部分约 200 字。

第 3 轮:收尾并输出总结建议

Prompt:

请在前文基础上撰写报告总结部分,概括 2024 年的主要变化,并给出 2025 年的策略建议(如技术部署、数据策略、人力投入等)。

️ Streamlit 应用实现(多轮上下文写作助手)

以下是将上面任务转化为 Streamlit 小程序 的完整代码:

import streamlit as st
from openai import OpenAI
from dotenv import load_dotenv
import os load_dotenv()
client = OpenAI() st.set_page_config(page_title="AI 年度回顾写作助手", layout="centered")
st.title(" 企业 AI 年度报告写作助手")
st.write("通过三轮引导 Prompt,构建完整的年度报告内容。") # 初始化上下文历史和轮次内容
if "history" not in st.session_state:
st.session_state.history = [] if "round_outputs" not in st.session_state:
st.session_state.round_outputs = [None, None, None] tasks = [
"第 1 轮:描述目标和整体风格(报告目标、阅读对象)",
"第 2 轮:展开“行业应用”模块(具体展开)",
"第 3 轮:总结与策略建议(回顾并展望)"
] for i in range(3):
with st.expander(tasks[i]):
user_input = st.text_area(f"✍️ 输入第 {i+1} 轮 Prompt", key=f"prompt_{i}")
if st.button(f" 生成第 {i+1} 轮内容", key=f"btn_{i}"):
try:
full_prompt = "\n\n".join(st.session_state.history + [user_input])
response = client.chat.completions.create(
model="anthropic/claude-3.7-sonnet",
messages=[
{"role": "system", "content": "你是一位企业报告撰写专家,帮助撰写专业且易读的 AI 年度总结报告。"},
{"role": "user", "content": full_prompt}
],
temperature=0.7
)
result = response.choices[0].message.content st.session_state.round_outputs[i] = result
st.session_state.history.append(user_input)
st.session_state.history.append(result) except Exception as e:
st.error(f"出错了:{e}") # 显示历史输出
if st.session_state.round_outputs[i]:
st.markdown(" **AI 输出:**")
st.write(st.session_state.round_outputs[i])

L1-6、Prompt 与上下文的关系🤖的更多相关文章

  1. springmvc上下文与springcontext上下文的关系

    内容摘自:springmvc与spring上下文的关系 原理区别 一直不清楚springmvc-servlet.xml配置与spring.xml两个配置文件出现的上下文关系.今天找到一上面的文章,倒是 ...

  2. springMVC和spring上下文的关系

    springMVC继承了spring的servletcontext上下文, 所以, controller里的@Resource注入可以用以下替代 @Resource private IUserServ ...

  3. spring上下文和springMVC上下文的关系

    查看原文

  4. spring 上下文和spring mvc上下文和web应用上下文servletContext之间的关系

    要想很好理解这三个上下文的关系,需要先熟悉spring是怎样在web容器中启动起来的.spring的启动过程其实就是其IoC容器的启动过程,对于web程序,IoC容器启动过程即是建立上下文的过程. s ...

  5. Spring中DispacherServlet、WebApplicationContext、ServletContext的关系

    转载:http://blog.csdn.net/c289054531/article/details/9196149?utm_source=tuicool&utm_medium=referra ...

  6. 时空上下文视觉跟踪(STC)算法的解读与代码复现(转)

    时空上下文视觉跟踪(STC)算法的解读与代码复现 zouxy09@qq.com http://blog.csdn.net/zouxy09 本博文主要是关注一篇视觉跟踪的论文.这篇论文是Kaihua Z ...

  7. Javascript中函数调用和this的关系

    例子先行: var myObject={ foo:"bar", func:function(){ var self=this; console.log("outerfun ...

  8. DDD实战进阶第一波(五):开发一般业务的大健康行业直销系统(实现产品上下文领域层)

    从这篇文章开始,我们根据前面的DDD理论与DDD框架的约束,正式进入直销系统案例的开发. 本篇文章主要讲产品上下文中的领域层的主要实现,先简单讲下业务方面的需求:产品SPU与产品SKU,产品SPU主要 ...

  9. [译文]Domain Driven Design Reference(五)—— 为战略设计的上下文映射

    本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. 其它本系列其它文章 ...

  10. python 全栈开发,Day139(websocket原理,flask之请求上下文)

    昨日内容回顾 flask和django对比 flask和django本质是一样的,都是web框架. 但是django自带了一些组件,flask虽然自带的组件比较少,但是它有很多的第三方插件. 那么在什 ...

随机推荐

  1. DSP 28335 TTL SCI串口通讯 出错无法进入接收

    项目上通过普通SCI串口在两个DSP28335之间进行通讯,一主一从,主机向从机发送指令,触发从机SCI接收中断,在中断中执行数据包判断和存储,数据处理和回复在主循环进行,未使用FIFO,轮询方式进行 ...

  2. 公众号已上线 Ask AI 功能

    Get新技能,给公众号接入AI智能体,没花一分钱. 不禁感慨这时代的进步也太快了,曾经科幻小说中描绘的未来已成现实! 下面是笔者在腾讯元宝中创建的智能体"鲸鱼小助手": 如果今后要 ...

  3. 「一」nginx介绍

    应用场景 静态资源(js.css.图片 ) 反向代理 缓存加速(动态资源),比如社区活跃度排名 负载均衡(动态扩容.容灾) API服务 一个请求先经过nginx,再到应用服务器,访问数据库/redis ...

  4. 【编程思想】C# delegate 委托的本质:方法对象的应用

    一.前言 翻回之前写的博客,前期写的结构确实差很多, 这次细看了<委托那些事(一).(二)>,忍不住重新写一下,之前把简单的事情复杂化了. 为什么现在思维不一样了,有一点我认为是见识的计算 ...

  5. 使用QT开发远程linux服务器过程

    1.添加设备为通用linux 2.设置ip用户名 3.创建私钥文件,原来有的qtc那俩个文件删掉. 4.部署公钥,前提是测试链接要出现成功 5.在kits里添加编译环境设置编译器为32位或者64 6. ...

  6. linux下配置ip为动态获取

    点击查看代码 在Linux系统中配置网络接口以动态获取IP地址,通常需要使用DHCP(Dynamic Host Configuration Protocol).大多数现代Linux发行版都默认支持这个 ...

  7. oracle的IP访问列表

    Windows版本Oracle 19c. 在sqlnet.ora中添加下面语句 tcp.validnode_checking=yes tcp.invited_nodes=(127.0.0.1,132. ...

  8. linux 查看jdk安装路径

    [root@iz2ze9ufq5ehrayz6j88saz bin]# java -version java version "1.8.0_191" Java(TM) SE Run ...

  9. Delphi 模糊查询和字段查询

    procedure TFrmain.scGPEdit1Change(Sender: TObject); var ASql, AKey: string; //模糊查询和字段查询 const vsql1: ...

  10. Linux+Typora+Picgo图床配置

    Linux+Typora+Picgo图床配置 首先不建议安装在UbuntuStore里的版本,会有一些限制. 首先安装node.js 去官网下载编译好的源码,配置软连接,使全局都可以使用node命令. ...