前言
華為云 ModelArts Studio 是基于 ModelArts 構建的一站式大模型即服務平臺(MaaS),可通過與開源 Agent 框架 Dify.AI 結合來開發對接 AI 聊天助手。
在打造 “高情商” 特性的過程中,華為云ModelArts Studio 的自定義提示詞和上下文管理功能堪稱點睛之筆。通過預設不同情緒場景的對話模板,結合用戶輸入的語義分析,AI 能夠靈活調整回復的語氣與內容。例如,當用戶傾訴煩惱時,聊天助手會以溫柔共情的語言回應,而在用戶咨詢信息時,則切換為簡潔專業的風格。這種情感化交互的實現,離不開平臺強大的算力支持與模型優化能力,在訓練過程中,能明顯感受到數據處理和模型迭代的高效性。?
具體操作步驟如下:
1、準備工作:
注冊登錄:前往華為云官網(https://www.huaweicloud.com/),注冊并登錄賬號。
開通服務:在華為云服務列表中,找到并開通 ModelArts Studio 服務。
部署平臺:推薦用華為云 Flexus X 實例,一鍵部署 Dify 平臺,注意計算規格不要低于 C7.xlarge.2。
2、使用 ModelArts Studio 部署大語言模型:
2.1 選擇定制:登錄 ModelArts Studio 平臺(目前僅華東二區域支持),在模型推理
選擇想要使用的大語言模型,如 “DeepSeek-V3-32K”,并點擊 “微調” 進行定制。
2.2 創建模型:點擊左上角 “創建模型”,自定義模型名稱,并選擇使用推薦權重文件,配置好后點擊 “創建”。
2.3 部署模型:點擊右上角的 “部署” 按鈕,在部署頁面中配置服務名稱、資源規格和 QPS,配置好后點擊 “提交”。當服務狀態變為 “運行中” 時,模型部署完成。
2.4 獲取 API 信息:創建 API Key 并保存密鑰。(后面需要將python代碼中的API進行替換)
3、使用 DIFY 編排工具構建 AI 智能體:
3.1 配置模型供應商:點擊 Dify 右上角 “設置”,進入模型供應商頁簽。選擇 “OpenAI-API-compatible” 供應商,并填入 ModelArts Studio 中獲取的模型名稱、API Key 和 API 地址(注意刪除最后面的 “chat/completions” 部分)。
3.2 創建并編排 AI 智能體:點擊 “工作室”,選擇 “從空白創建”。選擇應用類型為 “聊天助手”,并給應用起名字、選擇圖標和描述。創建完畢后,進入編排界面,填寫提示詞,可使用內置的提示生成器,并插入自定義變量,還可添加開場白和上下文,必要時可在 “上下文” 內引用知識庫。
3.3 測試并發布 AI 智能體:編排完成后,通過右側的對話框進行測試。若效果符合預期,選擇 “發布” 保存所有編排,即可得到一個完整的 AI 智能體應用。
4. 項目需要的開發環境
Python:3.8
IDE:Pycharm或vscode
第三方庫:① wxauto Version: 3.9.11.17.4 ② zhipuai Version: 2.1.4.20250325
pip install wxauto==3.9.11.17.4 zhipuai -i https://pypi.tuna.tsinghua.edu.cn/simple
打開您自己的微信
登錄微信客戶端,選擇一個聯系人或群聊,默認監聽當前窗口
5、高情商AI聊天助手核心代碼
from zhipuai import ZhipuAI class ZhipuAIUtil:def __init__(self, api_key):self.api_key = api_keyself.client = ZhipuAI(api_key=self.api_key)def get_answer(self, question):try:response = self.client.chat.completions.create(model="glm-4",messages=[{"role": "user", "content": question},],)return response.choices[0].message.contentexcept Exception as e:error_message = str(e)if "系統檢測到輸入或生成內容可能包含不安全或敏感內容" in error_message:return "系統檢測到輸入或生成內容可能包含不安全或敏感內容,請您避免輸入易產生敏感內容的提示語,感謝您的配合。"else:return error_message# 使用示例
from zhipuai import ZhipuAI # zhipuai Version: 2.1.4.20230731class ZhipuAIUtil:def __init__(self, api_key):self.api_key = api_keyself.client = ZhipuAI(api_key=self.api_key)def get_answer(self, question):try:response = self.client.chat.completions.create(model="glm-4",messages=[{"role": "user", "content": question},],)return response.choices[0].message.contentexcept Exception as e:error_message = str(e)if "系統檢測到輸入或生成內容可能包含不安全或敏感內容" in error_message:return "系統檢測到輸入或生成內容可能包含不安全或敏感內容,請您避免輸入易產生敏感內容的提示語,感謝您的配合。"else:return error_message# 使用示例
if __name__ == '__main__':api_key = "55f67457af44ddaf5f53ab6dcd50b89d.KRnAjz8uOMaiJPbL"zhipu_ai = ZhipuAIUtil(api_key=api_key)while True:question = input("請輸入要提問的問題:\n")print(zhipu_ai.get_answer(question if len(question) > 0 else '你好,請你直接寫出冒泡排序算法,回答得簡短一些'))print()
6、聊天記錄日志類Logger.py
import logging
from datetime import datetimeclass LoggerClass:def __init__(self, log_file='my_log.log'):# 創建一個loggerself.logger = logging.getLogger('my_logger')self.logger.setLevel(logging.DEBUG) # 設置日志級別# 創建一個handler,用于寫入日志文件,模式為'a'表示追加self.file_handler = logging.FileHandler(log_file, mode='a')# 創建一個formatter,設置日志格式self.formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s:\n%(message)s\n')self.file_handler.setFormatter(self.formatter)# 給logger添加handlerself.logger.addHandler(self.file_handler)def log_message(self, message, level=logging.INFO):# 記錄日志消息if level == logging.DEBUG:self.logger.debug(message)elif level == logging.INFO:self.logger.info(message)elif level == logging.WARNING:self.logger.warning(message)elif level == logging.ERROR:self.logger.error(message)elif level == logging.CRITICAL:self.logger.critical(message)else:self.logger.error(f"Invalid logging level: {level}")def close(self):# 關閉文件處理器self.file_handler.close()# 使用示例
if __name__ == '__main__':# 獲取今天的日期today = datetime.now().date()formatted_today = today.strftime('%Y-%m-%d') + ".log"logger_class = LoggerClass(log_file=formatted_today)logger_class.log_message('This is a log message at INFO level.')
7、WeChatListener.py 微信監聽類
微信監聽類,打開微信客戶端后,pycharm中點擊運行該文件即可執行程序
自動監聽并用AI分析兩人的對話
import time
from wxauto import WeChat # wxauto Version: 3.9.11.17.4
from AIUtil import ZhipuAIUtil
from Logger import LoggerClass
from datetime import datetime"""
自動監聽并用AI分析兩人的對話
"""class WeChatWindow:def __init__(self, n=1, lens=5, api_key="55f67457af44ddaf5f53ab6dcd50b89d.KRnAjz8uOMaiJPbL", question="",wait_for_oppo=1):self.lens = lensself.wx = WeChat()self.currentWindow = []self.msg5 = []self.loggerClass = LoggerClass(datetime.now().date().strftime('%Y-%m-%d') + ".log")self.aiUtil = ZhipuAIUtil(api_key=api_key)self.wait_for_oppo = wait_for_oppoself.question = questionself.cycle = nself.update_current_window() # 啟動時獲取當前聊天記錄def update_current_window(self):# 獲取當前聊天窗口消息msgs = self.wx.GetAllMessage(savevoice=True)self.currentWindow = []for msg in msgs:if msg.type == 'friend' or msg.type == 'self':self.currentWindow.append(msg.sender + ": " + msg.content)self.msg5 = self.currentWindow[-self.lens:]self.log(".\n".join(self.currentWindow))# def chat_with(self, who): #默認監聽當前窗口,不指定對象# self.wx.ChatWith(who)# self.update_current_window()def print_last_messages(self):print("=" * 100)print("捕捉到當前5條消息: ")for i in self.msg5:print(i.encode('gbk', 'ignore').decode('gbk'))print()def print_AI_messages(self):strs = ' '.join(self.msg5)ans = self.aiUtil.get_answer(strs + self.question)print("智譜AI:")print(ans.encode('gbk', 'ignore').decode('gbk'))def listen_for_new_messages(self):i = 0lastMsg5 = self.msg5while True:# 獲取下一條新消息msgs = self.wx.GetNextNewMessage(savevoice=True)for msgList in msgs.values():for item in msgList:# if item[0] != 'SYS':if item[0] != 'SYS' and item[1] != '[動畫表情]' and item[1] != '[圖片]': # 不計入表情包和圖片self.currentWindow.append(item[0] + ": " + item[1])self.msg5 = self.currentWindow[-self.lens:]if self.msg5 != lastMsg5:self.log(self.currentWindow[-1])lastMsg5 = self.msg5self.print_last_messages()i += 1if i % self.cycle == 0: # 每隔cycle個消息AI分析一次if self.wait_for_oppo == 1:if not self.currentWindow[-1].startswith('Self'): # 只要最后一條消息不是自己的(是別人的),就調用AI回答self.print_AI_messages()else:self.print_AI_messages()time.sleep(0.5)def log(self, msg):self.loggerClass.log_message(msg.encode('gbk', 'ignore').decode('gbk'))if __name__ == '__main__':chat_window = WeChatWindow(n=1, # 每發1次監聽一次lens=5, # 監聽最近5個對話api_key="55f67457af44ddaf5f53ab6dcd50b89d.KRnAjz8uOMaiJPbL", # 連接國內大模型智譜清言密鑰question="以上是一段對話,請你站在Self的角度并且模仿Self的語氣(Self是年輕人),替他回復,給出一個參考回答就可以了,請你反駁對面",wait_for_oppo=1)chat_window.print_last_messages()chat_window.print_AI_messages()chat_window.listen_for_new_messages()
8、項目程序啟動測試
方法一:pycharm或vscode中運行WeChatListener.py
方法二:或在命令行中輸入以下代碼
python WeChatListener.py
2025-06-08 15:58:47,504 - my_logger - INFO:
Self: 可以.
xxx: 兩點半怎么樣.
xxx: 我開車載你.
Self: 可以.
Self: 你打個電話給我
總結
最終生成的聊天助手,不僅具備精準的問答能力,更展現出了 “有溫度” 的智能交互體驗。無論是日常閑聊還是深度對話,它都能敏銳捕捉用戶情緒,給出恰到好處的回應。華為云 ModelArts Studio 真正讓技術不再冰冷,而是成為連接人與智能情感溝通的橋梁,這次開發經歷也讓我對 AI 在情感交互領域的應用前景充滿期待。