利用 IBM Watsonx.ai 與 Python SDK :應用 LLM 在客戶滿意度分析

閱讀時間約 13 分鐘

前言

在上一篇文章中,分享了第一次使用 IBM Watsonx 的經歷,以及我對 Prompt lab 功能的初步探索。繼續這個話題,本文將探討 Watsonx 平台對 Python SDK 的支持,以及實作幾個 LLM 的應用,這一特性為開發者提供了極大的便利,使得在此平台上進行開發和應用大型語言模型(LLM)變得非常簡便。更值得一提的是,這個平台甚至支持 hugging face 上的模型,為開發者提供了更廣闊的創新空間和可能性,也對於介接 LLM 模型更加便利。

raw-image

IBM Watsonx.ai的基礎模型概覽

在IBM Watsonx.ai平台上,搭載一系列來自IBM和其他開源提供商(hugging face)的基礎模型。這些包括多種功能強大的模型,如flan-t5-xl-3b、flan-t5-xxl-11b、flan-ul2-20b、gpt-neox-20b、granite-13b-chat-v2等。這些模型涵蓋了從聊天生成到程式碼生成等多種用途,可在Prompt Lab中或透過Python庫進行編程調用。

IBM提供的基礎模型,如granite-13b系列,專注於對話應用和指令型任務,並且經過精細調整,以適應企業相關的數據集。這些模型的 Maximum Token Limit 達到8192,並被分類為不同的計費類別。

此外,通過Hugging Face提供的第三方模型,如由Google提供的flan-t5系列和Meta的llama-2-13b-chat等,涵蓋了從自然語言處理到長文本推理的各種任務。這些模型支持多種自然語言,並且在訓練過程中結合了鏈式思維數據和其他多步驟推理任務。

每個模型的詳細資料,包括使用案例、code 架構、支持的語言,以及訓練數據集的詳情,都已在各自的模型卡上公開。

詳細內容可以參閱:watsonx.ai 支援的基礎模型 - IBM 文件


使用 IBM Watsonx 基礎模型從文字分析租車用戶滿意度

利用 IBM Watsonx 平台和 ibm/granite-13b-instruct-v1 等基礎模型來分析租車使用者的滿意度,我們使用的主要數據來源是名為 car_rental_training_data.csv 的租車數據集,在這個數據集中,分析「顧客服務」的評論以及相應的「滿意度評分」。實作為通過設計合適的提示(prompt)來引導模型,當輸入用戶的評論後,模型會根據內容給出「是」或「否」的滿意度評價


數據集的導入

import wget
import pandas as pd

filename = 'car_rental_training_data.csv'
url = 'https://raw.githubusercontent.com/IBM/watson-machine-learning-samples/master/cloud/data/cars-4-you/car_rental_training_data.csv'

if not os.path.isfile(filename):
wget.download(url, out=filename)

df = pd.read_csv("car_rental_training_data.csv", sep=';')
data = df[['Customer_Service', 'Satisfaction']]
raw-image

選擇基礎模型

model_id = ModelTypes.GRANITE_13B_INSTRUCT

我們選用 GRANITE_13B_INSTRUCT

定義模型參數

from ibm_watson_machine_learning.metanames import GenTextParamsMetaNames as GenParams
from ibm_watson_machine_learning.foundation_models.utils.enums import DecodingMethods

