此篇部落格參考了 小鋒學長 在騰訊雲社群的文章 自己動手實現4大免費聊天機器人:小冰、圖靈、騰訊、青雲客 ,在此表示衷心感謝!
在這裡 騰訊AI平臺 註冊一個平臺賬號(可用QQ賬號註冊登入)並實名認證,然後進入控制檯,具體過程略去,不再贅述。
註釋得很詳盡,不懂的地方可以留言,Python環境和IDE設定以及pip包安裝這裡不再贅述。
# 匯入相關庫
import requests
import time
import string
import random
import urllib
import hashlib
def Tencent_AI_Chat_Robot(msg):
APPID = "" # 這裡填剛剛記錄的APPID
APPKEY = "" # 這裡填剛剛記錄的APPKEY
url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat" # API地址
# 構造請求引數
params = {
"app_id": APPID,
# 時間戳(從1970.01.01 08:00到現在經歷了多少秒)
"time_stamp": str(int(time.time())),
# 隨機字串,這裡從26個英文字母+10個數位中隨機抽16個(可重複,小寫)組成
"nonce_str": "".join(random.choice(string.ascii_letters + string.digits) for x in range(16)),
# 對談標識(預設「10000」,應用內唯一)
"session": "10000".encode("utf-8"),
# 我方發言
"question": msg.encode("utf-8")
}
# 簽名資訊,生成規則見檔案介面鑑權部分
sign_before = ""
# 生成簽名
# 將<key, value>請求引數對按key進行字典升序排序,得到有序的引數對列表N
for key in sorted(params):
# 將列表N中的引數對按URL鍵值對的格式拼接成字串,得到字串T(如:key1=value1&key2=value2)
# 鍵值拼接過程value部分需要URL編碼,URL編碼演演算法用大寫字母,例如%E8。quote預設大寫
sign_before += "{}={}&".format(key, urllib.parse.quote(params[key], safe=""))
# 將應用金鑰以app_key為鍵名,拼接到字串sign_before末尾
sign_before += "app_key={}".format(APPKEY)
# 對字串sign_before進行MD5運算,並轉換成16進位制大寫格式,得到介面請求籤名
sign = hashlib.md5(sign_before.encode("UTF-8")).hexdigest().upper()
# 將簽名追加到請求引數
params["sign"] = sign
# print(params)
# 呼叫API(url是API地址,data是請求引數),並返回資料(JSON格式)
html = requests.post(url, data=params).json()
# 提取API返回資訊中的回答語句
return html["data"]["answer"]
def main():
print("\n提示:在 請發言: 之後輸入你的話語(輸入 q 退出),然後按enter(確認鍵)。\n")
index = 0
while True:
my_msg = input("Round_{0}\n請發言:".format(str(index)))
if my_msg == "q":
break
print("AI回覆:{0}\n".format(Tencent_AI_Chat_Robot(my_msg)))
index += 1
if __name__ == '__main__':
main()
PS:如果只是想體驗一下或者不想擼程式碼,可以在這裡 AI_Chat_v3.exe 下載體驗(pyinstaller直接匯出的,64位元版,可能報毒,自己斟酌是否下載執行)。