基于華為云智能問答機器人的AI詩歌生成【我的華為云體驗之旅】
今天來體驗一下華為云的對話機器人服務,調用了NLP的詩歌生成API接口,話不多說,走著!
那么,什么是對話機器人服務?
對話機器人服務(Conversational Bot Service) 是一款基于人工智能技術,針對企業應用場景開發的云服務,主要包括智能問答、智能質檢、定制對話機器人和任務型對話等功能。對話機器人服務中的技能工坊是打造任務型對話技能的工具平臺。通過創建管理不同技能和詞典,滿足不同的用戶需求,實現不同場景下的多輪對話能力。
簡單來說,就是訓練了一個有指定功能的ai機器人,會根據你設置的詞典和回復模板來操作,并隨著問答能不斷學習提升。
基礎環境準備
在使用 ModelArts 進行 AI 開發前,需先完成以下基礎操作哦(如有已完成部分,請忽略),主要分為4步(注冊–>實名認證–>服務授權–>領代金券):
使用手機號注冊華為云賬號:點擊注冊
點此去完成實名認證,賬號類型選"個人",個人認證類型推薦使用"掃碼認證"。
準備數據
下載附件至本地,解壓。可以看到?poetry_code?文件夾下有以下三個文件:
├── acrostic_dict.txt
├── poetry_demo.py
└── poetry_type_dict.txt
單擊https://console.huaweicloud.com/cbs/?region=cn-north-4&&locale=zh-cn#/cbs/management/qabot/home進入,進入對話機器人服務智能問答機器人頁面,點擊右上角的購買問答機器人,進入問答機器人購買頁面。如下所示
分別輸入問答機器人名稱,選擇試用的計費模式,并點擊立即購買完成支付,即完成試用專業版機器人創建
購買成功后如圖所示:
添加詩歌類型詞典
接著點擊機器人管理按鈕進入機器人管理頁面,進入左側標簽欄中的詞典管理。點擊“創建詞典”按鈕,按照下圖指導添加詩歌類型詞典:
詞典標注:POETRYY_TYPE
詞典名稱:詩歌類型
點擊“確認并添加詞條”按鈕,創建該條詞典,并進入添加詞條頁面。
點擊頁面上的“導入詞條”按鈕,然后點擊“...”按鈕,上傳本地?poetry_code?文件夾下的?poetry_type_dict.txt?文件,導入模式選“追加”,最后點擊“確定”按鈕,即可完成詩歌類型詞典詞條導入。如下圖所示:
導入成功后,可以看到如下詞條:
添加藏頭詩詞典
參看上述創建詩歌類型詞典的方式,創建藏頭詩詞典。點擊“創建詞典”按鈕,填寫內容如下:
詞典標識:ACROSTIC?詞典名稱 :藏頭詩判斷
點擊“確認并添加詞條”按鈕。
點擊“導入詞條”按鈕,點擊“...”按鈕,選擇本地?poetry_code?文件夾中的?acrostic_dict.txt?文件,導入模式選追加,最后點“確定”按鈕,完成藏頭詩判斷詞典詞條導入,如下圖所示:
至此,兩條詞典創建成功。詞典因僅用于技能中,可暫時不發布。
這里將添加語料,并標注,配置作詩機器人的技能。
在機器人管理頁面,進入左側標簽欄中的技能管理頁面,新建寫詩技能并進行技能配置。
創建技能
點擊“創建技能”按鈕,添加自定義技能,輸入技能名稱:作詩技能,如下圖所示:
創建意圖
技能創建完成后,點擊進入寫詩技能,在意圖管理中點擊“創建意圖”按鈕,如下圖指導填寫:
意圖標識:poem
意圖名稱:作詩
然后點擊“確認并繼續設置”按鈕,繼續配置該意圖。
添加用戶問法語料
進入“poem”意圖的“用戶問法管理”,點擊“用戶問法語料”輸入框下方的藍色字體“批量添加用戶問法語料”,復制下方的語料至彈出對話框,點擊“確認”完成用戶問法預料導入。
以秋思為題寫首詩
作詩一首
寫一首五言絕句
寫一首詩
寫個詩
寫首七言絕句
來一個七言律詩
來首詩吧
用白云寫一首詩
用秋思寫個五言律詩
給我寫個詩
語料添加完之后,可以得到如下結果:
添加槽位
往下滑動頁面,找到“槽位管理”頁面,分別創建槽位:poetryType(詩歌類型), poetryName(詩歌名稱), acrostic(藏頭詩)三個槽位。 槽位是觸發意圖的關鍵信息 。
然后點擊“添加槽位”按鈕,按照如下指導,添加poetryType槽位:
關聯槽位:不關聯
槽位標識:poetryType
槽位名稱:詩歌類型
是否必須:是
輸入框:請問詩歌類型是什么?
詞典選擇:POETRY_TYPE
答案候選:勾選
然后點擊“確定”按鈕。
再次點擊“添加槽位”按鈕,按照如下指導,添加poetryName槽位:
關聯槽位:不關聯
槽位標識:poetryName
槽位名稱:詩歌名稱
是否必須:是;
輸入框:請問詩歌名稱是什么?
詞典選擇:sys.any
答案候選:不勾選
然后點擊“確定”按鈕。
再次點擊“添加槽位”按鈕,按照如下指導,添加acrostic槽位:
關聯槽位:不關聯
槽位標識:acrostic
槽位名稱:藏頭詩
是否必須:是
輸入框:請問需要藏頭詩么?
詞典選擇:ACROSTIC
答案候選:不勾選
然后點擊“確定”按鈕。
三個槽位添加完成后,可以得到如下列表:
語料標注
往上滑動頁面,回到“用戶問法管理”,對“用戶問法語料”列表中的語料進行標注。
選中關鍵詞,然后使用槽位對關鍵詞標注。例如:七言絕句——poetryType,秋思——poetryName。
標注完成后,如下圖所示:
添加用戶問法模板
在“用戶問法管理”中的“用戶問法模板”頁面中添加模板。
點擊“添加模板”按鈕。模板內容如下圖所示,在相應位置點擊下方槽位名稱插入相應槽位。完成配置后用戶即可使用模板的問法與機器人進行對話。
添加第一個模板:
添加第二個模板:
兩個問法模板添加完成后,可以看到如下列表:
機器人回復管理
配置通過函數的方式調用作詩接口。
向下滑動頁面,找到“機器人回復管理”頁面。
選擇“調用函數回復”,并點擊右側“創建新函數”按鈕進入函數工作流控制臺,如下圖所示:
按照如下指導,填寫參數:
模板:使用空模板函數名稱:poem
所屬應用:default
委托名稱:不使用任務委托
運行時語言:Python2.7
函數執行入口:index.handler
代碼上傳方式:默認代碼。
# -*- coding:utf-8 -*- import json import sys import requests import json reload(sys) sys.setdefaultencoding("utf-8") type_dict = {"五言絕句":0,"七言絕句":1,"五言律詩":2,"七言律詩":3} def handler (event, context): token_response = requests.post("https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens", headers={"Content-Type": "application/json"}, json={"auth": {"identity":{"password": {"user": {"domain": {"name": "賬號名"}, "name": "用戶名", "password": "密碼"}},"methods": ["password"]}, "scope": {"project": {"name": "cn-north-4"}}}}) token = token_response.headers.get("X-Subject-Token") project_id = json.loads(token_response.content).get("token").get("project").get("id") slot_temp = json.dumps(event, ensure_ascii=False) slot_info = json.loads(slot_temp) poem_name = slot_info["slots"]["poetryName"][0] poem_type = type_dict[slot_info["slots"]["poetryType"][0].encode("utf-8")] poem_acrostic = slot_info["slots"]["acrostic"][0] if (poem_acrostic == "true"): poem_acrostic = True else : poem_acrostic = False base_uri = "https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{}/nlg/poem" response = requests.post(base_uri.format(project_id), headers={"X-Auth-Token": token, "Content-Type": "application/json"}, json = {"type": poem_type, "title": poem_name, "acrostic": poem_acrostic}) if response.status_code == 200: poem = json.loads(response.text.encode("utf-8"))["poem"] return "\n".join(poem) else: return response.text
注意:
1.?需要修改代碼中的賬號名、用戶名、密碼為自己的真實信息(如果是主賬號,用戶名和賬戶名相同)
2.?代碼中會調用自然語言處理服務的詩歌生成接口,該接口為收費接口,接口詳情如下
https://apiexplorer.developer.huaweicloud.com/apiexplorer/debughistory?product=NLP&api=RunPoem
代碼主要功能:獲取槽位信息,調用寫詩接口,返回接口調用結果。
最后點擊“創建函數”按鈕:
創建成功后,會自動跳轉到函數配置頁面。
配置函數的超時時間,點擊“配置”頁簽, 然后將執行超時時間改為10,如下圖所示:
點擊右上角的“請選擇測試事件”下拉框中的“配置測試事件”按鈕,如下圖所示:
在測試事件輸入框中填入:
{"slots":{"poetryType":["五言絕句"],"poetryName":["秋思"],"acrostic":["true"]}}
保存測試事件后,點擊“測試”按鈕,查看測試結果,測試結果如下:
可以看見報錯了,原因是我們還沒訂閱這個api,接下來去訂閱一下
訪問 https://console.huaweicloud.com/nlp/#/nlp/overview
找到下圖的詩歌生成api,點擊開通服務
繼續測試就成功了!!!
選擇函數回復返回?poem?意圖管理頁面,選擇調用函數回復,在下拉框中選擇已創建的函數??poem?,如下圖所示:
然后點擊頁面下方的“保存”按鈕,保存意圖所有配置信息。
模型訓練發布
在“寫詩技能”頁面中,進入“訓練發布”頁面,點擊“訓練新版本”按鈕,勾選“用戶常用問法”,技能閾值默認即可。點擊確認開始模型訓練,訓練時長大概3-5分鐘。
模型訓練完成后,點擊“發布”按鈕發布模型。
體驗作詩技能
模型發布完成后,即可通過點擊機器人管理頁面中右上角的“對話體驗”按鈕體驗寫詩機器人。(詩歌類型槽位已配置開啟候選項,因此用戶可通過點擊響應類型進行自動回復。)?下圖是一組對話樣例:
{ "poem": [ "秋思", "秋色已寥落,客心空自驚。", "殘荷余宿露,高柳失寒聲。", "歲月悲歡異,山川今昔情。", "西風動歸思,無復聽砧聲。" ] }
到這里,對話機器人可以生成詩歌了,接下來大家可以結合不同的需求為機器人配置各項技能,實現不同場景下的多輪對話能力。
總結
關于此次的對話機器人實操就到這里了,整個過程挺容易上手,遇到小問題也能自己看文檔解決,整個配置和實現過程是非常有趣的,華為云社區的產品也非常強大,基本滿足了開發者的需求,繼續加油!!
【我的華為云體驗之旅】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/309059
智能問答機器人 機器人
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。