This commit is contained in:
MarkLo 2025-11-23 10:47:41 +08:00
parent 58521527fd
commit 6c5a505282
3 changed files with 92 additions and 8 deletions

View File

@ -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 服務。

View File

@ -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) {
<FormField
control={form.control}
name="shallow_thinking_agent"
name="quick_think_llm"
render={({ field }) => (
<FormItem>
<FormLabel></FormLabel>
@ -364,7 +364,7 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
<FormField
control={form.control}
name="deep_thinking_agent"
name="deep_think_llm"
render={({ field }) => (
<FormItem>
<FormLabel></FormLabel>

View File

@ -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;
}