博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3调用腾讯AI开放平台
阅读量:4079 次
发布时间:2019-05-25

本文共 1822 字,大约阅读时间需要 6 分钟。

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) 

转载地址:http://hktni.baihongyu.com/

你可能感兴趣的文章
C++ STL标准库与泛型编程(一)概述
查看>>
C++ STL标准库与泛型编程(四)Deque、Queue、Stack 深度探索
查看>>
C++ STL标准库 算法
查看>>
JVM内存模型_Minor GC笔记
查看>>
SpringCloud学习之PassCloud——(一)PassCloud源代码下载
查看>>
Linux下安装Python环境并部署NLP项目
查看>>
Nginx篇-springCloud配置Gateway+Nginx进行反向代理和负载均衡
查看>>
Nginx篇-Nginx配置动静分离
查看>>
缓存篇-Redis缓存失效以及解决方案
查看>>
缓存篇-使用Redis进行分布式锁应用
查看>>
缓存篇-Redisson的使用
查看>>
phpquery抓取网站内容简单介绍
查看>>
找工作准备的方向(4月22日写的)
查看>>
关于fwrite写入文件后打开查看是乱码的问题
查看>>
用结构体指针前必须要用malloc,不然会出现段错误
查看>>
Linux系统中的美
查看>>
一些实战项目(linux应用层编程,多线程编程,网络编程)
查看>>
我觉得专注于去学东西就好了,与世无争。
查看>>
原来k8s docker是用go语言写的,和现在所讲的go是一个东西!
查看>>
STM32CubeMX 真的不要太好用
查看>>