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

更新於 2024/12/16閱讀時間約 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 和其豐富的模型庫為開發者提供了一個強大的工具集與平台,不僅可以促進創新和探索,還可以應對實際的業務挑戰。下一篇還有更多實作的應用場景,感謝閱讀到這裡的你,我們下次見!

參考資料

avatar-img
33會員
43內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Karen的沙龍 的其他內容
前言 在這個迅速變化的技術世界裡,AI 已成為推動創新和效率的主要動力之一,最近很幸運得參加了IBM Watsonx 的 workshop,對我來說是一個很好的機會認識企業對於快速導入AI和整合AI應用的平台。IBM Watson 作為AI領域的先驅之一,長久以來一直在智慧型系統和認知計算方面處於
在數據科學和機器學習中,特徵工程是提高模型性能的關鍵步驟之一,通過創建新特徵或轉換現有特徵,我們可以更好地捕捉數據中的信息,提高模型的預測能力。然而,當處理大數據集時,特徵工程可能變得耗時,而且若是在研發階段,特徵其實是需要快速迭代去產生並且做後續的實驗,這也是近期遇到的問題,因此想在這篇文章實作多
1. 問題定義 每一個成功的模型都始於明確的問題定義! 核心思考:你的模型想要達到什麼目的? 例如:是要偵測每一筆交易是否涉及洗錢,還是要從大量資料中找出可能的洗錢關聯戶? 2. 數據檢查 數據是模型的基石,但不是所有數據都是有用的! 核心思考:你的數據夠嗎?時間分佈如何?正負樣本
今年的國泰金控技術年會,關於 AI 有幾個主題覺得很有趣、也受到一些啟發: 1. 可解釋 AI : AI 的可解釋性一直是一個很被關注的題目,尤其是發生在模型要準備落地應用,需要驗證黑盒子是不是依照正確的邏輯、人類的邏輯去判斷問題,我自己很喜歡這個部分,算法是用一套最基本的SHAP,SHAP基於博
最近有採購幾台 server ,正在進行一些設定的作業,把這些過程都保留下來,之後要再設定就可以回來查看了~~~ 目標 在 Centos Linux 主機上移除 Podman ,並安裝 Docker 解決 首先先確認 Centos 的版本,是 Debian or Fedora cat /
最近在調整跟優化效能時,又來複習了 Multi-threading 和 Multiprocessing 的概念,在面對大數據時,能夠有效利用多核心處理器的能力,對於提升程式執行效能至關重要。 Python 提供多線程(Multi-threading) 和多進程 (Multiprocessing)
前言 在這個迅速變化的技術世界裡,AI 已成為推動創新和效率的主要動力之一,最近很幸運得參加了IBM Watsonx 的 workshop,對我來說是一個很好的機會認識企業對於快速導入AI和整合AI應用的平台。IBM Watson 作為AI領域的先驅之一,長久以來一直在智慧型系統和認知計算方面處於
在數據科學和機器學習中,特徵工程是提高模型性能的關鍵步驟之一,通過創建新特徵或轉換現有特徵,我們可以更好地捕捉數據中的信息,提高模型的預測能力。然而,當處理大數據集時,特徵工程可能變得耗時,而且若是在研發階段,特徵其實是需要快速迭代去產生並且做後續的實驗,這也是近期遇到的問題,因此想在這篇文章實作多
1. 問題定義 每一個成功的模型都始於明確的問題定義! 核心思考:你的模型想要達到什麼目的? 例如:是要偵測每一筆交易是否涉及洗錢,還是要從大量資料中找出可能的洗錢關聯戶? 2. 數據檢查 數據是模型的基石,但不是所有數據都是有用的! 核心思考:你的數據夠嗎?時間分佈如何?正負樣本
今年的國泰金控技術年會,關於 AI 有幾個主題覺得很有趣、也受到一些啟發: 1. 可解釋 AI : AI 的可解釋性一直是一個很被關注的題目,尤其是發生在模型要準備落地應用,需要驗證黑盒子是不是依照正確的邏輯、人類的邏輯去判斷問題,我自己很喜歡這個部分,算法是用一套最基本的SHAP,SHAP基於博
最近有採購幾台 server ,正在進行一些設定的作業,把這些過程都保留下來,之後要再設定就可以回來查看了~~~ 目標 在 Centos Linux 主機上移除 Podman ,並安裝 Docker 解決 首先先確認 Centos 的版本,是 Debian or Fedora cat /
最近在調整跟優化效能時,又來複習了 Multi-threading 和 Multiprocessing 的概念,在面對大數據時,能夠有效利用多核心處理器的能力,對於提升程式執行效能至關重要。 Python 提供多線程(Multi-threading) 和多進程 (Multiprocessing)
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
最近在上LLM線上課 來分享我所學到的 LangChain LangChian是把ChatGPT API 轉換為物件導向的形式來使用我所學到 LangChain 的五個方法 : Prompt Template / LLMChain / OutputParser / Agent / Conversat
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
本文介紹了大型語言模型(LLM)中Prompt的原理及實踐,並提供了撰寫Prompt的基本框架邏輯PREP,以及加強Prompt撰寫的幾個方向:加強說明背景、角色描述和呈現風格,加強背景說明,角色描述,呈現風格以及目標受眾(TA)。同時推薦了幾個Prompt相關的參考網站。最後解答了一些快問快答。
這篇文章介紹了Pythonic API在AI模型的推理和部署以及個人化服務方面的性能優勢,以及與商業模式、個人化Knowledge Graph和GenAI的集成。同時探討了Pythonic編程文化、Python效能、API商業模式和人工智慧個人化的相關問題。
接著載入Part 2需要的相關依賴,其分別為: from torch import cuda, bfloat16import import transformers 然後選擇我們要的Meta模型,這邊可以是Llama 2或者是Llama 3,後者是Meta最新釋出的模型。 同時我們也讓系統自
第一步先在Python環境中安裝本次專案需要用到的Library,相關指令如下: !pip install accelerate==0.21.0 !pip install transformers==4.31.0 !pip install tokenizers==0.13.3 !pip insta
Thumbnail
這陣子使用AI模型,還有參考國內外一些喜歡玩語言模型的同好發文,一個很有趣的結論就是,有時候把大型語言模型(尤其ChatGPT)當作一個人來溝通,會得到比較好的結果,這的確是非常反直覺的,也就是說很多時候ChatGPT耍懶不肯工作的時候,你用加油打氣,或是情緒勒索的方法,確實是可以得到比較好的結果。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
ChatGPT 是 OpenAI 開發的大型語言模型,以其強大的生成能力和對話能力而聞名。 ChatGPT 的訓練過程主要分為兩個階段:預訓練和微調。 微調使用了 RLHF(Reinforcement Learning from Human Feedback)技術,可以有效地提高模型生成內容的質量。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」。 Prompt Pattern 是給予LLM的指示,並確保生成的輸出擁有特定的品質(和數量)。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
最近在上LLM線上課 來分享我所學到的 LangChain LangChian是把ChatGPT API 轉換為物件導向的形式來使用我所學到 LangChain 的五個方法 : Prompt Template / LLMChain / OutputParser / Agent / Conversat
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
本文介紹了大型語言模型(LLM)中Prompt的原理及實踐,並提供了撰寫Prompt的基本框架邏輯PREP,以及加強Prompt撰寫的幾個方向:加強說明背景、角色描述和呈現風格,加強背景說明,角色描述,呈現風格以及目標受眾(TA)。同時推薦了幾個Prompt相關的參考網站。最後解答了一些快問快答。
這篇文章介紹了Pythonic API在AI模型的推理和部署以及個人化服務方面的性能優勢,以及與商業模式、個人化Knowledge Graph和GenAI的集成。同時探討了Pythonic編程文化、Python效能、API商業模式和人工智慧個人化的相關問題。
接著載入Part 2需要的相關依賴,其分別為: from torch import cuda, bfloat16import import transformers 然後選擇我們要的Meta模型,這邊可以是Llama 2或者是Llama 3,後者是Meta最新釋出的模型。 同時我們也讓系統自
第一步先在Python環境中安裝本次專案需要用到的Library,相關指令如下: !pip install accelerate==0.21.0 !pip install transformers==4.31.0 !pip install tokenizers==0.13.3 !pip insta
Thumbnail
這陣子使用AI模型,還有參考國內外一些喜歡玩語言模型的同好發文,一個很有趣的結論就是,有時候把大型語言模型(尤其ChatGPT)當作一個人來溝通,會得到比較好的結果,這的確是非常反直覺的,也就是說很多時候ChatGPT耍懶不肯工作的時候,你用加油打氣,或是情緒勒索的方法,確實是可以得到比較好的結果。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
ChatGPT 是 OpenAI 開發的大型語言模型,以其強大的生成能力和對話能力而聞名。 ChatGPT 的訓練過程主要分為兩個階段:預訓練和微調。 微調使用了 RLHF(Reinforcement Learning from Human Feedback)技術,可以有效地提高模型生成內容的質量。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」。 Prompt Pattern 是給予LLM的指示,並確保生成的輸出擁有特定的品質(和數量)。