Navigation

    CreatiCode Scratch Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode

    ChatGPT人工智能:聊天程序改进(难度:3级)

    小教程
    1
    1
    419
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      creaticodeteacher2-mail last edited by admin

      介绍

      在上一篇教程,大家学习了如何用ChatGPT制作简单的聊天程序。

      在这篇教程,大家将学习如何改进那个聊天程序,有几个技巧。

      j3.gif

       
       

      第1步 - 项目起点

      我们从上一篇教程的项目作为起点。如果你没有那个程序,就根据那篇教程制作一个,或者改编如下这个项目:

      https://play.creaticode.com/projects/1ca634e4193e2b27500be13e

       
       

      第2步 - 测试“角色穿帮”

      在目前的程序中,我们指定ChatGPT扮演某个角色。不过,我们的用户容易摆脱这一限制,导致ChatGPT“角色穿帮”。

      如下所示,当我们质疑它的时候,ChatGPT就会承认自己是人工智能模型,装扮的爱因斯坦。

      Animation1.gif

       
      这么回答并没有什么错,因为ChatGPT想要解释清楚怎么回事。然而,在很多程序中,我们需要强制ChatGPT扮演其角色。

      举个例子,比如我们让ChatGPT在一个冒险游戏中扮演一位万能的巫师。如果巫师突然承认自己是一个“人工智能语言模型”,那就破坏氛围和乐趣了,对吧?

      再举个例子,比如我们让ChatGPT向学生提问问题。如果学生以某种方式使ChatGPT角色穿帮,ChatGPT就会开始说出答案。

       
       

      第3步 - 利用“系统请求”强制保持角色

      为了确保ChatGPT一直扮演指定的角色,我们可以用“系统请求”。ChatGPT会严肃对待所有的系统请求,将会竭尽全力履行系统请求。

      将原来的积木“请求”替换为“系统请求”,并明确指示ChatGPT在所有回答中保持指定的角色。另外,刚开始ChatGPT没有回答,我们只需要发一条消息“你好”。
      0.png

       
      现在当我们再次以用户身份质疑ChatGPT,它就会始终扮演指定的角色:

      Animation2.gif

       
       

      第4步 - 强化系统请求

      尽管我们用系统请求迫使角色不穿帮,但这个方法并不完美。

      首先,真的爱因斯坦并不知道什么是ChatGPT,所以不应当说“我不是ChatGPT”、“我不是聊天机器人”。

      另外,聪明的用户仍然能轻而易举让ChatGPT穿帮,如下所示:

      2.png

       

      如果我们真的要让聊天机器人“栩栩如生”,我们就要强化系统请求,来应对像这样的用户质疑。这常常被称为“提示语工程”(prompt engineering),为了改善ChatGPT的回答,我们争取找到最好的提示语。

      比如,我们可以在系统请求后面再加一句:“你从来没听说过人工智能模型和ChatGPT”。改进的回答如下:
      3.png

       
       

      第5步 - 切换至“持续更新”模式

      目前,ChatGPT的回答速度还不是太快。如果回复内容较长,用户要等好几秒才能看到回复。

      为了解决这个问题,大部分ChatGPT系统使用“持续更新”模式,当ChatGPT开始生成回答内容后,就会显示一部分回答内容,然后不断增加回答内容。这样可以使用户早点看到回复。

      4.png

       
      注意,在“持续更新”模式中,积木“请求”会立即结束,但变量“回复”的内容此时还依然是空的。

       
       

      第6步 - 不断重复刷新回复

      在“持续更新”模式中,随着ChatGPT生成回复内容,变量“回复”的值将自动更新。因此,为了显示回复内容,我们要用如下方法:

      1. 聊天窗口中添加一个符号“…” 告诉用户ChatGPT正在思考。
      2. 不断用变量“回复”更新消息。

       
      5.png

       
      现在一旦收到回复内容,就会立即在聊天窗口显示:
      Animation3.gif

       
       

      第7步 - 检测回复是否结束

      我们需要稍稍改进这个重复执行循环。我们不能用无限循环,因为会导致程序卡在这个循环中。

      为了确定ChatGPT是否已经回复完,我们可以看是否有这个对号0b3ff1fa-a891-44ec-92a8-2e318892ef5c-image.png。大家可以到这个网页去复制https://emojiterra.com/white-heavy-check-mark/

       
      6.png

       
       

      第8步 - 整理最终的消息内容

      回复内容中出现对号以后,我们将退出循环“重复执行直到( )”。在这个时间点上,我们仍然需要再更新一次聊天消息,因为变量“回复”可能包含一些尚未显示的内容。我们还应当去除对号。

      7.png

       
       

      第9步 - 优雅地处理聊天长度限制

      目前,聊天的长度是有限制的。如果聊天太长,回复内容就会包含“CHAT LIMIT REACHED”(超过聊天限制长度)。出现这种情况时,聊天就不能再继续了,所以我们要告诉用户。在这种情况下,用户不能继续聊天了,但可以点击绿旗开启新的对话窗口。

      8.png

       
       

      创意扩展

      现在请尝试将这个聊天程序进一步扩展。大家可尝试用“系统请求”强化提示语,使聊天内容更加逼真。例如,可以假装今年是1945年,爱因斯坦并不知道这一年之后发生的所有事情。

      1 Reply Last reply Reply Quote 0
      • Pinned by  info-creaticode info-creaticode 
      • First post
        Last post