python实现机器人聊天
前言
自己弄了个小程序,就是通过访问腾讯AI接口,实现机器人聊天的功能,可以闲聊,也可实现查天气的一些功能。
AI平台链接
准备工作
请求接口所需参数,如下图所示
注: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()
注:在平台中,关注公众号,还可以设置自己的机器人各种属性特点。
欢迎大家一同前来交流,别的功能!