python实现机器人聊天

前言

自己弄了个小程序,就是通过访问腾讯AI接口,实现机器人聊天的功能,可以闲聊,也可实现查天气的一些功能。

AI平台链接

腾讯AI开放平台

准备工作

请求接口所需参数,如下图所示
python实现机器人聊天_第1张图片

注:sign是通过MD5加密生成的加密标识符,app_id是注册后生成你自己的app_id,还有一个app_key也是。
示例代码如下:

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

import requests


def curlmd5(src):
    """进行MD5加密运算"""
    md = hashlib.md5(src.encode('UTF-8'))
    # 将得到的md5值所有字符串转换成大写
    return md.hexdigest().upper()


def get_params(question):
    # 请求时间戳(秒级),防止请求重放
    time_stamp = int(time.time())
    # 请求随机字符串,保证签名不可预测
    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))
    # 应用标志
    app_id = 2110645471
    app_key = 'vHdDvhqnLwPMKvCG'
    params = {
        'app_id': app_id,
        'time_stamp': time_stamp,
        'nonce_str': nonce_str,
        'session': '10000',
        'question': question,
    }
    sign_before = ''
    # 对key排序再拼接,获取签名信息
    for key in sorted(params):
        # 键值对拼接过程,部分值需要bs64编码
        sign_before += '{}={}&'.format(key, quote(str(params[key]), safe=''))
    # 将应用密钥拼接到sign_before末尾
    sign_before += 'app_key={}'.format(app_key)
    # 对sign_before进行MD5加密运算,得到接口请求签名
    sign = curlmd5(sign_before)
    params['sign'] = sign
    # print(params)
    return params


def get_content(question):
    # 聊天的api接口
    url = 'https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat'
    # 获取请求参数
    question = question.decode('utf-8')
    payload = get_params(question)
    response = requests.post(url, data=payload)
    # print(response.json())
    return response.json()['data']['answer']


def run():
    while True:
        content = input('我:')
        if content == 'q':
            break
        answer = get_content(str(content).encode('utf-8'))
        print('机器人:' + answer)


if __name__ == '__main__':

    run()

注:在平台中,关注公众号,还可以设置自己的机器人各种属性特点。
欢迎大家一同前来交流,别的功能!

你可能感兴趣的:(python,机器人聊天)