基于腾讯AI开放平台的python闲聊机器人

网上有不少智能对话的接口,各个接口性能各异。

简单介绍几个:
      1:图灵开放平台
                简介:实名认证以后天天提供 100次免费调用,超过以后就要收费了,可玩性比较高,智能程度较高。
python


      2:小 i 机器人git

                简介:调用次数无限制,可是基本上智能让它讲讲笑话之类的,聊天就别想了web


      3:腾讯 Ai 开放平台算法

                简介:调用次数无限制,功能巨多,图片识别,语音合成,智能对话,翻译。。。json

 

 

下面即是python+腾讯AI 开放平台实现的闲聊机器人,控制台版的,有须要的话能够使用  wxpy 这个库,将其加入到web 版的微信里面去,实现微信的智能问答。api

import hashlib
import time
import random
import string
from urllib.parse import quote
import requests


def curlmd5(src):
    m = hashlib.md5(src.encode('UTF-8'))
    # 将获得的MD5值全部字符转换成大写
    return m.hexdigest().upper()


def get_params(plus_item):
    # 请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效)
    t = time.time()
    time_stamp = str(int(t))
    # 请求随机字符串,用于保证签名不可预测  
    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))
    # 应用标志,这里修改为本身的id和key
    app_id = '2135xxxxxxxxxxxxxxxx'
    app_key = 'UMPuHxxxxxxxxxxxxxW'
    params = {  'app_id' : app_id,
                'question' : plus_item,
                'time_stamp':time_stamp,
                'nonce_str':nonce_str,
                'session':'10000'
             }

    sign_before = ''
    # 要对key排序再拼接  
    for key in sorted(params):
        # 键值拼接过程value部分须要URL编码,URL编码算法用大写字母,例如%E8。quote默认大写。  
        sign_before += '{}={}&'.format(key, quote(params[key], safe=''))
    # 将应用密钥以app_key为键名,拼接到字符串sign_before末尾
    sign_before += 'app_key={}'.format(app_key)
    # 对字符串sign_before进行MD5运算,获得接口请求签名  
    sign = curlmd5(sign_before)
    params['sign'] = sign
    return params


def get_text(plus_item):
    # 聊天的API地址    
    url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat"
    # 获取请求参数  
    plus_item = plus_item.encode('utf-8')
    payload = get_params(plus_item)
    # r = requests.get(url,params=payload)
    r = requests.post(url,data=payload)
    return r.json()["data"]["answer"]


if __name__ == '__main__':
    while True:
        text = input('input:')
        print(text)
        if text == 'tt':
            break
        answer = get_text(text)
        print('bot see:' + answer)