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


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

大模型具备 “上下文窗口” 的能力,可以“记住”你当前对话中的信息并持续参考。但如果你的 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. P5355 [Ynoi Easy Round 2017] 由乃的玉米田

    莫队 + bitset + 根号分支 乘法似乎是简单的,我们可以直接莫队扫描然后枚举较小数 时间 \((n + m) \sqrt n\). 加法是一个经典 idea, 莫队套 bitset,然后利用 ...

  2. go 组合函数 Collection

    我们经常需要程序在数据集上执行操作,比如选择满足给定条件的所有项,或者将所有的项通过一个自定义函数映射到一个新的集合上. 在某些语言中,会习惯使用泛型. Go 不支持泛型,在 Go 中,当你的程序或者 ...

  3. 因为Apifox不支持离线,我果断选择了Apipost!

    要说国内最有名的两款API开发工具不是Apipost就是Apifox,因为曾经遭遇到一件事,导致我坚定的选择了Apipost. 有一年春节我攒了足够的年假,提前开开心心的过年回家,路上我的领导给我打电 ...

  4. SpringBoot的yml文件报org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here in 'reader', line 11, column 16:

    报错内容如下: 报错代码如下: 1 spring: 2 cloud: 3 gateway: 4 routes: 5 - id: query_route 6 uri: https://baidu.org ...

  5. 基于.NetCore开发 StarBlog 番外篇 (1) StarBlog Publisher,跨平台一键发布,DeepSeek加持的文章创作神器

    前言 我一直在优化发布文章的工作流 之前的 StarBlog 已经支持文章打包上传(将 Markdown 和图片文件一并打包为 ZIP 格式上传),但还是有不少步骤,重复的次数多了,还是感觉麻烦. 为 ...

  6. [SDR] 蓝牙专项教程 —— 从 0 到 1 教小白基于 SDR 编写蓝牙协议栈

    目录 前言 一.开题之作 二.动态发送 BLE 广播包 三.基于 PlutoSDR 实现 BLE 广播包的收发一体能力 四.基于 PlutoSDR 的 BLE 广播包的收发实现接入涂鸦智能 APP 教 ...

  7. Win10怀旧--win7体验

    右键菜单变窄(1903以后失效) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\FlightedFeatures Immer ...

  8. Java容器集合经典面试题集

    目录 概述类面试题 1. 请说一下Java容器集合的分类,各自的继承结构 2. 请谈一谈Java集合中的fail-fast和fail-safe机制 3. 如何一边遍历一边删除Collection中的元 ...

  9. 【开源推荐】AI Interviewer:基于Spring-Alibaba-AI的智能面试官系统(附GitHub实战教程)

    项目背景 作为开发者,你是否经历过: 技术面试时因紧张发挥失常? 刷了1000+LeetCode却不会表达解题思路? 花费上千元购买模拟面试服务? 今天推荐的AI Interviewer开源项目,正是 ...

  10. 2024.9.23 cj 训练总结

    T1 这道题目仔细观察就会发现: 异或 k=1 这就很好办,考虑 k=1 怎么解 3 1 2 4 5 6 7.......... 即可. 异或,找规律发现有很多数字的异或值为0的.最后的答案是有规律的 ...