parameters = {
GenParams.MIN_NEW_TOKENS: 0,
GenParams.MAX_NEW_TOKENS: 1,
GenParams.DECODING_METHOD: DecodingMethods.GREEDY,
GenParams.REPETITION_PENALTY: 1
}
  • GenParams.MIN_NEW_TOKENS: 0
    • 這個參數設定了模型在生成回應時最少新增的 token 數量。在這個案例中,它被設定為0,意味著沒有強制模型最少生成一定數量的新 token。
  • GenParams.MAX_NEW_TOKENS: 1
    • 這個參數設定了模型在生成回應時最多新增的 token數量。
  • GenParams.DECODING_METHOD: DecodingMethods.GREEDY
    • 這個參數指定了模型在生成文本時使用的解碼方法。DecodingMethods.GREEDY 是一種貪婪解碼方法,它在每一步都選擇最有可能的下一個 token。這種方法傾向於快速決策,但可能不總是生成最自然或最有創造性的文本。
    • 補充說明 Greedy Decoding : 在每一步生成文本時,Greedy 總是選擇具有最高概率的下一個 token(例如單詞或字符)。換句話說,它每次都選擇當前最可能的選項,而不考慮長期的最佳結果。特點:這種方法相對簡單快速,但可能不總是導致最佳或最自然的文本輸出,因為它不考慮整體句子或段落的上下文連貫性
    • 其他的 Decoding:
      • Beam Search :
        • 定義:這種方法在每一步考慮多個最可能的選項( Beam 的大小是一個參數),而不是只考慮單一最可能的選項。這允許模型在生成文本時考慮多種可能的路徑。特點:束搜索能夠產生更自然和連貫的文本,但比貪婪解碼更耗時和計算量更大。
      • 隨機抽樣(Random Sampling)
        • 定義:這種方法從可能的下一個令牌的概率分布中隨機選擇,而不是總是選擇最可能的一個。特點:隨機抽樣能夠產生更多樣化和創新的文本,但有時可能會產生不那麼連貫或不相關的結果。
      • Top-K Sampling
        • 定義:這種方法首先選擇一個「K」值,然後只從最可能的K個令牌中隨機選擇下一個令牌。特點:這種方法結合了隨機抽樣和貪婪解碼的特點,提供了一種平衡的選擇方式。
      • Top-p (或稱為核心抽樣,Nucleus Sampling)
        • 定義:在這種方法中,系統選擇一個概率閾值「p」,然後隨機選擇來自累計概率最高(並且總和小於或等於p)的一組令牌。特點:Top-p 抽樣能夠生成更多樣化且高質量的文本,減少無關或重複的內容。
  • GenParams.REPETITION_PENALTY: 1
    • 這個參數用於減少文本生成中的重複內容。當設定為1時,表示不對重複內容施加任何額外的處罰。如果這個值被設定得更高(例如1.2或2),模型在生成重複內容時會受到更多的限制,從而減少重複語句的出現。

初始化模型

from ibm_watson_machine_learning.foundation_models import Model

model = Model(
model_id=model_id,
params=parameters,
credentials=credentials,
project_id=project_id)

查看模型資訊

model.get_details()
raw-image

準備 prompt

定義好輸入顧客經驗,回傳顧客是否滿意

