Python SDK 接入指南
本指南介绍如何使用 Python 的 OpenAI SDK 接入 Star API。
安装
bash
pip install openai提示
推荐使用 openai>=1.0.0 版本。如果您使用的是旧版本,请先升级:pip install --upgrade openai
基本配置
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)建议使用环境变量管理 API Key:
python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("STAR_API_KEY"),
base_url="https://star.zhxyclaw.cn/v1"
)聊天补全
基本调用
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": "请用一句话解释什么是量子计算。"}
],
temperature=0.7,
max_tokens=200
)
print(response.choices[0].message.content)流式输出
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
stream = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "user", "content": "写一首关于月亮的七言绝句。"}
],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content is not None:
print(content, end="", flush=True)
print()多轮对话
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
# 维护对话历史
messages = [
{"role": "system", "content": "你是一个友好的AI助手,用中文回答问题。"}
]
def chat(user_message):
messages.append({"role": "user", "content": user_message})
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
temperature=0.7
)
assistant_message = response.choices[0].message.content
messages.append({"role": "assistant", "content": assistant_message})
return assistant_message
# 使用
print(chat("你好,我叫小明。"))
print(chat("你还记得我的名字吗?"))使用不同模型
python
# 使用 Claude
response = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "你好!"}]
)
# 使用 DeepSeek
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[{"role": "user", "content": "你好!"}]
)
# 使用 Gemini
response = client.chat.completions.create(
model="gemini-3.1-pro-preview",
messages=[{"role": "user", "content": "你好!"}]
)图像生成
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
response = client.images.generate(
model="dall-e-3",
prompt="一只可爱的橘猫在阳光下打盹",
n=1,
size="1024x1024",
quality="standard"
)
image_url = response.data[0].url
print(f"图片 URL:{image_url}")文本嵌入
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
response = client.embeddings.create(
model="text-embedding-3-small",
input="Star API 是一个统一的大模型接口网关"
)
embedding = response.data[0].embedding
print(f"向量维度:{len(embedding)}")语音转文字
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
with open("audio.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="zh"
)
print(transcript.text)文字转语音
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
response = client.audio.speech.create(
model="tts-1",
input="你好,欢迎使用 Star API!",
voice="alloy",
response_format="mp3"
)
response.stream_to_file("output.mp3")错误处理
python
from openai import OpenAI, APIError, RateLimitError, AuthenticationError
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
try:
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)
except AuthenticationError:
print("API Key 无效,请检查您的密钥。")
except RateLimitError:
print("请求频率过高,请稍后重试。")
except APIError as e:
print(f"API 错误:{e}")
except Exception as e:
print(f"未知错误:{e}")异步调用
python
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key="sk-your-api-key",
base_url="https://star.zhxyclaw.cn/v1"
)
async def main():
response = await client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)
asyncio.run(main())下一步
- Node.js 接入指南 — Node.js SDK 示例
- curl 示例 — 命令行调用示例
- API 文档 — 完整的 API 参考
