EVA Gateway 接入文档
EVA Gateway 为不同模型提供统一的 OpenAI Compatible 接口。使用一套鉴权信息,即可调用 LLM(大语言模型)、ASR(语音识别)和 TTS(语音合成)三类能力。
本页将帮助你在几分钟内完成首次调用。不同模型支持的参数、取值范围和能力可能不同,具体信息请参阅模型广场中对应模型的信息页。
前置准备
1. Base URL
https://eva-gateway.autoarkai.com
注意:LLM 与音频服务使用不同的路径前缀。
- LLM:
https://eva-gateway.autoarkai.com/llm/v1- ASR/TTS(音频):
https://eva-gateway.autoarkai.com/v1- 实时 ASR(WebSocket):
wss://eva-gateway.autoarkai.com/v1/realtime使用 OpenAI SDK 时,需要分别为 LLM 和音频服务初始化客户端,详见下文。
2. 获取 API Key
在控制台创建并获取 API Key,格式如 ak-xxxxxxxx...。
3. 鉴权
所有请求均须通过 HTTP 请求头携带 API Key。三种接入方式的鉴权方法完全一致:
Authorization: Bearer <你的 API_KEY>
4. 请求追踪
EVA Gateway 会为每个请求自动生成 Trace ID,并通过以下响应头返回:
autoark-trace-id: <TRACE_ID>
方式一:EVA API
无需安装任何 SDK,使用任意 HTTP 客户端即可调用。以下分别提供每项能力的 Shell、Python 和 TypeScript 示例。
LLM
调用接口:POST /llm/v1/chat/completions。LLM 请求体、响应体和错误格式均使用标准 OpenAI 格式,不同模型保持一致的调用体验。不同 LLM 模型支持的参数和取值范围可能不同,具体信息请参阅模型广场中对应模型的信息页。在请求体中添加 "stream": true,即可使用标准 OpenAI SSE 流式响应。
- Shell
- Python
- TypeScript
curl https://eva-gateway.autoarkai.com/llm/v1/chat/completions \
-H "Authorization: Bearer $EVA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "volcengine-doubao-seed-2.0-mini",
"messages": [{"role": "user", "content": "你好,用一句话介绍你自己"}]
}'
import requests
resp = requests.post(
"https://eva-gateway.autoarkai.com/llm/v1/chat/completions",
headers={"Authorization": f"Bearer {EVA_API_KEY}", "Content-Type": "application/json"},
json={
"model": "volcengine-doubao-seed-2.0-mini",
"messages": [{"role": "user", "content": "你好,用一句话介绍你自己"}],
},
)
print(resp.json())
const resp = await fetch(
'https://eva-gateway.autoarkai.com/llm/v1/chat/completions',
{
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.EVA_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'volcengine-doubao-seed-2.0-mini',
messages: [{ role: 'user', content: '你好,用一句话介绍你自己' }],
}),
},
);
console.log(await resp.json());
ASR(语音识别)
调用接口:POST /v1/audio/transcriptions。请求类型为 multipart/form-data,其中 file 为音频文件,model 为 ASR 模型名。参数说明与响应格式,请参阅 EVA Gateway 参数说明:ASR。
- Shell
- Python
- TypeScript
curl https://eva-gateway.autoarkai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $EVA_API_KEY" \
-F "model=ark-asr-flash" \
-F "file=@sample.wav" \
-F "audio_format=wav" \
-F "sample_rate=16000"
import requests
with open("sample.wav", "rb") as f:
resp = requests.post(
"https://eva-gateway.autoarkai.com/v1/audio/transcriptions",
headers={"Authorization": f"Bearer {EVA_API_KEY}"},
files={"file": ("sample.wav", f, "audio/wav")},
data={"model": "ark-asr-flash", "audio_format": "wav", "sample_rate": 16000},
)
print(resp.json())
import fs from 'fs';
const form = new FormData();
form.append('model', 'ark-asr-flash');
form.append('audio_format', 'wav');
form.append('sample_rate', '16000');
form.append('file', new Blob([fs.readFileSync('sample.wav')]), 'sample.wav');
const resp = await fetch(
'https://eva-gateway.autoarkai.com/v1/audio/transcriptions',
{
method: 'POST',
headers: { Authorization: `Bearer ${process.env.EVA_API_KEY}` },
body: form,
},
);
console.log(await resp.json());
TTS(语音合成)
调用接口:POST /v1/audio/speech,默认返回原始音频字节流。参数说明与返回格式,请参阅 EVA Gateway 参数说明:TTS。
- Shell
- Python
- TypeScript
curl https://eva-gateway.autoarkai.com/v1/audio/speech \
-H "Authorization: Bearer $EVA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ark-tts-flash",
"input": "你好,欢迎使用 EVA Gateway。",
"voice": "zh_female_vivian",
"response_format": "pcm"
}' \
--output output.pcm
import requests
resp = requests.post(
"https://eva-gateway.autoarkai.com/v1/audio/speech",
headers={"Authorization": f"Bearer {EVA_API_KEY}", "Content-Type": "application/json"},
json={
"model": "ark-tts-flash",
"input": "你好,欢迎使用 EVA Gateway。",
"voice": "zh_female_vivian",
"response_format": "pcm",
},
)
with open("output.pcm", "wb") as f:
f.write(resp.content)
import fs from 'fs';
const resp = await fetch('https://eva-gateway.autoarkai.com/v1/audio/speech', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.EVA_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'ark-tts-flash',
input: '你好,欢迎使用 EVA Gateway。',
voice: 'zh_female_vivian',
response_format: 'pcm',
}),
});
fs.writeFileSync('output.pcm', Buffer.from(await resp.arrayBuffer()));
WebSocket API
WebSocket API 目前仅支持 ASR,兼容 OpenAI Realtime API 的转录事件子集。连接方式、事件协议、参数说明和请求/响应示例,请参阅 EVA Gateway Websocket API。
方式二:OpenAI SDK
如果已有基于 OpenAI SDK 的代码,只需将 base_url 指向 EVA Gateway,即可直接复用,作为直接替代方案(drop-in replacement)。
由于 LLM 与音频服务使用不同的路径前缀,需要分别初始化两个客户端。
安装与初始化
安装依赖:
- Python
- TypeScript
pip install openai
npm install openai
初始化客户端:
- Python
- TypeScript
from openai import OpenAI
# LLM 使用 /llm/v1
llm = OpenAI(api_key="EVA_API_KEY", base_url="https://eva-gateway.autoarkai.com/llm/v1")
# 音频(ASR/TTS)使用 /v1
audio = OpenAI(api_key="EVA_API_KEY", base_url="https://eva-gateway.autoarkai.com/v1")
import OpenAI from 'openai';
// LLM 使用 /llm/v1
const llm = new OpenAI({
apiKey: process.env.EVA_API_KEY,
baseURL: 'https://eva-gateway.autoarkai.com/llm/v1',
});
// 音频(ASR/TTS)使用 /v1
const audio = new OpenAI({
apiKey: process.env.EVA_API_KEY,
baseURL: 'https://eva-gateway.autoarkai.com/v1',
});
LLM
- Python
- TypeScript
resp = llm.chat.completions.create(
model="volcengine-doubao-seed-2.0-mini",
messages=[{"role": "user", "content": "你好,用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)
const resp = await llm.chat.completions.create({
model: 'volcengine-doubao-seed-2.0-mini',
messages: [{ role: 'user', content: '你好,用一句话介绍你自己' }],
});
console.log(resp.choices[0].message.content);
ASR(语音识别)
网关自定义参数通过 extra_body(Python)或附加字段(TypeScript)传入。
- Python
- TypeScript
with open("sample.wav", "rb") as f:
result = audio.audio.transcriptions.create(
model="ark-asr-flash",
file=f,
extra_body={"audio_format": "wav", "sample_rate": 16000},
)
print(result.text)
import fs from 'fs';
const result = await audio.audio.transcriptions.create({
model: 'ark-asr-flash',
file: fs.createReadStream('sample.wav'),
// @ts-expect-error 网关自定义参数
audio_format: 'wav',
sample_rate: 16000,
});
console.log(result.text);
TTS(语音合成)
- Python
- TypeScript
resp = audio.audio.speech.create(
model="ark-tts-flash",
voice="zh_female_vivian",
input="你好,欢迎使用 EVA Gateway。",
response_format="pcm",
)
resp.stream_to_file("output.pcm")
import fs from 'fs';
const resp = await audio.audio.speech.create({
model: 'ark-tts-flash',
voice: 'zh_female_vivian',
input: '你好,欢迎使用 EVA Gateway。',
response_format: 'pcm',
});
fs.writeFileSync('output.pcm', Buffer.from(await resp.arrayBuffer()));
下一步
- 查看各接口参数及其含义:EVA Gateway 参数说明。模型名称、支持的参数、取值范围及能力,请参阅模型广场中的模型详情;调用时请使用其中展示的 EVA 模型名称。