"use client"; import { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { fetchPublicAIModels, type AIConfig } from "@/features/agent/services/aiConfigApi"; export type ChatModeType = "human" | "ai" | "image"; interface ChatModeSelectorProps { onSelect: (mode: ChatModeType, aiConfigId?: number) => void; loading?: boolean; } export function ChatModeSelector({ onSelect, loading }: ChatModeSelectorProps) { const [aiModels, setAiModels] = useState([]); const [imageModels, setImageModels] = useState([]); const [loadingModels, setLoadingModels] = useState(true); const [selectedAIModel, setSelectedAIModel] = useState(null); const [selectedImageModel, setSelectedImageModel] = useState(null); // 加载开放的 AI(文本)与生图模型列表 useEffect(() => { async function loadModels() { try { const [textModels, imgModels] = await Promise.all([ fetchPublicAIModels("text"), fetchPublicAIModels("image"), ]); setAiModels(textModels); setImageModels(imgModels); if (textModels.length > 0) setSelectedAIModel(textModels[0].id); if (imgModels.length > 0) setSelectedImageModel(imgModels[0].id); } catch (error) { console.error("加载模型列表失败:", error); } finally { setLoadingModels(false); } } loadModels(); }, []); const handleSelectHuman = () => onSelect("human"); const handleSelectAI = () => { if (selectedAIModel) onSelect("ai", selectedAIModel); else if (aiModels.length > 0) onSelect("ai", aiModels[0].id); }; const handleSelectImage = () => { if (selectedImageModel) onSelect("image", selectedImageModel); else if (imageModels.length > 0) onSelect("image", imageModels[0].id); }; return (

欢迎使用客服系统

请选择您需要的服务方式

{/* 人工客服 */}

人工客服

由专业客服人员为您提供一对一服务

{/* AI 客服 */}

AI 客服

智能 AI 助手,24 小时在线为您服务

{loadingModels ? (
加载模型中...
) : aiModels.length === 0 ? (
暂无可用的 AI 模型
) : ( <> )}
{/* 生图绘画 */}

生图绘画

通过对话描述,AI 生成图片

{loadingModels ? (
加载模型中...
) : imageModels.length === 0 ? (
暂无可用的生图模型
) : ( <> )}
); }