Files
AI-VideoAssistant/docs/content/quickstart/api.md

5.5 KiB
Raw Blame History

通过 API 创建助手

本指南介绍如何通过 REST API 程序化创建和管理 AI 助手。

前提条件

  • 已部署 API 服务(默认端口 8080
  • 已配置 LLM 和 TTS 模型
  • 有可用的 HTTP 客户端curl、Postman 等)

步骤 1创建助手

请求

curl -X POST "http://localhost:8080/api/v1/assistants" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "客服助手",
    "prompt": "你是一个友好的客服助手,负责解答用户问题。保持简洁、专业的回复风格。",
    "opener": "你好,我是客服助手,请问有什么可以帮您?",
    "language": "zh-CN",
    "temperature": 0.7,
    "max_tokens": 2048
  }'

响应

{
  "success": true,
  "data": {
    "id": "asst_abc123",
    "name": "客服助手",
    "prompt": "你是一个友好的客服助手...",
    "opener": "你好,我是客服助手...",
    "language": "zh-CN",
    "temperature": 0.7,
    "created_at": "2025-01-01T00:00:00Z"
  }
}

记下返回的 id,后续步骤需要使用。

步骤 2配置语音

配置 TTS

curl -X PATCH "http://localhost:8080/api/v1/assistants/asst_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "voice": {
      "vendor": "aliyun",
      "voice_id": "xiaoyun",
      "speed": 1.0,
      "volume": 80,
      "pitch": 1.0
    }
  }'

配置 ASR

curl -X PATCH "http://localhost:8080/api/v1/assistants/asst_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "asr": {
      "vendor": "sensevoice",
      "language": "zh-CN"
    }
  }'

步骤 3关联 LLM 模型

curl -X PATCH "http://localhost:8080/api/v1/assistants/asst_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "llm_id": "llm_xyz789"
  }'

步骤 4关联知识库可选

curl -X PATCH "http://localhost:8080/api/v1/assistants/asst_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "knowledge_base_id": "kb_def456",
    "knowledge": {
      "similarity_threshold": 0.7,
      "top_k": 3
    }
  }'

步骤 5发布助手

curl -X POST "http://localhost:8080/api/v1/assistants/asst_abc123/publish"

步骤 6测试 WebSocket 连接

JavaScript 示例

const assistantId = 'asst_abc123';
const ws = new WebSocket(`ws://localhost:8000/ws?assistant_id=${assistantId}`);

ws.onopen = () => {
  console.log('连接已建立');
  
  // 发送 session.start
  ws.send(JSON.stringify({
    type: 'session.start',
    audio: {
      encoding: 'pcm_s16le',
      sample_rate_hz: 16000,
      channels: 1
    }
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('收到事件:', data.type);
  
  if (data.type === 'session.started') {
    // 发送文本消息测试
    ws.send(JSON.stringify({
      type: 'input.text',
      text: '你好,你能做什么?'
    }));
  }
  
  if (data.type === 'assistant.response.final') {
    console.log('助手回复:', data.data.text);
  }
};

ws.onerror = (error) => {
  console.error('连接错误:', error);
};

ws.onclose = () => {
  console.log('连接已关闭');
};

Python 示例

import asyncio
import websockets
import json

async def test_assistant():
    uri = "ws://localhost:8000/ws?assistant_id=asst_abc123"
    
    async with websockets.connect(uri) as ws:
        # 发送 session.start
        await ws.send(json.dumps({
            "type": "session.start",
            "audio": {
                "encoding": "pcm_s16le",
                "sample_rate_hz": 16000,
                "channels": 1
            }
        }))
        
        # 等待 session.started
        response = await ws.recv()
        print(f"收到: {response}")
        
        # 发送文本消息
        await ws.send(json.dumps({
            "type": "input.text",
            "text": "你好,你能做什么?"
        }))
        
        # 接收响应
        while True:
            response = await ws.recv()
            data = json.loads(response)
            print(f"事件: {data['type']}")
            
            if data['type'] == 'assistant.response.final':
                print(f"回复: {data['data']['text']}")
                break

asyncio.run(test_assistant())

完整 API 参考

助手管理 API

方法 路径 说明
GET /api/v1/assistants 获取助手列表
POST /api/v1/assistants 创建助手
GET /api/v1/assistants/{id} 获取助手详情
PATCH /api/v1/assistants/{id} 更新助手
DELETE /api/v1/assistants/{id} 删除助手
POST /api/v1/assistants/{id}/publish 发布助手

助手字段说明

字段 类型 必填 说明
name string 助手名称
prompt string 系统提示词
opener string 开场白
language string 语言代码
temperature number 温度参数0-1
max_tokens number 最大输出长度
llm_id string 关联的 LLM 模型 ID
voice object TTS 配置
asr object ASR 配置

错误处理

常见错误及解决方案:

错误码 说明 解决方案
400 请求参数错误 检查请求体格式
404 助手不存在 确认 assistant_id 正确
500 服务器错误 查看服务端日志

下一步