如何使用 Claude API

用 Python 調用 Claude 的 API

Chris Lee
6 min readMar 5, 2024

在 2024年3月最夯的新聞應該就是 Anthropic 新語言模型釋出,也就是 Claude 3。

大多數人可能只認得 OpenAI 的 GhatGPT 或是 Google Gemini,但這邊要隆重介紹第三家足以匹敵的 LLM,就是 Claude!根據官方文檔說明,Claude 比 GPT-4、Gemini Ultro 都有更好的模型表現。

很多人可能會想說「哇怎麼這麼屌」,其實這家公司的老闆是前 OpenAI 的研究員,而且跟其他 LLM 新創公司一樣,他也有個富爸爸,就是 AWS,也因此未來有可能是微軟的 OpenAI、Google 的 Gemini、AWS 的 Anthropic 三足鼎立模式,大家可以期待看看。

你說忘記 Meta 的 Llama 2 嗎,沒關係人家的戰場在開源模型,所以之後有機會在寫一篇開源版的 LLM 爭霸戰。

我們先來看一下 Claude 這個模型怎麼使用。

如同 ChatGPT 跟 Gemini 一樣,都有 Web 聊天版本可以用,Claude 也提供了類似的用法,且對於中文的支援度非常好。

但身為工程師就是要用 API 的方式來呼叫,除了可以客製化應用外,也能確保出入的訊息安全性。

1. 申請金鑰

如果想使用 API,要先至 Anthropic 的網頁申請 API Access,原則上每個帳號會有 5 美金的免費額度,台灣也終於開放試用囉。

以目前最新版的 Claude3 來看,基本上都是要錢的,且價格高於 GPT-4,但能處理的資訊量及正確率現階段來說,確實比 GPT 穩定一點,尤其是主打 pdf 文檔的處理。

2. 安裝套件並載入金鑰

我們使用 Colab 作為示範,起手勢依然是先安裝套件:

pip install anthropic

把金鑰貼上去就能呼叫 API 了,老實說目前官方文檔寫的有點陽春,可能因為模型太新了,未來可以期待官方改善:

import anthropic

api_key = '金鑰貼這邊'

client = anthropic.Anthropic( api_key = api_key)

message = client.messages.create(
model="claude-3-opus-20240229", # 模型型號
max_tokens=1000, # 選用,回傳token的最大長度,避免爆預算
messages=[
{"role": "user", "content": "這邊輸入要講的話"}
]
)

print(message.content)

3. 選擇 Model 及開始對話

目前可選擇的模型不多,但主要都會以 Claude3 為主:

我們使用 Opus 版,可以看到回答如下:

它回傳的是 List 格式,對比 GPT 跟 Gemini 可能還要再加工一下才能用。

4. pdf 解析

Claude 主打的就是 pdf 檢索,但目前並沒有提供 API 的方法來解析 pdf,只能透過官方的聊天器使用,且建議每個 pdf 不要超過 10mb。

但身為工程師,我們還是想辦法來處理這個問題,至少能比較多個 LLM 的pdf 檢索功能。

from pypdf import PdfReader

reader = PdfReader("/content/TSMC 4Q23 Transcript.pdf")
number_of_pages = len(reader.pages)
text = ''.join([page.extract_text() for page in reader.pages])

以台積電 2023Q4 法說會逐字稿為例,使用 pypdf 套件來解析約 20 頁的全英文文檔,經過多方測試,文本太長會跳 error,最後還是控制字數才跑過。

def get_completion(client, prompt):
return client.messages.create(
model='claude-3-opus-20240229',
max_tokens=2048,
messages=[{
"role": 'user', "content": prompt
}]
).content[0].text

client = anthropic.Anthropic(api_key=api_key)
completion = get_completion(client,
f"""這是一份半導體公司的法說會逐字稿: <paper>{text[:5000]}</paper>
請根據內容回答我問題:
1. 摘要法說會內容
2. 評估營運狀況並給我投資建議
請將內容濃縮在500字以內
"""
)
print(completion)

看起來反應的速度不錯,雖然逐字稿是英文版,但都有回答到問題。

我們試試看用聊天器的效果如何:

實驗證明效果出奇的好,希望官方趕快完備 API 功能,讓這個主打的應用可以盡快上線。

所謂沒有比較沒有傷害,給大家看一下 ChatGPT-4 的回答,很明顯它不會針對我的中文發問給予中文回答,且字數也明顯超過,所以 Claude 看起來有潛力呢!

目前各家收費的 LLM 百家爭鳴,雖然官方文檔都有比較圖,但主要還是要以使用體驗為主。

短時間內選出最佳模型有點困難,Gemini 免費額度香、GTPs 功能多元,Claude 如果能穩定 API 的調用並完備文檔,應該能與各家一戰,AWS 再多給一點銀彈吧~

--

--

Chris Lee

隱身在金融業的資料科學家,部分文章會在個人部落格唷 https://chrisnote.com/