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(): 獲取頻道 IDgetUserInfo(): 獲取使用者資訊destroy(): 銷毀 SDK 實例
AI 助手模組
提供 AI 助手聊天功能,支援數位人互動。
主要功能
AI 助手聊天
- 支援串流對話
- 訊息分組管理
- 聊天狀態管理
數位人功能
- 數位人影片播放
- 語音合成 (TTS)
- 音訊任務管理
音訊處理
- 語音辨識 (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 智慧大綱模組
提供回放影片的智慧分析功能。
主要功能
回放大綱
- 獲取影片摘要
- 分段內容總結
- 關鍵字提取
字幕處理
- 獲取 AI 生成字幕
- SRT 格式解析
- 時間軸對齊
互動答題
- 獲取影片中的互動問題
- 題目類型識別
- 答案驗證
使用範例
// 获取回放大纲
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);
}
最佳實踐
效能最佳化
延遲載入模組: 按需初始化模組,減少初始載入時間
const aiCore = new PolyvWatchAICore(config); if (needAIAssistant) { await aiCore.aiAssistant.setupAIAssistant(assistantConfig); }事件監聽器管理: 及時清理事件監聽器,避免記憶體洩漏
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 助手不回應怎麼辦?
檢查以下配置:
- 確保
aiAssistantCode正確設定 - 驗證
getChatToken返回有效的聊天令牌 - 檢查網路連線和網域名稱配置
- 查看瀏覽器控制台是否有錯誤資訊
3. 如何自訂網域名稱?
const aiCore = new PolyvWatchAICore({
domainInfo: {
polyvWatchApiDomain: 'https://your-custom-domain.com',
},
});
