Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • CreatiCode
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

CreatiCode Scratch Forum

  1. CreatiCode Forum
  2. 知识库
  3. 小教程
  4. ChatGPT人工智能:聊天程序改进(难度:3级)

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

Scheduled Pinned Locked Moved 小教程
1 Posts 1 Posters 1.2k Views
  • 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 Offline
    C Offline
    creaticodeteacher2-mail
    wrote on last edited by admin
    #1

    介绍

    在上一篇教程,大家学习了如何用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
    0
    • CreatiCodeI CreatiCode pinned this topic on

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Register Login
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode