从“Hello World”到智能客服:手把手教你用Coze工作流搭建一个能查天气、问知识的Bot
从“Hello World”到智能客服:手把手教你用Coze工作流搭建一个能查天气、问知识的Bot
在数字化助手泛滥的今天,真正能解决实际问题的Bot却寥寥无几。你是否也厌倦了那些只会机械回复"我不明白"的聊天机器人?本文将带你从零开始,用Coze工作流打造一个真正智能的多功能助手——它能准确识别你的意图,无论是查询实时天气、解答专业知识,还是进行日常闲聊,都能给出精准回应。
这个项目不同于简单的功能演示,而是一个完整的端到端解决方案。我们将重点解决三个核心问题:意图识别(判断用户想干什么)、功能路由(决定调用哪个服务)和结果优化(让回答更人性化)。通过这个案例,你不仅能掌握Coze工作流的基础操作,更能理解如何将LLM、知识库、条件判断和外部API等模块有机组合,构建真正可用的智能应用。
1. 环境准备与基础配置
1.1 创建你的第一个工作流
登录Coze平台后,在工作区页面点击"创建工作流"。给这个工作流起个直观的名字,比如"多功能个人助理",并在描述中简要说明其功能:"处理天气查询、知识问答和日常对话"。清晰的命名和描述不仅方便管理,更能帮助LLM更好地理解工作流的用途。
初始工作流会自动包含两个节点:
- Start节点:接收用户输入
- End节点**: 返回最终结果
提示:工作流名称尽量使用动词+名词的组合,如"查询天气数据"比"天气功能"更利于LLM理解
1.2 配置基础参数
在开始拖拽节点前,建议先设置几个关键参数:
| 参数类型 | 推荐值 | 说明 |
|---|---|---|
| 默认模型 | GPT-4 | 平衡性能和成本的最佳选择 |
| Temperature | 0.7 | 保持回答多样性又不失准确性 |
| 超时时间 | 30秒 | 避免长时间无响应 |
这些参数可以在工作流设置面板中找到,后续也可以根据实际效果调整。
2. 构建意图识别系统
2.1 设计用户输入解析
在Start节点后添加一个LLM节点,配置如下提示词:
"""你是一个专业的意图分类器,需要判断用户输入的意图类型:
1. 天气查询 - 包含"天气"、"下雨"、"气温"等关键词
2. 知识问答 - 涉及公司制度、产品信息等专业问题
3. 日常对话 - 其他所有类型
只需返回以下JSON格式的结果,不要额外解释:
{
"intent": "weather|knowledge|chat",
"keywords": ["关键词1", "关键词2"]
}
示例输入:"上海明天会下雨吗?"
示例输出:{"intent": "weather", "keywords": ["明天", "下雨"]}
"""
这个提示词有几个设计要点:
- 明确限定了输出格式
- 给出了具体示例
- 定义了清晰的分类标准
2.2 添加条件分支
接下来插入一个Condition节点,配置判断规则:
// 条件判断逻辑
if (input.intent === "weather") {
return "weather_flow";
} else if (input.intent === "knowledge") {
return "knowledge_flow";
} else {
return "chat_flow";
}
这个节点会根据之前的意图分类结果,将流程导向不同的处理分支。记得为每个分支添加对应的标签,方便后续管理。
3. 实现多功能处理模块
3.1 天气查询功能实现
在weather_flow分支中,我们需要:
-
添加API节点调用天气服务:
- 使用如OpenWeatherMap等服务的API
- 配置城市参数:
{{user_input.keywords}}
-
用Code节点处理返回数据:
async def main(args):
weather_data = args.params['api_response']
return {
'summary': f"当前天气:{weather_data['current']['temp']}°C",
'details': weather_data['hourly'][:6] # 返回未来6小时预报
}
- 最后通过LLM节点优化输出:
根据以下数据生成友好、简洁的天气报告: {{weather_summary}} 要求: - 包含温度、降水概率等关键信息 - 给出适当的穿衣建议 - 使用emoji增加可读性
3.2 知识问答系统搭建
对于knowledge_flow分支:
-
配置Knowledge节点:
- 选择已上传的公司知识库
- 设置最小匹配度为0.7,避免无关结果
- 最大召回数量设为3,保持回答简洁
-
添加LLM节点优化回答:
你是一个专业的客服代表,需要根据提供的知识库内容回答问题。 已知信息: {{knowledge_results}} 用户问题: {{user_question}} 要求: - 只基于已知信息回答 - 不知道就说"不清楚" - 使用列表方式呈现复杂信息
3.3 日常对话处理
chat_flow分支最简单,只需一个精心设计的LLM节点:
"""你是一个友好、幽默的个人助理,擅长日常闲聊。
当前对话上下文:
{{conversation_history}}
最新用户输入:
{{user_input}}
回答要求:
- 保持简短(1-2句话)
- 适当使用emoji
- 可以主动询问是否需要帮助
"""
4. 结果整合与优化
4.1 统一输出格式
在所有分支最终汇聚的节点前,添加一个Code节点确保输出格式一致:
async function main({ params }) {
const { response_type, content } = params;
return {
response: {
type: response_type || 'text',
content: content || '抱歉,我无法处理这个请求',
timestamp: new Date().toISOString()
}
};
}
4.2 添加异常处理
在工作流末尾添加错误处理分支:
- Try-Catch节点捕获异常
- LLM节点生成友好错误提示:
系统遇到技术问题:{{error_message}} 请用通俗易懂的方式向用户解释,并建议稍后再试。
4.3 性能优化技巧
- 缓存机制:对天气API结果缓存10分钟
- 批量处理:知识库查询支持多个问题同时处理
- 限流设置:防止API被过度调用
5. 测试与部署最佳实践
5.1 分阶段测试策略
-
单元测试:逐个节点验证
- 示例天气查询测试输入:
{"intent": "weather", "keywords": ["北京", "明天"]}
- 示例天气查询测试输入:
-
集成测试:验证分支跳转逻辑
-
端到端测试:模拟真实用户对话流
5.2 部署到Bot
- 在工作流页面点击"发布"
- 进入Bot编排页面,添加该工作流
- 在人设提示词中引用工作流:
当用户询问天气或专业问题时,使用"多功能个人助理"工作流处理。
5.3 监控与迭代
建议添加以下监控指标:
| 指标名称 | 监控方式 | 优化目标 |
|---|---|---|
| 意图识别准确率 | 日志分析 | >90% |
| API响应时间 | 性能监控 | <1秒 |
| 用户满意度 | 反馈收集 | 持续提升 |
在实际项目中,最容易出问题的环节是意图识别。有用户反馈Bot总是把"天气热怎么办"误判为天气查询而非建议请求。后来我们在提示词中增加了更多示例,准确率提升了35%。另一个实用技巧是在知识库节点前添加关键词提取步骤,先用LLM提炼问题的核心关键词,再查询知识库,这样召回率能提高20%左右。
更多推荐


所有评论(0)