OpenLLM API接口文档
强大的人工智能服务,助力您的业务创新
支持的模型
LLM模型
Gemini系列:
gemini-2.5-flash, gemini-3-flash-preview, gemini-2.5-pro, gemini-3-pro-preview
Claude系列:
claude-opus-4-5, claude-opus-4-1, claude-opus-4, claude-sonnet-4-5, claude-sonnet-4, claude-3-7-sonnet, claude-haiku-4-5, claude-3-5-haiku, claude-3-haiku
OpenAI系列:
GPT全系列,如GPT-5.2等
图片模型
Google Vertex AI:
nano-banana, nano-banana-pro, nano-banana-pro-2K, nano-banana-pro-4K
OpenAI:
dall-e-2, dall-e-3
视频模型
Google Vertex AI:
veo-3.1 (veo-3.1-generate-001)
OpenAI:
sora-2, sora-2-pro
认证方式
OpenAI标准认证 - 本API兼容OpenAI的认证标准。
其中 /v1/chat/completions 和 /v1/models 接口完全遵循OpenAI API标准,支持使用OpenAI SDK直接调用。
所有API请求都需要在请求头中包含有效的Bearer Token进行认证,格式与OpenAI API完全一致。
Authorization: Bearer YOUR_API_KEY
聊天接口
接口信息
请求方法: POST
接口地址: /v1/chat/completions
Content-Type: application/json
请求参数
| 参数名 | 类型 | 必需 | 说明 | 支持值 |
|---|---|---|---|---|
model |
string | 必填 | 使用的模型名称 | auto, gemini-3-pro-preview, gemini-3-flash-preview, gemini-2.5-pro, gemini-2.5-flash |
messages |
array | 必填 | 对话消息列表 | 消息对象数组 |
stream |
boolean | 可选 | 是否使用流式输出 | true, false (默认: false) |
temperature |
float | 可选 | 控制随机性 | 0.0 - 1.0 |
max_tokens |
integer | 可选 | 最大输出令牌数 | 正整数 |
top_p |
float | 可选 | 核采样参数 | 0.0 - 1.0 |
stop |
string/array | 可选 | 停止序列 | 字符串或字符串数组 |
frequency_penalty |
float | 可选 | 频率惩罚 | -2.0 - 2.0 |
presence_penalty |
float | 可选 | 存在惩罚 | -2.0 - 2.0 |
user |
string | 可选 | 用户标识符 | 字符串 |
cURL示例
curl -X POST "http://your-api-domain/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
],
"stream": false,
"temperature": 0.7,
"max_tokens": 1000
}'
流式输出示例
curl -X POST "http://your-api-domain/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "user",
"content": "请写一首关于春天的诗"
}
],
"stream": true
}'
OpenAI SDK兼容示例
OpenAI标准接口 - 本接口完全兼容OpenAI API标准,可以直接使用OpenAI SDK调用。
只需设置正确的base_url即可无缝切换到我们的服务。
from openai import OpenAI
# 使用您的API端点和密钥
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="http://your-api-domain/v1"
)
# 调用聊天接口
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "user", "content": "你好,请介绍一下你自己"}
]
)
print(response.choices[0].message.content)
错误处理
401 Unauthorized
API Key无效或缺失
404 Not Found
请求的模型不存在
400 Bad Request
请求参数错误或内容为空
503 Service Unavailable
服务暂时不可用,请稍后重试
Response接口 (仅OpenAI系列)
注意: 此接口仅支持 OpenAI 系列模型(如 gpt-4o, gpt-4o-mini 等),用于多模态输入处理。
接口信息
请求方法: POST
接口地址: /v1/responses
Content-Type: application/json
请求示例(Base64图片)
curl -X POST "http://your-api-domain/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-4o",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "这张图片是什么颜色的?"
},
{
"type": "input_image",
"image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="
}
]
}
]
}'
请求示例(图片URL)
curl -X POST "http://your-api-domain/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-4o",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "这张图片描述了什么内容?"
},
{
"type": "input_image",
"image_url": "https://storage.googleapis.com/img-output/bg.png"
}
]
}
]
}'
请求参数说明
| 参数名 | 类型 | 必需 | 说明 |
|---|---|---|---|
model |
string | 必填 | 使用的模型(仅OpenAI系列) |
input |
array | 必填 | 输入消息数组 |
input[].role |
string | 必填 | 消息角色 |
input[].content |
array | 必填 | 消息内容数组 |
input[].content[].type |
string | 必填 | 内容类型:input_text 或 input_image |
input[].content[].text |
string | 可选 | 文本内容(当type为input_text时) |
input[].content[].image_url |
string | 可选 | 图片URL或Base64(当type为input_image时) |
错误处理
400 Bad Request
请求参数错误或不支持的模型
401 Unauthorized
API Key无效或缺失
模型列表接口
接口信息
请求方法: GET
接口地址: /v1/models
Content-Type: application/json
接口说明
OpenAI标准接口 - 本接口完全兼容OpenAI API标准,可以直接使用OpenAI SDK调用。
返回所有可用的模型列表,包括LLM模型和模型别名。
cURL示例
curl -X GET "http://your-api-domain/v1/models" \
-H "Authorization: Bearer YOUR_API_KEY"
OpenAI SDK兼容示例
from openai import OpenAI
# 使用您的API端点和密钥
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="http://your-api-domain/v1"
)
# 获取模型列表
models = client.models.list()
# 打印所有可用模型
for model in models.data:
print(f"模型ID: {model.id}, 创建时间: {model.created}")
响应格式
{
"object": "list",
"data": [
{
"id": "gemini-2.5-pro",
"object": "model",
"created": 1640995200,
"owned_by": "openllms"
},
{
"id": "gemini-2.5-flash",
"object": "model",
"created": 1640995200,
"owned_by": "openllms"
},
{
"id": "gpt-4o",
"object": "model",
"created": 1640995200,
"owned_by": "openllms"
},
{
"id": "gpt-4",
"object": "model",
"created": 1640995200,
"owned_by": "openllms"
}
]
}
错误处理
401 Unauthorized
API Key无效或缺失
503 Service Unavailable
服务暂时不可用,请稍后重试
文生图接口
接口说明
OpenAI Images API兼容接口 - 根据文本描述生成图片的接口。
接口采用 application/json 格式,直接返回生成的图片数据。
接口信息
请求方法: POST
接口地址: /v1/images/generations
Content-Type: application/json
请求参数
| 参数名 | 类型 | 必需 | 说明 | 支持值 |
|---|---|---|---|---|
model |
string | 必填 | 使用的图像生成模型 | nano-banana-pro, nano-banana-pro-2K, nano-banana-pro-4K |
prompt |
string | 必填 | 图片描述提示词 | 非空字符串 |
size |
string | 可选 | 图片宽高比或分辨率 | 宽高比: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 分辨率: 256x256, 512x512, 1024x1024 等 |
size 参数说明
- 宽高比格式: 使用冒号分隔,如 "16:9" 表示横屏, "9:16" 表示竖屏
- 分辨率格式: 直接使用 "宽x高" 格式,如 "1024x1024"
- 常用宽高比: 1:1(正方形)、16:9(横屏)、9:16(竖屏)、21:9(超宽)
请求示例
curl -X POST "http://your-api-domain/v1/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "nano-banana-pro",
"prompt": "A cute baby sea otter",
"size": "1:1"
}'
响应格式
{
"created": 1713833628,
"data": [
{
"b64_json": "..."
}
],
"usage": {
"total_tokens": 100,
"input_tokens": 50,
"output_tokens": 50,
"input_tokens_details": {
"text_tokens": 10,
"image_tokens": 40
}
}
}
响应字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
created |
integer | 创建时间戳 |
data |
array | 生成的图片数据列表 |
data[].b64_json |
string | base64 编码的图片数据 |
usage |
object | token 使用统计 |
usage.total_tokens |
integer | 总 token 数 |
usage.input_tokens |
integer | 输入 token 数 |
usage.output_tokens |
integer | 输出 token 数 |
usage.input_tokens_details |
object | 输入 token 详细信息 |
usage.input_tokens_details.text_tokens |
integer | 文本输入 token 数 |
usage.input_tokens_details.image_tokens |
integer | 图片输入 token 数 |
Python示例
import requests
import base64
API_URL = "http://your-api-domain/v1/images/generations"
API_KEY = "YOUR_API_KEY"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"model": "nano-banana-pro",
"prompt": "A cute baby sea otter",
"size": "1:1"
}
response = requests.post(API_URL, json=data, headers=headers)
if response.status_code == 200:
result = response.json()
for item in result.get('data', []):
if 'b64_json' in item:
img_data = base64.b64decode(item['b64_json'])
with open("output.png", 'wb') as f:
f.write(img_data)
print("图片已保存: output.png")
else:
print(f"请求失败: {response.status_code}, {response.text}")
错误处理
401 Unauthorized
API Key无效或缺失
400 Bad Request
请求参数错误(缺少必需参数、参数值不合法等)
503 Service Unavailable
服务暂时不可用
图片编辑/图生图接口
接口说明
OpenAI Images API兼容接口 - 本接口兼容OpenAI Images API标准,支持图像编辑和图生图。
接口采用 multipart/form-data 格式,需要上传图片文件。
图片限制: 最多支持上传 7 张图片作为输入。
接口信息
请求方法: POST
接口地址: /v1/images/edits
Content-Type: multipart/form-data
请求参数
| 参数名 | 类型 | 必需 | 说明 | 支持值 |
|---|---|---|---|---|
model |
string | 必填 | 使用的图像生成模型 | nano-banana-pro, nano-banana-pro-2K, nano-banana-pro-4K |
prompt |
string | 必填 | 图像描述/编辑提示词 | 非空字符串 |
image |
file | 必填 | 输入图片(支持多张) | 最多 7 张图片 |
mask |
string/file | 可选 | 蒙版图片(指定编辑区域) | base64字符串 或 文件 |
size |
string | 可选 | 输出图片宽高比或分辨率 | 宽高比: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 分辨率: 256x256, 512x512, 1024x1024 等 |
quality |
string | 可选 | 输出质量 (即将推出) | "high", "4K" 等 |
请求示例
curl -X POST "http://your-api-domain/v1/images/edits" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "model=nano-banana-pro" \
-F "prompt=Put the cloth on the girl" \
-F "size=16:9" \
-F "image=@/path/to/girl.png" \
-F "image=@/path/to/cloth.png"
带蒙版(mask)的请求示例
蒙版图片用于指定编辑区域,白色区域为可编辑区域,黑色区域为保持不变区域。
curl -X POST "http://your-api-domain/v1/images/edits" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "model=nano-banana-pro" \
-F "prompt=Replace the masked area with a beautiful sunset" \
-F "size=1:1" \
-F "image=@/path/to/girl.png" \
-F "mask=@/path/to/mask.png"
响应格式
{
"created": 1234567890,
"data": [
{
"b64_json": "base64编码的生成图片数据"
}
]
}
Python完整示例
import requests
import base64
import json
API_URL = "http://your-api-domain/v1/images/edits"
API_KEY = "YOUR_API_KEY"
def main():
API_URL = "http://your-api-domain/v1/images/edits"
API_KEY = "YOUR_API_KEY"
# 准备文件
files = [
("image", ("girl.png", open("girl.png", "rb"), "image/png")),
("image", ("cloth.png", open("cloth.png", "rb"), "image/png")),
]
# 准备表单数据
data = {
"model": "nano-banana-pro",
"prompt": "Put the cloth on the girl",
"size": "16:9"
}
headers = {
"Authorization": f"Bearer {API_KEY}"
}
# 发送请求
response = requests.post(API_URL, data=data, files=files, headers=headers, timeout=300)
if response.status_code == 200:
result = response.json()
for i, item in enumerate(result.get('data', [])):
if 'b64_json' in item:
img_data = base64.b64decode(item['b64_json'])
with open(f"output_{i+1}.png", 'wb') as f:
f.write(img_data)
print(f"图片已保存: output_{i+1}.png")
else:
print(f"请求失败: {response.status_code}, {response.text}")
# 关闭文件
for _, file_obj in files:
file_obj[1].close()
if __name__ == "__main__":
main()
错误处理
401 Unauthorized
API Key无效或缺失
400 Bad Request
请求参数错误(缺少必需参数、图片格式不支持等)
503 Service Unavailable
服务暂时不可用
408 Request Timeout
图片生成超时
视频生成接口 (异步/Sora2兼容)
接口说明
Sora2兼容异步接口 - 本接口采用异步任务模式,完全兼容OpenAI Sora API标准。
视频生成是耗时操作,采用"创建任务 → 轮询状态 → 下载视频"的三步流程:
- 创建任务: POST /v1/videos → 返回任务ID
- 查询状态: GET /v1/videos/{task_id} → 轮询获取生成进度
- 下载视频: GET /v1/videos/{task_id}/content → 获取视频文件
1 创建视频生成任务
请求方法: POST
接口地址: /v1/videos
Content-Type: application/json (文生视频) 或 multipart/form-data (图生视频)
请求参数
| 参数名 | 类型 | 必需 | 说明 | 支持值 |
|---|---|---|---|---|
model |
string | 必填 | 使用的视频生成模型 | veo-3.1 |
prompt |
string | 必填 | 视频描述提示词 | 非空字符串 |
seconds |
string | 可选 | 视频时长(秒) | "8"(仅支持8秒) |
input_reference |
file | 可选 | 参考图片(图生视频时需要) | 图片文件 |
文生视频 cURL示例
curl -X POST "http://your-api-domain/v1/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "veo-3.1",
"prompt": "a cat running",
"seconds": "8"
}'
图生视频 cURL示例
图生视频需要使用 multipart/form-data 格式上传图片文件。
curl -X POST "http://your-api-domain/v1/videos" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "model=veo-3.1" \
-F "prompt=a cat running on the grass" \
-F "seconds=8" \
-F "input_reference=@/path/to/your/image.png"
创建任务响应格式
{
"id": "video_task_abc123xyz"
}
请保存返回的 id,后续查询状态和下载视频都需要使用。
2 查询任务状态
请求方法: GET
接口地址: /v1/videos/{task_id}
轮询建议: 由于视频生成需要时间,建议每隔 5-10 秒查询一次状态,直到状态变为 completed 或 failed。
cURL示例
curl -X GET "http://your-api-domain/v1/videos/video_task_abc123xyz" \
-H "Authorization: Bearer YOUR_API_KEY"
响应格式
{
"id": "video_task_abc123xyz",
"status": "processing",
"progress": 45,
"fail_reason": null
}
状态值说明
| 状态值 | 说明 | 下一步操作 |
|---|---|---|
pending |
任务已创建,等待处理 | 继续轮询 |
processing |
视频生成中 | 继续轮询 |
completed |
生成成功 | 下载视频 |
succeeded |
生成成功(别名) | 下载视频 |
failed |
生成失败 | 检查 fail_reason |
FAILURE |
生成失败(别名) | 检查 fail_reason |
3 下载视频
请求方法: GET
接口地址: /v1/videos/{task_id}/content
响应: 视频文件二进制流 (video/mp4)
注意: 只有当任务状态为 completed 或 succeeded 时,才能成功下载视频。
cURL示例
curl -X GET "http://your-api-domain/v1/videos/video_task_abc123xyz/content" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o output_video.mp4
Python示例
import requests
API_URL = "http://your-api-domain"
API_KEY = "YOUR_API_KEY"
task_id = "video_task_abc123xyz"
url = f"{API_URL}/v1/videos/{task_id}/content"
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(url, headers=headers, stream=True)
if response.status_code == 200:
with open("output_video.mp4", "wb") as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print("视频下载成功!")
else:
print(f"下载失败: {response.status_code}")
完整Python调用示例
以下示例展示了完整的"创建 → 轮询 → 下载"流程,包含文生视频和图生视频两种场景。
import requests
import time
import os
# =================== 配置 ===================
API_URL = "http://your-api-domain/v1"
API_KEY = "YOUR_API_KEY"
MODEL = "veo-3.1"
PROMPT = "a cat running"
SECONDS = "8"
IMAGE_PATH = None # 图生视频时设置为图片路径,如: "/path/to/image.png"
CHECK_INTERVAL = 5 # 每5秒检查一次状态
TIMEOUT = 600 # 最长等待10分钟
# =============================================
def create_video_task():
"""步骤1: 创建视频生成任务"""
url = f"{API_URL}/videos"
headers = {"Authorization": f"Bearer {API_KEY}"}
if IMAGE_PATH:
# 图生视频:使用 multipart/form-data
with open(IMAGE_PATH, 'rb') as f:
files = {'input_reference': f}
data = {
'model': MODEL,
'prompt': PROMPT,
'seconds': SECONDS
}
response = requests.post(url, headers=headers, data=data, files=files)
else:
# 文生视频:使用 JSON
data = {
'model': MODEL,
'prompt': PROMPT,
'seconds': SECONDS
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
print(f"任务创建成功! ID: {result.get('id')}")
return result.get('id')
else:
print(f"创建失败: {response.status_code}, {response.text}")
return None
def get_status(task_id):
"""步骤2: 查询任务状态"""
url = f"{API_URL}/videos/{task_id}"
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
else:
print(f"查询状态失败: {response.status_code}")
return None
def download_video(task_id):
"""步骤3: 下载视频"""
url = f"{API_URL}/videos/{task_id}/content"
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(url, headers=headers, stream=True)
if response.status_code == 200:
filename = f"video_{task_id}.mp4"
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"下载成功! 文件: {filename}")
return True
else:
print(f"下载失败: {response.status_code}")
return False
def main():
print("=" * 50)
print(" AI 视频生成工具")
print("=" * 50)
# 1. 创建任务
task_id = create_video_task()
if not task_id:
return
# 2. 轮询状态
print(f"等待视频生成... (每{CHECK_INTERVAL}秒检查一次)")
start_time = time.time()
while True:
elapsed = int(time.time() - start_time)
if elapsed > TIMEOUT:
print(f"超时! 已等待 {TIMEOUT} 秒")
break
status_data = get_status(task_id)
if status_data:
status = status_data.get('status')
progress = status_data.get('progress', 0)
print(f"[{elapsed}s] 状态: {status} | 进度: {progress}%")
# 成功
if status in ['completed', 'succeeded']:
print("视频生成完成!")
download_video(task_id)
return
# 失败
elif status in ['failed', 'FAILURE']:
reason = status_data.get('fail_reason', '未知错误')
print(f"视频生成失败: {reason}")
return
time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
main()
错误处理
401 Unauthorized
API Key无效或缺失
400 Bad Request
请求参数错误(缺少必需参数、参数值不合法等)
503 Service Unavailable
服务暂时不可用,请稍后重试
404 Not Found
任务ID不存在