<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ChatGPT人工智能：聊天程序改进（难度：3级）]]></title><description><![CDATA[<h2><a class="anchor-offset" name="介绍"></a>介绍</h2>
<p dir="auto">在上一篇<a href="/topic/953/chatgpt%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD-%E4%B8%8E%E7%88%B1%E5%9B%A0%E6%96%AF%E5%9D%A6%E8%81%8A%E5%A4%A9">教程</a>，大家学习了如何用ChatGPT制作简单的聊天程序。</p>
<p dir="auto">在这篇教程，大家将学习如何改进那个聊天程序，有几个技巧。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/87f990ec-639c-4b77-9b2e-dfc229efee24.gif" alt="j3.gif" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第1步-项目起点"></a>第1步 - 项目起点</h2>
<p dir="auto">我们从上一篇教程的项目作为起点。如果你没有那个程序，就根据那篇教程制作一个，或者改编如下这个项目：</p>
<p dir="auto"><a href="https://play.creaticode.com/projects/1ca634e4193e2b27500be13e" target="_blank">https://play.creaticode.com/projects/1ca634e4193e2b27500be13e</a><br /> <br />
<iframe src="https://play.creaticode.com/projects/1ca634e4193e2b27500be13e/embed" width="485" height="402" frameborder="0" allowfullscreen></iframe></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第2步-测试-角色穿帮"></a>第2步 - 测试“角色穿帮”</h2>
<p dir="auto">在目前的程序中，我们指定ChatGPT扮演某个角色。不过，我们的用户容易摆脱这一限制，导致ChatGPT“角色穿帮”。</p>
<p dir="auto">如下所示，当我们质疑它的时候，ChatGPT就会承认自己是人工智能模型，装扮的爱因斯坦。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/9476309a-3796-482e-b83d-ac71f0a4a971.gif" alt="Animation1.gif" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
这么回答并没有什么错，因为ChatGPT想要解释清楚怎么回事。然而，在很多程序中，我们需要强制ChatGPT扮演其角色。</p>
<p dir="auto">举个例子，比如我们让ChatGPT在一个冒险游戏中扮演一位万能的巫师。如果巫师突然承认自己是一个“人工智能语言模型”，那就破坏氛围和乐趣了，对吧？</p>
<p dir="auto">再举个例子，比如我们让ChatGPT向学生提问问题。如果学生以某种方式使ChatGPT角色穿帮，ChatGPT就会开始说出答案。</p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第3步-利用-系统请求-强制保持角色"></a>第3步 - 利用“系统请求”强制保持角色</h2>
<p dir="auto">为了确保ChatGPT一直扮演指定的角色，我们可以用“系统请求”。ChatGPT会严肃对待所有的系统请求，将会竭尽全力履行系统请求。</p>
<p dir="auto">将原来的积木“请求”替换为“系统请求”，并明确指示ChatGPT在所有回答中保持指定的角色。另外，刚开始ChatGPT没有回答，我们只需要发一条消息“你好”。<br />
<img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ab1614e6-ee59-4b52-ac82-158993ce43bc.png" alt="0.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
现在当我们再次以用户身份质疑ChatGPT，它就会始终扮演指定的角色：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/2bf106f7-c392-4d30-94e5-16a6df0ad4ad.gif" alt="Animation2.gif" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第4步-强化系统请求"></a>第4步 - 强化系统请求</h2>
<p dir="auto">尽管我们用系统请求迫使角色不穿帮，但这个方法并不完美。</p>
<p dir="auto">首先，真的爱因斯坦并不知道什么是ChatGPT，所以不应当说“我不是ChatGPT”、“我不是聊天机器人”。</p>
<p dir="auto">另外，聪明的用户仍然能轻而易举让ChatGPT穿帮，如下所示：</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/1f39ce37-dda8-46b8-b9d8-2e21f070103c.png" alt="2.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> </p>
<p dir="auto">如果我们真的要让聊天机器人“栩栩如生”，我们就要强化系统请求，来应对像这样的用户质疑。这常常被称为“<strong>提示语工程</strong>”（prompt engineering），为了改善ChatGPT的回答，我们争取找到最好的提示语。</p>
<p dir="auto">比如，我们可以在系统请求后面再加一句：“<span style="color:#ef0b0b">你从来没听说过人工智能模型和ChatGPT</span>”。改进的回答如下：<br />
<img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ca63c7de-ffba-44e6-9bdc-6fc480cd2d7a.png" alt="3.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第5步-切换至-持续更新-模式"></a>第5步 - 切换至“持续更新”模式</h2>
<p dir="auto">目前，ChatGPT的回答速度还不是太快。如果回复内容较长，用户要等好几秒才能看到回复。</p>
<p dir="auto">为了解决这个问题，大部分ChatGPT系统使用“持续更新”模式，当ChatGPT开始生成回答内容后，就会显示一部分回答内容，然后不断增加回答内容。这样可以使用户早点看到回复。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/6de55097-5457-4bb1-bf2c-b9c8f6b0600d.png" alt="4.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
注意，在“持续更新”模式中，积木“请求”会立即结束，但变量“回复”的内容此时还依然是空的。</p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第6步-不断重复刷新回复"></a>第6步 - 不断重复刷新回复</h2>
<p dir="auto">在“持续更新”模式中，随着ChatGPT生成回复内容，变量“回复”的值将自动更新。因此，为了显示回复内容，我们要用如下方法：</p>
<ol>
<li>聊天窗口中添加一个符号“…” 告诉用户ChatGPT正在思考。</li>
<li>不断用变量“回复”更新消息。</li>
</ol>
<p dir="auto"> <br />
<img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/843f3a58-158f-4cfe-87fa-48916fb314dd.png" alt="5.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
现在一旦收到回复内容，就会立即在聊天窗口显示：<br />
<img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/e83a98db-92bf-4860-94a9-97c2909c4af7.gif" alt="Animation3.gif" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第7步-检测回复是否结束"></a>第7步 - 检测回复是否结束</h2>
<p dir="auto">我们需要稍稍改进这个重复执行循环。我们不能用无限循环，因为会导致程序卡在这个循环中。</p>
<p dir="auto">为了确定ChatGPT是否已经回复完，我们可以看是否有这个对号<img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/28fcaef8-2012-47fe-91eb-1130be2ae5eb.png" alt="0b3ff1fa-a891-44ec-92a8-2e318892ef5c-image.png" class=" img-fluid img-markdown" />。大家可以到这个网页去复制<a href="https://emojiterra.com/white-heavy-check-mark/" target="_blank" rel="noopener noreferrer nofollow ugc">https://emojiterra.com/white-heavy-check-mark/</a></p>
<p dir="auto"> <br />
<img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/45394248-55fb-49e1-817b-79d5a6f1a5ae.png" alt="6.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第8步-整理最终的消息内容"></a>第8步 - 整理最终的消息内容</h2>
<p dir="auto">回复内容中出现对号以后，我们将退出循环“重复执行直到( )”。在这个时间点上，我们仍然需要再更新一次聊天消息，因为变量“回复”可能包含一些尚未显示的内容。我们还应当去除对号。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/70c9370c-ab57-457e-87ff-a2b3e2f94d96.png" alt="7.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="第9步-优雅地处理聊天长度限制"></a>第9步 - 优雅地处理聊天长度限制</h2>
<p dir="auto">目前，聊天的长度是有限制的。如果聊天太长，回复内容就会包含“CHAT LIMIT REACHED”（超过聊天限制长度）。出现这种情况时，聊天就不能再继续了，所以我们要告诉用户。在这种情况下，用户不能继续聊天了，但可以点击绿旗开启新的对话窗口。</p>
<p dir="auto"><img src="https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/cdc0b148-b372-4b57-b9d6-c2868e570824.png" alt="8.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"> <br />
 </p>
<h2><a class="anchor-offset" name="创意扩展"></a>创意扩展</h2>
<p dir="auto">现在请尝试将这个聊天程序进一步扩展。大家可尝试用“系统请求”强化提示语，使聊天内容更加逼真。例如，可以假装今年是1945年，爱因斯坦并不知道这一年之后发生的所有事情。</p>
]]></description><link>https://forum.creaticode.com/topic/971/chatgpt人工智能-聊天程序改进-难度-3级</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 13:44:10 GMT</lastBuildDate><atom:link href="https://forum.creaticode.com/topic/971.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jun 2023 10:26:58 GMT</pubDate><ttl>60</ttl></channel></rss>