騰訊AI-智慧閒聊機器人-Python3全套教學

2020-10-02 12:00:16

0 致謝

此篇部落格參考了 小鋒學長 在騰訊雲社群的文章 自己動手實現4大免費聊天機器人:小冰、圖靈、騰訊、青雲客 ,在此表示衷心感謝!

1 註冊騰訊AI賬號

在這裡 騰訊AI平臺 註冊一個平臺賬號(可用QQ賬號註冊登入)並實名認證,然後進入控制檯,具體過程略去,不再贅述。

2 建立應用(以下各步驟均採用圖片說明)

2.1 建立應用

01_創建應用.png

2.2 記錄APP_ID和APP_KEY

02_記錄APP_ID和APP_KEY.png

3 接入能力

3.1 選擇能力

03_選擇能力.png

3.2 接入能力

04_接入能力01
04_接入能力02
04_接入能力03

3.3 接入能力成功

05_接入能力成功

4 檔案檢視

06_檢視文件01
06_檢視文件02

5 開始擼程式碼

註釋得很詳盡,不懂的地方可以留言,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()

6 祝大家Coding之路所向披靡!

PS:如果只是想體驗一下或者不想擼程式碼,可以在這裡 AI_Chat_v3.exe 下載體驗(pyinstaller直接匯出的,64位元版,可能報毒,自己斟酌是否下載執行)。