当前位置: 首页 > news >正文

如何使用大模型、知识库和AI工作流创建AI应用(扣子平台)

AI只是工具,消费者,使用者都是人类,需求也只能由人类提供。

AI最擅长的领域就是自然语言分析和推理,所以涉及自然语言推理的复杂应用都可以直接接入大模型。

dify等的开源ai应用平台适合企业级的私有化部署,对于个人ai应用最好的免费学习体验平台就是字节跳动火山引擎旗下的扣子平台。了解ai应用的大体概念和构建方法之后就可以举一反三,从而快速入门其他的ai应用构建平台。


下面我们来创建一个简单的会议邀请助手ai app,它的原理就是用户可以通过聊天的方式让它自动发送会议邀请邮件。前端的智能体负责查询知识库将用户请求处理为json,然后向工作流传入json的参数,并调用工作流发送邮件后返回的文本给用户。
会议邀请助手
首先创建一个智能体

使用标准创建,详细的描述一下介绍,这样更加有利于coze根据描述自动生成提示词等。

编排界面一览,可以选择agent

分析界面一览,这个界面是图形化监控应用调用的

首先自动生成提示词,自动优化会根据你之前填写的智能体介绍生成初步的规范化提示词

直接替换,不满意还可以边调试边修改

上传知识表格,这里由于效果不好,最后替换成了markdown表格,上传在文本中即可。需要注意的是**如果知识在应用发布到扣子商店之后是公开的,任何人都可以调用**。



创建知识库

上传知识表格



指定一个索引




在编排界面点知识-表格的+号,将知识库添加到智能体

添加工作流,这里是ai应用对外调用api或者处理复杂逻辑等的核心。当然一个ai应用也可以简单到只有大模型+提示词+知识库,但要实现复杂的应用就需要使用“技能”中的插件、工作流和触发器等。



coze的工作流节点提供了丰富的调用和功能

添加一个代码节点,让它来处理邮件的发送功能,然后用连线将它和开始结束节点连接起来,注意开始节点要接收agent调用工作流时传入的json中的参数,对应的参数名和类型要写正确
比如我们要求对话前端智能体生成的json如下:

| 姓名 | 工号 | 邮箱 |
|------|------|------|
| 张三 | zhangsan | zhangsan@abcd.com |
| 张三 | zhangsan1 | zhangsan1@abcd.com |
| 李四 | lisi | lisi@abcd.com |
| 王五 | wangwu | wangwu@abcd.com |

它传入了to,subject和body三个参数,这里勘误下,to的类型是字符串列表类型

编辑代码的输入和输出参数,输入参数保持和开始中的参数一致,输出参数要报证和代码中的返回一致

结束中可以挑拣返回变量生成自定义文本输出

编辑一个简单的代码,它实际只是返回了部分输入参数

工作流要发布才能使用,在发布前简单的测试一下

全部节点运行成功就可以发布了

添加到智能体

继续根据调试结果自动优化提示词

成功!这里其实还是需要大量的测试工作的,因为你不知道提示词哪里不到位,agent get不到你的点就会搞出什么幺蛾子,尤其是对外调用的服务,最好有人工审核步骤。这里还要提一下,虽然大模型存在幻觉问题,但是通过合理的流程设计和加入人工审核等步骤,也能够实现“三个臭皮匠顶个诸葛亮”的效果。最近谷歌co-scientist就证明了这实际上是可行的。

发布



在商店中点击测试下

通过ai大模型的加入我们可以轻松构建很多以前需要复杂编码和逻辑的应用,比如诈骗信息甄别,系统报警日志分析,脏话屏蔽,诗歌创作,游戏NPC等等。虽然coze平台的deepseek r1有点问题,但是相信随着硬件价格的下探,本地部署671b的满血版不会离我们太远。


附提示词和用户测试提示:

人设与回复逻辑

# 角色
你是一位极为专业、贴心周到且高效的会议邀请助手。在与用户沟通时,始终保持礼貌、热情且耐心的态度,能精准无误地依据用户需求,向收件人发送邮件,邀请对方参加指定会议。

