From 0f434546aa1fd6df27e4c13e517bfb588b6a078e Mon Sep 17 00:00:00 2001 From: MarkLo Date: Sun, 21 Dec 2025 02:00:38 +0800 Subject: [PATCH] --- frontend/components/analysis/AnalysisForm.tsx | 337 ++++++++++++++---- frontend/pnpm-lock.yaml | 8 +- frontend/public/logos/huggingface-color.svg | 1 + llm_logo/huggingface-color.svg | 1 + 4 files changed, 279 insertions(+), 68 deletions(-) create mode 100644 frontend/public/logos/huggingface-color.svg create mode 100644 llm_logo/huggingface-color.svg diff --git a/frontend/components/analysis/AnalysisForm.tsx b/frontend/components/analysis/AnalysisForm.tsx index 5c7da812..02ddc9d4 100644 --- a/frontend/components/analysis/AnalysisForm.tsx +++ b/frontend/components/analysis/AnalysisForm.tsx @@ -11,6 +11,7 @@ import { format } from "date-fns"; import { CheckIcon } from "lucide-react"; import { getApiSettingsAsync } from "@/lib/storage"; import { getBaseUrlForModel, getApiKeyForModel } from "@/lib/api-helpers"; +import Image from "next/image"; import { cn } from "@/lib/utils"; @@ -520,96 +521,194 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) { {/* OpenAI */} - OpenAI: GPT-5.2 +
+ OpenAI + GPT-5.2 +
- OpenAI: GPT-5.1 +
+ OpenAI + GPT-5.1 +
- OpenAI: GPT-5 Mini +
+ OpenAI + GPT-5 Mini +
- OpenAI: GPT-5 Nano +
+ OpenAI + GPT-5 Nano +
- OpenAI: GPT-4.1 Mini +
+ OpenAI + GPT-4.1 Mini +
- OpenAI: GPT-4.1 Nano +
+ OpenAI + GPT-4.1 Nano +
- OpenAI: o4-mini +
+ OpenAI + o4-mini +
{/* Anthropic (Official model IDs) */} - Anthropic: Claude Sonnet 4.5 +
+ Claude + Claude Sonnet 4.5 +
- Anthropic: Claude Haiku 4.5 +
+ Claude + Claude Haiku 4.5 +
- Anthropic: Claude Sonnet 4 +
+ Claude + Claude Sonnet 4 +
- Anthropic: Claude 3.7 Sonnet +
+ Claude + Claude 3.7 Sonnet +
- Anthropic: Claude 3.5 Haiku +
+ Claude + Claude 3.5 Haiku +
- Anthropic: Claude 3 Haiku +
+ Claude + Claude 3 Haiku +
{/* Google */} - Google: Gemini 2.5 Pro +
+ Gemini + Gemini 2.5 Pro +
- Google: Gemini 2.5 Flash +
+ Gemini + Gemini 2.5 Flash +
- Google: Gemini 2.5 Flash Lite +
+ Gemini + Gemini 2.5 Flash Lite +
- Google: Gemini 2.0 Flash +
+ Gemini + Gemini 2.0 Flash +
- Google: Gemini 2.0 Flash Lite +
+ Gemini + Gemini 2.0 Flash Lite +
{/* Grok */} - Grok: 4.1 Fast Reasoning +
+ Grok + Grok 4.1 Fast Reasoning +
- Grok: 4.1 Fast Non Reasoning +
+ Grok + Grok 4.1 Fast Non Reasoning +
- Grok: 4 Fast Reasoning +
+ Grok + Grok 4 Fast Reasoning +
- Grok: 4 Fast Non Reasoning +
+ Grok + Grok 4 Fast Non Reasoning +
+
+ +
+ Grok + Grok 4 +
+
+ +
+ Grok + Grok 3 +
- Grok: 4 - Grok: 3 - Grok: 3 Mini +
+ Grok + Grok 3 Mini +
{/* DeepSeek */} - DeepSeek: Reasoner +
+ DeepSeek + DeepSeek Reasoner +
- DeepSeek: Chat +
+ DeepSeek + DeepSeek Chat +
{/* Qwen */} - Qwen: 3 Max - Qwen: Plus + +
+ Qwen + Qwen 3 Max +
+
+ +
+ Qwen + Qwen Plus +
+
- Qwen: Flash +
+ Qwen + Qwen Flash +
{/* Custom Model */} @@ -662,96 +761,194 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) { {/* OpenAI */} - OpenAI: GPT-5.2 +
+ OpenAI + GPT-5.2 +
- OpenAI: GPT-5.1 +
+ OpenAI + GPT-5.1 +
- OpenAI: GPT-5 Mini +
+ OpenAI + GPT-5 Mini +
- OpenAI: GPT-5 Nano +
+ OpenAI + GPT-5 Nano +
- OpenAI: GPT-4.1 Mini +
+ OpenAI + GPT-4.1 Mini +
- OpenAI: GPT-4.1 Nano +
+ OpenAI + GPT-4.1 Nano +
- OpenAI: o4-mini +
+ OpenAI + o4-mini +
{/* Anthropic (Official model IDs) */} - Anthropic: Claude Sonnet 4.5 +
+ Claude + Claude Sonnet 4.5 +
- Anthropic: Claude Haiku 4.5 +
+ Claude + Claude Haiku 4.5 +
- Anthropic: Claude Sonnet 4 +
+ Claude + Claude Sonnet 4 +
- Anthropic: Claude 3.7 Sonnet +
+ Claude + Claude 3.7 Sonnet +
- Anthropic: Claude 3.5 Haiku +
+ Claude + Claude 3.5 Haiku +
- Anthropic: Claude 3 Haiku +
+ Claude + Claude 3 Haiku +
{/* Google */} - Google: Gemini 2.5 Pro +
+ Gemini + Gemini 2.5 Pro +
- Google: Gemini 2.5 Flash +
+ Gemini + Gemini 2.5 Flash +
- Google: Gemini 2.5 Flash Lite +
+ Gemini + Gemini 2.5 Flash Lite +
- Google: Gemini 2.0 Flash +
+ Gemini + Gemini 2.0 Flash +
- Google: Gemini 2.0 Flash Lite +
+ Gemini + Gemini 2.0 Flash Lite +
{/* Grok */} - Grok: 4.1 Fast Reasoning +
+ Grok + Grok 4.1 Fast Reasoning +
- Grok: 4.1 Fast Non Reasoning +
+ Grok + Grok 4.1 Fast Non Reasoning +
- Grok: 4 Fast Reasoning +
+ Grok + Grok 4 Fast Reasoning +
- Grok: 4 Fast Non Reasoning +
+ Grok + Grok 4 Fast Non Reasoning +
+
+ +
+ Grok + Grok 4 +
+
+ +
+ Grok + Grok 3 +
- Grok: 4 - Grok: 3 - Grok: 3 Mini +
+ Grok + Grok 3 Mini +
{/* DeepSeek */} - DeepSeek: Reasoner +
+ DeepSeek + DeepSeek Reasoner +
- DeepSeek: Chat +
+ DeepSeek + DeepSeek Chat +
{/* Qwen */} - Qwen: 3 Max - Qwen: Plus + +
+ Qwen + Qwen 3 Max +
+
+ +
+ Qwen + Qwen Plus +
+
- Qwen: Flash +
+ Qwen + Qwen Flash +
{/* Custom Model */} @@ -805,18 +1002,30 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) { {/* 本地開源模型 (不需要 API Key) */} - 🖥️:all-MiniLM-L6-v2 +
+ HuggingFace + all-MiniLM-L6-v2 +
- 🖥️:all-mpnet-base-v2 +
+ HuggingFace + all-mpnet-base-v2 +
{/* OpenAI API 模型 (需要 API Key) */} - ☁️:text-embedding-3-small +
+ OpenAI + text-embedding-3-small +
- ☁️:text-embedding-3-large +
+ OpenAI + text-embedding-3-large +
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 910a2071..d2e70602 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1940,8 +1940,8 @@ packages: immer@10.2.0: resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} - immer@11.0.1: - resolution: {integrity: sha512-naDCyggtcBWANtIrjQEajhhBEuL9b0Zg4zmlWK2CzS6xCWSE39/vvf4LqnMjUAWHBhot4m9MHCM/Z+mfWhUkiA==} + immer@11.1.0: + resolution: {integrity: sha512-dlzb07f5LDY+tzs+iLCSXV2yuhaYfezqyZQc+n6baLECWkOMEWxkECAOnXL0ba7lsA25fM9b2jtzpu/uxo1a7g==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -3789,7 +3789,7 @@ snapshots: dependencies: '@standard-schema/spec': 1.1.0 '@standard-schema/utils': 0.3.0 - immer: 11.0.1 + immer: 11.1.0 redux: 5.0.1 redux-thunk: 3.1.0(redux@5.0.1) reselect: 5.1.1 @@ -4990,7 +4990,7 @@ snapshots: immer@10.2.0: {} - immer@11.0.1: {} + immer@11.1.0: {} import-fresh@3.3.1: dependencies: diff --git a/frontend/public/logos/huggingface-color.svg b/frontend/public/logos/huggingface-color.svg new file mode 100644 index 00000000..dc1cf3ff --- /dev/null +++ b/frontend/public/logos/huggingface-color.svg @@ -0,0 +1 @@ +HuggingFace \ No newline at end of file diff --git a/llm_logo/huggingface-color.svg b/llm_logo/huggingface-color.svg new file mode 100644 index 00000000..dc1cf3ff --- /dev/null +++ b/llm_logo/huggingface-color.svg @@ -0,0 +1 @@ +HuggingFace \ No newline at end of file