python3调用腾讯AI开放平台

CSDN上偶遇一文说明如何调用腾讯AI开放平台API,因为喜欢python3,所以用python3实现了下。

用qq登录获取自己的id和key。

参考点击打开链接

首先获取请求参数。新建了个文件md5sign.py。

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

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 = '11066xxxxx'  
    app_key = 'Wz0bsFWuNGGxxxxx'
    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

然后带上参数直接调用API。要调用不同的API,需要修改参数。

import requests  
import md5sign  


def get_content(plus_item):    
    # 聊天的API地址    
    url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat"      
    # 获取请求参数  
    plus_item = plus_item.encode('utf-8')  
    payload = md5sign.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:    
        comment = input('我:')   
        if comment == 'q':    
            break    
        answer=get_content(comment)    
        print('机器人:'+answer) 




猜你喜欢

转载自blog.csdn.net/sily75/article/details/79300791