保利威文档中心

幫助中心

AI-SDK 邏輯層

更新時間:2026-01-19 09:16:42

說明

@polyv/live-watch-ai-sdk 是保利威直播觀看 AI SDK,提供 AI 助手、智慧大綱等 AI 功能的核心 JavaScript SDK。包含以下特性

  • AI 助手聊天: 支援與 AI 助手進行即時對話,支援串流回應
  • AI 智慧大綱: 獲取回放影片的智慧大綱、字幕解析和互動答題
  • 數位人支援: 整合 AI 數位人功能,支援語音合成和影片播放
  • 多語言支援: 支援中文、英文、日文、韓文、俄文等多種語言
  • 模組化設計: 採用模組化架構,便於擴展和維護
  • 事件驅動: 基於事件驅動的 API 設計,便於狀態管理

安裝

npm install @polyv/live-watch-ai-sdk
# 或
yarn add @polyv/live-watch-ai-sdk
# 或
pnpm add @polyv/live-watch-ai-sdk

快速開始

基本使用

import { PolyvWatchAICore } from '@polyv/live-watch-ai-sdk';

// 初始化 SDK
const aiCore = new PolyvWatchAICore({
  lang: 'zh_CN',
  domainInfo: {
    polyvWatchApiDomain: 'https://watch-api.polyv.cn',
  },
  getViewerToken: async () => ({
    viewerToken: 'your-viewer-token',
  }),
  getChatToken: async () => ({
    chatToken: 'your-chat-token',
  }),
  getChannelInfo: async () => ({
    channelId: 'your-channel-id',
  }),
  getUserInfo: async () => ({
    userId: 'user-123',
    nick: '用户昵称',
    pic: 'https://example.com/avatar.jpg',
  }),
});

// 使用 AI 助手模块
const aiAssistant = aiCore.aiAssistant;

// 监听 AI 助手事件
aiAssistant.eventEmitter.on('AIAssistantChatMessage', ({ AIChatMsg }) => {
  console.log('收到 AI 消息:', AIChatMsg);
});

// 发送问题给 AI 助手
try {
  await aiAssistant.sendAIQuestionMsg({
    content: '你好,请介绍一下这个视频的主要内容',
  });
} catch (error) {
  console.error('发送问题失败:', error);
}

核心模組

PolyvWatchAICore

SDK 的核心類別,管理所有模組和配置。

建構函式配置

interface AICoreConfig {
  /** 语言类型 */
  lang?: LangType;
  /** 域名信息 */
  domainInfo?: Partial<DomainInfo>;
  /** 获取用户令牌信息 */
  getViewerToken?: () => Promise<ViewerTokenData> | ViewerTokenData;
  /** 获取聊天室服务令牌信息 */
  getChatToken?: () => Promise<ChatTokenData> | ChatTokenData;
  /** 获取频道信息 */
  getChannelInfo?: () => Promise<ChannelInfo> | ChannelInfo;
  /** 获取频道配置 */
  getChannelConfig?: () => Promise<ChannelConfig> | ChannelConfig;
  /** 获取用户信息 */
  getUserInfo?: () => Promise<Partial<UserInfo>> | Partial<UserInfo>;
}

核心屬性

  • aiAssistant: AI 助手模組
  • aiSummary: AI 智慧大綱模組
  • domain: 網域名稱模組

核心方法

  • getAppConfig(): 獲取當前應用配置
  • updateAppConfig(): 更新應用配置
  • getViewerToken(): 獲取觀看者令牌
  • getChatToken(): 獲取聊天令牌
  • getChannelId(): 獲取頻道 ID
  • getUserInfo(): 獲取使用者資訊
  • destroy(): 銷毀 SDK 實例

AI 助手模組

提供 AI 助手聊天功能,支援數位人互動。

主要功能

  1. AI 助手聊天

    • 支援串流對話
    • 訊息分組管理
    • 聊天狀態管理
  2. 數位人功能

    • 數位人影片播放
    • 語音合成 (TTS)
    • 音訊任務管理
  3. 音訊處理

    • 語音辨識 (ASR)
    • 音訊轉文字
    • 音訊檔案處理

使用範例

// 初始化 AI 助手
await aiCore.aiAssistant.setupAIAssistant(
  {
    aiAssistantId: 123,
    aiAssistantName: 'AI助手',
    aiAssistantCode: 'assistant-code',
  },
  { independent: true },
);

// 发送问题
await aiCore.aiAssistant.sendAIQuestionMsg({
  content: '请介绍一下这个视频',
});

// 获取聊天历史
const history = await aiCore.aiAssistant.getAIAssistantChatHistory();

// 创建音频任务(TTS)
const { taskId } = await aiCore.aiAssistant.createAiAssistantAudioTask({
  text: '你好,我是AI助手',
  rate: 1.0,
  ttsVoiceId: 'voice-001',
});

// 语音识别
const text = await aiCore.aiAssistant.recognizeAudioBlobToText({
  audioBlob: audioFile,
  audioType: 'wav',
});

AI 智慧大綱模組

提供回放影片的智慧分析功能。

