跳转到内容
返回主站

Python

Python 是接入 零派智能API 最常用的语言之一。通过官方 openai SDK,你可以用极少的代码完成 API 调用。

安装 SDK

使用 pip 安装 OpenAI Python SDK:

Terminal window
pip install openai

建议使用 Python 3.8 或更高版本。如果使用虚拟环境,请先激活后再安装。

配置 Client

通过环境变量配置 API Key 和 Base URL,避免在代码中硬编码敏感信息:

Terminal window
export API_KEY="sk-your-api-key"
export BASE_URL="https://your-domain.com/v1"
export MODEL="gpt-4o"

在代码中读取环境变量并初始化客户端:

import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("API_KEY"),
base_url=os.environ.get("BASE_URL"),
)

Chat Completions 示例

以下是一个完整的同步请求示例:

import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("API_KEY"),
base_url=os.environ.get("BASE_URL"),
)
response = client.chat.completions.create(
model=os.environ.get("MODEL"),
messages=[
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "用一句话解释什么是 API。"},
],
)
print(response.choices[0].message.content)

流式响应示例

将 stream 参数设为 True 即可逐字接收响应:

import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("API_KEY"),
base_url=os.environ.get("BASE_URL"),
)
stream = client.chat.completions.create(
model=os.environ.get("MODEL"),
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)

异步示例

如果你使用 asyncio,可以使用 AsyncOpenAI 客户端进行异步调用:

import asyncio
import os
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key=os.environ.get("API_KEY"),
base_url=os.environ.get("BASE_URL"),
)
async def main():
stream = await client.chat.completions.create(
model=os.environ.get("MODEL"),
messages=[
{"role": "user", "content": "用三句话介绍 Python。"},
],
stream=True,
)
async for chunk in stream:
content = chunk.choices[0].delta.content
if content is not None:
print(content, end="", flush=True)
asyncio.run(main())

查看可用模型

import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("API_KEY"),
base_url=os.environ.get("BASE_URL"),
)
models = client.models.list()
for model in models.data:
print(model.id)