six-dimension-aigc/src/config/config.ts

212 lines
6.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved.
* SPDX-license-identifier: BSD-3-Clause
*/
import {
TTS_CLUSTER,
ARK_V3_MODEL_ID,
ModelSourceType,
SCENE,
Prompt,
Welcome,
Model,
Voice,
LLM_BOT_ID,
AI_MODEL,
AI_MODE_MAP,
AI_MODEL_MODE,
} from '.';
export const CONVERSATION_SIGNATURE = 'conversation';
/**
* @brief RTC & AIGC 配置。
* @notes 更多参数请参考
* https://www.volcengine.com/docs/6348/1404673?s=g
*/
export class ConfigFactory {
BaseConfig = {
/**
* @note 必填, RTC AppId 可于 https://console.volcengine.com/rtc/listRTC?s=g 中获取。
*/
AppId: '67e11a296ff39301ed7429aa',
/**
* @brief 非必填, 按需填充。
*/
BusinessId: undefined,
/**
* @brief 必填, 房间 ID, 自定义即可,例如 "Room123"。
*/
// RoomId: 'demo01',
// /**
// * @brief 必填, 当前和 AI 对话的用户的 ID, 自定义即可,例如 "User123"。
// */
// UserId: 'demo01',
// /**
// * @brief 必填, RTC Token, 由 AppId、RoomId、UserId、时间戳等等信息计算得出。
// * 测试跑通时,可于 https://console.volcengine.com/rtc/listRTC?s=g 列表中,
// * 找到对应 AppId 行中 "操作" 列的 "临时Token" 按钮点击进行生成, 用于本地 RTC 通信进房鉴权校验。
// * 正式使用时可参考 https://www.volcengine.com/docs/6348/70121?s=g 通过代码生成 Token。
// * 建议先使用临时 Token 尝试跑通。
// * @note 生成临时 Token 时, 页面上的 RoomId / UserId 填的与此处的 RoomId / UserId 保持一致。
// */
// Token: '00167e11a296ff39301ed7429aaQgCBehoDv2DnZz+b8GcGAGRlbW8wMQYAZGVtbzAxBgAAAD+b8GcBAD+b8GcCAD+b8GcDAD+b8GcEAD+b8GcFAD+b8GcgANQXUJb6Yt/biLcxDjYTT6Y/jJR3QRGoF3lUAfBn0ltq',
/**
* @brief 必填, TTS(语音合成) AppId, 可于 https://console.volcengine.com/speech/app?s=g 中获取, 若无可先创建应用。
* @note 创建应用时, 需要选择 "语音合成" 服务, 并选择对应的 App 进行绑定。
*/
TTSAppId: '6735945315',
/**
* @brief 已开通需要的语音合成服务的token。
* 使用火山引擎双向流式语音合成服务时必填。
*/
TTSToken: undefined,
/**
* @brief 必填, ASR(语音识别) AppId, 可于 https://console.volcengine.com/speech/app?s=g 中获取, 若无可先创建应用。
* @note 创建应用时, 需要按需根据语言选择 "流式语音识别" 服务, 并选择对应的 App 进行绑定。
*/
ASRAppId: '1322261305',
/**
* @brief 已开通流式语音识别大模型服务 AppId 对应的 Access Token。
* 使用流式语音识别大模型服务时该参数为必填。
*/
ASRToken: undefined,
};
Model: AI_MODEL = Model[SCENE.CUSTOM];
/**
* @note 必填, 音色 ID, 可具体看定义。
* 音色 ID 获取方式可查看 VOICE_TYPE 定义
* 此处已有默认值, 不影响跑通, 可按需修改。
*/
VoiceType = Voice[SCENE.CUSTOM];
/**
* @note 大模型 System 角色预设指令, 可用于控制模型输出, 类似 Prompt 的概念。
*/
Prompt = Prompt[SCENE.CUSTOM];
/**
* @note 智能体启动后的欢迎词。
*/
WelcomeSpeech = Welcome[SCENE.CUSTOM];
ModeSourceType = ModelSourceType.Available;
/**
* @note 非必填, 第三方模型才需要使用, 用火山方舟模型时无需关注。
*/
Url? = '';
/**
* @note 非必填, 第三方模型才需要使用, 用火山方舟模型时无需关注。
*/
APIKey? = '';
/**
* @brief AI Robot 名
* @default RobotMan_
*/
BotName = 'RobotMan_';
/**
* @brief 是否为打断模式
*/
InterruptMode = false;
get LLMConfig() {
const params: Record<string, unknown> = {
Mode: AI_MODE_MAP[this.Model || ''] || AI_MODEL_MODE.CUSTOM,
EndPointId: ARK_V3_MODEL_ID[this.Model],
BotId: LLM_BOT_ID[this.Model],
MaxTokens: 1024,
Temperature: 0.5,
TopP: 0.3,
SystemMessages: [this.Prompt as string],
UserMessages:[],
Prefill: true,
ModelName: this.Model,
ModelVersion: '1.0',
WelcomeSpeech: this.WelcomeSpeech,
ModeSourceType: this.ModeSourceType,
APIKey: this.APIKey,
Url: this.Url,
Feature: JSON.stringify({ Http: true }),
};
if (this.Model === AI_MODEL.VISION) {
params.VisionConfig = {
Enable: true,
};
}
return params;
}
get ASRConfig() {
return {
Provider: 'volcano',
ProviderParams: {
/**
* @note 本示例代码使用的是小模型语音识别, 如感觉 ASR 效果不佳,可尝试使用大模型进行语音识别。
* 大模型的使用详情可参考 https://www.volcengine.com/docs/6348/1404673#volcanolmasrconfig?s=g
*/
Mode: 'smallmodel',
AppId: this.BaseConfig.ASRAppId,
...(this.BaseConfig.ASRToken ? { AccessToken: this.BaseConfig.ASRToken } : {}),
/**
* @note 具体流式语音识别服务对应的 Cluster ID可在流式语音服务控制台开通对应服务后查询。
* 具体链接为: https://console.volcengine.com/speech/service/16?s=g
*/
Cluster: 'volcengine_streaming_common',
},
VADConfig: {
SilenceTime: 600,
SilenceThreshold: 200,
},
VolumeGain: 0.3,
};
}
get TTSConfig() {
return {
Provider: 'volcano',
ProviderParams: {
app: {
AppId: this.BaseConfig.TTSAppId,
...(this.BaseConfig.TTSToken ? { Token: this.BaseConfig.TTSToken } : {}),
Cluster: TTS_CLUSTER.TTS,
},
audio: {
voice_type: this.VoiceType,
speed_ratio: 1.0,
},
},
IgnoreBracketText: [1, 2, 3, 4, 5],
BidirectionAdditions:{
disable_markdown_filter:true,
}
};
}
get aigcConfig() {
return {
Config: {
LLMConfig: this.LLMConfig,
TTSConfig: this.TTSConfig,
ASRConfig: this.ASRConfig,
InterruptMode: this.InterruptMode ? 0 : 1,
SubtitleConfig: {
SubtitleMode: 0,
},
},
AgentConfig: {
UserId: this.BotName,
WelcomeMessage: this.WelcomeSpeech,
EnableConversationStateCallback: true,
ServerMessageSignatureForRTS: CONVERSATION_SIGNATURE,
},
};
}
}