AI News HubLIVE
站内改写5 分钟阅读

构建一个能执行操作的免费AI代理(无需代码)

本教程指导你从零开始,使用Quickchat平台创建一个无需编码的AI代理。该代理不仅能基于你提供的知识回答问题,还能在对话中调用实时API(例如货币汇率转换),并返回结果。通过一个可复用的API动作模式,你可以轻松扩展代理的功能。

来源Hacker News AI作者: piotrgrudzien

大多数聊天机器人只能进行对话。如果你问它们某种货币的价格、订单状态或今天的汇率,它们要么猜测,要么让你去别处查。而能执行操作的AI代理则相反:它在对话过程中调用一个真实的API,读取结果,并用它来回答。

本教程将从零开始,使用一个空账户,无需任何代码,构建这样一个代理。最终,你将拥有一个能根据你提供的知识回答问题,并在聊天过程中调用实时REST API的代理,并且你能在收件箱中亲眼看到它的运行过程。你在这里构建的动作是一个主配方:一个描述好的HTTP请求。将其指向不同的URL,同一个配方就能将线索记录到电子表格、写入CRM或管理聊天服务器。本文末尾的所有集成教程都是它的实例。

下面的一切都是在真实代理上构建和测试的。截图中的每一个对话和API调用都是由真实运行的代理产生的;你可以重现每一个。

你将构建什么

一个为虚构的项目规划工具Meridian设计的单一支持代理。它能在大约十分钟内端到端地完成两件事:

  • 根据你提供的知识回答问题:Meridian的计划、价格和功能。
  • 在对话过程中调用一个实时API,将价格转换为访问者所需的货币,然后在回复中使用结果。

该动作调用Frankfurter,一个免费、无需密钥的汇率API,因此你只需一个Quickchat账户,无需注册任何其他服务。重点在于模式,而不是货币:一旦你构建了这个动作,你就拥有了所有集成的形状。

你需要什么:

  • 一个免费的Quickchat AI账户(在此注册)。
  • 无需代码、无需服务器、无需API密钥。

什么是AI代理,它与聊天机器人有何不同?

聊天机器人回答问题。代理则回答问题并执行操作。在Quickchat中,你由三个部分构建一个代理。前两部分构成聊天机器人,第三部分(动作)使其成为代理。

  • 身份:代理是谁:它的名称、角色和指令。这就是AI主提示。
  • 知识:它根据什么回答问题:你的文档、页面和事实。
  • 动作与MCP:它能做什么:在对话过程中调用API。

前两部分构成一个好的聊天机器人,第三部分使其成为代理。本文将主要关注第三部分。

什么是AI动作?

一个AI动作就是一个描述好的HTTP请求。你填写一次请求(方法、URL和要发送的值),并编写何时使用它的描述。在对话过程中,模型决定是否调用它,并填写你留空的部分;Quickchat发送请求,模型读取响应。

理解为什么这是可靠的最清晰的方法是,将请求中的每个值分为两种类型。你固定确定值,模型从对话中填充判断值。参数是它必须正确的唯一值。

  • 确定值:由你固定的值:方法、URL、基础货币。模型无法弄错,因为它从不接触它们。
  • 判断值:由模型从对话中填充的值:访问者要求的货币、要转换的价格。这些是需要任何思考的唯一值,也是唯一需要调整的值。

你通过“添加AI数据”菜单插入判断值,该菜单会在任何字段中放入一个{{...}}芯片。该菜单提供动作需要引入的三种东西:

  • 你定义的参数(模型填充的判断值,如{{currency}})。
  • 渠道设置的对话元数据(如{{conversation_channel}}或{{metadata_visitor_email}})。
  • 系统令牌:Quickchat存储并注入的秘密,显示为徽章,从不提供给模型。

对话元数据值无需询问即可使用。几个值得了解的:

  • {{conversation_channel}}:聊天所在的渠道(widget、telegram、whatsapp等)。
  • {{conversation_url}}:收件箱中此对话的链接。
  • {{language}}、{{country}}:访问者的语言和国家,两个字母的代码。
  • {{metadata_visitor_email}}:访问者的电子邮件(一旦他们分享)。
  • {{scenario_id}}、{{conversation_id}}:此代理和此对话的ID。

对于此动作,你只需要第一种(参数)。其他在你连接真实服务时很重要;文末的HubSpot和Discord指南依赖于所有三种。

步骤1:创建代理并赋予知识

注册并打开一个新代理。在身份页面上,将AI代理名称设置为“Meridian”,并将以下内容粘贴到AI主提示中(每个计划都有的始终可用的提示字段,你不需要单独的AI指南列表)。

> 你是Meridian的支持助理,Meridian是一个面向产品团队的项目规划工具。你回答Meridian网站上访问者关于计划、定价、功能和入门的问题。 > 使用你的知识回答问题。你的知识中的每个价格都是美元(USD)。 > 当访问者询问某个计划或价格在其他货币中的成本,或者提到他们自己的国家或当地货币时,调用“Convert price to currency”动作,传入美元金额和目标货币的3字母代码,然后同时给出美元价格和按照今日汇率转换后的金额。 > 如果你不知道答案,诚实地说明并提供转接给团队。绝不猜测。

