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

OpenAI Compatible 接入点
接入点信息
OpenAI 兼容 API 服务接入点,无需认证。
基础 URL
接入点示例
// AI 模型接口
POST http://localhost:8080/v1/chat/completions
// Anthropic 接口
POST http://localhost:8080/v1/anthropic/messages
OpenAI 兼容接口
获取模型列表
获取所有可用的模型列表。
请求方法: GET
接口地址: /v1/models
请求示例
响应示例
{
"object": "list",
"data": [
{
"id": "llama3-8b",
"object": "model",
"created": 1677858242,
"owned_by": "Herdsman",
"status": "running"
}
]
}
对话补全
发送对话请求,获取 AI 回复。
请求方法: POST
接口地址: /v1/chat/completions
参数
请求示例
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
参数
请求示例
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
参数
Anthropic 接口
Anthropic 对话
使用 Anthropic 模型进行对话。
请求方法: POST
接口地址: /v1/anthropic/messages
参数
请求示例
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
参数
图片编辑接口
编辑现有图片。
请求方法: POST
接口地址: /v1/images/edits
参数
图生图接口
根据现有图片生成新图片。
请求方法: POST
接口地址: /v1/images/img2img
参数
图片缓存接口
获取缓存的图片文件。
请求方法: GET
接口地址: /v1/images/cache/:filename
语音识别接口
将语音转换为文本。
请求方法: POST
接口地址: /v1/audio/transcriptions
参数
请求示例
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}
参数
请求示例
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
参数
请求示例
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}
参数
请求示例
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"
]
}