资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

工作流组件:如何用知识库节点和API节点搭建个人减脂小助手

整体概述

本文将通过大模型节点、分支器节点、代码节点、API节点和知识库节点编排工作流,实现理解用户上传的图片,意图识别,知识库检索和调用第三方API的功能点,并将其添加至应用。

这次实践将以用户减脂期饮食建议助手为例,通过工作流的灵活编排,创建一个可以通过用户上传食物照片查询食物热量、并根据用户个人信息提供饮食建议的应用。

效果示例

本文构建的示例工作流概览如下图所示:

图片

在该工作流中,使用大模型节点配合分支器节点,对用户原始提问进行意图识别,不同的意图进入不同的后续流程。用户意图包括“分析特定食物”,“寻求整体饮食建议”两种类型。 如果用户需要分析上传图片中的特定食物,会将数据流转至代码节点和API节点,分析食物信息。如果用户需要寻求饮食建议,会将数据流转至知识库节点,结合个人健康档案给出整体饮食建议。

下图展示了将示例工作流添加到应用后,应用的任务处理能力。当用户输入内容后,应用会调用示例工作流处理用户的输入内容,并向用户返回结果。

图片图片

构建过程

步骤一:构建工作流

  1. 登陆百度智能云千帆appbuilder平台。
  2. 点击免费试用,打开主页。
  3. 在页面左侧导航栏进入组件广场,并单击创建组件。 本文示例配置如下:

     组件名称:减脂食物推荐
     英文名称:foodrecommend
     组件描述:组件能力包括根据用户个人信息提供减脂食物建议,根据用户上传的图片识别食物热量等
     预置画布:空画布,用户可以根据场景需求选择预置画布模版
  4. 在组件的编辑页面,单击页面下方+节点的图标,依次添加节点,并进行连接。 本文示例配置如下:

    按照下图所示顺序,依次添加开始节点、大模型节点、分支器节点、代码节点、API节点、知识库节点、结束节点。

    3ab8a26f-ab31-416d-82bf-ed42bb385687.svg

5.连接各节点后,依次为节点配置输入输出参数。

步骤二:配置工作流

本文示例配置参数如下表所示。

节点名称 功能 参数配置 配置示例 配置说明
开始 组件运行的起点。定义此组件所需的输入参数。在本次配置中,采用默认参数。 默认参数如下:
rawQuery,String类型
chatHistory,String类型
FileUrls,Array类型
用户在构建组件时,根据实际场景,添加对应的自定义参数。
大模型 意图识别。在本次配置中,调用大语言模型,根据输入参数判断用户意图,将用户输入的query转换成输出参数传入分支器节点。 模型选择:
选择模型,ERINE-4.0-Turbo-8k模型
多样性:0.1
输入:
名称:rawQuery,在变量值区域选择引用-开始-系统参数-rawQuery,String类型
提示词:
请你根据用户给出的{{rawQuery}}判断用户的意图,输出1或者2或者3。
如果用户询问的是基于个人信息的饮食建议,请输出数字2;如果用户询问的是基于上传的图片进行食物分析和相关饮食建议,请输出数字1;如果用户询问的意图不是以上两种,请输出数字3。
请注意,最终输出提取原始输出中的数字,输出为纯数字,有且仅有一个数字。
输出:
名称result,类型Number
模型选择
在本次示例中,经过多轮测试,在执行意图分类的任务时,ERINE-4.0-8k模型回复准确,响应速度适中,因此选择ERINE-4.0-8k模型。
多样性
在本次示例中,为控制生成的一致性,多样性值设置为0.1。
多样性数值越高则模型每次输出内容的差异性越大,可调节范围0-1。
分支器_1 在本次配置中,从该节点开始,工作流将分为三个分支,示例配置如下:
分支一:判断条件Number=1,并连接至API节点。该分支用于识别上传图片的食物信息,提供饮食建议。
分支二:判断条件Number=2,连接至知识库节点。该分支用于根据用户个人档案提供饮食建议。
分支三:判断条件不为1或者2,直接输出给应用进行兜底闲聊
输入:
引用变量:引用-大模型-result,Number类型
条件关系:等于
比较变量:Number,常量1,2
分支器条件
在本次配置中,为单条件判断,因此配置判断输出参数值。
除此以外,用户可以添加多个条件,多个条件之间的关系可以选择“且”或者“或”。

分支一用于识别上传图片的食物信息,提供饮食建议。节点配置如下表

节点名称 功能 参数配置 配置示例 配置说明
代码_1 参数类型转换。在本次配置中,该代码节点用于执行参数类型转换的任务,将开始节点输入的参数 FileUrls,Array类型转换为string类型,作为API节点的输入。 输入:名称image, 在变量值区域选择引用-开始-系统参数-fileUrls,Array类型
代码:

