Datawhale coze-ai-assistant task2
三、Agent的创建
在第一章中我们已经讲过了什么是智能体,在第二章讲了关于coze的一些内容,那么现在,我们来尝试在coze创建我们自己的智能体。
1. 智能体搭建步骤
-
创建一个智能体
-
登录coze官网,并选择开发平台

-
点击左上角创建
-

-
选择创建智能体

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

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

接下来我们逐步解释以下上述三部分的作用
-
人设与回复逻辑(即大模型中的提示词工程):智能体的人设与回复逻辑定义了智能体的基本人设,此人设会持续影响智能体在所有会话中的回复效果。建议在人设与回复逻辑中指定模型的角色、设计回复的语言风格、限制模型的回答范围,让对话更符合用户预期。
-
技能、知识、记忆以及对话体验:为智能体配置各种扩展能力,比如说添加知识库、设置模型开场白等
-
预览与调试:在智能体的各种配置完成之后,我们可以对我们配置的进行调试,方便我们对智能体进行及时的调整
-
编写提示词,若有需要,可以使用右上角的优化对输入的提示词进行结构以及内容的优化

-
-
调试智能体

-
发布智能体
完成调试后,单击发布将智能体发布到各种渠道中,在终端应用中使用智能体。
目前支持将智能体发布到飞书、微信、抖音、豆包等多个渠道中,你可以根据个人需求和业务场景选择合适的渠道。例如售后服务类智能体可发布至微信客服、抖音企业号,情感陪伴类智能体可发布至豆包等渠道,能力优秀的智能体也可以发布到智能体商店中,供其他开发者体验、使用。
-
在智能体的编排页面右上角,单击发布,并点击中间的确认。

-
在发布页面输入发布记录,并选择发布渠道。
-
单击发布。

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

2. 生成多样性
用于从多个维度调整不同模型在生成内容时的随机性。扣子提供以下预置的模式供你选择,每个模式的模型参数取值不同。
你也可以根据需求,展开 高级设置 ,修改每个模式下的具体参数值。建议不要同时调整生成随机性和 Top P,以免在多参数的影响下难以判断每个参数的调整效果。
| 配置项 | 说明 |
|---|---|
| 生成随机性 | 即 temperature,用于控制结果的随机性。**调高此参数值,会使模型的输出更具多样性和创新性。降低此参数值,会使输出内容更加严格遵循指令要求。当该数值接近零时,模型将变得确定和重复。**在基于事实的问答场景,你可以使用较低的回复随机性数值,以获得更真实和简洁的答案,例如售后客服场景;在创造性的任务例如小说创作,你可以适当调高回复随机性数值。 |
| Top P | 累计概率。模型在生成输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累计达到 Top P 值。这样可以限制模型只选择这些高概率的词汇,从而控制输出内容的多样性。 |
| 重复语句惩罚 | frequency penalty,用于控制模型输出重复语句的频率。当该值为正时,会阻止模型频繁使用相同的词汇和短语,从而增加输出内容的多样性。 |
| 重复主题惩罚 | presence penalty,用于控制模型输出相同主题的频率。当该值为正时,会阻止模型频繁讨论相同的主题,从而增加输出内容的多样性。 |
3. 输入及输出设置
用于指定模型的输出格式等参数,通常包括以下设置:
| 配置项 | 说明 |
|---|---|
| 携带上下文轮数 | 设置代入模型上下文的对话历史轮数。轮数越多,多轮对话的相关性越高,但消耗的 Token 也越多。 |
| 最大回复长度 | 智能体在生成提示和响应时,所输出的最大 token 数量,不同模型的 token 限制也不同。指定最大长度可以防止过长或不相关的响应并控制成本。 |
| 输出格式 | 模型输出内容的格式,例如文本、Markdown。 |

4. 插件
插件能够让智能体调用外部 API,例如搜索信息、浏览网页、生成图片等,扩展智能体的能力和使用场景。
-
添加插件
在上一步中设置模型为 角色扮演 ,这个模型的工具调用能力较弱,我们可以先看一下 角色扮演 可不可以调用插件
注意:添加插件时要同步在提示词中进行插件的添加,否则,模型并不一定会进行插件的调用

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

5. 卡片
在 Coze 平台上,消息卡片是 Bot 信息视觉化效果体现,以模块化构建组件的形式,支持以图文和按钮交互的方式,将信息展示给用户。
卡片的使用可以分为官方卡片、创建自定义卡片
-
如何配置卡片


6. 触发器(未找到)
触发器(Triggers)是使智能体在特定时间或接收到特定事件时自动执行任务。
-
定时任务
允许用户在与智能体对话过程中,根据用户所在时区创建定时任务。例如“每天早上八点推送新闻”。每个对话中最多创建 3 条定时任务。
7. 为智能体添加知识
-
在知识下选择合适的格式进行添加

-
创建知识库
-
将准备好的文档上传到所创建的知识库中
-
等待分段处理完毕添加到智能体即可

8. 长期记忆
上面我们通过上传知识库文件,让agent了解到我们自己,其实我们一般人是没有办法整理出这种个人信息的,那我们想让agent记住我们就可以使用扣子的长期记忆
-
开启长期记忆
- 创建长期记忆库
- 将长期记忆库添加到智能体中
与教程不一致,现在长期记忆与长期记忆库相关联
9. 对话体验
-
开场白
开场白是用户进入智能体后自动展示的引导信息。它的主要目的是帮助用户理解智能体的用途,以及如何与其进行交互。
四、资源的玩法
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, // 默认结果数:10page: 1, // 默认页码:1location: '', // 默认地点:空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
