API调试模式

API配置

选择接口

参数配置

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标准。

视频生成是耗时操作,采用"创建任务 → 轮询状态 → 下载视频"的三步流程:

  1. 创建任务: POST /v1/videos → 返回任务ID
  2. 查询状态: GET /v1/videos/{task_id} → 轮询获取生成进度
  3. 下载视频: 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 秒查询一次状态,直到状态变为 completedfailed

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)

注意: 只有当任务状态为 completedsucceeded 时,才能成功下载视频。

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不存在