app / src /components /settings /AdvancedThinking.tsx
AZILS's picture
Upload 323 files
a21c316 verified
import { useTranslation } from "react-i18next";
import { BrainCircuit } from "lucide-react";
import { ProxyConfig } from "../../types/config";
import ThinkingBudget from "./ThinkingBudget";
import GlobalSystemPrompt from "./GlobalSystemPrompt";
import ImageThinkingMode from "./ImageThinkingMode";
interface AdvancedThinkingProps {
config: ProxyConfig;
onChange: (config: ProxyConfig) => void;
}
export default function AdvancedThinking({
config,
onChange,
}: AdvancedThinkingProps) {
const { t } = useTranslation();
return (
<div className="space-y-4">
<div className="bg-white dark:bg-base-100 rounded-xl p-4 border border-gray-100 dark:border-base-200 shadow-sm">
<div className="flex items-center gap-3 mb-4">
<div className="p-1.5 bg-indigo-50 dark:bg-indigo-900/20 rounded text-indigo-600 dark:text-indigo-400">
<BrainCircuit size={20} />
</div>
<div>
<h3 className="text-base font-bold text-gray-900 dark:text-gray-100 leading-none">
{t("settings.advanced_thinking.title", { defaultValue: "高级思维与全局配置" })}
</h3>
<p className="text-[11px] text-gray-500 dark:text-gray-400 mt-1">
{t("settings.advanced_thinking.description", { defaultValue: "集中管理思考能力、图像模式及全局指令。" })}
</p>
</div>
</div>
<div className="space-y-4 divide-y divide-gray-100 dark:divide-gray-800">
{/* 1. 思考预算 (Thinking Budget) */}
<div className="pt-0">
<ThinkingBudget
config={config.thinking_budget || { mode: 'auto', custom_value: 24576 }}
onChange={(newConfig) => onChange({ ...config, thinking_budget: newConfig })}
/>
</div>
{/* 2. 图像思维模式 (Image Thinking Mode) */}
<div className="pt-4">
<ImageThinkingMode
value={config.image_thinking_mode || 'enabled'}
onChange={(newValue) => onChange({ ...config, image_thinking_mode: newValue })}
/>
</div>
{/* 3. 全局系统提示词 (Global System Prompt) */}
<div className="pt-4">
<GlobalSystemPrompt
config={config.global_system_prompt || { enabled: false, content: '' }}
onChange={(newConfig) => onChange({ ...config, global_system_prompt: newConfig })}
/>
</div>
</div>
</div>
</div>
);
}