(2024/11 更新) Perplexity API 新推出「資料來源附註」功能!
本篇適合:
+ 對 生成式 AI 應用有興趣的朋友
+ 對「AI 事實查核」有疑問想嘗試看看的朋友
+ 有寫程式經驗,想嘗試看看不同的生成式AI模型!
本篇目標:
1. 介紹 Perplexity 基礎功能
2. 介紹 Perplexity API 使用與提供官方文件參考
生成式AI蓬勃發展的今日,ChatGPT、Claude、Gemini 等大語言模型(LLM)成為許多人日常生活中不可或缺的助手。
在這些工具開發之初,這些AI工具都有一個共同的限制——無法即時上網查詢最新資訊。
起初,ChatGPT 結合 Bing 搜尋,讓使用者可以用簡單的「提問」方式,去搜尋網路上資訊,後續也推出自己的上網找資料並回應使用者的機制。今年(2024年)七月,ChatGPT 也預告將作出「SearchGPT」,使用者同樣用「問」的問問題,OpenAI 將設計如同平常使用 Google 一樣,陳列出各種結果的搜尋引擎。
然而在這之前,一個名叫「Perplexity」的 AI 工具,老早就以「AI搜尋引擎」的方向前進,且做得相當出色。
Perplexity的特色:
目前開發者最常使用的生成式AI所提供的 API 不外乎來自兩大供應商:
但 Perplexity 其實有開放 API 提供開發者使用,而這個 API 相較於上述提供的,是「可以連網」的噢!
Perplexity 所開放的 API 其實相當容易,以 Python 為例,如同一般呼叫 API 的方式使用即可
import requests
url = "https://api.perplexity.ai/chat/completions"
payload = {
"model": "llama-3.1-sonar-small-128k-online",
"messages": [
{
"role": "system",
"content": "你是一名新聞事實查核高手!"
},
{
"role": "user",
"content": "現在日本首相是誰?"
}
],
"max_tokens": "Optional",
"temperature": 0.2,
"top_p": 0.9,
"return_citations": True,
"search_domain_filter": ["perplexity.ai"],
"return_images": False,
"return_related_questions": False,
"search_recency_filter": "month",
"top_k": 0,
"stream": False,
"presence_penalty": 0,
"frequency_penalty": 1
}
headers = {
"Authorization": "Bearer TOKEN_CODE",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
使用前須先申請 api key,之後將 key 填入上述程式碼中 TOKEN_CODE
處。
此外,今年 7 月 Perplexity 也釋出新模型「Sonar」系列,其中llama-3.1-sonar-small-128k-online
、llama-3.1-sonar-large-128k-online
皆支援連網!
價格筆者認為比起其他大語言模型稍嫌貴 (畢竟有連網XD),也有規定的 Rate Limit(使用頻率)。
既然可以取得 API ,筆者嘗試製作成一個「聊天室」放在 Google Chrome 外掛當中,(筆者使用側邊面板(side panel),細長形狀很像聊天室 XD)。
首先,要先賦予 AI 角色的 System Prompt:「你是一名來自台灣的事實查核專家,專門查核新聞的真實性。請務必使用繁體中文回覆,且以臺灣為視角的資訊書寫回答。請將你的回覆適當分段 換行排版 不要使用markdown格式。所有資訊請都務必註明你所查詢的「時間」與「出處」。
」
但我覺得就算如此,Perplexity 回覆仍然會很不穩定。所謂「不穩定」,就像是他偶爾會跑出簡體中文,又或者是持續出現「Markdown」語法,我只好在後續用程式去處理它。
此外,他的回覆也有點不穩定,可能某個時候,他回答還算正確,但過一段時間再問一次,他就會回答有些偏差。
最後,AI 還是有「幻覺」,因此若要打造「事實查核聊天室」也變得相當困難。我的解決方法是盡可能多詢問他「你確定是正確的嗎?」、「請多給我一些佐證資料。」等方式,讓它持續去修正回覆。
接下來就來看看我測試的一些 DEMO 吧:
這禮拜康芮颱風將侵襲台灣,新聞也報很多,這部分資訊還算正確!
前面我問了日本首相相關的資料,而他卻回答岸田文雄。筆者此時此刻書寫時間,首相是石破茂,這就是明顯錯誤,又或者說是時序上的錯誤。
不過接著我詢問石破茂相關新聞,卻並不會錯亂:
不過這邊的插曲是,他忽然又回答起簡體中文了...QQ
詢問「美國反對台灣獨立」是否正確,這題很有趣。
根據中央社報導,美國「不支持」台灣獨立,但並未以「反對」稱之。而這次 AI 做了字面上不錯的區分。
(2024/11/16 更新)Perplexity API 目前提供附註資料來源的功能了!
目前 Perplexity API 不能附註資料來源(但其實 Perplexity 網頁版介面是有的),我覺得相當可惜。而目前在開發文件中官方表示這個功能正在封測階段,似乎預計最快年底可能會有所更新。
除此之外,「回覆圖片」、「相關問題推薦」等,也正在封測階段,我覺得很值得期待!
以上是一些自己的測試,也歡迎大家一起來玩玩!