从“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分支中,我们需要:

  1. 添加API节点调用天气服务:

    • 使用如OpenWeatherMap等服务的API
    • 配置城市参数:{{user_input.keywords}}
  2. 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小时预报
    }
  1. 最后通过LLM节点优化输出:
    根据以下数据生成友好、简洁的天气报告:
    {{weather_summary}}
    
    要求:
    - 包含温度、降水概率等关键信息
    - 给出适当的穿衣建议
    - 使用emoji增加可读性
    

3.2 知识问答系统搭建

对于knowledge_flow分支:

  1. 配置Knowledge节点

    • 选择已上传的公司知识库
    • 设置最小匹配度为0.7,避免无关结果
    • 最大召回数量设为3,保持回答简洁
  2. 添加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 添加异常处理

在工作流末尾添加错误处理分支:

  1. Try-Catch节点捕获异常
  2. LLM节点生成友好错误提示:
    系统遇到技术问题:{{error_message}}
    
    请用通俗易懂的方式向用户解释,并建议稍后再试。
    

4.3 性能优化技巧

  • 缓存机制:对天气API结果缓存10分钟
  • 批量处理:知识库查询支持多个问题同时处理
  • 限流设置:防止API被过度调用

5. 测试与部署最佳实践

5.1 分阶段测试策略

  1. 单元测试:逐个节点验证

    • 示例天气查询测试输入:
      {"intent": "weather", "keywords": ["北京", "明天"]}
      
  2. 集成测试:验证分支跳转逻辑

  3. 端到端测试:模拟真实用户对话流

5.2 部署到Bot

  1. 在工作流页面点击"发布"
  2. 进入Bot编排页面,添加该工作流
  3. 在人设提示词中引用工作流:
    当用户询问天气或专业问题时,使用"多功能个人助理"工作流处理。
    

5.3 监控与迭代

建议添加以下监控指标:

指标名称 监控方式 优化目标
意图识别准确率 日志分析 >90%
API响应时间 性能监控 <1秒
用户满意度 反馈收集 持续提升

在实际项目中,最容易出问题的环节是意图识别。有用户反馈Bot总是把"天气热怎么办"误判为天气查询而非建议请求。后来我们在提示词中增加了更多示例,准确率提升了35%。另一个实用技巧是在知识库节点前添加关键词提取步骤,先用LLM提炼问题的核心关键词,再查询知识库,这样召回率能提高20%左右。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