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

L1-6、Prompt 与上下文的关系[特殊字符]

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


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

大模型具备 “上下文窗口” 的能力,可以“记住”你当前对话中的信息并持续参考。但如果你的 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.contentst.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 osload_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.contentst.session_state.round_outputs[i] = resultst.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])

相关文章:

  • metasploit(2)生成dll木马
  • 基于 Spring Boot实现的图书管理系统
  • 龙虎榜——20250422
  • PyTorch与自然语言处理:从零构建基于LSTM的词性标注器
  • JavaScript的JSON处理Map的弊端
  • Spring Boot 应用优雅关闭
  • FLV 与 MP4 格式深度剖析:结构、原理
  • 【前端】【业务场景】【面试】在网页开发中,如何优化图片以提高页面加载速度?解决不同设备屏幕适配问题
  • 进阶篇 1:超越基准 - 指数平滑 (ETS) 模型详解
  • http通信之axios vs fecth该如何选择?
  • kubernetes》》k8s》》删除命名空间
  • element-ui cascader 组件源码分享
  • Redis—为何持久化使用子进程
  • dify工作流之text-2-e-sql,大模型写sql并执行
  • 《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路
  • 【C++】vector<bool>特化
  • [二叉树]关于前序、中序、后序、层序序列
  • 【机器学习】决策树算法中的 “黄金指标”:基尼系数深度剖析
  • w~视觉~3D~合集2
  • C# foreach 循环中获取索引的完整方案
  • 神二十航天员公布
  • 泽连斯基:乌英法美将在伦敦讨论停火事宜
  • 根据学习教育安排,上海市委中心组专题学习总书记力戒形式主义官僚主义重要论述
  • 姜仁华任中国水稻研究所所长,胡培松院士卸任
  • 涉嫌在饭局后性侵一女子,湖南机场董事长邱继兴被警方刑拘
  • 释新闻|加州诉特朗普政府:美国最大经济体为何打响关税阻击战?