華為云Flexus+DeepSeek征文 | 華為云 ModelArts Studio 賦能高情商AI聊天助手:用技術構建有溫度的智能對話體驗

前言

華為云 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,配置好后點擊 “提交”。當服務狀態變為 “運行中” 時,模型部署完成。

DeepSeek-V3-32K

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 在情感交互領域的應用前景充滿期待。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86884.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86884.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86884.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot屬性配置方式

一、Spring Boot屬性配置方式。 在編寫完成后端程序之前,可以通過yml配置文件鍵值對的方式修改配置環境,一旦打包完成,再次修改yml配置文件較為麻煩,此時,可以使用以下配置方式: 1.命令行參數方式 …

Webpack原理剖析與實現

1. 整體架構設計 Webpack 5 的整體架構設計包括以下幾個核心模塊: Compiler:負責整個編譯過程,從讀取配置、解析模塊、生成依賴圖,到輸出最終的打包結果,主要文件是 lib/Compiler.js 。 Compilation:代表一次編譯過程,包括所有模塊、依賴關系和編譯結果,主要文件是 li…

【Python使用】嘿馬python運維開發全體系教程第2篇:日志管理,Linux概述【附代碼文檔】

教程總體簡介:網絡設定 學習目標 1、手動設定 2、DHCP自動獲取 系統基本優化 一、永久關閉SELinux 1. 永久關閉 二、關閉防火墻 2. 臨時啟動關閉防火墻 三、設定運行級別為3(命令行模式) 四、修改ssh端口號 ssh服務 一、ssh介紹 二、客戶端遠…

Hibernate報No Dialect mapping for JDBC type 1111(APP)

文章目錄 環境癥狀問題原因解決方案報錯編碼 環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 癥狀 客戶應用中報錯No Dialect mapping for JDBC type 1111。 問題原因 客戶使用Hibernate,實體類的中設置的數據類型與數…

【數據分析】環境數據降維與聚類分析教程:從PCA到可視化

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹教程內容數據預處理主成分分析(PCA)聚類分析可視化分析結果提取簇特征教程目的加載R包數據下載導入數據數據預處理主成分分析(PCA)計算相關矩陣繪制相關矩陣熱圖執行PCA可視化…

mac 安裝python,切換python版本

一、安裝多版本的PYTHON 在macOS上,你可以通過Homebrew包管理器安裝多個版本的Python 安裝Homebrew 首先,如果你的macOS上沒有安裝Homebrew,需要先進行安裝。打開終端(Terminal)并輸入以下命令: /bin/b…

AMD圖形和計算架構:RNDA

AMD圖形和計算架構:RNDA AMD RDNA 是 AMD 為顯卡(GPU)設計的 圖形和計算架構,專為高性能游戲、實時渲染和并行計算優化。目前已經迭代到 RDNA 3(如 RX 7000 系列顯卡),與 NVIDIA 的 RTX 系列和…

ubuntu20.04配置go環境

下載go語言安裝包 下載地址: All releases - The Go Programming Language 解壓安裝包 tar xfz go1.17.linux-amd64.tar.gz -C /usr/local 配置環境變量 編輯配置文件 vim ~/.bashrc # go env export GOROOT/usr/local/go export GOPATH$HOME/software/go ex…

Monorepo+Pnpm+Turborepo

以下是關于 Monorepo pnpm Workspace Turborepo 的詳細解析,涵蓋核心概念、技術優勢、配置實踐及協作機制,結合行業最佳實踐總結。 一、Monorepo 的核心價值 Monorepo(單一倉庫)指多個項目/模塊共享同一代碼庫的管理模式&#…

【Springai】 2指定模型的三種方式(Ollama)

Springai 指定模型的三種方式(Ollama) 在實際開發中,Ollama 支持三種常用的模型指定方式: 1. 從 yml 配置讀取默認模型 注意: 這是最基礎、最推薦的方式,必須先配置好才能用自動注入的 OllamaChatModel。…

python | numpy小記(四):理解 NumPy 中的 `np.round`:銀行家舍入策略

python | numpy小記(四):理解 NumPy 中的 np.round:銀行家舍入策略 一、函數簽名與參數說明二、“銀行家舍入”策略三、基礎示例四、與 Python 內建 round 的異同五、使用注意事項六、擴展用法:自定義舍入策略七、總結…

shell腳本定時執行收集Oracle大表的日分區及創建分區本地索引

近期業務上了一張大表,每日新增分區,每日分區數據量為3千萬行。根據每日分區創建分區本地索引。同事添加定時收集前一日每日分區統計信息。 1、創建分區本地索引 (分區索引數量需要和分區name數量一致) create index nmld.add_event_occur_time on nmld.esa_event (occur…

使用 Spread.net將 Excel 中的文本拆分為多段

引言: 在 .NET 應用程序中處理 Excel 數據時,常常會碰到需要把文本拆分成多段的情況。例如在數據清洗、數據分析等場景下,將長文本按照特定規則拆分為多段能讓數據更便于處理和分析。Spread.NET作為一款強大的 .NET 電子表格組件&#xff0c…

QT實現一個三軸位移臺的控制界面

文章目錄 0 引入1、圓形轉盤2、其他3、引用 0 引入 本來想做一個酷炫的3D位移臺控制程序,要有一個類似遙控器手柄那種界面,在網上找了半天也沒有,想要有那種效果還要用異性按鈕做,迫在眉睫的情況下,使用了自己的方法&…

Java 案例 6 - 數組篇(基礎)

數組的平均值、最大(小)值。數組的反轉 需求:開發一個程序。假設班級有8名學生,用戶可以錄入8名學生的Java成績,成績類型是小數,并輸出平均分,最高分和最低分。 import java.util.Scanner; …

Java外觀模式實現方式與測試方法

一、外觀模式的實現方式 外觀模式的核心是通過封裝復雜子系統的調用邏輯,為客戶端提供一個統一的簡單接口。以下是實現步驟及示例: 定義子系統類 子系統類負責實現具體功能,與外觀類解耦。例如,家庭影院系統中的投影儀、音響等組…

《解鎖AudioSet:開啟音頻分析的無限可能》

音頻新時代的 “密鑰”:AudioSet 登場 在科技飛速發展的今天,音頻作為信息傳播與交互的關鍵媒介,早已滲透到現代科技的各個角落。從智能手機中的語音助手,讓我們通過簡單的語音指令就能查詢信息、發送消息,到智能家居系…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | ThemeClock(主題時鐘)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— ThemeClock組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API 和 <script setup> 語法結…

直播預告丨聊聊Milvus 2.6新功能及背后的開發故事

7 月 1 日晚上 20:00-21:00&#xff0c;Zilliz 視頻號直播間&#xff0c;Zilliz 合伙人和研發VP 欒小凡將帶來《一步到位&#xff0c;詳解 Milvus 2.6 新功能》的分享&#xff0c;帶你拆解 Milvus 2.6 四大突破&#xff1a; 降本增效的底層架構開發者生產力拉滿的新功能性能不打…

pyenv-win 配置指南?

在 Python 開發過程中&#xff0c;經常會遇到需要使用不同版本 Python 的情況。比如&#xff0c;舊項目依賴某個特定的 Python 版本&#xff0c;而新項目則要求使用更新的版本。這時&#xff0c;版本管理工具就顯得尤為重要。pyenv-win就是一款專門為 Windows 系統設計的 Pytho…