主要功能

  1. 回放大綱

    • 獲取影片摘要
    • 分段內容總結
    • 關鍵字提取
  2. 字幕處理

    • 獲取 AI 生成字幕
    • SRT 格式解析
    • 時間軸對齊
  3. 互動答題

    • 獲取影片中的互動問題
    • 題目類型識別
    • 答案驗證

使用範例

// 获取回放大纲
const outline = await aiCore.aiSummary.getPlaybackOutline({
  id: 'video-123',
  type: 'playback', // 'record' 或 'playback'
});

if (outline) {
  console.log('视频摘要:', outline.introduction);
  console.log('分段数量:', outline.outlineContent.length);
}

// 获取并解析字幕
const subtitleContent = await aiCore.aiSummary.getAISubtitleContent(
  'https://example.com/subtitle.srt',
);
const parsedSubtitles = aiCore.aiSummary.parseAISubtitleContent(subtitleContent);

parsedSubtitles.forEach(item => {
  console.log(`时间: ${item.start}-${item.end}ms, 内容: ${item.text}`);
});

// 获取互动答题
const questionData = await aiCore.aiSummary.getAIPlaybackQuestionData(
  'https://example.com/questions.json',
);

事件系統

AI 助手事件

enum AIAssistantEvents {
  // AI 助手设置完成
  AIAssistantChatSetupedIndependent = 'AIAssistantChatSetupedIndependent',
  AIAssistantChatSetupedComplete = 'AIAssistantChatSetupedComplete',

  // 聊天状态变化
  AIAssistantChatStatusChange = 'AIAssistantChatStatusChange',

  // 聊天消息
  AIAssistantChatMessage = 'AIAssistantChatMessage',
  ReplaceAIAssistantChatMessage = 'ReplaceAIAssistantChatMessage',
}

聊天狀態

enum PolyvAIAssistantChatStatus {
  Wait = 0, // 等待用户输入
  Replaying = 1, // AI 正在回答
  Busy = 2, // AI 繁忙
}

事件監聽範例

// 监听 AI 助手状态变化
aiCore.aiAssistant.eventEmitter.on('AIAssistantChatStatusChange', ({ status }) => {
  console.log('AI 助手状态变化:', status);
});

// 监听聊天消息
aiCore.aiAssistant.eventEmitter.on('AIAssistantChatMessage', ({ AIChatMsg }) => {
  console.log('收到消息:', AIChatMsg);
});

// 监听消息更新(用于流式响应)
aiCore.aiAssistant.eventEmitter.on('ReplaceAIAssistantChatMessage', ({ id, AIChatMsg }) => {
  console.log('消息更新:', AIChatMsg.content);
});

工具函式

除錯工具

import { setDebugMode } from '@polyv/live-watch-ai-sdk';

// 开启调试模式
setDebugMode(true);

實用工具

import { plvInterval, plvWait, plvParseJson } from '@polyv/live-watch-ai-sdk';

// 定时器
const timer = plvInterval(
  () => {
    console.log('定时执行');
  },
  1000,
  { maxCount: 10 },
);

// 延迟执行
await plvWait(3000);

// JSON 解析
const result = plvParseJson<{ data: string }>('{"data": "test"}');
if (result.success) {
  console.log(result.data);
}

最佳實踐

效能最佳化

  1. 延遲載入模組: 按需初始化模組,減少初始載入時間

    const aiCore = new PolyvWatchAICore(config);
    
    if (needAIAssistant) {
      await aiCore.aiAssistant.setupAIAssistant(assistantConfig);
    }
    
  2. 事件監聽器管理: 及時清理事件監聽器,避免記憶體洩漏

    const messageHandler = ({ AIChatMsg }) => {
      console.log('收到消息:', AIChatMsg);
    };
    
    aiAssistant.eventEmitter.on('AIAssistantChatMessage', messageHandler);
    
    // 组件销毁时清理
    function cleanup() {
      aiAssistant.eventEmitter.off('AIAssistantChatMessage', messageHandler);
    }
    

狀態管理

// 在 Vue/React 中,将 SDK 状态与组件状态绑定
const messages = ref([]);
const chatStatus = ref(PolyvAIAssistantChatStatus.Wait);

aiAssistant.eventEmitter.on('AIAssistantChatMessage', ({ AIChatMsg }) => {
  messages.value.push(AIChatMsg);
});

aiAssistant.eventEmitter.on('AIAssistantChatStatusChange', ({ status }) => {
  chatStatus.value = status;
});

常見問題

1. 如何獲取必要的令牌?

SDK 需要以下令牌才能正常運作:

  • viewerToken: 觀看者令牌,用於 API 認證
  • chatToken: 聊天令牌,用於 AI 助手聊天

這些令牌需要透過業務後端介面獲取,並在初始化時透過回呼函式提供給 SDK。

2. AI 助手不回應怎麼辦?

檢查以下配置:

  1. 確保 aiAssistantCode 正確設定
  2. 驗證 getChatToken 返回有效的聊天令牌
  3. 檢查網路連線和網域名稱配置
  4. 查看瀏覽器控制台是否有錯誤資訊

3. 如何自訂網域名稱?

const aiCore = new PolyvWatchAICore({
  domainInfo: {
    polyvWatchApiDomain: 'https://your-custom-domain.com',
  },
});
联系客服,在线咨询