欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python + 图灵机器人APIv2.0 = 实现两个机器人互相聊天

程序员文章站 2022-06-04 09:14:41
...

Python + 图灵机器人APIv2.0 = 实现两个机器人互相聊天

获取图灵机器人API KEY

首先,前往图灵机器人官方网站 http://www.tuling123.com/ 注册账号。

登录后点击 创建机器人 ,填写一些简单的基本信息之后即可创建。

Python + 图灵机器人APIv2.0 = 实现两个机器人互相聊天
Python + 图灵机器人APIv2.0 = 实现两个机器人互相聊天

Python3源代码

基本原理就是使用urllib.request模块,向接口地址发送HTTP POST请求,请求中加入了聊天内容。

import json
import urllib.request
import time

api_url = "http://openapi.tuling123.com/openapi/api/v2"
api_key_1 = "请替换为你的API KEY 1"
api_key_2 = "请替换为你的API KEY 2"
tag = 0

api_key = api_key_1
text_input = input('对话起点:')

while True:
    req = {
        "perception":
        {
            "inputText":
            {
                "text": text_input
            },

            "selfInfo":
            {
                "location":
                {
                    "city": "长沙",
                    "province": "湖南",
                    "street": "四方坪"
                }
            }
        },

        "userInfo": 
        {
            "apiKey": api_key,
            "userId": "hexinjiyi"
        }
    }

    if tag == 0:
        api_key = api_key_1
        tag = 1
    else:
        api_key = api_key_2
        tag = 0
    
    req = json.dumps(req).encode('utf8')
    http_post = urllib.request.Request(api_url, data=req, headers={'content-type': 'application/json'})
    response = urllib.request.urlopen(http_post)
    response_str = response.read().decode('utf8')
    response_dic = json.loads(response_str)
    intent_code = response_dic['intent']['code']
    results_text = response_dic['results'][0]['values']['text']
    if tag == 1:
        print('图灵机器人1的回答:'+ results_text)
    else:
        print('图灵机器人2的回答:'+ results_text)
    text_input = results_text
    time.sleep(3)

Python + 图灵机器人APIv2.0 = 实现两个机器人互相聊天

小结

  1. 字典 req 包含了向图灵机器人发出请求所需的各项信息。其中 req[‘perception’][‘selfInfo’][‘location’] 包含了地理位置信息,向图灵机器人发送与位置有关的请求时,如果没有另外指定位置,则会默认使用这个位置。例如询问"明天会下雨吗",图灵机器人会回答我"长沙"明天是否下雨;
  2. req[‘userInfo’] 包含了API KEY,请替换成你的API KEY(双引号不要删除)。另外 userId 是用户参数,暂时不明白用途,如果你有什么想法恳请留言;
  3. 希望对大家能有所帮助,感谢阅读本篇文章。