Implement KB features with codex

This commit is contained in:
Xin Wang
2026-02-10 07:35:08 +08:00
parent ed1f7fc8b0
commit 6b4391c423
5 changed files with 207 additions and 9 deletions

View File

@@ -988,10 +988,21 @@ export const DebugDrawer: React.FC<{
isOpen: boolean;
onClose: () => void;
assistant: Assistant;
voices: Voice[];
llmModels: LLMModel[];
asrModels: ASRModel[];
}> = ({ isOpen, onClose, assistant, voices, llmModels, asrModels }) => {
voices?: Voice[];
llmModels?: LLMModel[];
asrModels?: ASRModel[];
sessionMetadataExtras?: Record<string, any>;
onProtocolEvent?: (event: Record<string, any>) => void;
}> = ({
isOpen,
onClose,
assistant,
voices = [],
llmModels = [],
asrModels = [],
sessionMetadataExtras,
onProtocolEvent,
}) => {
const TARGET_SAMPLE_RATE = 16000;
const downsampleTo16k = (input: Float32Array, inputSampleRate: number): Float32Array => {
if (inputSampleRate === TARGET_SAMPLE_RATE) return input;
@@ -1474,6 +1485,10 @@ export const DebugDrawer: React.FC<{
const warnings: string[] = [];
const services: Record<string, any> = {};
const isExternalLlm = assistant.configMode === 'dify' || assistant.configMode === 'fastgpt';
const knowledgeBaseId = String(assistant.knowledgeBaseId || '').trim();
const knowledge = knowledgeBaseId
? { enabled: true, kbId: knowledgeBaseId, nResults: 5 }
: { enabled: false };
if (isExternalLlm) {
services.llm = {
@@ -1541,6 +1556,8 @@ export const DebugDrawer: React.FC<{
sessionStartMetadata: {
systemPrompt: assistant.prompt || '',
greeting: assistant.opener || '',
knowledgeBaseId,
knowledge,
services,
history: {
assistantId: assistant.id,
@@ -1556,7 +1573,10 @@ export const DebugDrawer: React.FC<{
const fetchRuntimeMetadata = async (): Promise<Record<string, any>> => {
const localResolved = buildLocalResolvedRuntime();
setResolvedConfigView(JSON.stringify(localResolved, null, 2));
return localResolved.sessionStartMetadata;
return {
...localResolved.sessionStartMetadata,
...(sessionMetadataExtras || {}),
};
};
const closeWs = () => {
@@ -1622,6 +1642,9 @@ export const DebugDrawer: React.FC<{
}
const type = payload?.type;
if (onProtocolEvent) {
onProtocolEvent(payload);
}
if (type === 'hello.ack') {
ws.send(
JSON.stringify({