前言
目的
能够记录并查询待办事项,例如,记录行程记录,并可以查询细节,如时间,地点等信息。
目标
编辑记录待办事项工作流,可以提取用户提交的信息,并将其保存到数据库中。
编辑查询待办事项工作流,可以查询各种事项以及他的细节。例如查询某个会议的时间和地址。
概述
-
目的是记录并查询待办事项,如行程记录,并且能够查询细节,如时间和地点。
-
目标是编辑记录待办事项的工作流,提取用户提交的信息并将其保存到数据库中。同时,编辑查询待办事项的工作流,可以查询各种事项及其细节。
-
架构包含数据库表创建、字段设置和工作流的详细编辑步骤。
-
实施步骤涉及创建数据表、设置字段、添加数据库节点、使用代码节点转换数据为字符串、判断事项是否重复等。
-
测试验证了系统在不同条件下的功能性,如成功保存、查询特定事项、处理重复事项和错误信息。
-
Agent角色是一个助手,协助完成记录待办事项和查询代办事项的任务
实施
架构
coze待办事项架构图.png
前期准备
创建数据表
- 添加一个新的表
todo_list
设为单用户模式
- 字段设置
设置三个字段,分别是do_des
对应事项概括描述,do_content
对应事项详情,事项信息的原文,create_at
对应创建时间。
记录待办事项工作流
流程图
image.png
详细步骤
点击添加工作流并点击创建工作流,进入工作流编辑面板。
part.1 判断内容是否重复
第一个节点
首先添加一个数据库节点,用来查询最近7天内的全部记录
查询语句如下:
SELECT do_des, do_content FROM todo_list WHERE create_at>= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
提示:
查询时不支持 select *
输出参数:
outputList,系统默认 rowNum,系统默认
第二个节点
使用代码节点,用来将查询数据库得到的数据转换为一个字符串,以便作为上下文提供给大模型
输入参数:
list,引用各个数据库查询的输出
outputList
。
代码如下:
`import dayjs from 'dayjs'; async function main({ params }: Args): Promise<Output> { let status = 0 let data = '' let data_arr:string[] = [] const time = dayjs().format('YYYY-MM-DD HH:mm:ss') const {list} = params if(list.length > 0) { status = 1 list.forEach((value, index) => { data_arr.push( ` 事项 ${index + 1} ${value['do_content']} `) }) } data = data_arr.join('\n\n') const ret = { "status": status, "data": data, "time": time, }; return ret; } `
输出参数:
status,判断查询结果是否为空,如果为空则直接到第三步。data,将数据库查询结果转为字符串的结果。time,当前的时间
第三个节点
使用选择器节点,用来判断数据库查询结果是否为空,如果为空则直接生成摘要以及后续动作,否则需要判断已经保存过类似的事项。
判断事项是否重复
通过大模型来判断事项是否重复
添加一个大模型节点,因为doto_list参数的值可能会比较长,因此我们尽量使用上下文较长的模型。
输入参数:
todo_list,引用代码节点的输出参数
data
。data,引用开始节点的输入参数input
。
提示词:
角色
作为一个事项管理的专业人士,帮我总结事项,和判断事项是否有重复。
上下文
当前已经存在的事项如下:{{todo_list}}
行动
判断新的事项是否已经存在于已经存在的事项列表中,如果存在就返回true,否则就返回false
结果示例
true
新的事项
{{data}}
输出参数:
result,类型选择布尔类型
随后再添加一个判断节点
判断大模型节点的输出是否为false,如果不存在重复项则直接生成摘要并保存到数据库,否则直接返回已存在
生成摘要并保存到数据库
添加一个大模型用来生成摘要。
输入参数:
input,引用开始节点的输入input。
提示词:
角色
作为一个事项管理的专业人士,帮我总结事项。
上下文
事项的详细内容如下:{{input}}
行动
总结事项内容
输出参数:
output,为生成的摘要结果。
添加一个数据库节点,用来执行保存信息。
输入参数:
do_des,引用大模型生成摘要 do_content,引用开始节点的input time,引用当前时间
SQL语句:
INSERT INTO todo_list (do_des, do_content,create_at) VALUES (‘{{do_des}}’, ‘{{do_content}}’, ‘{{time}}’)
输出:
outputList,系统默认 rowNum,系统默认
统一输出内容
将不同的情况返回的结果进行统一处理,最后返回给结束节点。
添加一个代码节点,这个节点处理也比较简单,就是判断一下是否重复。
输入参数:
status,引用判断重复的大模型的输出结果
代码:
async function main({ params }: Args): Promise<Output> { const { status } = params let output = '' if (status === true) { output = '该事项已经保存过' }else{ output = '事项保存成功' } const ret = { "output": output, }; return ret; }
输出参数:
output,传给结束节点的内容。结束节点选择,使用设定内容直接回答即可
image.png
查询待办事项工作流
流程图
待办事项查询流程图.png
详细步骤
数据库查询节点
查询7天内添加的待办事项
代码节点,处理数据库查询结果,将其转为字符串
代码:
`async function main({ params }: Args): Promise<Output> { let list = '' let status = 0 const { outputList } = params const list_arr:string[] = [] if(outputList.length > 0) { status = 1 outputList.forEach((v, i) => { list_arr.push( ` 事项 ${i+1} ${v['do_content']} ` ) }) } list = list_arr.join('\n\n') const ret = { "status": status, "list": list, }; return ret; } `
选择器节点
判断7天内是否有待办事项
大模型节点
处理用户的请求
输入参数:
list,引用代码节点处理的数据库查询结果
input,引用开始节点的输入参数
提示词:
角色
作为一个事项管理专家来帮助我判断,是否存在与查询事项相关的事项,如果有就返回该事项的详情
上下文
待处理事项列表如下:{{list}}
动作
判断输入的查询的事项内容属于哪条事项,并返回该事项,如果没有则返回’无有关事项’,如果有就根据输入的内容返回相应的信息。如果没有与输入相关的信息则返回‘无与您查询相关的信息’
输入
{{input}}
输出参数:
output,大模型的处理结果。
代码节点
将不同分支的结果统一处理为返回内容
输入参数:
result,引用大模型的处理结果 status,引用代码节点的判断7天内是否存在待办事项的结果。
代码:
async function main({ params }: Args): Promise<Output> { const {result, status} = params let output = '' if(status === 0) { output = '无可查询的事项' }else{ output = result } const ret = { "output": output, }; return ret; }
输出参数:
output,输出处理结果
Agent的Prompt
image.png
角色
你是一个人工智能助手,我能够协助你完成一些工作。
技能
技能 4: 记录代办事项
- 当用户提交一个明确的记录代办事项的要求时,立即调用
todo_list_save
工作流技能 5: 查询代办事项
- 当用户有查询代办事项的需求时,立即调用
todo_list_search
工作流
测试
测试保存待办事项
第一次输入
输入内容:
记录一个待办事项,明天上午10点,去鸟巢拜访领导,联系电话是123456789
返回内容:
能够正常的按照预想执行。
第二次输入相同的内容
也是能够正常执行。
输入一个不一样的事项
能够正常执行
尝试输入一个类似的事项
只是修改了时间
也是可以正常识别出来是两次不同的事件
尝试查询内容
失败
查看原因,是因为大模型请求的input参数不对
后期看该如何调整
换一个问题尝试
可以正常获取结果。
可以看到input值是一个符合需求的参数值。
总结
整体实现了目标,其中在执行查询工作流的时候出现了在调用工作流时传入的参数不符合预期的问题,下面需要思考如何解决。
那么,如何系统的去学习大模型LLM?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《AI大模型入门+进阶学习资源包**》,扫码获取~
篇幅有限,部分资料如下:
👉LLM大模型学习指南+路线汇总👈
💥大模型入门要点,扫盲必看!
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。
路线图很大就不一一展示了 (文末领取)
👉大模型入门实战训练👈
💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉国内企业大模型落地应用案例👈
💥两本《中国大模型落地应用案例集》 收录了近两年151个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
👉GitHub海量高星开源项目👈
💥收集整理了海量的开源项目,地址、代码、文档等等全都下载共享给大家一起学习!
👉LLM大模型学习视频👈
💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
👉640份大模型行业报告(持续更新)👈
💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
👉获取方式:
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