接入过程
第一步,注册腾讯AI开放平台的账号,选择开放能力,找到自己需要的服务。
第二步,创建应用,获取appid和appkey。
第三步,为该应用接入能力。(由于官方没有明确给出使用流程,在这里走了很多的弯路。)
接入代码示例
import requests
import urllib
from urllib.parse import quote, urlencode
import hashlib
import random
import string
import time
# 计算URL的MD5 将结果转换为大写
def curlmd5(src):
m = hashlib.md5()
m.update(src.encode("gbk"))
# m = hashlib.md5(src.encode('gbk'))
return m.hexdigest().upper()
# 接口鉴权
def get_params(words):
#请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效)
t = time.time()
time_stamp=str(int(t))
# 请求随机字符串,用于保证签名不可预测
nonce_str = ''.join(random.sample(string.ascii_letters.lower() + string.digits, 16))
# 应用标志,这里修改成自己的id和key
app_id='2165555262'
app_key='nXnACjVfW9MUm3xk'
params = {'app_id':app_id,
'time_stamp':time_stamp,
'nonce_str':nonce_str,
'text': words,
}
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
print(sign_before)
# params = sorted(params.items(), key=lambda d: d[0])
return params
# 同义词翻译
def synonym_api(words):
# API地址
url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_wordsyn"
# 获取请求的参数
words = words.encode('gbk')
payload = get_params(words)
# r = requests.get(url, payload)
r = requests.post(url, payload)
print(payload)
return r.json()
if __name__ == "__main__":
a = synonym_api("今天的天气不错呀")
print("请求结果", a)
踩过的坑
如果请求的结果返回的msg字段显示no auth,说明没有为该应用接入能力,所以不能使用这个服务,也就是第三步。