Merge branch 'dev' into fix/bug-fixes-collection-v2

This commit is contained in:
Icyoung
2025-11-05 15:56:58 +08:00
committed by GitHub
89 changed files with 12969 additions and 3915 deletions

View File

@@ -7,6 +7,8 @@ import (
"io"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
)
@@ -28,15 +30,28 @@ type Client struct {
Model string
Timeout time.Duration
UseFullURL bool // 是否使用完整URL不添加/chat/completions
MaxTokens int // AI响应的最大token数
}
func New() *Client {
// 从环境变量读取 MaxTokens默认 2000
maxTokens := 2000
if envMaxTokens := os.Getenv("AI_MAX_TOKENS"); envMaxTokens != "" {
if parsed, err := strconv.Atoi(envMaxTokens); err == nil && parsed > 0 {
maxTokens = parsed
log.Printf("🔧 [MCP] 使用环境变量 AI_MAX_TOKENS: %d", maxTokens)
} else {
log.Printf("⚠️ [MCP] 环境变量 AI_MAX_TOKENS 无效 (%s),使用默认值: %d", envMaxTokens, maxTokens)
}
}
// 默认配置
return &Client{
Provider: ProviderDeepSeek,
BaseURL: "https://api.deepseek.com/v1",
Model: "deepseek-chat",
Timeout: 120 * time.Second, // 增加到120秒因为AI需要分析大量数据
Provider: ProviderDeepSeek,
BaseURL: "https://api.deepseek.com/v1",
Model: "deepseek-chat",
Timeout: 120 * time.Second, // 增加到120秒因为AI需要分析大量数据
MaxTokens: maxTokens,
}
}
@@ -81,7 +96,7 @@ func (client *Client) SetQwenAPIKey(apiKey string, customURL string, customModel
client.Model = customModel
log.Printf("🔧 [MCP] Qwen 使用自定义 Model: %s", customModel)
} else {
client.Model = "qwen-plus" // 可选: qwen-turbo, qwen-plus, qwen-max
client.Model = "qwen3-max"
log.Printf("🔧 [MCP] Qwen 使用默认 Model: %s", client.Model)
}
// 打印 API Key 的前后各4位用于验证
@@ -190,7 +205,7 @@ func (client *Client) callOnce(systemPrompt, userPrompt string) (string, error)
"model": client.Model,
"messages": messages,
"temperature": 0.5, // 降低temperature以提高JSON格式稳定性
"max_tokens": 2000,
"max_tokens": client.MaxTokens,
}
// 注意response_format 参数仅 OpenAI 支持DeepSeek/Qwen 不支持