三、Agent的创建

在第一章中我们已经讲过了什么是智能体,在第二章讲了关于coze的一些内容,那么现在,我们来尝试在coze创建我们自己的智能体。

1. 智能体搭建步骤

  1. 创建一个智能体

    1. 登录coze官网,并选择开发平台

      在这里插入图片描述

    2. 点击左上角创建

在这里插入图片描述

  1. 选择创建智能体

    在这里插入图片描述

  2. 输入智能体名称和功能介绍,并为应用生成头像,最后点击右下角确认

    在这里插入图片描述

  3. 智能体配置

创建完智能体后,我们来看一下智能体相关的配置页面

img

接下来我们逐步解释以下上述三部分的作用

  • 人设与回复逻辑(即大模型中的提示词工程):智能体的人设与回复逻辑定义了智能体的基本人设,此人设会持续影响智能体在所有会话中的回复效果。建议在人设与回复逻辑中指定模型的角色、设计回复的语言风格、限制模型的回答范围,让对话更符合用户预期。

  • 技能、知识、记忆以及对话体验:为智能体配置各种扩展能力,比如说添加知识库、设置模型开场白等

  • 预览与调试:在智能体的各种配置完成之后,我们可以对我们配置的进行调试,方便我们对智能体进行及时的调整

    1. 编写提示词,若有需要,可以使用右上角的优化对输入的提示词进行结构以及内容的优化

      在这里插入图片描述

  1. 调试智能体

    在这里插入图片描述

  2. 发布智能体

    完成调试后,单击发布将智能体发布到各种渠道中,在终端应用中使用智能体。

    目前支持将智能体发布到飞书、微信、抖音、豆包等多个渠道中,你可以根据个人需求和业务场景选择合适的渠道。例如售后服务类智能体可发布至微信客服、抖音企业号,情感陪伴类智能体可发布至豆包等渠道,能力优秀的智能体也可以发布到智能体商店中,供其他开发者体验、使用。

    1. 在智能体的编排页面右上角,单击发布,并点击中间的确认。

      在这里插入图片描述

    2. 在发布页面输入发布记录,并选择发布渠道。

    3. 单击发布。

      在这里插入图片描述

2. 设置智能体模型

1. 选择模型

我们可以在上述编排页面选择合适的大模型。选择模型并完成智能体的技能、知识等设置后,你也可以切换成不同的模型,测评各个模型在同一个智能体中的效果,选择最合适的模型。

在这里插入图片描述

2. 生成多样性

用于从多个维度调整不同模型在生成内容时的随机性。扣子提供以下预置的模式供你选择,每个模式的模型参数取值不同。

你也可以根据需求,展开 高级设置 ,修改每个模式下的具体参数值。建议不要同时调整生成随机性和 Top P,以免在多参数的影响下难以判断每个参数的调整效果。

配置项 说明
生成随机性 即 temperature,用于控制结果的随机性。**调高此参数值,会使模型的输出更具多样性和创新性。降低此参数值,会使输出内容更加严格遵循指令要求。当该数值接近零时,模型将变得确定和重复。**在基于事实的问答场景,你可以使用较低的回复随机性数值,以获得更真实和简洁的答案,例如售后客服场景;在创造性的任务例如小说创作,你可以适当调高回复随机性数值。
Top P 累计概率。模型在生成输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累计达到 Top P 值。这样可以限制模型只选择这些高概率的词汇,从而控制输出内容的多样性。
重复语句惩罚 frequency penalty,用于控制模型输出重复语句的频率。当该值为正时,会阻止模型频繁使用相同的词汇和短语,从而增加输出内容的多样性。
重复主题惩罚 presence penalty,用于控制模型输出相同主题的频率。当该值为正时,会阻止模型频繁讨论相同的主题,从而增加输出内容的多样性。

3. 输入及输出设置

用于指定模型的输出格式等参数,通常包括以下设置:

配置项 说明
携带上下文轮数 设置代入模型上下文的对话历史轮数。轮数越多,多轮对话的相关性越高,但消耗的 Token 也越多。
最大回复长度 智能体在生成提示和响应时,所输出的最大 token 数量,不同模型的 token 限制也不同。指定最大长度可以防止过长或不相关的响应并控制成本。
输出格式 模型输出内容的格式,例如文本、Markdown。