输出:
transformed_fileUrls, String类型
代码节点测试
在节点IDE中编写代码节点,编写结束后可点击IDE左下角运行进行测试
将结果解析至输出参数
测试完成后,可将测试结果解析至右侧配置项输出参数
API 菜品和卡路里识别。在本次配置中,本节点用于调用第三方API,对于输入菜品图片参数transformed_fileUrls进行菜品和卡路里识别。
具体步骤如下:
1. 登录百度AI开放平台,获取菜品识别模型的API_Key,Secret_Key,Access Token。参考网址:https://ai.baidu.com/ai-doc/IMAGERECOGNITION/tk3bcxbb0
2.编辑API节点进行鉴权与调试。
调试成功后,可解析Response结果至输出参数。
API使用功能详细说明参见:千帆Appbuilder工作流创建组件说明
基本信息
接口地址:https://aip.baidubce.com/rest/2.0/image-classify/v2/dish
请求方式:POST
鉴权方式:API Key
调试状态:通过
输入参数
名称url, 在变量值区域选择引用-参数类型转换-transformed_file_url,String类型
输出参数
result, Array类型
result_num,Number类型
log_id,Number类型
1.可在API调试面板进行调试,调试通过后可进行组件调试。
2.调试成功后,可解析Response结果同步至输出参数。
代码_2 提取识别最精准菜品。在本次配置中,该代码节点用于提取API节点输出结果中probability值最大的数组,作为大模型_1节点的输入。 输入:名称result, 在变量值区域选择引用-菜品和卡路里识别-系统参数-fileUrls,Array类型
代码:
同代码_1
大模型 回答模型1。在本次配置中,调用大语言模型,根据API节点输入的菜品名称和卡路里参数,给出食物的相关介绍,并提出减脂建议。 模型选择:
选择模型,ERINE-4.0-Turbo-8k模型
多样性:0.7
输入:
名称:rawQuery,在变量值区域选择引用-开始-系统参数-rawQuery,String类型
名称calorie,在变量值区域选择 引用-提取最精准菜品-calorie,String类型
名称name,在变量值区域选择 引用-提取最精准菜品-name,String类型
提示词:
根据{{rawQuery}}给出回答,回答时,请根据{{name}},{{calorie}}中提到的食物类别和卡路里数字,给出食物的其他相关介绍。比如:营养价值,是否有利于减脂。
[目的]:我希望你[根据用户{{rawQuery}}和食物种类{{name}},食物卡路里数{{calorie}},判断该食物适不适合减脂,并给出用户减脂和饮食建议。
[背景信息]:通过{{name}},{{calorie}},可以获取用户上传的食物信息。
[格式]:请输出为段落。
[细节级别]:请提供[详细]的回答。
[风格/语气]:使用[非正式,幽默]的语气。
输出
名称result,类型Number
模型选择
在本次示例中,经过多轮测试,在执行意图分类的任务时,ERINE-4.0-8k模型回复准确,响应速度适中,因此选择ERINE-4.0-8k模型。
多样性
在本次示例中,为使得生成的回答具有多样性,多样性值设置为0.7。
多样性数值越高则模型每次输出内容的差异性越大,默认值为0,可调节范围0-1。
结束 组件的最终节点,输出组件运行后的最终结果。 输出:
outputfinal,在变量值区域选择引用-回答模型1-output,String类型
outputfinal2,在变量值区域选择引用-回答模型2-output,String类型

分支二用于根据用户个人档案提供饮食建议。节点配置如下表

节点名称 功能 参数配置 配置示例 配置说明
知识库 个人健康档案。在本次配置中,知识库节点支持根据输入的query,在【个人健康档案】的知识库中检索相关片段并召回,返回切片列表。
具体步骤如下:
1.上传用户的健康信息,包括个人身高体重,每日推荐摄入卡路里数辆,喜欢的食物列表等,选择知识库配置参数,构建【个人健康档案】知识库。完成用户个人信息的上传。
2.创建完成后,进入知识库页面,点击右上角 命中测试 ,可以对于知识库召回文件准确度进行测试。如下图所示,命中切片符合预期,召回准确。则调试完成,可以投入使用。
输入:
名称query, 在变量值区域选择引用-系统参数-rawQuery,String类型
知识库参数:
检索策略:混合检索
召回数量:2
输出:
Output_list, Array,包括
segment_id, String类型
document_id, String类型
dataset_id, String类型
content, String类型
document_name, String类型
dataset_name, String类型
word_count, String类型
1.检索策略
本次配置中文本数量较少,结构简单,选择最常用检索方式:混合检索。用户可以自定义检索方式,提高最终生成的答案的准确性和可用性。
2.召回数量
本次配置根据文档切片数量,设定召回数量为2。
3.匹配分
本配置中通过命中测试,观察到匹配分为0.2左右,召回的结果更全面。
用户可以自行定义匹配分,用来控制被检索召回的片段数量。
大模型_2 回答模型。在本次配置中,调用大语言模型,根据知识库节点输出的参数OutputList,给用户提出个性化的减脂建议。 模型选择:
选择模型,ERINE-4.0-Turbo-8k模型
多样性:0.7
输入:
名称query,在变量值区域选择 引用-系统参数-rawQuery,String类型
名称info,在变量值区域选择 引用-个人健康档案-OutputList/content,String类型
提示词:
[目的]:我希望你[根据用户{{query}},给出用户减脂和饮食建议]。
[背景信息]:通过用户个人信息{{info}},获取用户的身高体重,每日卡路里摄入,喜爱的食物列表。
[格式]:请输出为段落。
[细节级别]:请提供[详细]的回答。
[风格/语气]:使用[非正式,幽默]的语气。*
输出:
名称result,类型Number
1.模型选择
在本次示例中,经过多轮测试,在执行意图分类的任务时,ERINE-4.0-Turbo-8k模型回复更全面,语气更拟人,因此选择ERINE-4.0-Turbo-8k模型。
2.多样性
在本次示例中,为使得生成回答内容具有多样性,控制内容差异性为0.7。
数值越高则模型每次输出内容的差异性越大,默认值为0,可调节范围0-1。
结束 组件的最终节点,输出组件运行后的最终结果。 输出:
outputfinal,在变量值区域选择引用-回答模型1-output,String类型
outputfinal2,在变量值区域选择引用-回答模型2-output,String类型

步骤三:调试并发布组件

工作流调试

工作流配置完成后,需要对工作流进行调试,调试成功后可以发布。

在组件的画布编辑页面,单击页面下方调试的图标,可在右侧进入组件调试面板。

组件调试面板配置参数:

rawquery:用户输入的原始内容。在本次配置中,示例为:测试数据1.请给我今日的饮食建议;测试数据2.请判断这个食物适不适合减脂。用户可以输入任何想要测试的query。

chathistory:用户与应用的对话历史。本次配置中为空。用户在进行配置时,可以点击输入框右上角模版进行配置,也可以自行输入。

fileUrls:用户可以上传文件。在本次配置中,测试数据1为空,测试数据2如下:

images.jpeg

配置完成后可选择“运行后将以上内容保存为测试数据”,输入测试数据名称存储本次测试数据。 本次配置测试结果如下:测试数据1结果(左图);测试数据2结果(右图)

待插入图片

发布组件

工作流调试成功后,可以点击页面右上角“发布组件”命名组件版本并将组件发布至个人空间。用户可以在个人空间-组件里找到历史创建组件。

图片图片

组件发布后,用户可以将组件添加至应用或选择上架组件到组件广场。

图片图片

步骤四:在应用中添加工作流并进行调试

撰写角色指令

角色指令是大模型回答问题时遵循的人设,可以根据需要进行修改和调试。

以下是这个场景下一份角色指令的样例。

#角色设定
作为用户的减脂饮食小助手,你的目标是帮助用户实现健康减脂。

#组件能力
你拥有专业的减脂知识,并能够根据用户的需求推荐合适的减脂食物。

#任务要求
1.以亲切、幽默的方式与用户交流,提供减脂饮食建议。
2.根据用户的个人情况和需求,推荐适合他们的减脂食物,并解释推荐的理由。
3.确保推荐的食物组合既营养又美味,帮助用户享受健康的减脂过程。

#示例提问与回应
提问:我想减脂,但不想完全放弃美食,你能帮我吗?
回应:当然可以!减脂并不意味着要与美食说再见。我会为你推荐一些美味又健康的减脂食物,让你在享受美食的同时也能轻松减脂。

温馨提示:可以运用AI指令优化一键优化指令哦!

应用调试

在“预览与调试”界面,可以查询相关问题并进行调试。

当我们提问“根据我的个人信息,给出一些今日的饮食建议”时,应用调用组件,准确结合用户的个人健康档案返回了信息: 图片

当我们上传菜品图片(以炒饭为例)并提问“根据我上传的图片,分析我上传的食物适合减脂期食用吗”时,应用调用组件,准确结合食物识别API节点返回了信息: 图片

上一篇
工作流组件:使用记忆变量节点构建个人化导购小助手
下一篇
数字人应用:美食顾问