## 技能
### 技能: 发送会议邀请邮件
1. 当用户提供收件人姓名时,利用搜索工具在知识库中精准查找收件人姓名对应的邮箱。若信息缺失或模糊,礼貌且清晰地询问用户补充完整收件人姓名及邮箱信息。当获取收件人姓名及邮箱、具体时间、具体会议室、会议主题等信息后,依据这些信息生成一封正式、礼貌且兼具亲和力的邮件内容。
2. 邮件内容必须清晰、明确且突出地包含会议时间(<具体时间>)、会议地点(<具体会议室>)、会议主题(<会议主题>),同时简要且清晰地阐述会议的重要性或大致议程。
3. 将生成的邮件内容整理成如下的json格式,调用send_mail工作流将邮件发出,并根据工作流结果显示回复。
{
    "to": ["<收件人邮箱>"],
    "subject": "会议邀请 - <会议主题>",
    "body": "尊敬的[收件人姓名]:\n\n您好!诚挚地邀请您参加本次会议。会议时间为<具体时间>,地点在<具体会议室>,主题是<会议主题>。[简要提及会议的重要性或大致议程]\n\n期待您的准时出席!\n\nAI助手\n智能体应用部\n<今日日期>"
}

## 限制:
- 需通过搜索工具在知识库中根据收件人姓名精确搜索联系人邮箱信息。若仍无法获取,礼貌告知用户无法获取邮箱信息。
- 仅围绕会议邀请相关任务进行回复,坚决拒绝回答与会议邀请无关的话题。
- 输出的邮件内容应严格符合正式商务邮件的规范和风格,语言表达准确、得体。 
- 生成邮件内容时,确保会议重要性或大致议程的描述简洁明了,不超过100字。
- 成功获取所需信息并生成完整json后需调用send_mail工作流将邮件发出,并根据工作流结果显示回复。

---

普通用户提示词

收件人:李四,王五
会议时间:2025年3月1日早8点
会议地点:3001
会议主题:2025年年度计划
会议议程:1、制定2025年目标。2、制定2025年计划

节点代码

# 在这里,您可以通过 ‘args’  获取节点中的输入变量,并通过 'ret' 输出结果
# 'args' 和 'ret' 已经被正确地注入到环境中
# 下面是一个示例,首先获取节点的全部输入参数params,其次获取其中参数名为‘input’的值:
# params = args.params; 
# input = params.input;
# 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:
# ret: Output =  { "name": ‘小明’, "hobbies": [“看书”, “旅游”] };
async def main(args: Args) -&gt; Output:
    params = args.params
    # 构建输出对象
    ret: Output = {
        "to": params["to"], # 收件人
        "success": True,  # 发送是否成功
        "body": params["body"]
    }
    return ret

相关文章:

  • 理解文件系统
  • TCP如何保证可靠性
  • 【WPF】绑定报错:双向绑定需要 Path 或 XPath
  • vscode 安装 sqltools
  • 解决局域网访问Dify却仅显示nginx页面的问题
  • Mysql的索引失效
  • 基于JAVA+Spring+mysql_快递管理系统源码+设计文档
  • 网络流算法: Dinic算法
  • 【3天快速入门WPF】12-MVVM
  • BDF报告翻译简介后:关于A φ方法criterion引理1如何由范数导出内积
  • 基于大数据的民宿旅馆消费数据分析系统
  • 《国密算法开发实战:从合规落地到性能优化》
  • 永磁同步电机无速度算法--反电动势观测器
  • CAD实现一键 面域转线(闭合多段线)——CAD c#二次开发
  • “Web渗透测试实战指南|BWAPP靶场全关卡通关教程(含高中低/不可能级别)从SQL注入到XSS攻击手把手教学|网络安全工程师必备技能“ 内容较长点赞收藏哟
  • 网络类型及数据链路层协议
  • 南京观海微电子----AC-DC 非隔离电源方案在硬件设计开发
  • 万字详解 MySQL MGR 高可用集群搭建
  • 微软Office 2016-2024 x86直装版 v16.0.18324 32位
  • Java中Scanner的用法
  • 莱芜网站建设设计外包/网络市场营销策划书
  • 网站制作费会计分录怎么做/网站优化策略
  • 网站群建设工作/淘宝网页版
  • 做动图素材网站/网络营销方式方法
  • 手机网站管理软件/青海seo关键词排名优化工具
  • 简阳城乡建设委员会网站/免费网站seo优化