概要
LemonData は OpenAI SDK と完全に互換性があります。ベース URL を変更するだけで、300 以上のモデルにアクセスできます。インストール
コピー
pip install openai
設定
コピー
curl https://api.lemondata.cc/v1/chat/completions \
-H "Authorization: Bearer sk-your-lemondata-key" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello!"}]}'
チャットコンプリーション
OpenAI API とまったく同じように動作します:コピー
response = client.chat.completions.create(
model="gpt-4o", # または任意の LemonData モデル
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
ストリーミング
コピー
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Tell me a story"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
関数呼び出し / ツール
コピー
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}]
)
# モデルが関数を呼び出したいか確認
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
print(f"Function: {tool_call.function.name}")
print(f"Arguments: {tool_call.function.arguments}")
Vision
コピー
response = client.chat.completions.create(
model="gpt-4o", # または claude-sonnet-4-5
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}]
)
画像生成
コピー
response = client.images.generate(
model="dall-e-3",
prompt="A white siamese cat",
size="1024x1024",
quality="standard",
n=1
)
print(response.data[0].url)
エンベディング
コピー
response = client.embeddings.create(
model="text-embedding-3-small",
input="Hello world"
)
print(response.data[0].embedding[:5]) # 最初の 5 次元
オーディオ - テキスト読み上げ
コピー
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Hello, welcome to LemonData!"
)
response.stream_to_file("output.mp3")
オーディオ - 文字起こし
コピー
with open("audio.mp3", "rb") as audio_file:
response = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
print(response.text)
異なるモデルの使用
LemonData の主な利点は、複数のプロバイダーにアクセスできることです:コピー
# OpenAI
response = client.chat.completions.create(model="gpt-4o", messages=messages)
# Anthropic Claude
response = client.chat.completions.create(model="claude-sonnet-4-5", messages=messages)
# Google Gemini
response = client.chat.completions.create(model="gemini-2.5-flash", messages=messages)
# DeepSeek
response = client.chat.completions.create(model="deepseek-r1", messages=messages)
エラーハンドリング
コピー
from openai import APIError, RateLimitError, AuthenticationError
try:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}]
)
except AuthenticationError:
print("Invalid API key")
except RateLimitError:
print("Rate limit exceeded, please wait")
except APIError as e:
print(f"API error: {e.status_code} - {e.message}")