在这里插入图片描述

4. 插件

插件能够让智能体调用外部 API,例如搜索信息、浏览网页、生成图片等,扩展智能体的能力和使用场景。

  1. 添加插件

    在上一步中设置模型为 角色扮演 ,这个模型的工具调用能力较弱,我们可以先看一下 角色扮演 可不可以调用插件

    注意:添加插件时要同步在提示词中进行插件的添加,否则,模型并不一定会进行插件的调用

    在这里插入图片描述

  2. 测试效果

    会发现角色扮演模型并没有调用工具。将模型换成工具调用再试一下。

    在这里插入图片描述

5. 卡片

Coze 平台上,消息卡片是 Bot 信息视觉化效果体现,以模块化构建组件的形式,支持以图文和按钮交互的方式,将信息展示给用户。

卡片的使用可以分为官方卡片、创建自定义卡片

  1. 如何配置卡片

    在这里插入图片描述

在这里插入图片描述

6. 触发器(未找到)

触发器(Triggers)是使智能体在特定时间或接收到特定事件时自动执行任务。

  1. 定时任务

    允许用户在与智能体对话过程中,根据用户所在时区创建定时任务。例如“每天早上八点推送新闻”。每个对话中最多创建 3 条定时任务。

7. 为智能体添加知识

  1. 在知识下选择合适的格式进行添加

    在这里插入图片描述

  2. 创建知识库

  3. 将准备好的文档上传到所创建的知识库中

  4. 等待分段处理完毕添加到智能体即可

    在这里插入图片描述

8. 长期记忆

上面我们通过上传知识库文件,让agent了解到我们自己,其实我们一般人是没有办法整理出这种个人信息的,那我们想让agent记住我们就可以使用扣子的长期记忆

  1. 开启长期记忆

    1. 创建长期记忆库
    2. 将长期记忆库添加到智能体中

与教程不一致,现在长期记忆与长期记忆库相关联

9. 对话体验

  1. 开场白

    开场白是用户进入智能体后自动展示的引导信息。它的主要目的是帮助用户理解智能体的用途,以及如何与其进行交互。

四、资源的玩法

1. 插件

1.1 插件是什么

插件是一个工具集,一个插件内可以包含一个或多个工具(API)。

插件与工具的关系:每个插件可添加多个工具,同一个插件内的不同工具必须使用相同的域名。插件中的每个工具都是一个独立的 API。智能体调用插件时,实际上是调用插件中的某个工具,也就是调用某个 API。

例如,一个天气查询的 API Service 可能会包含以下两个 API:

  • 查询当前天气:http://api.weather.com/current
  • 查询未来天气:http://api.weather.com/forecast

那么在创建插件时,每个 API 就是一个插件下的一个工具。

在这里插入图片描述

1.2 该如何创建插件

1.2.1 前期准备

要先确认好自己所需API,再获取对应的api链接及密钥

我们以https://serper.dev/为例(谷歌搜索api的平替)

先去对应官网注册,复制key即可

在这里插入图片描述

1.2.2 新建插件资源与工具

先进入coze开发空间首页,在资源库下添加插件资源

在这里插入图片描述

插件创建配置如下:

  • 插件名称谷歌搜索
  • 插件描述搜索网页
  • 插件工具创建方式云侧插件 - 在 Coze IDE 中创建
  • IDE 运行时Node.js

在这里插入图片描述

在插件下创建工具

点击左上角的添加工具,填入如下配置即可

  • 名称:Google_Search_Express
  • 描述:谷歌搜索快速版

在这里插入图片描述

工具创建页面板块功能介绍

