在當今的 AI 應用開發中,三大主流大語言模型 API——OpenAI、Google Gemini 和 Anthropic Claude 都提供了強大的功能。本教程將詳細介紹如何使用 Python 的 requests 庫直接調用這三個 API。
一、環境準備
首先,確保安裝了 requests 庫:
pip install requests
二、OpenAI API 調用
2.1 獲取 API Key
- 訪問 OpenAI Platform
- 註冊並登錄賬户
- 在 API Keys 頁面創建新的 API 密鑰
2.2 代碼示例
import requests
import json
def call_openai(prompt, api_key):
url = "https://api.openai.com/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
data = {
"model": "gpt-4",
"messages": [
{"role": "user", "content": prompt}
],
"temperature": 0.7
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['choices'][0]['message']['content']
else:
return f"錯誤: {response.status_code}, {response.text}"
# 使用示例
api_key = "your-openai-api-key"
prompt = "什麼是人工智能?"
response = call_openai(prompt, api_key)
print(response)
2.3 主要參數説明
- model: 模型名稱,如
gpt-4,gpt-3.5-turbo - messages: 消息列表,包含 role 和 content
- temperature: 控制隨機性,範圍 0-2,越高越隨機
- max_tokens: 最大生成的 token 數量
三、Google Gemini API 調用
3.1 獲取 API Key
- 訪問 Google AI Studio
- 使用 Google 賬户登錄
- 創建 API 密鑰
3.2 代碼示例
import requests
import json
def call_gemini(prompt, api_key):
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={api_key}"
headers = {
"Content-Type": "application/json"
}
data = {
"contents": [
{
"parts": [
{"text": prompt}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['candidates'][0]['content']['parts'][0]['text']
else:
return f"錯誤: {response.status_code}, {response.text}"
# 使用示例
api_key = "your-gemini-api-key"
prompt = "請介紹一下機器學習"
response = call_gemini(prompt, api_key)
print(response)
3.3 主要參數説明
- contents: 內容列表,包含 parts 數組
- generationConfig: 生成配置,包含 temperature 和 maxOutputTokens
- model: 支持
gemini-pro(文本)、gemini-pro-vision(多模態)
四、Anthropic Claude API 調用
4.1 獲取 API Key
- 訪問 Anthropic Console
- 創建賬户並登錄
- 在 API Keys 頁面生成新的 API 密鑰
4.2 代碼示例
import requests
import json
def call_claude(prompt, api_key):
url = "https://api.anthropic.com/v1/messages"
headers = {
"Content-Type": "application/json",
"x-api-key": api_key,
"anthropic-version": "2023-06-01"
}
data = {
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": prompt
}
]
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['content'][0]['text']
else:
return f"錯誤: {response.status_code}, {response.text}"
# 使用示例
api_key = "your-claude-api-key"
prompt = "請解釋深度學習的原理"
response = call_claude(prompt, api_key)
print(response)
4.3 主要參數説明
- model: 模型名稱,如
claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307 - max_tokens: 必須參數,設置最大輸出 token 數
- messages: 消息數組,必須包含 role 和 content
- anthropic-version: API 版本號,必須在 header 中指定
五、錯誤處理和最佳實踐
5.1 錯誤處理
在實際應用中,建議添加更完善的錯誤處理:
import requests
import time
def api_call_with_retry(url, headers, data, max_retries=3):
for attempt in range(max_retries):
try:
response = requests.post(url, headers=headers, json=data, timeout=30)
if response.status_code == 200:
return response.json()
elif response.status_code == 429: # Rate limit
wait_time = 2 ** attempt
print(f"達到速率限制,等待 {wait_time} 秒...")
time.sleep(wait_time)
else:
print(f"錯誤 {response.status_code}: {response.text}")
return None
except requests.exceptions.Timeout:
print(f"請求超時,第 {attempt + 1} 次重試...")
except Exception as e:
print(f"發生異常: {str(e)}")
return None
return None
5.2 最佳實踐
- 保護 API Key:不要將 API Key 直接寫在代碼中,使用環境變量或配置文件
import os
from dotenv import load_dotenv
load_dotenv()
openai_key = os.getenv('OPENAI_API_KEY')
gemini_key = os.getenv('GEMINI_API_KEY')
claude_key = os.getenv('CLAUDE_API_KEY')
- 設置超時:避免請求無限期等待
- 處理速率限制:實現重試機制和指數退避
- 監控成本:記錄每次 API 調用的 token 消耗
- 緩存結果:對相同的請求進行緩存,減少不必要的調用
六、總結
本教程介紹瞭如何使用 Python requests 庫連接三大主流 AI API:
- OpenAI:使用 Bearer Token 認證,支持 GPT-4 和 GPT-3.5
- Gemini:在 URL 中傳入 API Key,使用 contents 結構
- Claude:使用 x-api-key header,需要指定 anthropic-version
雖然各家都提供了官方 SDK,但直接使用 requests 可以讓你更深入地理解 API 的工作原理,也更靈活地控制請求和響應。希望這篇教程能幫助你快速上手這三個強大的 AI API!