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


然后进入此插件内,再点击“在IDE中创建工具”,再“创建工具”:
image-20250622222810864
代码输入框内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| import { Args } from '@/runtime'; import axios from 'axios';
interface Input { qq: string; // 必填:搜索关键词 keykey: 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.qq || !input.keykey) { 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.keykey, // 使用动态API密钥 'Content-Type': 'application/json' }, data: JSON.stringify({ q: input.qq, 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.qq}"`); // 结果格式化 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.qq}": ${errorMsg}`); return { success: false, error: errorMsg, results: [] }; } };
|
可以看到,代码中使用到了依赖包axios,所以需要另外安装。在左下角的安装依赖包中,搜索“axios”进行安装。
在"元数据"tab页中,此时只需要填写“输入参数”即可,输出参数暂时无须理会,后续会自动填充好:
image-20250622223106946
然后在右上角的“测试代码”—>“输入”中输入如下内容:
1 2 3 4
| { "qq": "北京市", "keykey": "489883104d20921412XXXX" }
|
其中keykey字段填写的是从serpr中申请分配到的api
key。(serper官网
:https://serper.dev/
,大陆可用,新用户免费调用2500次。使用此第三方api来调用谷歌搜索)
填写好后,点击“输入”框下面的”运行“按钮,正常的话,可以在控制台中看到如下内容:
1 2 3 4
| Test run "google" started Executing... Successfully fetched 8 results for "北京市" Execute success, cost: 3350ms, function_cost: 3047ms
|
此时点击右上角的“发布”按钮,可以将此插件工具发布了,后续可以在智能体使用了。
image-20250622223736413
二、知识库
知识库中内容是相对静态的知识,可以在不同智能体中间进行共享的。由知识库开发者创建与维护,终端用户在智能体中使用知识库中不能对知识库进行修改。
image-20250622223915438
以下创建扣子知识库,其类型是图片知识库中,就是说其中只保存图片类型知识。
向其中上传图片(以下测试图片的下载链接:
https://zxdwhda-share.feishu.cn/wiki/M7towKWKhiLMxWkTCincqhDAnjc#share-UuaEdXFVQoDkXJxUl5wct12mnog
)时,选择自动标注,让大模型对图片中的内容进行描述与标注:
image-20250622224501641
等到知识库中所有图片都被标注成功后,就可以使用此知识库了。
三、使用自定义插件与知识库
以下在智能体“夸夸机器人”中使用自定义插件与知识库,首先修改配置。
image-20250622225453898
修改下提示词(主要是添加第5点技能):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 角色:夸夸机器人 {#InputSlot placeholder="角色概述和主要职责的一句话描述" mode="input"#}你是一个能够不断鼓励用户的积极向上的机器人{#/InputSlot#}
## 目标: {#InputSlot placeholder="角色的工作目标,如果有多目标可以分点列出,但建议更聚焦1-2个目标" mode="input"#}你总是能够发现用户提问中的积极身上的点,给予积极反馈{#/InputSlot#}
## 技能: 1. {#InputSlot placeholder="为了实现目标,角色需要具备的技能1" mode="input"#}如果用户提到了自己的某些特征,你可以从中发掘出用户的特长或优点,或这些特征有什么益处{#/InputSlot#} 2. {#InputSlot placeholder="为了实现目标,角色需要具备的技能2" mode="input"#}如果用户提到了自己的特长或优势,你会鼓励用户可以继续进步的方向或方法,同时提醒用户要注意的点比如不要骄傲粗心等{#/InputSlot#} 3. {#InputSlot placeholder="为了实现目标,角色需要具备的技能3" mode="input"#}如果用户表现出颓废或低落的心态,你会安慰用户或从中发现用户的闪光点,给出一些激励的话{#/InputSlot#} 4. {#InputSlot placeholder="为了实现目标,角色需要具备的技能4" mode="input"#}如果你没有明显察觉到用户的心理特征是积极还是消极的,你可以使用问一些相关的问题循循善诱,以增加对用户的了解、更加地做出判断,然后给出回复{#/InputSlot#} 5. {#InputSlot placeholder="为了实现目标,角色需要具备的技能4" mode="input"#}你可以从知=知识库中查找相关内容,分享给用户,以让用户获得好的阅读或视觉体验{#/InputSlot#}
## 限制: - {#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件1" mode="input"#}你绝对不能输出负面消极的措辞{#/InputSlot#} - {#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件2" mode="input"#}一般情况下,回复的内容要精简(50字以内)。如果某些情况下,回复内容较多,也不能超过300字{#/InputSlot#} - {#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件3" mode="input"#}不能辱骂用户{#/InputSlot#}
|
3.1 文字相关内容问答:
image-20250622225642539
此时长期记忆中,只有如下内容:
image-20250622225700612
3.2 图文相关内容问答:
image-20250622225741213
召回的内容很准确(以下是知识库中上传的图片及其标注内容):
image-20250622225824554