instruction = """Determine if the customer was satisfied with the experience based on the comment. Return simple yes or no.
Comment:The car was broken. They couldn't find a replacement. I've waster over 2 hours.
Satisfied:no""

LLM 滿意度分析 Inference

prompt1 = "\n".join([instruction, "Comment:" + comments[2], "Satisfied:"])
print(prompt1)

Determine if the customer was satisfied with the experience based on the comment. Return simple yes or no.
Comment:The car was broken. They couldn't find a replacement. I've waster over 2 hours.
Satisfied:no
Comment:long lines waiting for the rental pick.
Satisfied:

輸出分析結果:

print(model.generate_text(prompt=prompt1))

no

中文的應用案例

model_id = ModelTypes.LLAMA_2_70B_CHAT
model = Model(
model_id=model_id,
params=parameters,
credentials=credentials,
project_id=project_id)

模型可以換成中文的 LLAMA_2


instruction = """基於給予的評論判斷使用者對這次體驗是否滿意。僅回答是或否。
輸入: 這輛車壞了。他們不能找到替代方案。我浪費了兩個小時。
輸出:
輸入: 客戶服務非常有幫助。他們知道我正在探望我 91 歲的母親,並免費升級了一輛對她來說更舒適的汽車。
輸出:"""


執行輸出結果

prompt1 = "\n".join([instruction, "輸入: " + comments[2], "輸出: "])
print(prompt1)

基于给出的评论判断用户对这次体验是否满意。仅回答是或否。
输入: 这辆车坏了。他们不能找到替代方案。我浪费了两个小时。
输出: 否
输入: 客户服务非常有帮助。他们知道我正在探望我 91 岁的母亲,并免费升级了一辆对她来说更舒适的汽车。
输出: 是
输入: 我主要担心的是互联网上的报价不是我开具发票的价格。我不得不打电话给提供商并解决问题,但这需要时间而且很麻烦。
输出:

print(model.generate_text(prompt=prompt1))

小心得 : 開拓新視野與實踐應用

這次實作 IBM Watsonx.ai 平台支援 Python SDK,以及可以很方便的去呼叫和應用各種 LLM model,並使用租車服務的顧客滿意度作為應用場景,展示 LLM 在現今充斥著 AI 的時代,有沒有什麼快速、隨插即用的可能,我想 LLM 很適合扮演這樣的角色,尤其是面對多元的語言,展現模型對於語言的理解能力與強大。

同時,面對的挑戰為如何快速理解已預訓練的模型的優點,並在對的場景選擇適合的編碼方式、選擇適合的模型,變得更為重要。無論是貪婪解碼、beam search 還是其他解碼技術,每種方法都有其獨特的適用場景和優勢。正如我們所見,適當的設置和參數調整能顯著影響模型的性能和輸出質量。

總結來說,IBM Watsonx.ai 和其豐富的模型庫為開發者提供了一個強大的工具集與平台,不僅可以促進創新和探索,還可以應對實際的業務挑戰。下一篇還有更多實作的應用場景,感謝閱讀到這裡的你,我們下次見!

參考資料

24會員
28內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
Thumbnail
2024-06-21
95
利用GPT優化和修飾論文的九大步驟與延伸應用使用GPT協助論文修飾的九大步驟,一招一式讓你的文章更上一層樓。 第一步:首先,我們得先把論文磨刀霍霍,將多餘的贅詞鋪陳削去。你只需要輸入"刪除冗餘內容",此功能會如同你的個人編輯師,專心挑出論文中不必要的部分,使你的文章瞬間緊湊起來。想像一下,論文中如果摻雜了些許與主題無關的雜訊,經過這一番操作後
Thumbnail
利用資訊差創造資訊價值,我在澳洲建立人生第一份被動收入在墨爾本初期,自己耗費不少時間找工,自己發現一條可能的商機,結合以下三點,: 1.地圖資訊過時; 2.利用資訊不對稱創造資訊價值; 3.背包客棧的收取費用功能。 將自己找工的這段資料整理成一份最新版的地圖資訊,賣個緣分價,讓擁有資訊的人少走許多前人的冤枉路。 於是有了最新版的墨爾本工廠地圖資訊。
Thumbnail
2021-06-01
5
利用全羅道的受害者意識來奪取政權的文在寅「韓國兵役的殘酷故事(4)從不講理的全羅南道集團看到的社會縮寫」 只要是韓國男性,就一定擁有在軍隊中服役的經驗。筆者自己也在1990年代後期,21歲時服過兵役。本文是回顧為期2年2個月嚴酷軍旅生活的第四篇文章,這次要來談談二等兵時代不講理的待遇以及出身全羅南道者的蠻橫粗暴。
Thumbnail
2021-04-17
5
利用修正式價值投資找出台股翻倍股《我用3圖表,抓出5年賺100%上漲股》【本書抽書活動進行中,歡迎各位一同到粉絲專頁參與同樂!】 或許在這陣子大多頭時期(大盤13,000點),提倡價值投資會被認為賺太慢,但是想要在投資這條路上走的長久,價值投資絕對是需要去理解的投資方法! 作者透過數年的時間,研究出自己的一套「修正式價值投資」哲學,並建構篩選出100%上漲股。
Thumbnail
2020-12-01
3
利用折扣同時完成炒熱粉專、快速吸收潛在客戶、賣商品的方法幾乎沒有人會覺得免費的東西有價值,就像折扣一樣,從你下折扣的那一刻起,客戶立即會把你的商品價值也下了折扣,所以,千萬別白送折扣,就算是會員也一樣,你必須讓客戶覺得,這個折扣得來不易---行銷練功房
Thumbnail
2020-10-02
3
利用制約反應像專家一樣學會規則,像藝術家一樣打破它。──畢卡索      人的行為都是三思而行嗎?     不,連一思都沒有,大部分都是制約反應。那我們該怎麼辦?     將計就計利用它。     事情發生在拉斯維加斯。萊爾走進一間大賭場,來到輪盤邊。他兩眼盯著輪盤轉,小白球喀啦喀啦跳,每次中獎號碼開出來,就看
Thumbnail
2020-09-22
6
利用英文語料庫提升英文寫作的層次英語語料庫有別於傳統線上字典,可以幫助學術作者依自己的需求建立語料資料在必要時進行搜索
Thumbnail
2019-12-24
2
利用假期陪孩子學習與成長 在寒暑假長長的假期中,我們通常捨不得把這難能可貴的時間浪費在安親班裏,而是提前規劃、排定夫妻倆的年休假,以及吆喝一些好朋友,一起來計劃孩子們的假期。 父母親在孩子的成長階段,能夠陪伴著孩子成長,一同學習的機會,若是仔細算算的話,扣掉上課及寫作業,吃飯睡覺等等時間,其實並不多。   因此,在寒暑假長長
Thumbnail
2019-07-27
1
利用現實世界挖礦機與股票交易機制,創造預測未來事務所|機器,平台,群眾#13人們不會拿錢開玩笑,再加上挖礦機所創造的沉沒成本,讓預測未來成為一件可能的事---推書的一千種方法
Thumbnail
2019-03-08
1
迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
Thumbnail
2024-06-21
95
利用GPT優化和修飾論文的九大步驟與延伸應用使用GPT協助論文修飾的九大步驟,一招一式讓你的文章更上一層樓。 第一步:首先,我們得先把論文磨刀霍霍,將多餘的贅詞鋪陳削去。你只需要輸入"刪除冗餘內容",此功能會如同你的個人編輯師,專心挑出論文中不必要的部分,使你的文章瞬間緊湊起來。想像一下,論文中如果摻雜了些許與主題無關的雜訊,經過這一番操作後
Thumbnail
利用資訊差創造資訊價值,我在澳洲建立人生第一份被動收入在墨爾本初期,自己耗費不少時間找工,自己發現一條可能的商機,結合以下三點,: 1.地圖資訊過時; 2.利用資訊不對稱創造資訊價值; 3.背包客棧的收取費用功能。 將自己找工的這段資料整理成一份最新版的地圖資訊,賣個緣分價,讓擁有資訊的人少走許多前人的冤枉路。 於是有了最新版的墨爾本工廠地圖資訊。
Thumbnail
2021-06-01
5
利用全羅道的受害者意識來奪取政權的文在寅「韓國兵役的殘酷故事(4)從不講理的全羅南道集團看到的社會縮寫」 只要是韓國男性,就一定擁有在軍隊中服役的經驗。筆者自己也在1990年代後期,21歲時服過兵役。本文是回顧為期2年2個月嚴酷軍旅生活的第四篇文章,這次要來談談二等兵時代不講理的待遇以及出身全羅南道者的蠻橫粗暴。
Thumbnail
2021-04-17
5
利用修正式價值投資找出台股翻倍股《我用3圖表,抓出5年賺100%上漲股》【本書抽書活動進行中,歡迎各位一同到粉絲專頁參與同樂!】 或許在這陣子大多頭時期(大盤13,000點),提倡價值投資會被認為賺太慢,但是想要在投資這條路上走的長久,價值投資絕對是需要去理解的投資方法! 作者透過數年的時間,研究出自己的一套「修正式價值投資」哲學,並建構篩選出100%上漲股。
Thumbnail
2020-12-01
3
利用折扣同時完成炒熱粉專、快速吸收潛在客戶、賣商品的方法幾乎沒有人會覺得免費的東西有價值,就像折扣一樣,從你下折扣的那一刻起,客戶立即會把你的商品價值也下了折扣,所以,千萬別白送折扣,就算是會員也一樣,你必須讓客戶覺得,這個折扣得來不易---行銷練功房
Thumbnail
2020-10-02
3
利用制約反應像專家一樣學會規則,像藝術家一樣打破它。──畢卡索      人的行為都是三思而行嗎?     不,連一思都沒有,大部分都是制約反應。那我們該怎麼辦?     將計就計利用它。     事情發生在拉斯維加斯。萊爾走進一間大賭場,來到輪盤邊。他兩眼盯著輪盤轉,小白球喀啦喀啦跳,每次中獎號碼開出來,就看
Thumbnail
2020-09-22
6
利用英文語料庫提升英文寫作的層次英語語料庫有別於傳統線上字典,可以幫助學術作者依自己的需求建立語料資料在必要時進行搜索
Thumbnail
2019-12-24
2
利用假期陪孩子學習與成長 在寒暑假長長的假期中,我們通常捨不得把這難能可貴的時間浪費在安親班裏,而是提前規劃、排定夫妻倆的年休假,以及吆喝一些好朋友,一起來計劃孩子們的假期。 父母親在孩子的成長階段,能夠陪伴著孩子成長,一同學習的機會,若是仔細算算的話,扣掉上課及寫作業,吃飯睡覺等等時間,其實並不多。   因此,在寒暑假長長
Thumbnail
2019-07-27
1
利用現實世界挖礦機與股票交易機制,創造預測未來事務所|機器,平台,群眾#13人們不會拿錢開玩笑,再加上挖礦機所創造的沉沒成本,讓預測未來成為一件可能的事---推書的一千種方法
Thumbnail
2019-03-08
1