• Unit平台的相关知识:
      • Unit平台是百度大脑开放的智能对话定制与服务平台, 也是当前最大的中文领域对话开放平台之一. Unit对注册用户提供免费的对话接口服务, 比如中文闲聊API, 百科问答API, 诗句生成API等, 通过这些API我们可以感受一下智能对话的魅力, 同时它也可以作为任务导向型对话系统无法匹配用户输入时的最终选择.

    1.2 Unit对话API的使用 - 图1


    • Unit闲聊API演示:
      1. 用户输入 >>> "你好"
      2. Unit回复 >>> "你好,想聊什么呢~"
      3. 用户输入 >>> "我想有一个女朋友!"
      4. Unit回复 >>> "我也是想要一个女朋友~"
      5. 用户输入 >>> "晚吃啥呢想想"
      6. Unit回复 >>> "想吃火锅"

    • 调用Unit API的实现过程:
      • 第一步: 注册登录百度账户, 进入Unit控制台创建自己的机器人.
      • 第二步: 进行相关配置, 获得请求API接口需要的API Key与Secret Key.
      • 第三步: 在服务器上编写API调用脚本并进行测试.

    • 第一步: 注册登录百度账户, 进入Unit控制台创建自己的机器人.

    1.2 Unit对话API的使用 - 图2


    • 第二步: 进行相关配置, 获得请求API接口需要的API Key与Secret Key.
      • 点击获取API Key进入百度云应用管理页面.1.2 Unit对话API的使用 - 图3

    • 点击创建应用, 进入应用信息表单填写页面.1.2 Unit对话API的使用 - 图4

    • 填写完毕后, 点击立即创建, 成功后会提示创建完毕.1.2 Unit对话API的使用 - 图5

    • 点击返回应用列表.1.2 Unit对话API的使用 - 图6

    • 可以看到创建的API Key和Secret Key, 至此创建流程结束.1.2 Unit对话API的使用 - 图7

    • 第三步: 在服务器上编写API调用脚本并进行测试
      1. import json
      2. import random
      3. import requests
      4. # client_id 为官网获取的AK, client_secret 为官网获取的SK
      5. client_id = "1xhPonkmHqwolDt3GCICLX39"
      6. client_secret = "SRYsfjMGNuW8G265paMXLEjDTjO6O4RC"
      7. def unit_chat(chat_input, user_id="88888"):
      8. """
      9. description:调用百度UNIT接口,回复聊天内容
      10. Parameters
      11. ----------
      12. chat_input : str
      13. 用户发送天内容
      14. user_id : str
      15. 发起聊天用户ID,可任意定义
      16. Return
      17. ----------
      18. 返回unit回复内容
      19. """
      20. # 设置默认回复内容, 一旦接口出现异常, 回复该内容
      21. chat_reply = "不好意思,俺们正在学习中,随后回复你。"
      22. # 根据 client_id 与 client_secret 获取access_token
      23. url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s" % (
      24. client_id, client_secret)
      25. res = requests.get(url)
      26. access_token = eval(res.text)["access_token"]
      27. # 根据 access_token 获取聊天机器人接口数据
      28. unit_chatbot_url = "https://aip.baidubce.com/rpc/2.0/unit/service/chat?access_token=" + access_token
      29. # 拼装聊天接口对应请求发送数据,主要是填充 query 值
      30. post_data = {
      31. "log_id": str(random.random()),
      32. "request": {
      33. "query": chat_input,
      34. "user_id": user_id
      35. },
      36. "session_id": "",
      37. "service_id": "S23245",
      38. "version": "2.0"
      39. }
      40. # 将封装好的数据作为请求内容, 发送给Unit聊天机器人接口, 并得到返回结果
      41. res = requests.post(url=unit_chatbot_url, json=post_data)
      42. # 获取聊天接口返回数据
      43. unit_chat_obj = json.loads(res.content)
      44. # print(unit_chat_obj)
      45. # 打印返回的结果
      46. # 判断聊天接口返回数据是否出错 error_code == 0 则表示请求正确
      47. if unit_chat_obj["error_code"] != 0: return chat_reply
      48. # 解析聊天接口返回数据,找到返回文本内容 result -> response_list -> schema -> intent_confidence(>0) -> action_list -> say
      49. unit_chat_obj_result = unit_chat_obj["result"]
      50. unit_chat_response_list = unit_chat_obj_result["response_list"]
      51. # 随机选取一个"意图置信度"[+response_list[].schema.intent_confidence]不为0的技能作为回答
      52. unit_chat_response_obj = random.choice(
      53. [unit_chat_response for unit_chat_response in unit_chat_response_list if
      54. unit_chat_response["schema"]["intent_confidence"] > 0.0])
      55. unit_chat_response_action_list = unit_chat_response_obj["action_list"]
      56. unit_chat_response_action_obj = random.choice(unit_chat_response_action_list)
      57. unit_chat_response_say = unit_chat_response_action_obj["say"]
      58. return unit_chat_response_say
      59. if __name__ == '__main__':
      60. while True:
      61. chat_input = input("请输入:")
      62. print(chat_input)
      63. chat_reply = unit_chat(chat_input)
      64. print("用户输入 >>>", chat_input)
      65. print("Unit回复 >>>", chat_reply)
      66. if chat_input == 'Q' or chat_input == 'q':
      67. break

    • 代码位置: /data/doctor_online/main_serve/unit.py

    • 调用:
      1. python unit.py

    • 输出效果:
      1. 请输入:你好啊
      2. 你好啊
      3. 用户输入 >>> 你好啊
      4. Unit回复 >>> 你也好啊~
      5. 请输入:今天天气棒棒哒
      6. 今天天气棒棒哒
      7. 用户输入 >>> 今天天气棒棒哒
      8. Unit回复 >>> 必须的
      9. 请输入:晚饭吃点什么?
      10. 晚饭吃点什么?
      11. 用户输入 >>> 晚饭吃点什么?
      12. Unit回复 >>> 晚饭没吃,减肥
      13. 请输入:

    • 本章总结:
      • 学习了智能对话系统的相关背景知识:
        • 什么是智能对话系统
        • 从处理问题的目的来区分, 智能对话系统的分类

    • 我们的在线医生项目就是任务导向型的智能对话系统.

    • 学习了Unit平台的相关知识:
      • Unit平台是百度大脑开放的智能对话定制与服务平台, 也是当前最大的中文领域对话开放平台之一.

    • 学习了调用Unit API的实现过程:
      • 第一步: 注册登录百度账户, 进入Unit控制台创建自己的机器人.
      • 第二步: 进行相关配置, 获得请求API接口需要的API Key与Secret Key.
      • 第三步: 在服务器上编写API调用脚本并进行测试.