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 人工智能:增强 ChatGPT 进行数学计算的能力(难度:3)

ChatGPT 人工智能:增强 ChatGPT 进行数学计算的能力(难度:3)

Scheduled Pinned Locked Moved 小教程
1 Posts 1 Posters 1.1k 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.
  • CreatiCodeI Offline
    CreatiCodeI Offline
    CreatiCode
    wrote on last edited by admin
    #1

    简介

     

    像 ChatGPT 这样的大型语言模型非常擅长处理文本和解决问题,这使得它们看起来几乎聪明得可怕。然而,随着你使用它们越来越频繁,你会发现它们在许多其他任务上表现得很糟糕。

    其中一项任务就是数学计算。例如,假设我们用一个乘法问题测试 ChatGPT:

    017a16ba-b752-4a3d-b76e-ab0122b64d7e-image.png

     
    使用任何计算器,我们都可以轻松算出 3516 乘以 357 等于 1255212。ChatGPT 犯这个错误是因为它实际上并没有计算结果。相反,它在其训练数据中见过许多类似的乘法,所以它试图猜测输出数字应该是什么样子。

    由于数学计算在许多任务中都至关重要,我们必须找到一种方法来帮助 ChatGPT 正确计算。在本教程中,你将学习一个简单的解决方案。基本思想是,我们将教会 ChatGPT 在计算方面寻求帮助,我们将在代码中帮助它计算出正确的答案。

     
     

    第 1 步 - 初始项目

     
    我们将使用以下项目作为起点。请将其改编为你自己的项目,并将项目命名为“ChatGPT with Calculation Help”:

    play.creaticode.com/projects/6531b7e60fdce080a4481c1d

     
     

    第 2 步 - 验证问题

     

    在我们进行任何改进之前,请尝试在这个项目中使用数学问题来验证 ChatGPT 在没有我们的帮助下无法正确计算:

    017a16ba-b752-4a3d-b76e-ab0122b64d7e-image.png

     
     

    第 3 步 - 序列图

     

    在我们进行任何更改之前,让我们使用序列图来讨论这个项目的设计。

    我们的项目中有 3 个实体:

    • 用户:输入问题的用户
    • ChatGPT:回答用户问题的 AI 模型
    • 系统:这是我们的代码

    目前,系统只是在用户和 ChatGPT 之间转发消息,如下所示:

    89898c26-e615-454b-a2e1-2bf0672e38a4-image.png

     
    为了帮助 ChatGPT 进行数学计算,我们可以更改图表,以便有时 ChatGPT 可以与我们的系统对话并获得答案,如下面 2 个额外的蓝色箭头所示:

    bdaec6d9-db4a-4f25-8a8d-cc68adaa70cf-image.png

     
    这种设计的美妙之处在于,系统和 ChatGPT 之间的新消息可以对用户隐藏,因此在用户看来,ChatGPT 正在正确回答。

     
     

    第 4 步 - 更新初始提示

     

    由于我们将编写一个相当长的提示,让我们仍然使用“注释”区域来编写提示。首先,通过右键单击绿旗块添加注释区域:

    e.gif

     
    接下来,将以下提示复制到注释区域:

    你是一个友好的助手。
    
    当你需要进行数学计算时,你可以使用特殊的标签“CALC:”后跟要计算的表达式来响应系统,而不是响应用户。系统将向你提供答案,然后你可以生成对用户的响应。
    
    现在说“你好”
    

     
    此提示包含 3 个部分:

    • 它首先介绍了上下文,其中 ChatGPT 扮演友好助手的角色。
    • 然后,向 ChatGPT 发出特殊指令,以便在需要进行数学计算时响应系统。还指定了确切的语法。
    • 最后,我们让 ChatGPT 说“你好”并等待用户输入。

     
    接下来,你可以将整个提示从注释区域复制到请求块中,然后按 Enter 键确认:

    e.gif

     
    现在让我们再次测试相同的问题,我们将从 ChatGPT 获得“CALC:”响应:

    a3f91f67-2cc9-4805-b667-994dcb274298-image.png

     
    这是一个很大的进步:ChatGPT 承认它需要帮助! 它没有猜测答案,而是谦虚地询问系统如何进行此计算。

     
     

    第 5 步 - 控制输出格式

     

    由于 ChatGPT 根据概率生成每个输出词,因此它有时可能会决定更改响应格式。这不好,因为我们的代码假定了一个固定的格式。

    例如,如果你尝试运行该程序几次,你可能会得到如下响应:

    5de69e31-4e13-4f27-b28b-9ed654bb2d76-image.png

     
    同样,ChatGPT 可能会决定在表达式之后说些什么。

    现在,你能想想如何解决这个问题吗?理想情况下,我们希望 ChatGPT 始终以“CALC:3516 * 357”的固定格式生成响应。请在查看下面的解决方案之前尝试一下。

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    有很多方法可以控制 ChatGPT 的响应格式,但在大多数情况下,最好的解决方案是给出一个示例。ChatGPT 在从示例中学习方面训练有素。

    对于这个特定问题,我们可以给出用户、ChatGPT 和我们的系统之间的示例对话,如下所示:


    你是一位友好的助手,帮助一名 K-12 学生进行一些计算。你的回答简洁明了。不要说任何不恰当的话。

    当你需要进行计算时,你可以使用特殊的标签“CALC:”后跟要计算的表达式来响应系统管理员,而不是响应用户。系统管理员将向你提供该表达式的答案,然后你可以生成对用户的响应。

    例如:
    用户:2345 乘以 3456 是多少?
    助手:CALC:2345*3456
    系统:8104320
    助手:2345 乘以 3456 的答案是 8104320

    现在说“你好”


    现在请将这个新提示复制到你的注释区域,然后将其复制到系统请求块中。

    现在如果你尝试再次提出问题,它几乎总是使用正确的格式:

    aeae42e0-abd5-4628-a301-6f8dfe7acd88-image.png

     
     

    第 6 步 - 检查响应是否以“CALC:”开头

     

    接下来,我们将根据 ChatGPT 的响应是否包含特殊标签“CALC:”来不同地处理 ChatGPT 的响应。只有当 ChatGPT 的响应以“CALC:”开头时,我们才会添加一些额外的步骤。

    66cb760b-96f0-4eeb-9c97-569fd177ced9-image.png

     
     

    第 7 步 - 进行计算

     

    当我们发现 ChatGPT 要求我们进行计算时,我们可以计算答案并将其存储在一个变量中。

    1142cf63-57a9-41f9-8872-739e90aea796-image.png

     
    逻辑如下:

    1. ChatGPT 的响应以“CALC:”开头,我们只需要后面的表达式。因此,我们可以使用“substring”块来获取从第 6 个字母开始的响应的子字符串。例如,如果响应变量为“CALC:3516 * 357”,则子字符串将为“3516 * 357”。
    2. 我们可以使用“计算表达式”块来计算此表达式,这将产生一个数字,如 1255212
    3. 我们可以将该数字存储在一个名为“答案”的新变量中。

     
     

    第 8 步 - 告诉 ChatGPT 答案

     

    现在我们已经完成了计算,我们需要将其返回给 ChatGPT。请注意,我们应该使用**“系统请求”块发送答案,这使 ChatGPT 清楚地知道此答案来自系统,而不是用户**。我们仍然会要求 ChatGPT 将响应存储在“响应”变量中,这将覆盖先前的响应。

    cd34c7a3-bc5b-48ac-9226-9eaa2a7492d5-image.png

     
    在此步骤之后,“响应”变量包含基于我们计算的新响应,我们可以继续将其追加到聊天记录中。

    如果你再次测试相同的问题,你将得到正确的答案!

    ce0a9dd7-be09-43af-b253-7056e1b88bad-image.png

     
     

    创意点子

     

    在本教程中,你学习了一种非常有用的技术来增强 ChatGPT 的新能力。你能尝试一些其他方法来帮助 ChatGPT 吗?以下是一些供你参考的想法:

    今天的日期:

    信不信由你,如果用户询问 ChatGPT 今天的日期,它会给出一个随机且错误的日期。你可以使用“当前 [年/月/日]”块帮助获取答案。

    最长公共子串:

    ChatGPT 也不擅长执行算法。例如,它错误地回答了这个问题:

    4c9180db-ff3e-4307-80eb-f3444f96cf23-image.png

     
    你可以使用“最长公共子串”块提供帮助,正确答案应该是“1357911”。

    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