其中两行值得注意。关于美元的一行告诉模型知识中的价格含义,以便它知道要向动作传递什么。最后一行,不知道时说不知道,产生的是诚实的拒绝而不是猜测。我们稍后测试两者。

现在给它一些可以回答的内容。在知识库页面上,添加几篇关于Meridian事实的简短文章。演示依赖的一篇是定价:

> Meridian有三个计划,按每位用户每月计费,单位为美元(USD): > - 入门版:每位用户每月19美元。无限项目、时间线和看板视图、最多3个集成。 > - 专业版:每位用户每月49美元。增加冲刺规划、任务依赖、自定义字段和无限集成。 > - 商业版:每位用户每月99美元。增加组合路线图、高级权限、SSO和优先支持。 > 年度计费比月度便宜17%。每个计划都有14天免费试用,无需信用卡。

演示的事实,以简短文章形式添加并标记为“准备就绪”。代理将从这些内容中回答定价问题。

这足以让代理回答定价问题。故意遗漏一件事(安全认证),这样我们就有代理无法回答的真正问题。

步骤2:主AI动作配方:调用任何REST API

这是可重用的部分。打开“动作与MCP”,在自定义动作下点击“添加动作”,然后选择“API动作”。

每个API动作都使用相同的表单,顺序相同。在此一次学会,后面的每个配方都是不同值的相同框。它包含两部分:从访问者收集的内容和要发送的请求。

要收集的值

表单顶部:API动作名称,以及模型填充的两个必需参数:currency(货币)和amount(金额)。

  • API Action Name:模型用来引用动作的简短名称:Convert price to currency。
  • 判断值:每一行一个。给每个参数设置格式、名称和描述,告诉模型如何填充,并标记为必需,这样模型绝不会在没有它的情况下调用动作。

| 格式 | 名称 | 描述 | 必需 | |------|------|------|------| | 文本 | currency | 要转换到的货币的3字母ISO代码,例如EUR、GBP或JPY。从访问者提到的货币或国家中推导出来。 | 是 | | 十进制数 | amount | 要转换的美元金额,取自访问者询问的计划或价格。 | 是 |

“首先询问用户什么”是产品的标签,但代理很少停下来询问。当访问者写“商业版多少欧元”时,模型已经拥有了两个值(金额来自你的知识,currency来自“欧元”),并直接填充它们。

要发送的请求

请求:一个GET请求到Frankfurter,base固定为USD,currency和amount芯片添加到查询参数下。

  • API请求方法和端点URL:GET到Frankfurter的最新汇率端点:https://api.frankfurter.dev/v1/latest
  • Query Params:这是确定值和判断值相遇的地方。在查询参数标签下添加三行。对于base输入USD,对于另外两个点击“添加AI数据”并选择你定义的参数,这将放入{{currency}}和{{amount}}芯片。

| Key | Value | |-----|-------| | base | USD | | symbols | {{currency}} | | amount | {{amount}} |

  • Headers和Body:无。这是一个GET请求,所有内容都在查询字符串中。
  • API Action Description:最重要的字段。这是模型读取以决定是否调用动作的内容,因此将其绑定到一个清晰的信号,而不是描述机制。

> 将美元金额转换为今日汇率下的另一种货币。每当访问者询问某个价格或计划在美元以外的货币中的成本,或者给出他们的国家或当地货币时,调用此动作。传入美元金额和要转换到的货币的3字母ISO代码。

保存并打开动作。这就是整个配方:一个名称、要收集的值、一个请求和一个描述。

完成的动作,已启用。卡片一目了然地显示其调用次数和成功率。

这里没有任何特定的货币内容。将URL和查询替换为你自己的API,你就得到了一个不同的动作。

指向你自己的API

Frankfurter动作是一个读取:一个带有公共数据的GET。你自己的API通常是相同的形式,只是多填写了几个字段。

要进行写入(而不仅仅是读取),将方法设置为POST、PATCH或DELETE,并将数据以JSON的形式放在Body标签下。相同的{{...}}芯片在body内也有效,因此{ "email": "{{email}}" }会发送模型收集的任何内容。

对于需要密钥的API,在Headers标签下添加一行(例如Authorization),并通过“添加AI数据”选择系统令牌插入密钥。Quickchat存储秘密并在调用时注入,因此它显示为徽章,从不提供给模型或写入提示中。

其他所有内容都是相同的:名称、要收集的参数、决定何时触发的描述。

HubSpot指南使用注入的OAuth令牌构建了四个POST动作,Discord指南使用bot令牌在头部构建了七个针对Discord API的动作。两者都是你刚刚填写的相同表单,只是URL和body不同。

步骤3:测试并观察调用过程

这是一张图中的整个往返过程:访问者提问,模型填充判断值,Quickchat添加固定值并发出请求,回复携带结果返回。

一次调用,端到端:模型填充判断值,Quickchat添加固定值并发出请求。

在AI预览(左侧菜单顶部)或你的实时widget上与代理聊天,然后在收件箱中打开对话。先问一个简单的定价问题,然后询问另一种货币:

> 访问者:商业版计划多少钱? > Meridian:商业版计划每位用户每月99美元。 > 访问者:换算成欧元是多少? > Meridian:商业版计划每位用户每月99美元,按照今日汇率约合每位用户每月86.81欧元。

第一个回答来自知识。第二个是动作触发的结果。你不需要……