接口文档

建议在牧马人 Herdsman 中查看最新的系统 API 接口文档。

Snipaste_2026-05-20_17-19-59

OpenAI Compatible 接入点

接入点信息

OpenAI 兼容 API 服务接入点,无需认证。

基础 URL

http://localhost:8080/v1

接入点示例

// AI 模型接口
POST http://localhost:8080/v1/chat/completions

// Anthropic 接口
POST http://localhost:8080/v1/anthropic/messages

OpenAI 兼容接口

获取模型列表

获取所有可用的模型列表。

请求方法: GET 接口地址: /v1/models

请求示例

GET /v1/models

响应示例

{
  "object": "list",
  "data": [
    {
      "id": "llama3-8b",
      "object": "model",
      "created": 1677858242,
      "owned_by": "Herdsman",
      "status": "running"
    }
  ]
}

对话补全

发送对话请求,获取 AI 回复。

请求方法: POST 接口地址: /v1/chat/completions

参数

参数名类型必填描述
modelstring模型名称
messagesarray对话消息列表
temperaturenumber采样温度
max_tokensnumber最大生成 tokens 数
top_pnumber核采样概率
streamboolean是否使用流式响应

请求示例

POST /v1/chat/completions
Content-Type: application/json

{
  "model": "llama3-8b",
  "messages": [
    {
      "role": "user",
      "content": "Hello, how are you?"
    }
  ],
  "temperature": 0.7,
  "max_tokens": 1000
}

响应示例

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677858242,
  "model": "llama3-8b",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "I'm doing well, thank you! How can I help you today?"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 13,
    "completion_tokens": 17,
    "total_tokens": 30
  }
}

向量化接口

将文本转换为向量表示。

请求方法: POST 接口地址: /v1/embeddings

参数

参数名类型必填描述
modelstring模型名称
inputstring/array输入文本或文本数组
encoding_formatstring嵌入向量编码格式

请求示例

POST /v1/embeddings
Content-Type: application/json

{
  "model": "llama3-8b",
  "input": "Hello world"
}

响应示例

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [
        0.0023064255,
        -0.009327664,
        0.015790065
      ]
    }
  ],
  "model": "llama3-8b",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

Rerank 接口

对文档进行重新排序。

请求方法: POST 接口地址: /v1/rerank

参数

参数名类型必填描述
modelstring模型名称
querystring查询文本
documentsarray文档列表
top_nnumber返回的最大结果数

Anthropic 接口

Anthropic 对话

使用 Anthropic 模型进行对话。

请求方法: POST 接口地址: /v1/anthropic/messages

参数

参数名类型必填描述
modelstring模型名称
messagesarray对话消息列表
temperaturenumber采样温度
max_tokensnumber最大生成 tokens 数

请求示例

POST /v1/anthropic/messages
Content-Type: application/json

{
  "model": "claude-3-opus-20240229",
  "messages": [
    {
      "role": "user",
      "content": "Hello, how are you?"
    }
  ],
  "temperature": 0.7,
  "max_tokens": 1000
}

AI 模型接口

图片生成接口

根据提示词生成图片。

请求方法: POST 接口地址: /v1/images/generations

参数

参数名类型必填描述
promptstring图片生成提示词
modelstring模型名称
nnumber生成图片数量
sizestring图片尺寸

图片编辑接口

编辑现有图片。

请求方法: POST 接口地址: /v1/images/edits

参数

参数名类型必填描述
imagefile图片文件或图片数据
promptstring图片生成提示词
maskfile遮罩图片文件
modelstring模型名称
nnumber生成图片数量
sizestring图片尺寸

图生图接口

根据现有图片生成新图片。

请求方法: POST 接口地址: /v1/images/img2img

参数

参数名类型必填描述
imagefile图片文件或图片数据
promptstring图片生成提示词
modelstring模型名称
nnumber生成图片数量
sizestring图片尺寸

图片缓存接口

获取缓存的图片文件。

请求方法: GET 接口地址: /v1/images/cache/:filename

语音识别接口

