<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Prompt Engineering on On My Way</title>
    <link>https://tuanzi-wow.cn/promptengineering/</link>
    <description>Recent content in Prompt Engineering on On My Way</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <atom:link href="https://tuanzi-wow.cn/promptengineering/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Prompt Engineering · 基本概念</title>
      <link>https://tuanzi-wow.cn/promptengineering/prompt-basics/</link>
      <pubDate>Sun, 06 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/promptengineering/prompt-basics/</guid>
      <description>Prompt Engineering 的基本概念与设计原则入门。</description>
      <content:encoded><![CDATA[<p>注意AI更新迭代很快,这些未必具有实效性,请你自己分辨</p>
<h1 id="基本概念">基本概念</h1>
<h2 id="给llm提示">给LLM提示:</h2>
<p>结果质量与Prompt中的信息数量和完善程度有关</p>
<p>设计有效的提示词以指导模型执行期望任务的方法被称为<strong>提示工程</strong></p>
<h2 id="提示词格式">提示词格式</h2>
<p>QA格式</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Q: &lt;问题&gt;?
</span></span><span class="line"><span class="cl">A: 
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="零样本提示">零样本提示:</h4>
<p>直接提示模型提供一个回答,而没有提供任何你希望它完成的任务的示例或者示范
示例</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">What is prompt engineering?
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="少样本提示">少样本提示:</h4>
<p>提供少样本示例</p>
<p>小样本可以赋能上下文学习能力</p>
]]></content:encoded>
    </item>
    <item>
      <title>Prompt Engineering · 提示技术</title>
      <link>https://tuanzi-wow.cn/promptengineering/prompt-techniques/</link>
      <pubDate>Sun, 06 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/promptengineering/prompt-techniques/</guid>
      <description>没有向模型提供示例……</description>
      <content:encoded><![CDATA[<h1 id="提示技术">提示技术</h1>
<h2 id="零样本提示">零样本提示</h2>
<p>没有向模型提供示例</p>
<h2 id="少样本提示few-shot">少样本提示(few-shot)</h2>
<p>提供少量示例以激发上下文学习</p>
<h3 id="限制处理复杂任务">限制:处理复杂任务</h3>
<h2 id="链式思考提示chain-of-thought-prompting">链式思考提示(Chain-of-Thought Prompting)</h2>
<p>CoT提示通过中间推理步骤实现了复杂的推理能力
可以与few-shot结合</p>
<h3 id="零样本cot提示">零样本COT提示</h3>
<p>基本上涉及&quot;将让我们逐步思考&quot;添加到原始提示中</p>
<h3 id="自动思维链">自动思维链</h3>
<p>当思维链提示时,需要手工制作有效且多样化的例子,可能会导致次优解决方案</p>
<p>消除人工的方法:</p>
<p>Auto-CoT主要由两个阶段组成:</p>
<ul>
<li>阶段一:问题聚类:将给定问题分为几个聚类</li>
<li>阶段二:演示抽样:从每组数组中选择一个具有代表性的问题,并且使用简单启发式的Zero-Shot-Cot生成其推理链</li>
</ul>
<h2 id="自我一致性">自我一致性</h2>
<p>旨在&quot;替换链式思维提示中使用的天真贪婪解码方法&quot;
通过少量CoT采样<strong>多种不同的推理路径</strong>,并使用生成结构选择最一致的答案
核心:Prompt中提供多种推理链,选择一致的答案</p>
<h2 id="生成知识提示">生成知识提示</h2>
<p>生成知识作为提示的一部分</p>
<h2 id="prompt-chain">Prompt Chain</h2>
<p>将任务拆解为许多子任务,确定子任务之后,将子任务的提示词提供给LLM,得到的结果作为提示作为新的提示词的一部分
链式提示(prompt chain):一个任务被分解为多个子任务,根据子任务创建一系列提示操作</p>
<p>提高了控制性和可靠性,可容易定位模型中的问题,并分析改进需要提高的不同阶段的性能</p>
<h3 id="示例文档问答中的链式提示">示例文档问答中的链式提示</h3>
<p>提示链可以用于不同的场景，这些场景可能涉及多个操作或转换。例如，LLM 的一个常见用途是根据大型文本文档回答问题。想要更好阅读大文本文档，可以设计两个不同的提示，第一个提示负责提取相关引文以回答问题，第二个提示则以引文和原始文档为输入来回答给定的问题。换句话说，可以创建两个不同的提示来执行根据文档回答问题的任务。</p>
<p>下面的第一个提示根据问题从文档中提取相关引文。请注意，为了简化，我们为文档添加了一个占位符<code>{{文档}}</code>。要测试此提示，您可以从维基百科复制并粘贴一篇文章，例如这个关于<a href="https://zh.wikipedia.org/wiki/%E6%8F%90%E7%A4%BA%E5%B7%A5%E7%A8%8B">提示工程</a>的页面。由于此任务使用了较长的上下文，我们使用了 OpenAI 的 <code>gpt-4-1106-preview</code> 模型。您也可以将此提示与其他长上下文 LLM（如 Claude）一起使用。</p>
<p>提示 1:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">你是一个很有帮助的助手。你的任务是根据文档回答问题。第一步是从文档中提取与问题相关的引文，由####分隔。请使用&lt;quotes&gt;&lt;/quotes&gt;输出引文列表。如果没有找到相关引文，请回应“未找到相关引文！”。####{{文档}}####
</span></span></code></pre></td></tr></table>
</div>
</div><p>这是整个提示的截图，包括通过 <code>user</code> 角色传递的问题。</p>
<p><img alt="Prompt Chaining Part 1" loading="lazy" src="https://www.promptingguide.ai/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fprompt-chaining-1.4bdd376c.png&w=1920&q=75"></p>
<p>提示 1 的输出：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;quotes&gt;- Chain-of-thought (CoT) prompting[27]- Generated knowledge prompting[37]- Least-to-most prompting[38]- Self-consistency decoding[39]- Complexity-based prompting[41]- Self-refine[42]- Tree-of-thought prompting[43]- Maieutic prompting[45]- Directional-stimulus prompting[46]- Textual inversion and embeddings[59]- Using gradient descent to search for prompts[61][62][63][64]- Prompt injection[65][66][67]&lt;/quotes&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><p>在第一个提示中返回的引文现在可以用作下面第二个提示的输入。您可以对这些引文进行清理，比如移除引用标志。可以在提示链中新建另一个提示来移除或使用这些引用标志，但现在您可以忽略这些。然后，第二个提示接收由第一个提示提取的相关引文，并根据文档和这些提取的引文生成一个有帮助的回答。第二个提示可以是以下内容：</p>
<p>提示 2：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">根据从文档中提取的相关引文（由&lt;quotes&gt;&lt;/quotes&gt;分隔）和原始文档（由####分隔），请构建对问题的回答。请确保答案准确、语气友好且有帮助。####{{文档}}####&lt;quotes&gt;- Chain-of-thought (CoT) prompting[27]- Generated knowledge prompting[37]- Least-to-most prompting[38]- Self-consistency decoding[39]- Complexity-based prompting[41]- Self-refine[42]- Tree-of-thought prompting[43]- Maieutic prompting[45]- Directional-stimulus prompting[46]- Textual inversion and embeddings[59]- Using gradient descent to search for prompts[61][62][63][64]- Prompt injection[65][66][67]&lt;/quotes&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><p>提示 2 的输出：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">文档中提到的提示技术包括：1. Chain-of-thought (CoT) prompting[27]2. Generated knowledge prompting[37]3. Least-to-most prompting[38]4. Self-consistency decoding[39]5. Complexity-based prompting[41]6. Self-refine[42]7. Tree-of-thought prompting[43]8. Maieutic prompting[45]9. Directional-stimulus prompting[46]10. Textual inversion and embeddings[59]11. Using gradient descent to search for prompts[61][62][63][64]12. Prompt injection[65][66][67]每一种技术都采用独特的策略来增强或明确与大型语言模型的互动，以产生期望的结果。
</span></span></code></pre></td></tr></table>
</div>
</div><p>如您所见，简化并创建提示链是一种有用的提示方法，其中响应需要经过多个操作或转换。作为练习，您可以自由设计一个提示，它会在将响应作为最终回应发送给应用程序用户之前，移除响应中的引用标志（例如，<code>[27]</code>）。</p>
<p>您还可以在这份<a href="https://docs.anthropic.com/claude/docs/prompt-chaining">文档</a>中找到更多关于提示链的示例，这些示例利用了 Claude LLM。我们的示例灵感来源于他们，并采用了他们的示例。</p>
<h2 id="思维树tot">思维树(ToT)</h2>
<p>Tree of Thoughts，ToT:基于思维链提示进行了总结,引导LM把思维作为中间步骤解决同通用问题</p>
<p>ToT 维护着一棵思维树，思维由连贯的语言序列表示，这个序列就是解决问题的中间步骤</p>
<h2 id="检索增强生成rag">检索增强生成(RAG)</h2>
<p>完成复杂的知识密集型的任务</p>
<p>将一个信息检索组件和文本生成模型结合在一起
接受输入并检索出一组相关/支撑的文档,并给出文档的来源,这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出</p>
<h2 id="自动推理并使用工具art">自动推理并使用工具(ART)</h2>
<p>交替使用Cot提示和工具被证明为一种强大且稳健的方法,但是这些方法需要针对特定任务手写规范还要精心编写交替使用生成模型和工具的脚本</p>
<p>ART(Automatic Reasoning and Tool-use)的工作原理如下:</p>
<ul>
<li>接受一个新任务时,从任务库选择多部推理和使用工具的示范</li>
<li>在测试中,调用外部工具时,先暂停生成,将工具输出整合后继续生成</li>
</ul>
<h2 id="自动提示工程师ape">自动提示工程师(APE)</h2>
<p>用于自动指令生成和选择的框架
指令生成问题被构建为自然语言合成问题，使用 LLMs 作为黑盒优化问题的解决方案来生成和搜索候选解。
第一步涉及一个大型语言模型（作为推理模型），该模型接收输出演示以生成任务的指令候选项。这些候选解将指导搜索过程。使用目标模型执行指令，然后根据计算的评估分数选择最合适的指令</p>
<h2 id="active-prompt">Active-Prompt</h2>
<p>第一步是使用或不使用少量 CoT 示例查询 LLM。对一组训练问题生成 <em>k</em> 个可能的答案。基于 <em>k</em> 个答案计算不确定度度量（使用不一致性）。选择最不确定的问题由人类进行注释。然后使用新的注释范例来推断每个问题
<strong>人类干预</strong></p>
<h2 id="方向性刺激提示">方向性刺激提示</h2>
<p>训练了一个可调节的策略 LM 来生成刺激/提示。越来越多地使用RL来优化 LLM。</p>
<h2 id="pal程序辅助语言框架">PAL(程序辅助语言框架)</h2>
<p>不通过自由形式我呢本来获取解决方法,将解决步骤卸载到类似于Python解释器的编程运行时中</p>
<h2 id="react框架">ReAct框架</h2>
<p>以交错的方式生成推理轨迹和任务特定操作</p>
<h3 id="如何运作的">如何运作的</h3>
<p>将推理和行为与LLMs相结合通用的范例
ReAct提示LLMs为任务生成口头轨迹和操作,使得系统执行动态推理来创建,维护和调整操作计划,同时还支持与外部环境的交互,将额外信息合并到推理中</p>
<h3 id="react提示">ReAct提示</h3>
<p>第一步:从训练集中选择案例,并组成ReAct格式的轨迹下面是一个 ReAct 提示的示例(摘自论文，为简单起见缩短为一个示例):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">问题 科罗拉多造山带东部区域延伸到的区域的海拔范围是多少?
</span></span><span class="line"><span class="cl">思考 1 我需要搜索科罗拉多造山带，找到科罗拉多造山带东段延伸的区域，然后找到该区域的海拔范围。
</span></span><span class="line"><span class="cl">操作 1 搜索 [科罗拉多造山带]
</span></span><span class="line"><span class="cl">观察 1 科罗拉多造山带是科罗拉多及其周边地区造山运动的一段。
</span></span><span class="line"><span class="cl">思考 2 它没有提到东部地区。所以我需要查一下东部地区。
</span></span><span class="line"><span class="cl">操作 2 查找 [东部地区]
</span></span><span class="line"><span class="cl">观察 2 (结果 1 / 1) 东部区域延伸至高平原，称为中原造山带。
</span></span><span class="line"><span class="cl">思考 3 科罗拉多造山运动的东部区域延伸到高平原。所以我需要搜索高平原，找到它的海拔范围。
</span></span><span class="line"><span class="cl">操作 3 搜索 [高平原]
</span></span><span class="line"><span class="cl">观察 3 高平原指的是两个截然不同的陆地区域之一。
</span></span><span class="line"><span class="cl">思考 4 我需要搜索高平原（美国）
</span></span><span class="line"><span class="cl">操作 4 搜索 [高平原（美国）]
</span></span><span class="line"><span class="cl">观察 4 高平原是大平原的一个分区。从东到西，高平原的海拔从 1800 到 7000 英尺 (550 到 2130 米) 不等。[3]
</span></span><span class="line"><span class="cl">思考 5 高平原海拔高度从 1800 到 7000 英尺，所以答案是 1800 到 7000 英尺。
</span></span><span class="line"><span class="cl">操作 5 结束 [1800 到 7000 英尺]
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></td></tr></table>
</div>
</div><p>多思考-操作-观察步骤用于任务-解决轨迹</p>
<p>总而言之:</p>
<ul>
<li>CoT 存在事实幻觉的问题</li>
<li>ReAct 的结构性约束降低了它在制定推理步骤方面的灵活性</li>
<li>ReAct 在很大程度上依赖于它正在检索的信息;非信息性搜索结果阻碍了模型推理，并导致难以恢复和重新形成思想</li>
</ul>
<h2 id="长链-react-的使用">长链 ReAct 的使用</h2>
<p>下面是 ReAct 提示方法在实践中如何工作的高阶示例。我们将在 LLM 和 <a href="https://python.langchain.com/en/latest/index.html">长链</a> 中使用OpenAI，因为它已经具有内置功能，可以利用 ReAct 框架构建代理，这些代理能够结合 LLM 和其他多种工具的功能来执行任务。</p>
<p>首先，让我们安装并导入必要的库:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="o">%%</span><span class="n">capture</span><span class="c1"># 更新或安装必要的库!pip install --upgrade openai!pip install --upgrade langchain!pip install --upgrade python-dotenv!pip install google-search-results # 引入库import openaiimport osfrom langchain.llms import OpenAIfrom langchain.agents import load_toolsfrom langchain.agents import initialize_agentfrom dotenv import load_dotenvload_dotenv() # 载入 API keys; 如果没有，你需要先获取。 os.environ[&#34;OPENAI_API_KEY&#34;] = os.getenv(&#34;OPENAI_API_KEY&#34;)os.environ[&#34;SERPER_API_KEY&#34;] = os.getenv(&#34;SERPER_API_KEY&#34;) </span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>现在我们可以配置 LLM，我们要用到的工具，以及允许我们将 ReAct 框架与 LLM 和其他工具结合使用的代理。请注意，我们使用搜索 API 来搜索外部信息，并使用 LLM 作为数学工具。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">llm</span> <span class="o">=</span> <span class="n">OpenAI</span><span class="p">(</span><span class="n">model_name</span><span class="o">=</span><span class="s2">&#34;text-davinci-003&#34;</span> <span class="p">,</span><span class="n">temperature</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="n">tools</span> <span class="o">=</span> <span class="n">load_tools</span><span class="p">([</span><span class="s2">&#34;google-serper&#34;</span><span class="p">,</span> <span class="s2">&#34;llm-math&#34;</span><span class="p">],</span> <span class="n">llm</span><span class="o">=</span><span class="n">llm</span><span class="p">)</span><span class="n">agent</span> <span class="o">=</span> <span class="n">initialize_agent</span><span class="p">(</span><span class="n">tools</span><span class="p">,</span> <span class="n">llm</span><span class="p">,</span> <span class="n">agent</span><span class="o">=</span><span class="s2">&#34;zero-shot-react-description&#34;</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">True</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>配置好之后，我们就可以用所需的查询或提示运行代理了。请注意，在这里，我们不会像论文中阐释的那样提供少样本的示例。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">agent.run(&#34;奥利维亚·王尔德的男朋友是谁?他现在的年龄的0.23次方是多少?&#34;)
</span></span></code></pre></td></tr></table>
</div>
</div><p>链执行如下所示:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&gt; 正在输入新代理执行器链......  我得查出奥利维亚·王尔德的男友是谁然后计算出他的年龄的 0.23 次方。操作: 搜索操作输入: “奥利维亚·王尔德的男友”观察: 奥利维亚·王尔德与杰森·苏代基斯在多年前订婚，在他们分手后，她开始与哈里·斯泰尔斯约会 — 参照他们的关系时间线。思考: 我需要找出哈里·斯泰尔斯的年龄。操作: 搜索操作输入: “哈里·斯泰尔斯的年龄”观察: 29 岁思考: 我需要计算 29 的 0.23 次方。操作: 计算器操作输入: 29^0.23观察: 答案: 2.169459462491557 思考: 现在我知道最终答案了。最终答案: 哈里·斯泰尔斯, 奥利维亚·王尔德的男朋友, 29 岁。他年龄的 0.23 次方是 2.169459462491557。 &gt; 结束链。
</span></span></code></pre></td></tr></table>
</div>
</div><p>我们得到如下输出:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&#34;哈里·斯泰尔斯, 奥利维亚·王尔德的男朋友, 29 岁。他年龄的 0.23 次方是 2.169459462491557。&#34;
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="reflexion自我反思">Reflexion(自我反思)</h2>
<p>通过语言反馈来强化基于语言的智能体的框架</p>
<p>在高层次上，自我反思将来自环境的反馈（自由形式的语言或者标量）转换为语言反馈，也被称作 <strong>self-reflection</strong>，为下一轮中 LLM 智能体提供上下文。</p>
<p>如上图所示，自我反思由三个不同的模型组成：</p>
<ul>
<li><strong>参与者（Actor）</strong>：根据状态观测量生成文本和动作。参与者在环境中采取行动并接受观察结果，从而形成轨迹。<a href="https://www.promptingguide.ai/techniques/cot">链式思考（CoT）</a> 和 <a href="https://www.promptingguide.ai/techniques/react">ReAct</a> 被用作参与者模型。此外，还添加了记忆组件为智能体提供额外的上下文信息。</li>
<li><strong>评估者（Evaluator）</strong>：对参与者的输出进行评价。具体来说，它将生成的轨迹（也被称作短期记忆）作为输入并输出奖励分数。根据人物的不同，使用不同的奖励函数（决策任务使用LLM和基于规则的启发式奖励）。</li>
<li><strong>自我反思（Self-Reflection）</strong>：生成语言强化线索来帮助参与者实现自我完善。这个角色由大语言模型承担，能够为未来的试验提供宝贵的反馈。自我反思模型利用奖励信号、当前轨迹和其持久记忆生成具体且相关的反馈，并存储在记忆组件中。智能体利用这些经验（存储在长期记忆中）来快速改进决策。</li>
</ul>
<h3 id="何时自我反思">何时自我反思?</h3>
<ol>
<li>智能体需要从错误和尝试中学习</li>
<li>传统的强化学习方法失效</li>
<li>需要细致入微的反馈</li>
<li>可解释性和直接记忆很重要</li>
</ol>
<p>自我反思在以下任务中是有效的：</p>
<ul>
<li><strong>序列决策</strong>：自我反思提高了智能体在 AlfWorld 任务中的表现，涉及在各种环境中导航并完成多步目标。</li>
<li><strong>推理</strong>：自我反思提高了 HotPotQA 上智能体的性能，HotPotQA 是一个需要对多个文档进行推理的问答数据集。</li>
<li><strong>编程</strong>：自我反思的智能体在 HumanEval 和 MBPP 等基准测试上编写出了更好的代码，在某些情况下实现 SOTA 结果。</li>
</ul>
<p>以下是自我反思的一些限制：</p>
<ul>
<li><strong>依赖自我评估能力</strong>：反思依赖于智能体准确评估其表现并产生有用反思的能力。这可能是具有挑战性的，尤其是对于复杂的任务，但随着模型功能的不断改进，预计自我反思会随着时间的推移而变得更好。</li>
<li><strong>长期记忆限制</strong>：自我反思使用最大容量的滑动窗口，但对于更复杂的任务，使用向量嵌入或 SQL 数据库等高级结构可能会更有利。</li>
<li><strong>代码生成限制</strong>：测试驱动开发在指定准确的输入输出映射方面存在限制（例如，受硬件影响的非确定性生成器函数和函数输出）。</li>
</ul>
<h2 id="多维态思维链提示方法">多维态思维链提示方法</h2>
<h2 id="基于图的提示">基于图的提示</h2>
<h2 id="meta-prompting">meta-prompting</h2>
]]></content:encoded>
    </item>
    <item>
      <title>Prompt Engineering · 提示词要素</title>
      <link>https://tuanzi-wow.cn/promptengineering/prompt-elements/</link>
      <pubDate>Sun, 06 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/promptengineering/prompt-elements/</guid>
      <description>如果您接触过大量提示工程相关的示例和应用，您会注意到提示词是由一些要素组成的。……</description>
      <content:encoded><![CDATA[<h1 id="提示词要素">提示词要素</h1>
<p>如果您接触过大量提示工程相关的示例和应用，您会注意到提示词是由一些要素组成的。</p>
<h2 id="提示词可以包含以下任意要素">提示词可以包含以下任意要素：</h2>
<ul>
<li><strong>指令</strong>：想要模型执行的特定任务或指令。</li>
<li><strong>上下文</strong>：包含外部信息或额外的上下文信息，引导语言模型更好地响应。</li>
<li><strong>输入数据</strong>：用户输入的内容或问题。</li>
<li><strong>输出指示</strong>：指定输出的类型或格式。</li>
</ul>
<p>为了更好地演示提示词要素，下面是一个简单的提示，旨在完成文本分类任务：</p>
<p><em>提示词</em></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">请将文本分为中性、否定或肯定文本：我觉得食物还可以。情绪：
</span></span></code></pre></td></tr></table>
</div>
</div><p>在上面的提示示例中，指令是“将文本分类为中性、否定或肯定”。输入数据是“我认为食物还可以”部分，使用的输出指示是“情绪：”。请注意，此基本示例不使用上下文，但也可以作为提示的一部分提供。例如，此文本分类提示的上下文可以是作为提示的一部分提供的其他示例，以帮助模型更好地理解任务并引导预期的输出类型。</p>
<p>注意，提示词所需的格式取决于您想要语言模型完成的任务类型，并非所有以上要素都是必须的。我们会在后续的指南中提供更多更具体的示例。</p>
]]></content:encoded>
    </item>
    <item>
      <title>Prompt Engineering · 提示词示例</title>
      <link>https://tuanzi-wow.cn/promptengineering/prompt-examples/</link>
      <pubDate>Sun, 06 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/promptengineering/prompt-examples/</guid>
      <description>简单地指示模型应该做什么……</description>
      <content:encoded><![CDATA[<h1 id="提示词示例">提示词示例</h1>
<h2 id="文本概括">文本概括:</h2>
<h2 id="信息提取">信息提取:</h2>
<p>简单地指示模型应该做什么</p>
<h2 id="问答">问答</h2>
<p>改善提示的格式</p>
<p>结合指令,上下文,输入和输出指示</p>
<h2 id="文本分类">文本分类</h2>
<p>提供输入数据和示例</p>
<p>具体性防止歧义或者其他情况</p>
<h2 id="对话">对话</h2>
<p><strong>角色提示</strong></p>
<h2 id="代码生成">代码生成</h2>
<h2 id="推理">推理</h2>
]]></content:encoded>
    </item>
    <item>
      <title>Prompt Engineering · 设计提示的通用技巧</title>
      <link>https://tuanzi-wow.cn/promptengineering/prompt-design-tips/</link>
      <pubDate>Sun, 06 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/promptengineering/prompt-design-tips/</guid>
      <description>remember:这是一个迭代的过程简单的提示词,并逐渐添加更多的元素和上下文……</description>
      <content:encoded><![CDATA[<h1 id="设计提示的通用技巧">设计提示的通用技巧</h1>
<h2 id="从简单开始">从简单开始</h2>
<p>remember:这是一个迭代的过程
简单的提示词,并逐渐添加更多的元素和上下文</p>
<p>涉及不同子任务的大型任务,将任务分解为更简单的子任务</p>
<h2 id="指令">指令</h2>
<p>你可以使用命令来指示模型执行各种简单任务，例如“写入”、“分类”、“总结”、“翻译”、“排序”等，从而为各种简单任务设计有效的提示。</p>
<p>请记住，你还需要进行大量实验以找出最有效的方法。以不同的关键词（keywords），上下文（contexts）和数据（data）试验不同的指令（instruction），看看什么样是最适合你特定用例和任务的。通常，上下文越具体和跟任务越相关则效果越好。在接下来的指南中，我们将讨论样例和添加更多上下文的重要性。</p>
<p>有些人建议将指令放在提示的开头。另有人则建议是使用像“###”这样的清晰分隔符来分隔指令和上下文</p>
<p>ps:有点扯</p>
<h2 id="具体性">具体性</h2>
<p>要非常具体地说明你希望模型执行的指令和任务。提示越具描述性和详细，结果越好
信息的多少和完善程度会影响响应的可靠性</p>
<p>注意提示的长度</p>
<h2 id="避免不明确">避免不明确</h2>
<p>具体且直接是最好的</p>
<h2 id="做什么还是不做什么">做什么还是不做什么</h2>
<p>避免说不做什么,而是说要做什么</p>
]]></content:encoded>
    </item>
    <item>
      <title>Prompt Engineering · 模型设置</title>
      <link>https://tuanzi-wow.cn/promptengineering/llm-settings/</link>
      <pubDate>Sun, 06 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/promptengineering/llm-settings/</guid>
      <description>在使用提示词时,你通常会配置一些参数以获得不同的提示结果.调整这些设置对于响应的可靠性非常重要……</description>
      <content:encoded><![CDATA[<h1 id="模型设置">模型设置</h1>
<p>在使用提示词时,你通常会配置一些参数以获得不同的提示结果.调整这些设置对于响应的可靠性非常重要</p>
<h3 id="常见的一些参数设置及其作用">常见的一些参数设置及其作用</h3>
<h4 id="temperature">Temperature:</h4>
<p>结果的多样化和创造性
temperature的参数值越小,更容易返回一个确定的结果
调小temperature是在增加其他可能的token的权重
实际应用方面:
对于质量保障(QA)等任务,我们可以设置较低的temperature
对于创造性任务例如创作:适当提高temperature参数值</p>
<h4 id="top_p">Top_p:</h4>
<p>也可以控制返回结果的确定性,类似于temperature
与 <code>temperature</code> 一起称为核采样（nucleus sampling）的技术</p>
<p>使用Top P意味着只有词元集合（tokens）中包含<code>top_p</code>概率质量的才会被考虑用于响应，因此较低的<code>top_p</code>值会选择最有信心的响应。这意味着较高的<code>top_p</code>值将使模型考虑更多可能的词语，包括不太可能的词语，从而导致更多样化的输出。</p>
<p>一般建议是改变 Temperature 和 Top P 其中一个参数就行，不用两个都调整。</p>
<h4 id="max-length">Max Length:</h4>
<p>生成文本的最大token数
控制成本;防止生成冗长或不相关响应</p>
<h4 id="stop-sequence">Stop Sequence</h4>
<p>为一个字符串,阻止模型生成token,，指定 <code>stop sequences</code> 是控制大模型响应长度和结构的另一种方法
例如，您可以通过添加 “11” 作为 <code>stop sequence</code> 来告诉模型生成不超过 10 个项的列表</p>
<h4 id="frequency-penalty">Frequency Penalty</h4>
<p>这个惩罚和 token 在响应和提示中已出现的次数成比例， <code>frequency penalty</code> 越高，某个词再次出现的可能性就越小，这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复</p>
<h4 id="presence-penalty">Presence Penalty</h4>
<p><code>presence penalty</code> 也是对重复的 token 施加惩罚，但与 <code>frequency penalty</code> 不同的是，惩罚对于所有重复 token 都是相同的。出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。</p>
<p><strong>此设置可防止模型在响应中过于频繁地生成重复的词</strong>。 如果您希望模型生成多样化或创造性的文本，您可以设置更高的 <code>presence penalty</code>，如果您希望模型生成更专注的内容，您可以设置更低的 <code>presence penalty</code></p>
<p>一般建议是改变 <code>frequency penalty</code> 和 <code>presence penalty</code> 其中一个参数就行，不要同时调整两个。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
