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

參考資料

留言
avatar-img
留言分享你的想法!
avatar-img
Karen的沙龍
34會員
51內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
Karen的沙龍的其他內容
2024/11/13
本文章探討了 RAG(Retrieval-Augmented Generation)技術在智能客服領域的應用及其優勢。RAG 通過結合檢索與生成的特性,能夠顯著提高回答的準確性與靈活性。與傳統智能客服系統及純生成式 AI 相比,RAG 能更有效地理解用戶問題,並生成自然流暢的回應,改善用戶體驗。
Thumbnail
2024/11/13
本文章探討了 RAG(Retrieval-Augmented Generation)技術在智能客服領域的應用及其優勢。RAG 通過結合檢索與生成的特性,能夠顯著提高回答的準確性與靈活性。與傳統智能客服系統及純生成式 AI 相比,RAG 能更有效地理解用戶問題,並生成自然流暢的回應,改善用戶體驗。
Thumbnail
2023/12/18
前言 前幾篇分享了 IBM Watsonx.ai 平台,以及在平台上使用 LLM 完成客戶體驗分析、與LLM串連處理較複雜的問題。在這一篇中,我們想來嘗試使用檢索增強生成(RAG)的技術,RAG 通過整合外部數據來增強基礎模型的回答能力,這不僅能解決模型訓練數據的局限性問題,還可以提供更精準和相關
Thumbnail
2023/12/18
前言 前幾篇分享了 IBM Watsonx.ai 平台,以及在平台上使用 LLM 完成客戶體驗分析、與LLM串連處理較複雜的問題。在這一篇中,我們想來嘗試使用檢索增強生成(RAG)的技術,RAG 通過整合外部數據來增強基礎模型的回答能力,這不僅能解決模型訓練數據的局限性問題,還可以提供更精準和相關
Thumbnail
2023/12/18
前言 在先前的文章中,我們探討了 IBM Watsonx 在客戶滿意度分析中的應用。今天,我們將利用 Google 的兩款大型語言模型(LLM)— flan-ul2 和 flan-t5-xxl,展示它們如何串聯起來生成關於特定主題的隨機問題和回答。 在這篇文章中,將使用 SimpleSequen
Thumbnail
2023/12/18
前言 在先前的文章中,我們探討了 IBM Watsonx 在客戶滿意度分析中的應用。今天,我們將利用 Google 的兩款大型語言模型(LLM)— flan-ul2 和 flan-t5-xxl,展示它們如何串聯起來生成關於特定主題的隨機問題和回答。 在這篇文章中,將使用 SimpleSequen
Thumbnail
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」。 Prompt Pattern 是給予LLM的指示,並確保生成的輸出擁有特定的品質(和數量)。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」。 Prompt Pattern 是給予LLM的指示,並確保生成的輸出擁有特定的品質(和數量)。
Thumbnail
前言 前幾篇分享了 IBM Watsonx.ai 平台,以及在平台上使用 LLM 完成客戶體驗分析、與LLM串連處理較複雜的問題。在這一篇中,我們想來嘗試使用檢索增強生成(RAG)的技術,RAG 通過整合外部數據來增強基礎模型的回答能力,這不僅能解決模型訓練數據的局限性問題,還可以提供更精準和相關
Thumbnail
前言 前幾篇分享了 IBM Watsonx.ai 平台,以及在平台上使用 LLM 完成客戶體驗分析、與LLM串連處理較複雜的問題。在這一篇中,我們想來嘗試使用檢索增強生成(RAG)的技術,RAG 通過整合外部數據來增強基礎模型的回答能力,這不僅能解決模型訓練數據的局限性問題,還可以提供更精準和相關
Thumbnail
前言 在先前的文章中,我們探討了 IBM Watsonx 在客戶滿意度分析中的應用。今天,我們將利用 Google 的兩款大型語言模型(LLM)— flan-ul2 和 flan-t5-xxl,展示它們如何串聯起來生成關於特定主題的隨機問題和回答。 在這篇文章中,將使用 SimpleSequen
Thumbnail
前言 在先前的文章中,我們探討了 IBM Watsonx 在客戶滿意度分析中的應用。今天,我們將利用 Google 的兩款大型語言模型(LLM)— flan-ul2 和 flan-t5-xxl,展示它們如何串聯起來生成關於特定主題的隨機問題和回答。 在這篇文章中,將使用 SimpleSequen
Thumbnail
前言 在上一篇文章中,分享了第一次使用 IBM Watsonx 的經歷,以及我對 Prompt lab 功能的初步探索。繼續這個話題,本文將探討 Watsonx 平台對 Python SDK 的支持,以及實作幾個 LLM 的應用,這一特性為開發者提供了極大的便利,使得在此平台上進行開發和應用大型語
Thumbnail
前言 在上一篇文章中,分享了第一次使用 IBM Watsonx 的經歷,以及我對 Prompt lab 功能的初步探索。繼續這個話題,本文將探討 Watsonx 平台對 Python SDK 的支持,以及實作幾個 LLM 的應用,這一特性為開發者提供了極大的便利,使得在此平台上進行開發和應用大型語
Thumbnail
嘗試一個微調金融領域的 LLM:FinGPT (一個追求開源、輕量、低成本的微調在金融領域的 LLM(大型語言模型)),來做新聞標題情感(Sentiment)極性辨識。 PS. 有附註 Hugging Face 模型下載與 cache 路徑自定義說明 因為研究題目,最近在接觸各種金融領域微調(
Thumbnail
嘗試一個微調金融領域的 LLM:FinGPT (一個追求開源、輕量、低成本的微調在金融領域的 LLM(大型語言模型)),來做新聞標題情感(Sentiment)極性辨識。 PS. 有附註 Hugging Face 模型下載與 cache 路徑自定義說明 因為研究題目,最近在接觸各種金融領域微調(
Thumbnail
前面幾個篇章已經大致上介紹了Hugging Face這個平台的一些基本概念了,既然我們都能夠在平台上找到各式各樣的模型,而且也能夠照著教學一步步的來下載並使用,但有沒有更簡單的方式呢? 比如說,我們專注在應用端上的開發,AI的推理就藉由平台進行呢? 答案肯定是有的,近期越來越多開源的平台也都開放這
Thumbnail
前面幾個篇章已經大致上介紹了Hugging Face這個平台的一些基本概念了,既然我們都能夠在平台上找到各式各樣的模型,而且也能夠照著教學一步步的來下載並使用,但有沒有更簡單的方式呢? 比如說,我們專注在應用端上的開發,AI的推理就藉由平台進行呢? 答案肯定是有的,近期越來越多開源的平台也都開放這
Thumbnail
Hi, 我是茶桁。 在前一讲中,我们观察到大型模型的确表现出良好效果。在情感分析任务中,通过使用 OpenAI API 提供的 Embedding,我们得到的结果要比能在单个机器上运行的较小模型(如T5-base)要好得多。然而,我们之前所选择的问题确实有些过于简单。我们将5个不同的评分分成了正面
Thumbnail
Hi, 我是茶桁。 在前一讲中,我们观察到大型模型的确表现出良好效果。在情感分析任务中,通过使用 OpenAI API 提供的 Embedding,我们得到的结果要比能在单个机器上运行的较小模型(如T5-base)要好得多。然而,我们之前所选择的问题确实有些过于简单。我们将5个不同的评分分成了正面
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News