将语音转换为文本。

请求方法: POST 接口地址: /v1/audio/transcriptions

参数

参数名类型必填描述
modelstring模型名称
audiostringJSON 必填音频输入,支持本地路径、URL 或 data:audio/...;base64 数据
filefileMultipart 必填multipart/form-data 上传的音频文件
languagestring语言

请求示例

POST /v1/audio/transcriptions
Content-Type: multipart/form-data

model=whisper-base&file=@audio.wav&language=zh

POST /v1/audio/transcriptions
Content-Type: application/json

{
  "model": "whisper-base",
  "audio": "data:audio/wav;base64,UklGRi...",
  "language": "auto"
}

响应示例

{
  "text": "这是一段语音识别的结果",
  "language": "zh",
  "duration": 3.42
}

流式语音识别接口

通过 WebSocket 进行实时语音识别。

请求方法: GET 接口地址: /v1/audio/transcriptions/stream?model={model}

参数

参数名类型必填描述
modelquery string支持实时 ASR 的模型名称

请求示例

GET /v1/audio/transcriptions/stream?model=sherpa-onnx-streaming-zipformer-zh-14m
Upgrade: websocket

// client -> server: PCM16/16k mono binary frames
// server -> client: {"text":"实时识别结果","is_final":false}

GET /v1/audio/transcriptions/stream?model=funasr
Upgrade: websocket

// FunASR 使用原生 WebSocket 音频协议,适合实时中文识别

语音合成接口

将文本转换为语音。

请求方法: POST 接口地址: /v1/audio/speech

参数

参数名类型必填描述
modelstring模型名称
inputstring输入文本
voicestring语音类型
speakerstring说话人 ID;未设置时使用 voice
voice_descriptionstringVoiceDesign 模式的自然语言声音描述
ref_audiostringVoiceClone 模式的参考音频,支持路径、URL 或 base64
ref_textstringVoiceClone 模式的参考音频文本
languagestring语言
speednumber语速
streamboolean为 true 时返回 stream_url,而不是一次性合成结果

请求示例

POST /v1/audio/speech
Content-Type: application/json

{
  "model": "qwen3-tts-customvoice",
  "input": "这是一段文字转语音的测试",
  "voice": "Cherry",
  "language": "Chinese",
  "speed": 1.0
}

响应示例

{
  "audio_url": "/audio/20260516_abc123.wav",
  "sample_rate": 24000,
  "duration": 2.38
}

流式语音合成接口

先通过语音合成接口创建流式任务,再使用返回的 stream_url 拉取音频流。

请求方法: GET 接口地址: /v1/audio/speech/stream/:token

请求示例

POST /v1/audio/speech
Content-Type: application/json

{
  "model": "edge-tts",
  "input": "这是一段文字转语音的测试",
  "voice": "zh-CN-YunxiNeural",
  "stream": true
}

// 响应示例
{
  "stream_url": "/v1/audio/speech/stream/550e8400-e29b-41d4-a716-446655440000"
}

GET /v1/audio/speech/stream/550e8400-e29b-41d4-a716-446655440000

响应示例

// 二进制音频流响应
// Content-Type: audio/mpeg | audio/wav | application/octet-stream
// Transfer-Encoding: chunked

音频服务信息

按模型查询音频服务能力信息。

请求方法: GET 接口地址: /v1/audio/info?model={model}

参数

参数名类型必填描述
modelquery string音频模型名称,例如 qwen3-tts-customvoice、whisper-base、edge-tts

请求示例

GET /v1/audio/info?model=qwen3-tts-customvoice

GET /v1/audio/info?model=whisper-base

GET /v1/audio/info?model=funasr

响应示例

{
  "tts_supported_languages": [
    "Chinese",
    "English"
  ],
  "supported_speakers": [
    "Cherry",
    "Ethan"
  ]
}

{
  "asr_supported_languages": [
    "zh",
    "en",
    "ja"
  ]
}

{
  "asr_supported_languages": [
    "zh",
    "zh-CN"
  ]
}