Fetch llm from db
This commit is contained in:
@@ -2,9 +2,8 @@
|
|||||||
import React, { useState, useEffect, useRef } from 'react';
|
import React, { useState, useEffect, useRef } from 'react';
|
||||||
import { Plus, Search, Play, Copy, Trash2, Edit2, Mic, MessageSquare, Save, Video, PhoneOff, Camera, ArrowLeftRight, Send, Phone, MoreHorizontal, Rocket, AlertTriangle, PhoneCall, CameraOff, Image, Images, CloudSun, Calendar, TrendingUp, Coins, Wrench, Globe, Terminal, X, ClipboardCheck, Sparkles, Volume2, Timer, ChevronDown, Link as LinkIcon, Database, Server, Zap, ExternalLink, Key, BrainCircuit, Ear, Book, Filter } from 'lucide-react';
|
import { Plus, Search, Play, Copy, Trash2, Edit2, Mic, MessageSquare, Save, Video, PhoneOff, Camera, ArrowLeftRight, Send, Phone, MoreHorizontal, Rocket, AlertTriangle, PhoneCall, CameraOff, Image, Images, CloudSun, Calendar, TrendingUp, Coins, Wrench, Globe, Terminal, X, ClipboardCheck, Sparkles, Volume2, Timer, ChevronDown, Link as LinkIcon, Database, Server, Zap, ExternalLink, Key, BrainCircuit, Ear, Book, Filter } from 'lucide-react';
|
||||||
import { Button, Input, Card, Badge, Drawer, Dialog } from '../components/UI';
|
import { Button, Input, Card, Badge, Drawer, Dialog } from '../components/UI';
|
||||||
import { mockLLMModels, mockASRModels } from '../services/mockData';
|
import { ASRModel, Assistant, KnowledgeBase, LLMModel, TabValue, Voice } from '../types';
|
||||||
import { Assistant, KnowledgeBase, TabValue, Voice } from '../types';
|
import { createAssistant, deleteAssistant, fetchASRModels, fetchAssistantRuntimeConfig, fetchAssistants, fetchKnowledgeBases, fetchLLMModels, fetchVoices, updateAssistant as updateAssistantApi } from '../services/backendApi';
|
||||||
import { createAssistant, deleteAssistant, fetchAssistantRuntimeConfig, fetchAssistants, fetchKnowledgeBases, fetchVoices, updateAssistant as updateAssistantApi } from '../services/backendApi';
|
|
||||||
|
|
||||||
interface ToolItem {
|
interface ToolItem {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -19,6 +18,8 @@ export const AssistantsPage: React.FC = () => {
|
|||||||
const [assistants, setAssistants] = useState<Assistant[]>([]);
|
const [assistants, setAssistants] = useState<Assistant[]>([]);
|
||||||
const [voices, setVoices] = useState<Voice[]>([]);
|
const [voices, setVoices] = useState<Voice[]>([]);
|
||||||
const [knowledgeBases, setKnowledgeBases] = useState<KnowledgeBase[]>([]);
|
const [knowledgeBases, setKnowledgeBases] = useState<KnowledgeBase[]>([]);
|
||||||
|
const [llmModels, setLlmModels] = useState<LLMModel[]>([]);
|
||||||
|
const [asrModels, setAsrModels] = useState<ASRModel[]>([]);
|
||||||
const [searchTerm, setSearchTerm] = useState('');
|
const [searchTerm, setSearchTerm] = useState('');
|
||||||
const [selectedId, setSelectedId] = useState<string | null>(null);
|
const [selectedId, setSelectedId] = useState<string | null>(null);
|
||||||
const [activeTab, setActiveTab] = useState<TabValue>(TabValue.GLOBAL);
|
const [activeTab, setActiveTab] = useState<TabValue>(TabValue.GLOBAL);
|
||||||
@@ -54,14 +55,18 @@ export const AssistantsPage: React.FC = () => {
|
|||||||
const loadInitialData = async () => {
|
const loadInitialData = async () => {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
try {
|
try {
|
||||||
const [assistantList, voiceList, kbList] = await Promise.all([
|
const [assistantList, voiceList, kbList, llmList, asrList] = await Promise.all([
|
||||||
fetchAssistants(),
|
fetchAssistants(),
|
||||||
fetchVoices(),
|
fetchVoices(),
|
||||||
fetchKnowledgeBases(),
|
fetchKnowledgeBases(),
|
||||||
|
fetchLLMModels(),
|
||||||
|
fetchASRModels(),
|
||||||
]);
|
]);
|
||||||
setAssistants(assistantList);
|
setAssistants(assistantList);
|
||||||
setVoices(voiceList);
|
setVoices(voiceList);
|
||||||
setKnowledgeBases(kbList);
|
setKnowledgeBases(kbList);
|
||||||
|
setLlmModels(llmList);
|
||||||
|
setAsrModels(asrList);
|
||||||
if (assistantList.length > 0) {
|
if (assistantList.length > 0) {
|
||||||
setSelectedId(assistantList[0].id);
|
setSelectedId(assistantList[0].id);
|
||||||
}
|
}
|
||||||
@@ -507,7 +512,7 @@ export const AssistantsPage: React.FC = () => {
|
|||||||
onChange={(e) => updateAssistant('llmModelId', e.target.value)}
|
onChange={(e) => updateAssistant('llmModelId', e.target.value)}
|
||||||
>
|
>
|
||||||
<option value="">使用系统默认模型</option>
|
<option value="">使用系统默认模型</option>
|
||||||
{mockLLMModels.filter(m => m.type === 'text').map(model => (
|
{llmModels.filter(m => m.type === 'text').map(model => (
|
||||||
<option key={model.id} value={model.id}>{model.name} ({model.vendor})</option>
|
<option key={model.id} value={model.id}>{model.name} ({model.vendor})</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
@@ -556,7 +561,7 @@ export const AssistantsPage: React.FC = () => {
|
|||||||
onChange={(e) => updateAssistant('embeddingModelId', e.target.value)}
|
onChange={(e) => updateAssistant('embeddingModelId', e.target.value)}
|
||||||
>
|
>
|
||||||
<option value="">使用系统默认</option>
|
<option value="">使用系统默认</option>
|
||||||
{mockLLMModels.filter(m => m.type === 'embedding').map(model => (
|
{llmModels.filter(m => m.type === 'embedding').map(model => (
|
||||||
<option key={model.id} value={model.id}>{model.name} ({model.vendor})</option>
|
<option key={model.id} value={model.id}>{model.name} ({model.vendor})</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
@@ -576,7 +581,7 @@ export const AssistantsPage: React.FC = () => {
|
|||||||
onChange={(e) => updateAssistant('rerankModelId', e.target.value)}
|
onChange={(e) => updateAssistant('rerankModelId', e.target.value)}
|
||||||
>
|
>
|
||||||
<option value="">不使用重排</option>
|
<option value="">不使用重排</option>
|
||||||
{mockLLMModels.filter(m => m.type === 'rerank').map(model => (
|
{llmModels.filter(m => m.type === 'rerank').map(model => (
|
||||||
<option key={model.id} value={model.id}>{model.name} ({model.vendor})</option>
|
<option key={model.id} value={model.id}>{model.name} ({model.vendor})</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
@@ -620,7 +625,7 @@ export const AssistantsPage: React.FC = () => {
|
|||||||
onChange={(e) => updateAssistant('asrModelId', e.target.value)}
|
onChange={(e) => updateAssistant('asrModelId', e.target.value)}
|
||||||
>
|
>
|
||||||
<option value="">使用系统默认模型</option>
|
<option value="">使用系统默认模型</option>
|
||||||
{mockASRModels.map(model => (
|
{asrModels.map(model => (
|
||||||
<option key={model.id} value={model.id}>
|
<option key={model.id} value={model.id}>
|
||||||
{model.name} ({model.vendor})
|
{model.name} ({model.vendor})
|
||||||
</option>
|
</option>
|
||||||
|
|||||||
@@ -202,6 +202,10 @@ export const createAssistant = async (data: Partial<Assistant>): Promise<Assista
|
|||||||
configMode: data.configMode || 'platform',
|
configMode: data.configMode || 'platform',
|
||||||
apiUrl: data.apiUrl || '',
|
apiUrl: data.apiUrl || '',
|
||||||
apiKey: data.apiKey || '',
|
apiKey: data.apiKey || '',
|
||||||
|
llmModelId: data.llmModelId || '',
|
||||||
|
asrModelId: data.asrModelId || '',
|
||||||
|
embeddingModelId: data.embeddingModelId || '',
|
||||||
|
rerankModelId: data.rerankModelId || '',
|
||||||
};
|
};
|
||||||
const response = await apiRequest<AnyRecord>('/assistants', { method: 'POST', body: payload });
|
const response = await apiRequest<AnyRecord>('/assistants', { method: 'POST', body: payload });
|
||||||
return mapAssistant(response);
|
return mapAssistant(response);
|
||||||
|
|||||||
Reference in New Issue
Block a user