This commit is contained in:
MarkLo 2025-12-11 00:37:19 +08:00
parent 138cd922c6
commit a51b31dc21
8 changed files with 64 additions and 64 deletions

View File

@ -476,7 +476,7 @@ docker compose down -v
**配置示例:** **配置示例:**
``` ```
快速思維模型: gpt-5-mini-2025-08-07 快速思維模型: gpt-5-mini
快速思維 Base URL: https://api.openai.com/v1 快速思維 Base URL: https://api.openai.com/v1
快速思維 API Key: sk-your-openai-key 快速思維 API Key: sk-your-openai-key
@ -566,7 +566,7 @@ curl -X POST http://localhost:8000/api/analyze \
"analysis_date": "2024-01-15", "analysis_date": "2024-01-15",
"research_depth": 2, "research_depth": 2,
"deep_think_llm": "claude-sonnet-4-5", "deep_think_llm": "claude-sonnet-4-5",
"quick_think_llm": "gpt-5-mini-2025-08-07", "quick_think_llm": "gpt-5-mini",
"analysts": ["market", "sentiment", "news", "fundamental"], "analysts": ["market", "sentiment", "news", "fundamental"],
"quick_think_base_url": "https://api.openai.com/v1", "quick_think_base_url": "https://api.openai.com/v1",
"deep_think_base_url": "https://api.anthropic.com/v1", "deep_think_base_url": "https://api.anthropic.com/v1",

View File

@ -33,8 +33,8 @@ class Settings(BaseSettings):
results_dir: str = "./results" results_dir: str = "./results"
max_debate_rounds: int = 1 max_debate_rounds: int = 1
max_risk_discuss_rounds: int = 1 max_risk_discuss_rounds: int = 1
deep_think_llm: str = "gpt-5-mini-2025-08-07" deep_think_llm: str = "gpt-5-mini"
quick_think_llm: str = "gpt-5-mini-2025-08-07" quick_think_llm: str = "gpt-5-mini"
class Config: class Config:
env_file = ".env" env_file = ".env"

View File

@ -15,8 +15,8 @@ class AnalysisRequest(BaseModel):
description="List of analysts to include in analysis" description="List of analysts to include in analysis"
) )
research_depth: Optional[int] = Field(default=1, ge=1, le=5, description="Research depth (1-5)") research_depth: Optional[int] = Field(default=1, ge=1, le=5, description="Research depth (1-5)")
deep_think_llm: Optional[str] = Field(default="gpt-5-mini-2025-08-07", description="Deep thinking LLM model") deep_think_llm: Optional[str] = Field(default="gpt-5-mini", description="Deep thinking LLM model")
quick_think_llm: Optional[str] = Field(default="gpt-5-mini-2025-08-07", description="Quick thinking LLM model") quick_think_llm: Optional[str] = Field(default="gpt-5-mini", description="Quick thinking LLM model")
# API Configuration # API Configuration
openai_api_key: Optional[str] = Field(None, description="OpenAI API Key (optional if set on server)", min_length=0) openai_api_key: Optional[str] = Field(None, description="OpenAI API Key (optional if set on server)", min_length=0)

View File