在这里插入图片描述

  • 工具列表:根据上文插件与工具的关系,我们可以知道,一个插件可以包含多个工具,这个位置就是我们这个插件包含的工具组成的列表

  • 依赖包:管理依赖包,所有工具共用该依赖列表

    • 使用方式:单击 + 或者单击 添加依赖 按钮,输入依赖包名称并选择版本(可通过依赖名@版本号的格式进行搜索),然后安装依赖包。
    • 依赖包的解释:依赖包(也称为库、模块或包)是预先编写好的代码集合,用于解决特定的问题或提供特定的功能。是可复用的代码集合,提供特定功能(如数据处理、网络请求、UI组件等)。开发者通过导入这些包来避免重复造轮子,提升开发效率。
  • 代码:我们写代码或者让ai写代码的地方

  • 元数据:让大语言模型理解每个工具输入或输出参数有哪些、各个参数有何含义。因此,在工具的元数据内提供详细的参数说明,可以让大语言模型更准确的使用工具。当用户在使用该工具的智能体时,模型会根据工具的元数据信息,从用户问答中解析、提取出对应的输入参数,并选择调用该工具,流程图如下所示。

    在这里插入图片描述

    • 配置说明

      配置项 描述
      名称 工具名称。建议输入清晰易理解的名称,便于后续大语言模型搜索与使用工具。
      描述 工具的描述信息,一般用于记录当前工具的用途。
      启用 是否启用当前工具。使用说明:如果工具未开发测试完成,建议先禁用该工具,只启用并发布已通过测试的工具。如果需要下线某一工具,可将该工具设置为禁用,并再次发布插件。- 如果插件中只有一个工具,则不支持禁用该工具。如需下线该工具,您可以选择直接删除该插件,或者创建另一个工具并完成开发测试后,再禁用该工具,最后发布插件。
      输入参数 当前工具对应接口的输入参数信息。准确、清晰易理解的参数名称、描述等信息,可以让大语言模型更准确的使用工具。
      输出参数 当前工具对应接口的输出参数信息。准确、清晰易理解的参数名称、描述等信息,可以让大语言模型更准确的使用工具。
  • 测试:只需要写输入就可以,控制台是我们查看日志的地方

1.2.3 完善工具
  • 安装依赖包

    • 搜索axios

      在这里插入图片描述

  • 填写代码

    import { Args } from '@/runtime';
    import axios from 'axios';
    
    interface Input {
      q: string;     // 必填:搜索关键词
      key: string;   // 必填:API密钥
    }
    
    interface SearchResult {
      title: string;
      link: string;
      snippet: string;
    }
    
    interface Output {
      success: boolean;
      error?: string;
      results: SearchResult[];
      related?: string[];
    }
    
    export async function handler({ input, logger }: Args<Input>): Promise<Output> {
      // 基本参数验证
      if (!input.q || !input.key) {
        const errorMsg = 'Missing required parameters: both "q" and "key" are required';
        logger.error(errorMsg);
        return {
          success: false,
          error: errorMsg,
          results: []
        };
      }
    
      try {
        const { data } = await axios({
          method: 'post',
          url: 'https://google.serper.dev/search',
          headers: { 
            'X-API-KEY': input.key, // 使用动态API密钥
            'Content-Type': 'application/json'
          },
          data: JSON.stringify({
            q: input.q,
            gl: 'us',       // 默认国家:美国
            hl: 'en',       // 默认语言:英语
            num: 10,        // 默认结果数:10
            page: 1,        // 默认页码:1
            location: '',   // 默认地点:空
            tbs: ''         // 默认日期范围:空
          }),
          timeout: 10000
        });
    
        logger.info(`Successfully fetched ${data.organic?.length || 0} results for "${input.q}"`);
        
        // 结果格式化
        const results: SearchResult[] = data.organic?.map((item: any) => ({
          title: item.title,
          link: item.link,
          snippet: item.snippet
        })) || [];
    
        return { 
          success: true,
          results,
          related: data.related?.map((r: any) => r.query) || []
        };
    
      } catch (error: any) {
        // 精简错误信息提取
        const errorMsg = error.response?.data?.message || error.message || 'Unknown search error';
        logger.error(`Search failed for "${input.q}": ${errorMsg}`);
        
        return {
          success: false,
          error: errorMsg,
          results: []
        };
      }
    };
    
  • 编辑输入参数

    • 名称 q
      • 搜索关键词
    • 描述 key
      • API密钥
  • 测试:编辑入参运行即可

    在这里插入图片描述

    • 点击更新输出参数,即可将输出参数更新到元数据中
  • 发布:右上角点击发布即可,发布之后即可在资源库看到

2. 知识库

关于知识库的更详细内容可以参考hello agents中的记忆与检索章节。

对应课程:DataWhale coze-ai-assistant

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