package claudeconv import ( "strings" "ds2api/internal/config" ) func ConvertClaudeToDeepSeek(claudeReq map[string]any, aliasProvider config.ModelAliasReader, defaultClaudeModel string) map[string]any { messages, _ := claudeReq["messages"].([]any) model, _ := claudeReq["model"].(string) if model == "" { model = defaultClaudeModel } dsModel, ok := config.ResolveModel(aliasProvider, model) if !ok || strings.TrimSpace(dsModel) == "" { dsModel = "deepseek-v4-flash" } convertedMessages := make([]any, 0, len(messages)+1) if system, ok := claudeReq["system"].(string); ok && system != "" { convertedMessages = append(convertedMessages, map[string]any{"role": "system", "content": system}) } convertedMessages = append(convertedMessages, messages...) out := map[string]any{"model": dsModel, "messages": convertedMessages} for _, k := range []string{"temperature", "top_p", "stream"} { if v, ok := claudeReq[k]; ok { out[k] = v } } if stopSeq, ok := claudeReq["stop_sequences"]; ok { out["stop"] = stopSeq } return out }