package handlers import ( "encoding/json" "net/http" "prompt-generator/internal/llm" "prompt-generator/internal/models" ) func GetSuggestions(w http.ResponseWriter, r *http.Request) { var req struct { CurrentPrompt string `json:"current_prompt"` ClaudeMD string `json:"claude_md"` } if err := json.NewDecoder(r.Body).Decode(&req); err != nil { fail(w, 400, "请求格式错误") return } if req.CurrentPrompt == "" { fail(w, 400, "当前 Prompt 不能为空") return } client := llm.NewClient(cfg.LLMAPIBaseURL, cfg.LLMAPIKey, cfg.LLMModelName) suggestions, err := client.GetSuggestions(req.CurrentPrompt, req.ClaudeMD) if err != nil { fail(w, 500, "获取建议失败: "+err.Error()) return } success(w, suggestions) } // parseSuggestions 尝试从 LLM 响应中解析建议列表 func parseSuggestions(data string) []models.Suggestion { // Try to find JSON array in the response start := -1 end := -1 for i := 0; i < len(data); i++ { if data[i] == '[' && start == -1 { start = i } if data[i] == ']' { end = i + 1 } } if start == -1 || end == -1 { return nil } var suggestions []models.Suggestion if err := json.Unmarshal([]byte(data[start:end]), &suggestions); err != nil { return nil } return suggestions }