mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-05 08:55:28 +08:00
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
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
|
|
}
|