@ -26,8 +26,8 @@ class TradingService:
def create_config( def create_config(
self, self,
research_depth: int = 1, research_depth: int = 1,
deep_think_llm: str = "gpt-5-mini-2025-08-07", deep_think_llm: str = "gpt-5-mini",
quick_think_llm: str = "gpt-5-mini-2025-08-07", quick_think_llm: str = "gpt-5-mini",
) -> Dict[str, Any]: ) -> Dict[str, Any]:
"""Create configuration for TradingAgentsX""" """Create configuration for TradingAgentsX"""
config = self.default_config.copy() config = self.default_config.copy()
@ -53,8 +53,8 @@ class TradingService:
alpha_vantage_api_key: Optional[str] = None, alpha_vantage_api_key: Optional[str] = None,
analysts: Optional[List[str]] = None, analysts: Optional[List[str]] = None,
research_depth: int = 1, research_depth: int = 1,
deep_think_llm: str = "gpt-5-mini-2025-08-07", deep_think_llm: str = "gpt-5-mini",
quick_think_llm: str = "gpt-5-mini-2025-08-07", quick_think_llm: str = "gpt-5-mini",
) -> Dict[str, Any]: ) -> Dict[str, Any]:
""" """
Run trading analysis for a given ticker and date with user-provided API keys Run trading analysis for a given ticker and date with user-provided API keys
@ -260,18 +260,18 @@ class TradingService:
"""Get list of available OpenAI LLM models""" """Get list of available OpenAI LLM models"""
return [ return [
# OpenAI # OpenAI
"gpt-5.1-2025-11-13", "gpt-5.1",
"gpt-5-mini-2025-08-07", "gpt-5-mini",
"gpt-5-nano-2025-08-07", "gpt-5-nano",
"gpt-4.1-mini", "gpt-4.1-mini",
"gpt-4.1-nano", "gpt-4.1-nano",
"o4-mini-2025-04-16", "o4-mini",
# Anthropic (Official model IDs) # Anthropic (Official model IDs)
"claude-sonnet-4-5-20250929", "claude-sonnet-4-5",
"claude-haiku-4-5-20250929", "claude-haiku-4-5",
"claude-sonnet-4-20250514", "claude-sonnet-4-0",
"claude-3-5-sonnet-20241022", "claude-3-7-sonnet-latest",
"claude-3-5-haiku-20241022", "claude-3-5-haiku-latest",
"claude-3-haiku-20240307", "claude-3-haiku-20240307",
# Google # Google
"gemini-2.5-pro", "gemini-2.5-pro",
@ -300,8 +300,8 @@ class TradingService:
"""Get default configuration""" """Get default configuration"""
return { return {
"research_depth": 1, "research_depth": 1,
"deep_think_llm": "gpt-5-mini-2025-08-07", "deep_think_llm": "gpt-5-mini",
"quick_think_llm": "gpt-5-mini-2025-08-07", "quick_think_llm": "gpt-5-mini",
"max_debate_rounds": 1, "max_debate_rounds": 1,
"max_risk_discuss_rounds": 1, "max_risk_discuss_rounds": 1,
} }

View File

@ -187,19 +187,19 @@ def select_shallow_thinking_agent(provider=None) -> str:
# 定義不同供應商的淺層思維 LLM 引擎選項 # 定義不同供應商的淺層思維 LLM 引擎選項
SHALLOW_AGENT_OPTIONS = { SHALLOW_AGENT_OPTIONS = {
"OpenAI": [ "OpenAI": [
("GPT-5.1", "gpt-5.1-2025-11-13"), ("GPT-5.1", "gpt-5.1"),
("GPT-5-mini","gpt-5-mini-2025-08-07"), ("GPT-5-mini","gpt-5-mini"),
("GPT-5-nano","gpt-5-nano-2025-08-07"), ("GPT-5-nano","gpt-5-nano"),
("GPT-4.1-mini", "gpt-4.1-mini"), ("GPT-4.1-mini", "gpt-4.1-mini"),
("GPT-4.1-nano", "gpt-4.1-nano"), ("GPT-4.1-nano", "gpt-4.1-nano"),
("o4-mini", "o4-mini-2025-04-16"), ("o4-mini", "o4-mini"),
], ],
"Anthropic": [ "Anthropic": [
("Claude Sonnet 4.5", "claude-sonnet-4-5-20250929"), ("Claude Sonnet 4.5", "claude-sonnet-4-5"),
("Claude Haiku 4.5", "claude-haiku-4-5-20250929"), ("Claude Haiku 4.5", "claude-haiku-4-5"),
("Claude Sonnet 4", "claude-sonnet-4-20250514"), ("Claude Sonnet 4", "claude-sonnet-4-0"),
("Claude 3.5 Sonnet", "claude-3-5-sonnet-20241022"), ("Claude 3.5 Sonnet", "claude-3-7-sonnet-latest"),
("Claude 3.5 Haiku", "claude-3-5-haiku-20241022"), ("Claude 3.5 Haiku", "claude-3-5-haiku-latest"),
("Claude 3 Haiku", "claude-3-haiku-20240307"), ("Claude 3 Haiku", "claude-3-haiku-20240307"),
], ],
"Google": [ "Google": [
@ -312,19 +312,19 @@ def select_deep_thinking_agent(provider=None) -> str:
# 定義不同供應商的深層思維 LLM 引擎選項 # 定義不同供應商的深層思維 LLM 引擎選項
DEEP_AGENT_OPTIONS = { DEEP_AGENT_OPTIONS = {
"OpenAI": [ "OpenAI": [
("GPT-5.1", "gpt-5.1-2025-11-13"), ("GPT-5.1", "gpt-5.1"),
("GPT-5-mini","gpt-5-mini-2025-08-07"), ("GPT-5-mini","gpt-5-mini"),
("GPT-5-nano","gpt-5-nano-2025-08-07"), ("GPT-5-nano","gpt-5-nano"),
("GPT-4.1-mini", "gpt-4.1-mini"), ("GPT-4.1-mini", "gpt-4.1-mini"),
("GPT-4.1-nano", "gpt-4.1-nano"), ("GPT-4.1-nano", "gpt-4.1-nano"),
("o4-mini", "o4-mini-2025-04-16"), ("o4-mini", "o4-mini"),
], ],
"Anthropic": [ "Anthropic": [
("Claude Sonnet 4.5", "claude-sonnet-4-5-20250929"), ("Claude Sonnet 4.5", "claude-sonnet-4-5"),
("Claude Haiku 4.5", "claude-haiku-4-5-20250929"), ("Claude Haiku 4.5", "claude-haiku-4-5"),
("Claude Sonnet 4", "claude-sonnet-4-20250514"), ("Claude Sonnet 4", "claude-sonnet-4-0"),
("Claude 3.5 Sonnet", "claude-3-5-sonnet-20241022"), ("Claude 3.5 Sonnet", "claude-3-7-sonnet-latest"),
("Claude 3.5 Haiku", "claude-3-5-haiku-20241022"), ("Claude 3.5 Haiku", "claude-3-5-haiku-latest"),
("Claude 3 Haiku", "claude-3-haiku-20240307"), ("Claude 3 Haiku", "claude-3-haiku-20240307"),
], ],
"Google": [ "Google": [

View File

@ -4,7 +4,7 @@
"use client"; "use client";
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import { useForm } from "react-hook-form"; import { useForm, ControllerRenderProps } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod"; import { zodResolver } from "@hookform/resolvers/zod";
import * as z from "zod"; import * as z from "zod";
import { format } from "date-fns"; import { format } from "date-fns";
@ -99,8 +99,8 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
analysis_date: format(new Date(), "yyyy-MM-dd"), analysis_date: format(new Date(), "yyyy-MM-dd"),
analysts: ["market", "social", "news", "fundamentals"], // 預設全選 analysts: ["market", "social", "news", "fundamentals"], // 預設全選
research_depth: 3, // 預設中等層級 research_depth: 3, // 預設中等層級
quick_think_llm: "gpt-5-mini-2025-08-07", quick_think_llm: "gpt-5-mini",
deep_think_llm: "gpt-5-mini-2025-08-07", deep_think_llm: "gpt-5-mini",
custom_quick_think_model: "", custom_quick_think_model: "",
custom_deep_think_model: "", custom_deep_think_model: "",
quick_think_base_url: "https://api.openai.com/v1", quick_think_base_url: "https://api.openai.com/v1",
@ -366,13 +366,13 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
</FormControl> </FormControl>
<SelectContent> <SelectContent>
{/* OpenAI */} {/* OpenAI */}
<SelectItem value="gpt-5.1-2025-11-13"> <SelectItem value="gpt-5.1">
OpenAI: GPT-5.1 OpenAI: GPT-5.1
</SelectItem> </SelectItem>
<SelectItem value="gpt-5-mini-2025-08-07"> <SelectItem value="gpt-5-mini">
OpenAI: GPT-5 Mini OpenAI: GPT-5 Mini
</SelectItem> </SelectItem>
<SelectItem value="gpt-5-nano-2025-08-07"> <SelectItem value="gpt-5-nano">
OpenAI: GPT-5 Nano OpenAI: GPT-5 Nano
</SelectItem> </SelectItem>
<SelectItem value="gpt-4.1-mini"> <SelectItem value="gpt-4.1-mini">
@ -381,24 +381,24 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
<SelectItem value="gpt-4.1-nano"> <SelectItem value="gpt-4.1-nano">
OpenAI: GPT-4.1 Nano OpenAI: GPT-4.1 Nano
</SelectItem> </SelectItem>
<SelectItem value="o4-mini-2025-04-16"> <SelectItem value="o4-mini">
OpenAI: o4-mini OpenAI: o4-mini
</SelectItem> </SelectItem>
{/* Anthropic (Official model IDs) */} {/* Anthropic (Official model IDs) */}
<SelectItem value="claude-sonnet-4-5-20250929"> <SelectItem value="claude-sonnet-4-5">
Anthropic: Claude Sonnet 4.5 Anthropic: Claude Sonnet 4.5
</SelectItem> </SelectItem>
<SelectItem value="claude-haiku-4-5-20250929"> <SelectItem value="claude-haiku-4-5">
Anthropic: Claude Haiku 4.5 Anthropic: Claude Haiku 4.5
</SelectItem> </SelectItem>
<SelectItem value="claude-sonnet-4-20250514"> <SelectItem value="claude-sonnet-4-0">
Anthropic: Claude Sonnet 4 Anthropic: Claude Sonnet 4
</SelectItem> </SelectItem>
<SelectItem value="claude-3-5-sonnet-20241022"> <SelectItem value="claude-3-7-sonnet-latest">
Anthropic: Claude 3.5 Sonnet Anthropic: Claude 3.5 Sonnet
</SelectItem> </SelectItem>
<SelectItem value="claude-3-5-haiku-20241022"> <SelectItem value="claude-3-5-haiku-latest">
Anthropic: Claude 3.5 Haiku Anthropic: Claude 3.5 Haiku
</SelectItem> </SelectItem>
<SelectItem value="claude-3-haiku-20240307"> <SelectItem value="claude-3-haiku-20240307">
@ -508,13 +508,13 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
</FormControl> </FormControl>
<SelectContent> <SelectContent>
{/* OpenAI */} {/* OpenAI */}
<SelectItem value="gpt-5.1-2025-11-13"> <SelectItem value="gpt-5.1">
OpenAI: GPT-5.1 OpenAI: GPT-5.1
</SelectItem> </SelectItem>
<SelectItem value="gpt-5-mini-2025-08-07"> <SelectItem value="gpt-5-mini">
OpenAI: GPT-5 Mini OpenAI: GPT-5 Mini
</SelectItem> </SelectItem>
<SelectItem value="gpt-5-nano-2025-08-07"> <SelectItem value="gpt-5-nano">
OpenAI: GPT-5 Nano OpenAI: GPT-5 Nano
</SelectItem> </SelectItem>
<SelectItem value="gpt-4.1-mini"> <SelectItem value="gpt-4.1-mini">
@ -523,24 +523,24 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
<SelectItem value="gpt-4.1-nano"> <SelectItem value="gpt-4.1-nano">
OpenAI: GPT-4.1 Nano OpenAI: GPT-4.1 Nano
</SelectItem> </SelectItem>
<SelectItem value="o4-mini-2025-04-16"> <SelectItem value="o4-mini">
OpenAI: o4-mini OpenAI: o4-mini
</SelectItem> </SelectItem>
{/* Anthropic (Official model IDs) */} {/* Anthropic (Official model IDs) */}
<SelectItem value="claude-sonnet-4-5-20250929"> <SelectItem value="claude-sonnet-4-5">
Anthropic: Claude Sonnet 4.5 Anthropic: Claude Sonnet 4.5
</SelectItem> </SelectItem>
<SelectItem value="claude-haiku-4-5-20250929"> <SelectItem value="claude-haiku-4-5">
Anthropic: Claude Haiku 4.5 Anthropic: Claude Haiku 4.5
</SelectItem> </SelectItem>
<SelectItem value="claude-sonnet-4-20250514"> <SelectItem value="claude-sonnet-4-0">
Anthropic: Claude Sonnet 4 Anthropic: Claude Sonnet 4
</SelectItem> </SelectItem>
<SelectItem value="claude-3-5-sonnet-20241022"> <SelectItem value="claude-3-7-sonnet-latest">
Anthropic: Claude 3.5 Sonnet Anthropic: Claude 3.5 Sonnet
</SelectItem> </SelectItem>
<SelectItem value="claude-3-5-haiku-20241022"> <SelectItem value="claude-3-5-haiku-latest">
Anthropic: Claude 3.5 Haiku Anthropic: Claude 3.5 Haiku
</SelectItem> </SelectItem>
<SelectItem value="claude-3-haiku-20240307"> <SelectItem value="claude-3-haiku-20240307">

View File

@ -8,8 +8,8 @@ load_dotenv(override=True)
# 建立自訂設定 # 建立自訂設定
config = DEFAULT_CONFIG.copy() config = DEFAULT_CONFIG.copy()
config["deep_think_llm"] = "gpt-5-mini-2025-08-07" # 使用不同的模型 config["deep_think_llm"] = "gpt-5-mini" # 使用不同的模型
config["quick_think_llm"] = "gpt-5-mini-2025-08-07" # 使用不同的模型 config["quick_think_llm"] = "gpt-5-mini" # 使用不同的模型
config["max_debate_rounds"] = 1 # 增加辯論回合 config["max_debate_rounds"] = 1 # 增加辯論回合
# 設定資料供應商 (預設使用 yfinance 和 alpha_vantage) # 設定資料供應商 (預設使用 yfinance 和 alpha_vantage)

View File

@ -10,8 +10,8 @@ DEFAULT_CONFIG = {
)), )),
# LLM 設定 # LLM 設定
"llm_provider": "openai", "llm_provider": "openai",
"deep_think_llm": "gpt-5-mini-2025-08-07", "deep_think_llm": "gpt-5-mini",
"quick_think_llm": "gpt-5-mini-2025-08-07", "quick_think_llm": "gpt-5-mini",
"backend_url": "https://api.openai.com/v1", "backend_url": "https://api.openai.com/v1",
# 辯論與討論設定 # 辯論與討論設定
"max_debate_rounds": 1, "max_debate_rounds": 1,