百度Skill开发入门指南:从零构建你的第一个智能技能

3次阅读
没有评论

共计 2016 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

百度 Skill 核心概念解析

百度 Skill 是基于百度 DuerOS 平台的智能对话技能开发框架,它允许开发者构建能够处理语音或文本交互的智能应用。简单来说,就像给智能音箱或语音助手安装一个 ” 小程序 ”。

百度 Skill 开发入门指南:从零构建你的第一个智能技能

  • 意图(Intent):用户想要完成的操作,比如 ” 查询天气 ”
  • 槽位(Slot):意图需要的参数,比如查询天气时需要 ” 城市 ” 和 ” 日期 ”
  • 对话模型:定义用户可能说的话和系统如何响应的规则

开发环境准备与账号配置

  1. 注册百度开发者账号
  2. 访问 百度 AI 开放平台 注册
  3. 完成实名认证(必需步骤)

  4. 创建 DuerOS 技能应用

  5. 进入 DuerOS 开发者控制台
  6. 点击 ” 创建新技能 ”

  7. 安装开发工具

  8. Python 3.6+ 环境
  9. 安装 Baidu-DuerOS SDK:
    pip install dueros-bot

技能创建流程分步详解

1. 定义技能基本信息

  • 技能名称:简洁明了,如 ” 天气预报小助手 ”
  • 调用名称:用户唤醒技能时说的短语
  • 技能类型:选择 ” 自定义技能 ”

2. 配置意图和槽位

在 DuerOS 控制台中:

  1. 创建 ”QueryWeather” 意图
  2. 添加槽位:
  3. city:城市名称
  4. date:查询日期(可设置默认值为今天)
  5. 添加用户可能说的话:
  6. “{city}的天气怎么样 ”
  7. “ 查一下 {date}{city} 的天气 ”

3. 开发处理逻辑

创建 weather_skill.py 文件:

from dueros.bot import Bot
from dueros.card import TextCard
import requests

class WeatherBot(Bot):

    def __init__(self, request_data):
        super(WeatherBot, self).__init__(request_data)

    def on_intent(self):
        # 获取意图名称
        intent_name = self.get_intent_name()

        if intent_name == 'QueryWeather':
            # 获取槽位值
            city = self.get_slots('city')
            date = self.get_slots('date') or '今天'

            # 调用天气 API (示例使用和风天气)
            weather_info = self.query_weather(city)

            # 构造响应
            card = TextCard(f'{date}{city}的天气:{weather_info}')
            return {
                'card': card,
                'outputSpeech': f'{date}{city}的天气情况是{weather_info}'
            }

    def query_weather(self, city):
        # 这里应替换为实际的天气 API 调用
        # 示例代码仅作演示
        return '晴,25℃,东南风 3 级'

# 主处理函数
def handler(event, context):
    bot = WeatherBot(event)
    return bot.run()

完整示例:天气预报技能开发

上述代码实现了一个简单的天气预报技能。关键点说明:

  1. 继承 dueros.bot.Bot 基类
  2. 重写 on_intent 方法处理不同意图
  3. 使用 get_slots 获取用户提供的参数
  4. 通过 TextCardoutputSpeech构造响应

实际开发中,你需要:

  1. 替换 query_weather 方法中的模拟数据,接入真实天气 API
  2. 添加错误处理(如城市不存在的情况)
  3. 考虑添加多轮对话支持

调试与部署指南

本地测试

  1. 安装 ngrok 用于内网穿透:
    npm install -g ngrok
    ngrok http 8000
  2. 运行技能服务:
    python weather_skill.py
  3. 在 DuerOS 控制台配置测试 URL

线上部署

推荐部署方式:

  1. 百度云函数(CFC)
  2. 上传代码 zip 包
  3. 设置触发器为 HTTP 触发器
  4. 获取访问 URL

  5. 自有服务器

  6. 需要 HTTPS 支持
  7. 确保服务器在中国大陆(响应更快)

常见问题与解决方案

新手常见错误

  1. 槽位未设置必填:导致获取不到必要参数
  2. 解决:在意图配置中标记必填槽位

  3. 响应格式错误:DuerOS 要求特定 JSON 格式

  4. 解决:始终使用 SDK 提供的响应构造方法

  5. 超时问题:技能响应超过 5 秒

  6. 解决:优化 API 调用,添加缓存机制

  7. 测试环境与正式环境差异

  8. 解决:使用完全相同的代码部署

其他常见问题

Q: 为什么我的技能无法被唤醒?
A: 检查调用名称是否设置正确,避免使用常见词汇

Q: 如何处理用户说的城市不在服务范围内?
A: 在代码中添加城市校验逻辑,返回友好提示

进一步学习资源

  1. 百度 DuerOS 官方文档
  2. DuerOS 技能开发社区
  3. Python SDK GitHub 仓库

总结

通过本文,你应该已经掌握了百度 Skill 开发的基本流程。从环境搭建到技能发布,关键是要理解意图 - 槽位的交互模型,以及如何正确处理请求和构造响应。天气预报示例虽然简单,但包含了所有核心概念。接下来,你可以尝试开发更复杂的技能,比如支持多轮对话的订餐服务或知识问答系统。

开发过程中遇到问题时,不要忘记查阅官方文档和社区讨论。百度 Skill 生态正在快速发展,现在正是入门的好时机。

正文完
 0
评论(没有评论)