Navigation

    CreatiCode Scratch Forum

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

    ChatGPT 人工智能:让ChatGPT 学会网页搜索(难度:4)

    小教程
    1
    1
    103
    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.
    • info-creaticode
      CreatiCode last edited by admin

      简介

       

      像 ChatGPT 这样的大型语言模型从训练数据中学习所有知识,因此它们不知道训练数据截止日期之后的任何新信息。

      例如,如果我们问 ChatGPT 这个问题:“哪支球队赢得了 2024 年美洲杯?” 它将无法回答,因为在撰写本文时,ChatGPT 的截止日期是 2023 年 10 月。

      4732e722-57c6-4012-9b6a-aed0f5f66fc9-image.png

       
       

      对 ChatGPT 的增强

       

      为了解决这个问题,我们可以“教” ChatGPT 寻求帮助。为了说明这个想法,我们可以将 ChatGPT、用户和我们的程序想象成 3 个角色,他们的对话可能如下所示:

      • 用户对程序:谁赢得了 2024 年美洲杯?
      • 程序对 ChatGPT:嘿 ChatGPT,你能尝试回答这个问题吗:谁赢得了 2024 年美洲杯?顺便说一句,如果你发现你需要搜索网络以获取一些新信息,我可以提供帮助。
      • ChatGPT 对程序:这个问题超出了我的截止日期。请在 Google 上搜索“谁赢得了 2024 年美洲杯?”
      • 程序对 ChatGPT:好的。让我用 Google 搜索一下……好的,我明白了,这是研究结果:阿根廷
      • ChatGPT 对程序:谢谢。根据搜索结果,以下是给用户的答案:阿根廷
      • 程序对用户:阿根廷

       
      现在,让我们一步一步地构建这个工作流程。

       
       

      步骤 1 - Remix “Helpful Assistant” 项目

       

      play.creaticode.com/projects/6531b7e60fdce080a4481c1d

       
       

      步骤 2 - 更新初始提示

       

      由于我们将编写一个相当长的提示,让我们仍然使用“注释”区域来编写提示。

      首先,通过右键单击绿旗块来添加注释区域:

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

      你是一个友好的助手,而我是一个可以帮助你的代理。确保你的回应简洁易懂。不要说任何不恰当的话。
      
      当你需要在回答用户问题之前进行网络搜索时,你应该使用特殊标签“WEB:”后跟要搜索的查询来回应我,而不是回应用户。我会把答案提供给你,然后你可以生成对用户的回应。
      
      现在说“嗨”
      

       
      此提示包含 3 部分:

      • 它首先介绍了上下文,其中 ChatGPT 扮演友好助手的角色,而我们(我们的程序)是帮助它的代理。
      • 然后,向 ChatGPT 发出特殊指令,以便它在需要在线获取一些新信息时要求我们进行网络搜索。还指定了它应该使用的特殊语法,即“WEB:”标签。
      • 最后,我们要求 ChatGPT 说“嗨”并等待用户输入。

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

       

      web.gif

       
      现在让我们再次用同样的问题进行测试,我们将从 ChatGPT 获得“WEB:”响应:

      c24a230c-074e-4838-b110-51902483dec2-image.png

       
      这是一个很大的改进:ChatGPT 已经学会了它可以使用网络搜索工具来帮助它回答问题。 当然,我们不应该向用户展示这一点,因为最终答案尚未给出。让我们在下面更改它。

       
       

      步骤 5 - 强制输出格式

       

      ChatGPT 可能不会每次都使用相同的格式。例如,它可能会这样回应:

      5133d34a-55c5-44b6-a4e3-4eaab9904513-image.png

       
      这种回应的问题在于,我们的程序将很难提取用于网络搜索的确切查询。为了强制 ChatGPT 使用正确的格式,我们可以对提示进行 2 处更改:

      • 添加注释,强调我们期望的格式。
      • 举一个例子,演示正确的回应方式。

      以下是更新后的提示:

      你是一个友好的助手,而我是一个可以帮助你的代理。确保你的回应简洁易懂。不要说任何不恰当的话。
      
      当你需要在回答用户问题之前进行网络搜索时,你应该使用特殊标签“WEB:”后跟要搜索的查询来回应我,而不是回应用户。我会把答案提供给你,然后你可以生成对用户的回应。请注意,当你需要进行网络搜索时,你必须以“WEB:”开头,除了查询之外什么也不要说。避免询问用户你是否应该进行网络搜索,因为用户不知道网络搜索工具。
      
      例如:
      用户:谁赢得了 2024 年奥运会男子 100 米短跑冠军?
      你:WEB: 2024 年奥运会男子 100 米短跑冠军
      系统:在 2024 年巴黎奥运会上,美国短跑运动员诺亚·莱尔斯在男子 100 米决赛中获胜
      你:美国短跑运动员诺亚·莱尔斯
      
      现在说“嗨”
      

      现在请将此新提示复制到您的注释区域,然后将其复制到系统请求块中。这将有助于确保 ChatGPT 坚持我们指定的格式。

       
       

      步骤 6 - 检查响应是否以“WEB:”开头

       

      接下来,我们将根据 ChatGPT 的响应是否以“WEB:”的特殊标签开头来以不同的方式处理它的响应。我们只会在 ChatGPT 的响应以“WEB:”开头时添加一些额外的步骤。

      a5fd5a48-8a3a-4ed8-84ce-750ffd9f698e-image.png

       
       

      步骤 7 - 运行网络搜索

       

      当我们发现 ChatGPT 要求我们进行网络搜索时,我们可以从 ChatGPT 的响应中提取提取查询语句,然后使用该查询语句运行网络搜索。

      834953dd-17ed-40b6-9958-652a41e144c6-image.png

       
      逻辑如下:

      1. ChatGPT 的响应以“WEB:”开头,我们只需要后面的表达式。因此,我们可以使用“substring”块来获取从第 5 个字母开始的响应的子字符串。例如,如果响应变量为“WEB: 2024 年奥运会男子 100 米短跑冠军”,则子字符串将为“ 2024 年奥运会男子 100 米短跑冠军”。
      2. 我们可以使用 AI 类别中的“web search”块来搜索网络并将前 3 个结果存储在“result_table”中。

       
      现在,让我们尝试通过再次运行程序来获得一些搜索结果。要查看“result_table”,我们必须从舞台上删除聊天窗口。我们可以单独运行“remove all widgets”块。

      390c7eb9-a919-41ca-92bd-6f1097203446-image.png

       
      之后,通过选中其复选框在舞台上显示“result_table”:

      5755ec89-fcb6-497b-9d94-1ef1a74be666-image.png

       

      您将看到 result_table 包含 3 列:标题、链接和摘要。摘要只是该网页的简短摘要。

      web.gif

       
       

      步骤 8 - 聚合搜索结果

       

      要将搜索结果返回给 ChatGPT,我们首先必须将 result_table 中的内容聚合到一个名为“answer”的变量中。例如,我们可以使用几个连接块来组成答案,如下所示,以包含排名第一的搜索结果:

      acbd147e-334a-4dfc-9fe7-039379d54b03-image.png

       
      请注意,“\n”表示换行符,这有助于更好地格式化答案文本。因此,“answer”变量将变为:

      5bbc721b-5885-4db3-8e8b-7efa77e65c6d-image.png

       
      我们可以使用相同的代码来连接第二个和第三个搜索结果。最后,我们将告诉 ChatGPT 为用户生成响应:

      37580913-79b7-43ef-9b08-c1cd85ac8479-image.png

       
       

      步骤 9 - 将搜索结果提供给 ChatGPT

       

      现在我们将结果传递回 ChatGPT。请注意,我们应该使用 “system request”块发送答案,这向 ChatGPT 表明此答案来自系统,而不是用户。我们仍然会要求 ChatGPT 将响应存储在“response”变量中,这将覆盖之前的响应。

      f4ecd7f3-ee58-4eeb-8085-11d6248f6f16-image.png

       
      在此步骤之后,“response”变量包含基于网络搜索结果的新响应,我们可以继续将其附加到聊天记录中。

      如果您再次使用相同的请求进行测试,ChatGPT 将产生正确的答案!

      802c36a3-c221-4dc1-8937-8e9460dff131-image.png

       
       

      进一步改进

       

      在本教程中,您已经学习了如何使用网络搜索工具增强 ChatGPT。您可以做些什么来使其更好?以下是一些值得尝试的想法:

      • 改进提示:如果您更多地测试程序,您可能仍然会发现有时它无法运行网络搜索。如果您可以在提示中添加另一个示例对话,那将会很有帮助。您还可以尝试改进提示中的说明,以告诉 ChatGPT 预期的行为是什么。

      • 获取页面内容:当前程序仅向 ChatGPT 提供搜索结果中每个网页的标题和摘要。对于更复杂的问题,这可能不包含用户所要求的信息。进一步的增强是为 ChatGPT 提供另一个工具:获取网页。 为此,您需要对提示进行一些更改:

        • 为 ChatGPT 提供每个搜索结果的链接 URL
        • 告诉 ChatGPT 如果它需要任何页面的完整内容,它可以发出另一个特殊命令“FETCH:页面的 URL”。
        • 当我们收到 FETCH 请求时,使用 Cloud 扩展中的“fetch web page as markdown”块获取该页面的内容,然后将内容发送回 ChatGPT。
      1 Reply Last reply Reply Quote 0
      • Pinned by  info-creaticode info-creaticode 
      • First post
        Last post