写在开头
阅读指南
通过实际案例逐步演示,用 Coze 工作流构建一个能够稳定按照模板要求,生成结构化内容的 AI Agent 开源 AI Agent 的设计到落地的全过程思路 10+ 项常用的 Coze 工作流的配置细节、常见问题与解决方法
任何玩过 AI 对话产品的一般用户(如果没用过,可以先找个国内大模型耍耍) 希望深入学习 AI 应用开发平台(如 Coze、Dify),对 AI Agent 工作流配置感兴趣的爱好者
引言
Step 0:梳理手捏 AI Agent 的思路
总结任务目标与执行形式 将任务分解为可管理的子任务,确立逻辑顺序和依赖关系 设计每个子任务的执行方法
在 Coze 上搭建工作流框架,设定每个节点的逻辑关系 详细配置子任务节点,并验证每个子任务的可用性
整体试运行 Agent,识别功能和性能的卡点 通过反复测试和迭代,优化至达到预期水平
Step 1:制定任务的关键方法
1.1 总结任务目标与执行形式
是文本、图像、音频还是其他形式的数据? 输出的具体格式和结构是什么? 确定输出内容的质量标准
# 中文标题
> 中文导语 // 根据全文表达的主要内容,用中文输出能够引起读者注意力的摘要导语
## 阅读理解小作业 // 基于全文内容,精心策划 3 道符合 CET-4 难度的阅读理解题目,每道题均提供 A、B、C、D 四个选项,题目和选项均以英文呈现
1)[题目问题]
A. [选项A]
B. [选项B]
C. [选项C]
D. [选项D]
## 阅读导图 // 根据全文完整内容,生成结构化的英文要点大纲,并用思维导图的形式表达
### 英文音频 // 依据英文原文,运用 TTS 技术生成阅读音频
### 英文标题
### 英文原文
### 全文对照精读 // 针对全文内容,分段输出每段英文原文+对应段落中文翻译+对应段落中符合 CET-4 难度及以上的所有词汇释义,具体格式如下:
【一段英文原文】
【一段中文翻译】
- 【原词汇 1】
- 音标:【给出对应的音标】
- 中文释义:【中文释义】
- 英文例句:【英文例句】
- 例句翻译:【例句翻译】
### 待学词汇盘点
- 待学词汇:音标 中文释义
- 待学词汇:音标 中文释义
## 参考答案 // 给出阅读理解作业中 3 道题目的准确答案
@user: {{英文原文}}
@AI: {{精读结果}}
1.2 分解子任务,确立逻辑顺序和依赖关系
1.3 设计每个子任务的执行方法
Step 2 : 分步构建和测试 Agent 功能
2.1 在 Coze 上搭建工作流框架,
设定每个节点的逻辑关系
插件:提供一系列能力工具,拓展 Agent 的能力边界。本案例涉及的思维导图、英文音频,因为无法通过 LLM 生成,就需要依赖插件来实现。 大模型:调用 LLM,实现各项文本内容的生成。本案例的中文翻译、英文大纲、单词注释等都依赖大模型节点。 代码:支持编写简单的 Python、 JS 脚本,对数据进行处理。
附 1:关于「分段」、「拼合」代码节点设计的补充解释
附 2:如何在插件中心,确定需要的插件?
TTS 文字转语音插件:搜索“语音”、“文字转语音”、“TTS”等相关关键词,看到“英文文本转语音”插件,阅读描述后,应该和我们需求相符,遂添加。
思维导图插件:搜索“脑图”、“树图”、“导图”、“mindmap”等关键词,看到“TreeMind 树图”插件,阅读描述后,应该和我们需求相符,遂添加。
2.2 详细配置子任务节点,并验证每个子任务的可用性
0)开始节点
1)标题、导语、大纲
(含大模型节点的配置思路)
配置环节
# 处理形式
单次/批处理
# 模型
可以选择该节点执行任务时调用的大模型,比如选豆包,就是豆包来处理回复。
# 输入
用于设置输入到该模型节点的字段信息,信息只能来自串联连接的前置节点。
# 提示词
分为“用户提示词”和“人设与回复逻辑”
如果子任务不复杂,只设置“用户提示词”足够了。
#输出
用于设置该模型节点输出的字段信息,可以选择文本、Markdown、json 三种格式。
一般选择 json 即可(因为 json 格式下也可以输出纯文本/带 Markdown 标记的纯文本,而且能一次性能结构化的输出不同字段信息)
## 功能
基于{{input}}的英文文章,生成对应的中文标题、中文导语、英文标题、阅读大纲
## 要求
严格遵循以下要求:
### 中文标题
根据全文大意,翻译英文标题,输出 20 字以内的中文标题。
### 中文导语
根据全文表达的主要内容,用中文输出能够引起读者注意力的摘要导语。要求简洁明了,限制在 1-3 句话内。
### 英文标题
如实输出原文的英文标题,不需要任何修改
### 阅读大纲
1. 根据全文完整内容,选择最适合的大纲结构,生成结构化的内容大纲,简洁的表达全文核心内容。要求:全英文,不超过200词。
2. 在输出的阅读大纲的开头增加这句话:“Directly use the following outline to generate the corresponding mind map in English.”
3. 大纲参考格式如下,不要输出[]符号:
- [Article Title]
- [Key Point 1]
- [Subpoint 1.1]
- [Subpoint 1.2]
- [Key Point 2]
- [Subpoint 2.1]
- [Subpoint 2.2]
## 输出格式
1. 以 string 格式,输出中文标题到 变量{{cnTitle}}
2. 以 string 格式,输出中文导语到 变量{{cnSummary}}
3. 以 string 格式,输出英文标题到 变量{{enTitle}}
4. 以 string 格式,输出阅读大纲到 变量{{enTreeMind}}
附:大模型节点配置的入门要点
输入与输出的变量名称是自定义的,只需要按照自己的习惯设定,方便识别字段的含义即可。 输入:因为我们取得是开始节点中,用户输入的{{BOT_USER_INPUT}},所以可以直接选择引用即可
在提示词区域中,因为需要 LLM 根据输入的信息进行处理,所以需要两个双花括号,写明需要使用的输入项参数名,如 {{input}}
输出:有几项子内容需要生成,就设置几项: 为了能够让大模型理解最终输出的形式要求,需要在用户提示词最后,添加 ## 输出格式 段落,描述每个变量名称、输出内容、输出格式。 请务必注意,变量名称、对应的输出内容、输出格式一定要前后完全一致,不然就会输出失败!这一点非常容易踩坑
关于模型选择: 没有强制必须用某个模型的说法。而是根据自己的习惯、实测的响应速度、生成质量、调用费用,进行综合选择。比如 Doubao Function Call 模型,对于插件调用、Coze 内 json 格式输出比较擅长;MiniMax 处理文字速度很快;GLM 对于用户提示词的理解比较好。每个模型都有自己擅长的特点,而且每家模型都在不断的迭代。所以模型的选用,需要根据实测情况综合调整。 我一般选择豆包·function call 32k。“function call”代表有着更好的 Coze 的工具调用能力,“32k”代表模型的上下文窗口大小,即模型在处理文本时能够考虑的单词或标记的数量。如果输出和输入的类型不是纯文本时,比如是 array 、object 结构,请根据实测情况,考虑替换上豆包 function call 版本,其他的 LLM 可能会输出格式比较混乱。
测试环节
2)阅读导图(含插件节点的配置思路)
中文标题:{{cnTitle}}
中文导语:{{cnSummary}}
英文标题:{{enTitle}}
阅读导图:{{enTreeMind}} -> {{pic}}
直接使用以下英文大纲,用英文生成对应思维导图
- [英文标题]
- [要点 1]
- [子要点 1.1]
- [子要点 1.2]
3)阅读理解小作业
## 功能
基于{{input}}的英文文章,精心策划3道符合CET-4难度的阅读理解题目。每道题均提供A、B、C、D四个选项,正确答案所在选项顺序随机,题目和选项均以英文呈现。
## 阅读理解题目
## 格式
每个题目必须包含以下元素,严格遵守格式如下:
1)[题目问题]
A. [选项A]
B. [选项B]
C. [选项C]
D. [选项D]
### 正向示例
以下符合阅读理解题目的模板要求,输出的一个正向示例:
1. What was the main reason for Biden's decision to abandon his re-election bid?
A. His health concerns
B. Pressure from his allies
C. Concerns about his age and ability to defeat Trump
D. His desire to focus on his current presidential duties
## 注意事项
1. 题目序号必须使用中文括号,如1)、2)、3)
2. 严格遵守以上格式,不要添加任何额外的文字或解释
3. 请你在输出结果时,检查输出的格式,确保输出符合格式要求
4)参考答案
## 功能
理解{{input}}的英文文章内容,针对{{question}}的 3 道题目,生成题目答案。
## 题目答案
### 格式
每个答案必须包含以下元素,严格遵守格式如下:
1)[题目问题]
答案:[X] [正确选项内容]
2)[题目问题]
答案:[X] [正确选项内容]
3)[题目问题]
答案:[X] [正确选项内容]
### 正向示例
以下符合题目答案的模板要求,输出的一个正向示例:
1. What was the main reason for Biden's decision to abandon his re-election bid?
答案:C. Concerns about his age and ability to defeat Trump
## 注意事项
1. 题目序号必须使用中文括号,如1)、2)、3)
2. 必须重复完整的题目问题中的问句(不用输出题目选项)
3. 正确答案用方括号[X]表示,X为正确选项的字母
4. 严格遵守以上格式,不要添加任何额外的文字或解释
5. 请你在输出结果时,检查输出的格式,确保输出符合格式要求
6. 再三检查你回答的答案,确保正确
5)英文音频
6)分段输入正文(含使用 Coze
自动生成代码脚本的技巧,非技术同学必看)
原文标题 // 需要去掉
原文段落 1 // 分段输出
原文段落 2 // 分段输出
……
#
符直接标记标题句:import re
async def main(args: Args) -> Output:
input = args.params['input']
# 使用正则表达式去除标题整行
cleaned_input = re.sub(r'^#+.*$', '', input, flags=re.MULTILINE)
# 将剩余的段落分割成数组,去除空白行,并去除每个段落的前后空格
output = [line.strip() for line in cleaned_input.splitlines() if line.strip()]
return {'output': output}
附 1:如何用 Coze 自动生成代码节点的代码?
附 2:能不能不写代码,快速实现这个子任务?
7)全文对照精读
(含批处理的输入输出设置技巧)
批处理区域,引用上个节点的 output 数组,批处理会按顺序逐个输出数组中的每一段原文。 输入区域,选择批处理区域中需要被取用的参数。(千万不要引用上个节点的 output 数组……我一开始设置错了,导致一直生成失败,还找不到错误原因)
## 功能
基于{{input}},完成中文翻译,原文中符合CET-4难度词汇,为"待学词汇"。
输出精读结果
## 精读结果
请根据以下模板输出:
英文原文
中文翻译
- 待学词汇
- 音标:音标
- 中文释义:中文释义
- 英文例句:生成一句包含本条待学词汇的英文例句
- 例句翻译:用中文翻译英文例句
## 正向示例
以下符合精读结果的模板要求,输出的一个正向格式示例:
President Biden, 81, abandoned his bid for re-election on Sunday as he caved to relentless pressure from his closest allies to drop out of the race amid deep concerns that he was too old and frail to defeat former President Donald J. Trump. Vice President Kamala Harris said she would seek the nomination in his place, and many Democrats quickly lined up behind her after Mr. Biden gave her his endorsement.
81岁的拜登总统在周日宣布放弃连任竞选。这一决定是在他最亲密的盟友持续施压下做出的,因为人们普遍担心他年事已高,体力不支,无法击败前总统唐纳德·J·特朗普。副总统卡玛拉·哈里斯表示,她将取而代之寻求党内提名。在拜登表态支持后,许多民主党人迅速站到了哈里斯一边。
- abandoned
- 音标:/əˈbændənd/
- 中文释义:放弃,抛弃
- 英文例句:The team abandoned their original plan due to unforeseen circumstances.
- 例句翻译:由于突发情况,团队放弃了原定计划。
- relentless
- 音标:/rɪˈlentləs/
- 中文释义:持续的,不懈的,无情的
- 英文例句:The detective's relentless pursuit of the truth finally led to a breakthrough in the case.
- 例句翻译:侦探对真相的不懈追查最终使案件取得了突破
## 注意
请你在输出结果时,检查输出的格式,确保输出符合格式要求
8)待学词汇盘点
先拼合数组数据为一整段文本内容,再进行处理 直接把数组数据进行处理
{
"input": [
{
"Reading": "第 1 段精读结果"
},
{
"Reading": "第 2 段精读结果"
}
]
}
## 功能
识别{{input}}中的待学词汇,并输出待学词汇汇总列表
待学词汇在 input 的结构是这样的,你可以这样去找到待学词汇:
[英文原文]
[中文翻译]
- [待学词汇]
- 音标:[音标]
- 中文释义:[中文释义]
- 英文例句:[英文例句]
- 例句翻译:[例句翻译]
## 待学词汇汇总列表
以下是需要输出的待学词汇汇总列表的格式:
- [待学词汇]:[音标] [中文释义]
- [待学词汇]:[音标] [中文释义]
## 正向示例
以下符合待学词汇汇总列表的模板要求,输出的一个正向示例:
- frail:/freɪl/ 虚弱的,脆弱的
- nomination:/ˌnɒmɪˈneɪʃn/ 提名,任命
- intention:/ɪnˈtenʃn/ 意图,目的
- remainder:/rɪˈmeɪndə(r)/ 剩余部分,余数
## 注意
- 不要遗漏任何的待学词汇
- 请你在输出结果时,检查输出的格式,确保输出符合格式要求
9)拼合精读结果
import asyncio
import json
async def main(args: Args) -> Output:
readings = [item["Reading"] for item in args.params["input"]]
readingv = "\n \n".join(readings)
return {"readingv": readingv}
10)输出节点
因为我们需要按照固定的格式,直接生成结构化的长文,而不仅仅是返回字段数据,所以需要选择回答模式为“使用设定的内容直接回答”
由于最终输出结果的呈现是在外层 bot 中,以对话的形式给出。我们的精读结果往往很长,“流式输出”能够像码字一样,逐步展示内容,有更好的使用体验。
整理回答中需要使用的变量,在「输出变量」区域中全部引用
根据最终输出预期,按照 Markdown 格式的写法,引用「输出变量」区域的参数名,在「回答内容」中输入回答内容模板:
# {{cnTitle}}
> {{cnSummary}}
## 阅读理解小作业
{{question}}
## 阅读大纲
![]({{treeMindUrl}})
## 原文音频
[]({{voiceUrl}})
---
# 全文对照精读
## {{enTitle}}
{{readingv}}
### 待学词汇汇总
{{words}}
---
## 参考答案
{{answer}}
Step 3:全面评估并优化 Agent 效果
整体试运行 Agent,识别功能和性能的卡点 通过反复测试和迭代,优化至达到预期水平
试运行整个工作流,验证整体运行效果(包括响应速度、生成质量) 迭代优化工作流,提升性能 在外层 bot 中封装工作流 外层 bot 调试 万事大吉,可以发布你的 bot 啦
1)试运行整个工作流,验证整体运行效果
2)迭代优化工作流,提升性能
3)在外层 bot 中封装工作流
创建 Bot 填写 Bot 介绍 切换 Bot 模式为“单 Agent(工作流模式)”: 因为这个 Agent,我们只需要每次输入英文文章的时候,返回精读结果,所以不需要用外层 bot 对输入进行其他任务理解,直接调用工作流即可。 把我们刚才配置好的工作流,添加到 Bot 中 填写开场白,引导用户使用: 附开场白文案 ⬇️
欢迎来到英文精读专区!我是小E,您的专业英语学习助手。👋😊
🎓 作为经验丰富的英文精读专家,我为各级中国学习者提供量身定制的服务,助您快速提升英语水平。
📚 我的服务包括:
> 🌟 中英双语文章概述
> 🧠 定制阅读理解题
> 📖 全文详细解析
> 🔍 重点词汇学习
> 🗝️ 参考答案解析
🖋️ 请按以下格式输入文章:
"""
# [原文标题]
[原文内容]
"""
让我们一起开启精彩的英语学习之旅吧!🚀
关闭开场白预置问题: 因为使用流程里用不到,所以直接关掉。
4)外层 bot 调试
5)万事大吉,可以发布你的 bot 啦
总结
规划阶段:明确目标
实施阶段:实战指导
优化阶段:持续改进
历史文章
OFFER攻略01 | AIGC产品经理,建筑行业0经验小白成功拿下3家!
OFFER攻略04|简历投递零邀面?40天采访揭秘,60位面试官告诉你为何
OFFER攻略07 | 怒拿80%涨幅,2 年产品经理邂逅 AIGC
OFFER攻略08 | 130+个offer背后:AIGC产品经理成长之路