所有内容基于百炼平台的工作流应用展开,从以下方向分享:
工作流编排的坑;
工作流编排建议;
工作流脚本分享。
工作流编排的坑
列举出一些几乎100%出现的头痛问题。
幕布卡顿、假死
节点一旦超过10个后,页面卡顿、假死会非常明显,暂时可以通过幕布下方优化布局
按钮处理。
当然也可以通过刷新解决,但是刷新太慢了。
粘贴提示词英文符号自动转义
假设当前你有两个工作流,其中一个用于测试提示词效果。
当你把测试完成好的提示词,放入另一个工作流的提示词输入框中会发现其中的英文符号如< >
会被转义。
此时你可以任意改动下提示词内容,然后按下Ctrl + Z
,此时会进行去转义。
知识库节点
无法删除imageList
参数
一旦选择知识库节点,该字段会自动带出,无法删除,并且在发布工作流应用时,会抛出异常,提示节点输入为空。
这是百炼的问题,他们后期会删除该强校验。
当前可以传入[]
或者指定系统变量query
,以解决该问题。
content
不能为空
知识库节点对于content
输入存在强校验,传入值不能为空。
解决办法:
在知识库节点前增加条件判断节点,当字符为空时做出特殊处理(不调用工作流节点,或者增加默认值);
在知识库节点前的脚本(如果有)中,做出处理,对该字段增加默认值。
工作流使用建议
整体编排
对于无需并行调用大模型多次的场景(如条款解读),建议分工作流6列节点处理,会让工作流编排更加直观,维护性更好。整体上来说,节点越少,越好维护。
下面分别描述每列的作用:
开始节点:输入参数;
提示词节点:用提示词给大模型洗脑,教他干活;
初始解读数据处理脚本:提前拼装初始解读数据为业务领域模型,也就是你的解读结果模型;
知识库节点、循环节点、条件判断节点:统一完成知识库匹配等操作;
完成最终数据组装;
结束节点:输出结果。
循环节点处理
[
{
"studentName": "张三",
"classes": [
{
"className": "语文",
"scores": [
{
"examType": "期中考试",
"score": 85
},
{
"examType": "期末考试",
"score": 92
}
]
},
{
"className": "数学",
"scores": [
{
"examType": "期中考试",
"score": 78
},
{
"examType": "期末考试",
"score": 88
}
]
}
]
},
{
"studentName": "李四",
"classes": [
{
"className": "英语",
"scores": [
{
"examType": "期中考试",
"score": 90
},
{
"examType": "期末考试",
"score": 95
}
]
},
{
"className": "物理",
"scores": [
{
"examType": "期中考试",
"score": 82
},
{
"examType": "期末考试",
"score": 86
}
]
}
]
}
]
当遇见多级嵌套结构时,百炼并没有对应的循环节点嵌套。此时处理数据就有些头疼了。
解决方案推荐:
在第三列脚本中,构建新的字段,用于存储嵌套结构铺平后的数据,然后再进行遍历处理。
在第五列中,再将数据拼接组装处理。