Embeddings API

POST /v1/embeddings

将文本转换为向量嵌入

请求参数

请求头

Authorization

使用 Bearer Token 认证。

格式: Authorization: Bearer sk-xxxxxx

请求体

请求体必须使用 application/json。以下字段与原生 OpenAI 格式定义一致;未列出的字段不属于此接口的通用请求参数。

请求体参数(4 个)
参数类型默认值说明是否必填
modelstring—要调用的嵌入模型 ID,例如 text-embedding-3-small。模型必须已在网关渠道中配置。是
inputstring | array<string>—要嵌入的文本。可以传入单个字符串,或传入字符串数组以批量生成多个向量;数组中的每一项都必须是字符串。是
encoding_formatstringfloat向量编码格式。可选值为 float(浮点数数组)或 base64(Base64 编码);具体行为取决于上游模型和渠道。否
dimensionsinteger模型默认维度输出向量维度。仅在模型支持自定义维度时生效;不支持时请省略此字段。否

请求体示例

查看 JSON 请求体示例
{
  "model": "text-embedding-3-small",
  "input": [
    "向量检索可以比较文本的语义相似度。",
    "Embeddings convert text into numerical vectors."
  ],
  "encoding_format": "float",
  "dimensions": 512
}

请求示例代码

curl -X POST "https://10000router.com/v1/embeddings" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "model": "text-embedding-3-small",
    "input": ["向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors."],
    "encoding_format": "float",
    "dimensions": 512
  }'
const response = await fetch("https://10000router.com/v1/embeddings", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.API_KEY,
  },
  body: JSON.stringify({
    model: "text-embedding-3-small",
    input: ["向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors."],
    encoding_format: "float",
    dimensions: 512
  })
});
console.log(await response.json());
package main

import (
  "log"
  "net/http"
  "os"
  "strings"
)

func main() {
  payload := `{"model":"text-embedding-3-small","input":["向量检索可以比较文本的语义相似度。","Embeddings convert text into numerical vectors."],"encoding_format":"float","dimensions":512}`
  req, err := http.NewRequest("POST", "https://10000router.com/v1/embeddings", strings.NewReader(payload))
  if err != nil { log.Fatal(err) }
  req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
  res, err := http.DefaultClient.Do(req)
  if err != nil { log.Fatal(err) }
  defer res.Body.Close()
}
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")

response = client.post(
    "https://10000router.com/v1/embeddings",
    headers={
        "Authorization": "Bearer " + os.environ["API_KEY"],
    },
    json={
        "model": "text-embedding-3-small",
        "input": ["向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors."],
        "encoding_format": "float",
        "dimensions": 512,
    },
)
print(response)
var client = java.net.http.HttpClient.newHttpClient();
var request = java.net.http.HttpRequest.newBuilder()
    .uri(java.net.URI.create("https://10000router.com/v1/embeddings"))
    .header("Authorization", "Bearer " + System.getenv("API_KEY"))
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString("{\"model\":\"text-embedding-3-small\",\"input\":[\"向量检索可以比较文本的语义相似度。\",\"Embeddings convert text into numerical vectors.\"],\"encoding_format\":\"float\",\"dimensions\":512}"))
    .build();
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System.Net.Http.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new(
    "Bearer", Environment.GetEnvironmentVariable("API_KEY"));
var response = await client.PostAsJsonAsync(
    "https://10000router.com/v1/embeddings",
    new {
        model = "text-embedding-3-small",
        input = new[] { "向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors." },
        encoding_format = "float",
        dimensions = 512
    });
Console.WriteLine(await response.Content.ReadAsStringAsync());

返回响应

响应示例

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [0.0123, -0.0456, 0.0789]
    },
    {
      "object": "embedding",
      "index": 1,
      "embedding": [0.0234, -0.0567, 0.089]
    }
  ],
  "model": "text-embedding-3-small",
  "usage": {
    "prompt_tokens": 14,
    "total_tokens": 14
  }
}
{
  "error": {
    "message": "Invalid value for 'input': expected a string or an array of strings.",
    "type": "invalid_request_error",
    "param": "input",
    "code": null
  }
}
{
  "error": {
    "message": "Rate limit reached for embeddings requests.",
    "type": "rate_limit_exceeded",
    "param": null,
    "code": null
  }
}
{
  "error": {
    "message": "Invalid authentication credentials",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}

返回字段参数

顶层字段(4 个)
字段类型说明
objectstring响应对象类型,固定为 list。
dataarray<object>每个输入文本对应一个嵌入对象,顺序与请求中的 input 一致。
modelstring实际生成嵌入的模型 ID。
usageobject本次请求的输入 token 用量统计。
data[] 字段(3 个)
字段类型说明
objectstring嵌入对象类型,固定为 embedding。
indexinteger对应输入文本在 input 数组中的索引,从 0 开始。
embeddingarray<number>生成的向量数组。数组长度通常等于模型默认维度,或请求中生效的 dimensions。
usage 字段(2 个)
字段类型说明
prompt_tokensinteger所有输入文本消耗的 token 数。
total_tokensinteger本次请求消耗的总 token 数;Embeddings 请求通常等于 prompt_tokens。

错误响应

请求参数无效、认证失败、模型不可用或触发限流时,接口返回相应的 HTTP 4xx 状态码,并使用以下 OpenAI 兼容错误对象:

{
  "error": {
    "message": "错误描述",
    "type": "invalid_request_error",
    "param": "input",
    "code": null
  }
}

请根据 error.type、error.param 和 HTTP 状态码定位问题;修正请求参数后再重试,避免对参数错误进行重复重试。

results matching ""

    No results matching ""