新聞媒體可以如何使用ChatGPT?《天下》兩千大資料庫的嘗試
我們最近瘋了。
2023 年 5 月 17 日,《天下》公布最新的兩千大企業調查排名,這是台灣歷史最悠久的企業財務大調查,也因此養出《天下》的旗艦資料庫。
同一時間,我們《天下》數位敘事小組也運用 OpenAI 的大型語言模型(LLM)GPT-3.5-turbo,把公司這份重量級祖產加上「ChatGPT查詢」新功能:https://www.cw.com.tw/graphics/cw2000database/chatgpt/
聽起來,我們要跟著最熱的 ChatGPT 起飛了,但背後是同事連著兩週瘋狂加班,我一度拿著組內所有人的工作吊牌去行天宮拜拜。
原先許願組內同事寫 medium 公開分享製作祕辛,但看每個人熬夜熬到不行,當網站一正式上線,立刻召集製作小組,透過組頭(aka 我)採訪組員的方式,記錄下最鮮鮮的怨念,也讓大家一窺,新聞媒體如何學習新技術:
天下數位敘事組人物介紹:
Silva:假裝外人的發問者
Sylvia:PM
野口:UI/UX 設計師
Steven:組內上一代「忙內」,視覺工程師
Q. 這項專案怎麼開始的?
Steven:去年 12 月,我跟 Silva 跑去參加 AI 詠唱者忘年會,聽完都覺得很驚艷,回來後,就立刻把聽到的 ChatGPT script,運用到疫情專輯(*目前已停止更新)的數據清理上。但好像還可以再多玩點什麼。
我記得很清楚,我們一月跑到貓空喝茶開年度會議,各自許願時,忘記誰提的,今年的兩千大資料庫好像可以來深度使用 ChatGPT 一下,大家馬上回:「欸,好啊好啊好啊好啊!」
所。有。人。都是罪魁禍首。
Sylvia: 有一次我找負責兩千大調查的調查中心同事做需求訪談,資料庫有沒有什麼東西想在今年更新?同事許願,資料庫能不能做出跨公司跟跨產業交叉分析?受限於我們目前資料庫的結構,沒辦法,但或許,ChatGPT 可以彌補這個缺憾
Steven:有這一段喔?那這鍋就是妳的!!
Q. 從大家一頭熱,到正式進入製作流程,中間發生了哪些事?
Steven:一開始只是零零散散地做,手上都還有其他專案,但一邊摸 OpenAI 的 API,也做出了另一個產品。
我還記得當時編輯部有記者提到,原先在使用的逐字稿工具 GoodTape 要開始收錢了,我當時想,OpenAI 剛開放 Whisper API,做這個逐字稿工具好像沒有特別困難,沒想到就把小工具 CW-Tape(*天下編輯部使用的逐字稿工具)做出來了。
當時其實停留在技術研究,但也算是對往後的 ChatGPT 服務做一點準備。要建立一個網站服務,沒辦法像我們做數位專輯,只搭一個靜態網站就好,非得要碰後端。某種程度上,CW-Tape 也是在為「ChatGPT查詢兩千大資料庫」做技術準備。
野口:那段時間,我就看大家煩惱(微笑)。
之前我有在組內丟出來 Chatbot 機制的 UI/UX 設計,這次都剛好有用到。比方說,對話出現了錯誤狀態,或是 ChatGPT 在輸出的時候,要怎麼模擬「他」在想的節奏,都是。
一開始 PM 只畫了一個(很爛的)wireframe(見下圖),說先做再想辦法,但後來發現不行。
光是「輸入框」,雖然看起來小小的一塊,但狀態很多種,例如使用者邊打字,要怎麼展示出結果?還有在什麼狀態下,要出現什麼樣的建議、要用什麼樣的 UI 形式呈現?當時都是一邊做、一邊討論。
Q. 研究前期花了一段時間,中間其實還碰上了大魔王「成本」。能不能談一下這個最大挑戰?
Steven:一個 ChatGPT 的 prompt 模版,有 3 個重要組成:規則、你要他學習的事情(背景知識)、再來是你的問題。
ChatGPT 的 API 服務的計價單位是以「token」來計算,1000 個 tokens 的成本約 0.061 台幣,聽起來很便宜,但一個中文字大概是 3~4 個 tokens,如果我們加了一堆規則(我們也的確加了一堆規則)、情境,很容易一則單純的問答就包含了數千個 tokens,要知道,我們有成千上萬則可能的問答需要處理!。
Sylvia:我對兩千大資料庫的每月不重複訪客(UU)大概有個底,但後來想到使用高峰會遠遠超過這個人數,仔細一算,我還記得當時坐在床上,反覆看自己有沒有算錯,隔天開編輯會議都無心開會。
Q. 我們的 prompt 規則為什麼會從一開始的 3條、擴大到 18 條?
Steven:我們最終版的規則,有超過一半是要 ChatGPT 不要回答得太負面。我們是新聞媒體,不能誇大不是事實的東西。
這跟設定的溫度很有關係。ChatGPT 的溫度預設值是 0.7,生成出的內容創意成份很高,但會讓我們產出的文字有風險,後來把溫度值調降到 0.3。
Sylvia:我們有試過,請他不要用負面的描述,但 ChatGPT 不太能理解,必須要舉例讓他學習。所以我當時做一件事,直接去問ChatGPT,就像那天 2023 Generative AI 年會上講者分享的,請他扮演一個角色:如果你是一個財經專家,你會用哪一些負面的詞彙來形容財務狀況不好?應該怎麼避開使用這些詞彙?
Steven:這也是有論文研究(Large Language Models Are Human-Level Prompt Engineers),當你不知道怎麼下 prompt 的時候,其實去問 ChatGPT,他會給你一個下 prompt 的好方式。但也不能無腦問他,需要給他一個明確目的。
Q. 「成本」如何推翻專案的原始想像?
Steven:前期研究階段,我看 Twitter 上有一個「讓 LLM 記住龐大資料」的主流作法(見下圖),我覺得如果用這套作法做出來會很有意思,但後來嘗試之後完全沒辦法套用,簡單拿自己的小資料玩玩還可以,而實務上有太多限制、太多坑, 如果想知道具體有哪些坑,可以去聽一下 Generative AI 年會上玉山銀行分享的內容,基本上他們點出來的問題我們都有遇到。
Sylvia:原來的方案,我只要用力處理兩件事:一個是在使用者問出資料庫無法回答的問題時該怎麼回覆的 prompt?另一個則是如何引導使用者問出對的、有效的問題。
在成本限制下,我們認清,第一,這個服務的自由度不能太高,不能讓使用者把他當成真的 ChatGPT 在用。
其次,原來的專案目標是,不要讓 ChatGPT 產生有疑慮的答案,或是讓使用者在上面亂玩;但後來的目標變成,使用者能順利地使用這個服務,也不會覺得提供的服務過少。
所有的流程跟架構都因此大變,從原來的自由發問,到後來限定使用者在一定的問題類型裡面玩。
Q. 為什麼選擇最後這個版本?
Steven:因為好像有人說(看著採訪者=我),要有自由輸入、還要有使用 ChatGPT 的感覺。我們有把這個原則,大大的寫在會議室的白板上。
關鍵點就是這個。
Sylvia:我在試 ChatGPT 的時候,也發現很難問到有效問題,所以在設計流程時就想說,不如規範使用者問的方式,類似提供建議、模板,去避免大家一直問不到對的問題、得不到自己想要的答案。
野口:UI 也因此跟著大調整。整個形式像「搜尋」,但我們要做「對話」設計。不管是狀態、流程設計、還有樣式區隔,都必須改變,必須讓使用者知道,他玩到這裡後,要如何繼續往下走。
例如他在對話過程中,到底是要使用「選項」走下去,還是要透過輸入框上面的建議,往下走?
Steven:野口提到的這邊,也有一個核心技術調整,原來是自由搜尋,後來改成關鍵字加上建議選項,讓使用者繼續往下玩。
Q. 新方案出來後,距離上線死線還有多久?
Steven:只剩兩週。(微笑)
Q. 剩兩週忙什麼?
Sylvia:「訓練小孩」。
參加 2023 Generative AI 年會那天,我聽完玉山銀行的分享,終於理解我要做的事情分成兩段:先把資料庫的數據串成一段文字,接著才是下 prompt 讓 ChatGPT 去生成內容。
以前,我以為只需要將結構化資料(像 .csv)餵給 ChatGPT,然後問他問題,他就會很聰明地回答我正確答案;而我要寫出的 prompt,大概只要像之前處理 2022 年九合一大選專輯時的機器人開票文字,寫好一些條件判斷(見下圖),讓 ChatGPT 自動去填。
後來才發現,完全不是那麼回事。
比方說,我們餵他兩千大調查中製造業總表,裡面有 1,350 家公司的營收、稅後純益等各種指標,但如果你問他,今年《天下》兩千大製造業整體表現如何?他可能回答不出來,甚至給出一些錯誤答案。
ChatGPT 是大型語言模型,他對加減運算不太行。ChatGPT 擅長的,是比 A 公司跟 B 公司誰的營收大,但如果請他計算 A 公司今年營收比去年成長多少、算 margin,他完全不行。
所以,後來必須先寫一段程式,先把兩千大的調查數據、不同的排行榜資料,寫成不同主題的文字內容。這些文字都包含我們希望 ChatGPT 在回答特定問題時,應該要引以為據的數據。
Steven:以為餵完資料後,可以五花八門地問他各種問題,但是,各種問法,原來都要有相對應的內容先存在。
Q. 幫我照樣造句「以為 ChatGPT 可以 xxx,但 xxx」?
Sylvia:以為 ChatGPT 可以餵 .csv,但餵純文字表現更好; 以為 ChatGPT 可以運算,但需要幫他算好 ;以為一個 prompt 可以走天下,但完全不行。
Steven:以為 ChatGPT 很聰明,可以把我們告訴他的融會貫通,但其實沒有。
野口:以為我們 ChatGPT 查詢服務,要提供對話式的 UI,但最後功能上有點像資料搜尋。
Q. 但大家最後加班好像不是卡在 prompt 調整?
Steven:我們寫了好幾組 prompt 來生成兩千大調查的分析文本。最後花很多時間,在搬移不同的 prompt 模板(template),模板管理很重要!
前面有提到 ChatGPT 模板有 3 個基本元素:規則、背景知識、還有問題。每一個元素都有不同變數,因應問題的不同,會需要產生多種不同的 prompt 模板。這次時間很趕,花了很多時間在搬移模板。
Q. 如果下一次數位專輯還要運用 ChatGPT,還想再來一次嗎?或說,你們還會想持續探索 AI 嗎?
Steven:我會,可是有條件:等 GPT-4 變得更快、更便宜。
這兩天,我有把一些問題同時去問 GPT-4 和 GPT-turbo-3.5,GPT-4 出來的答案明顯好非常、非常多。
野口:會。做這樣的對話設計,很像在設計一個新的 app,有很多 UI 發揮的空間。至於AI,有很多產圖的機會,也想嘗試。
Sylvia:會。我突然覺得 prompt engineer 這個職位很重要,這次在摸索 prompt 的過程中,很燒腦,但很有趣。
雖然那天我在我們群組內丟出一句狠話:「先說好,年底的 xx 報導時不要叫我這樣搞。我怕我直接切斷自家 server 電源。」但我後來突然覺得,企業排名資料的限制比較多,搞不好其他報導專題更適合。
(大家都六宮有星,結案)
對我們以上的嘗試、或對兩千大資料庫,有任何建議,都歡迎來信討論:cwgraphics at cw.com.tw
天下數位敘事組長期尋找適合的人選加入,有興趣的朋友,也歡迎聯絡:silvashih at cw.com.tw