zoukankan      html  css  js  c++  java
  • 百度unit闲聊机器人

    import json
    import random
    import requests
    
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    client_id = "hIkC0fSxfQX17dGsbVcUGYzx"
    client_secret = "wluN6dVLGjUlnyvxtiSzQzchrHnv4O2K"
    
    
    def unit_chat(chat_input, user_id="88888"):
        """
        description:调用百度UNIT接口,回复聊天内容
        Parameters
          ----------
          chat_input : str
              用户发送天内容
          user_id : str
              发起聊天用户ID,可任意定义
        Return
          ----------
          返回unit回复内容
        """
        # 设置默认回复内容,  一旦接口出现异常, 回复该内容
        chat_reply = "不好意思,俺们正在学习中,随后回复你。"
        # 根据 client_id 与 client_secret 获取access_token
        url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s" % (
        client_id, client_secret)
        res = requests.get(url)
        print(res)
        access_token = eval(res.text)["access_token"]
        print(access_token)
        # 根据 access_token 获取聊天机器人接口数据
        unit_chatbot_url = "https://aip.baidubce.com/rpc/2.0/unit/service/chat?access_token=" + access_token
        # 拼装聊天接口对应请求发送数据,主要是填充 query 值
        post_data = {
                    "log_id": str(random.random()),
                    "request": {
                        "query": chat_input,
                        "user_id": user_id
                    },
                    "session_id": "",
                    "service_id": "S30762",
                    "version": "2.0"
                }
        # 将封装好的数据作为请求内容, 发送给Unit聊天机器人接口, 并得到返回结果
        res = requests.post(url=unit_chatbot_url, json=post_data)
    
    
        # 获取聊天接口返回数据
        unit_chat_obj = json.loads(res.content)
        print(unit_chat_obj)
        # print(unit_chat_obj)
        # 打印返回的结果
        # 判断聊天接口返回数据是否出错 error_code == 0 则表示请求正确
        if unit_chat_obj["error_code"] != 0: return chat_reply
        # 解析聊天接口返回数据,找到返回文本内容 result -> response_list -> schema -> intent_confidence(>0) -> action_list -> say
        unit_chat_obj_result = unit_chat_obj["result"]
        unit_chat_response_list = unit_chat_obj_result["response_list"]
        # 随机选取一个"意图置信度"[+response_list[].schema.intent_confidence]不为0的技能作为回答
        unit_chat_response_obj = random.choice(
           [unit_chat_response for unit_chat_response in unit_chat_response_list if
            unit_chat_response["schema"]["intent_confidence"] > 0.0])
        unit_chat_response_action_list = unit_chat_response_obj["action_list"]
        unit_chat_response_action_obj = random.choice(unit_chat_response_action_list)
        unit_chat_response_say = unit_chat_response_action_obj["say"]
        return unit_chat_response_say
    
    
    if __name__ == '__main__':
        while True:
            chat_input = input("用户输入 >>>")
            chat_reply = unit_chat(chat_input)
            print("Unit回复 >>>", chat_reply)
            if chat_input == 'Q' or chat_input == 'q':
                break
    

      

  • 相关阅读:
    1012每日博客
    1011每日博客
    108每日博客
    1013每日博客
    1015每日博客
    写几个关于sql server的例子
    正则表达式实例
    gridview 选中行变色
    ASP.NET跨页面传值技巧
    关于不同电脑Outlook同步
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/13141530.html
Copyright © 2011-2022 走看看