From 6c5a50528252cdec23c71dff0e15a084c5c4289f Mon Sep 17 00:00:00 2001 From: MarkLo Date: Sun, 23 Nov 2025 10:47:41 +0800 Subject: [PATCH] --- docs/fix-model-parameter-mapping.md | 78 +++++++++++++++++++ frontend/components/analysis/AnalysisForm.tsx | 12 +-- frontend/lib/types.ts | 10 ++- 3 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 docs/fix-model-parameter-mapping.md diff --git a/docs/fix-model-parameter-mapping.md b/docs/fix-model-parameter-mapping.md new file mode 100644 index 00000000..995c1cd2 --- /dev/null +++ b/docs/fix-model-parameter-mapping.md @@ -0,0 +1,78 @@ +# 修復模型參數傳遞問題 + +## 問題描述 + +用戶在前端選擇了不同的模型(如 Claude、Grok 等),但後端實際調用的一直是 `gpt-5-mini-2025-08-07`。 + +## 根本原因 + +前端和後端的 API 欄位命名不一致: + +| 前端 (舊) | 後端 (預期) | +| ------------------------ | ----------------- | +| `shallow_thinking_agent` | `quick_think_llm` | +| `deep_thinking_agent` | `deep_think_llm` | + +由於欄位名稱不匹配,後端無法接收到前端發送的模型參數,因此使用了預設值 `gpt-5-mini-2025-08-07`。 + +## 修復內容 + +### 1. 更新前端類型定義 (`frontend/lib/types.ts`) + +```typescript +// 舊 +export interface AnalysisRequest { + shallow_thinking_agent?: string; + deep_thinking_agent?: string; + ... +} + +// 新 +export interface AnalysisRequest { + quick_think_llm?: string; + deep_think_llm?: string; + quick_think_base_url?: string; + deep_think_base_url?: string; + quick_think_api_key?: string; + deep_think_api_key?: string; + embedding_base_url?: string; + embedding_api_key?: string; + ... +} +``` + +### 2. 更新表單組件 (`frontend/components/analysis/AnalysisForm.tsx`) + +- 更新 `formSchema` 中的欄位定義 +- 更新 `defaultValues` 中的欄位名稱 +- 更新表單欄位的 `name` 屬性 + +## 後端參數映射 (`backend/app/models/schemas.py`) + +後端 schema 定義: + +```python +class AnalysisRequest(BaseModel): + deep_think_llm: Optional[str] = Field(default="gpt-5-mini-2025-08-07") + quick_think_llm: Optional[str] = Field(default="gpt-5-mini-2025-08-07") + quick_think_base_url: Optional[str] = Field(default="https://api.openai.com/v1") + deep_think_base_url: Optional[str] = Field(default="https://api.openai.com/v1") + quick_think_api_key: Optional[str] = None + deep_think_api_key: Optional[str] = None + embedding_base_url: Optional[str] = Field(default="https://api.openai.com/v1") + embedding_api_key: Optional[str] = None +``` + +## 驗證 + +修復後,前端發送的請求應該正確包含: + +- `quick_think_llm`: 用戶選擇的快速思維模型 +- `deep_think_llm`: 用戶選擇的深層思維模型 +- 對應的 Base URL 和 API Key + +後端現在能正確接收並使用這些參數。 + +## 額外修正 + +同時移除了 Google Gemini 的 API 端點選項,因為項目不再使用 Gemini 服務。 diff --git a/frontend/components/analysis/AnalysisForm.tsx b/frontend/components/analysis/AnalysisForm.tsx index 274f8d39..994c4200 100644 --- a/frontend/components/analysis/AnalysisForm.tsx +++ b/frontend/components/analysis/AnalysisForm.tsx @@ -44,8 +44,8 @@ const formSchema = z.object({ .regex(/^\d{4}-\d{2}-\d{2}$/, "日期格式必須為 YYYY-MM-DD"), analysts: z.array(z.string()).min(1, "請至少選擇一位分析師"), research_depth: z.number().int().min(1).max(5), - shallow_thinking_agent: z.string().min(1, "請選擇快速思維模型"), - deep_thinking_agent: z.string().min(1, "請選擇深層思維模型"), + quick_think_llm: z.string().min(1, "請選擇快速思維模型"), + deep_think_llm: z.string().min(1, "請選擇深層思維模型"), // API Configuration quick_think_base_url: z @@ -89,8 +89,8 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) { analysis_date: format(new Date(), "yyyy-MM-dd"), analysts: ["market", "social", "news", "fundamentals"], // 預設全選 research_depth: 3, // 預設中等層級 - shallow_thinking_agent: "gpt-5-mini-2025-08-07", - deep_thinking_agent: "gpt-5-mini-2025-08-07", + quick_think_llm: "gpt-5-mini-2025-08-07", + deep_think_llm: "gpt-5-mini-2025-08-07", quick_think_base_url: "https://api.openai.com/v1", deep_think_base_url: "https://api.openai.com/v1", quick_think_api_key: "", @@ -273,7 +273,7 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) { ( 快速思維模型 @@ -364,7 +364,7 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) { ( 深層思維模型 diff --git a/frontend/lib/types.ts b/frontend/lib/types.ts index 607a67a6..d684fc80 100644 --- a/frontend/lib/types.ts +++ b/frontend/lib/types.ts @@ -7,12 +7,18 @@ export interface AnalysisRequest { analysis_date: string; analysts?: string[]; research_depth?: number; - shallow_thinking_agent?: string; - deep_thinking_agent?: string; + quick_think_llm?: string; + deep_think_llm?: string; // API Configuration openai_api_key?: string; openai_base_url?: string; + quick_think_base_url?: string; + deep_think_base_url?: string; + quick_think_api_key?: string; + deep_think_api_key?: string; + embedding_base_url?: string; + embedding_api_key?: string; alpha_vantage_api_key?: string; }