Row-proxy / internal /handler /deepseek.go
Moge-Row's picture
fix deepseek api url
f8b5696
raw
history blame
1.78 kB
package handler
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
"strings"
)
var deepseekToken = os.Getenv("DEEPSEEK_TOKEN")
var deepseekModels = map[string]bool{
"deepseek": true,
"deepseek-expert": true,
"deepseek-r1": true,
"deepseek-search": true,
"deepseek-expert-r1": true,
"deepseek-expert-search": true,
"deepseek-r1-search": true,
"deepseek-expert-r1-search": true,
"deepseek-v4": true,
"deepseek-v4-flash": true,
"deepseek-v4-pro": true,
}
func IsDeepSeekModel(model string) bool {
_, ok := deepseekModels[strings.ToLower(model)]
return ok
}
func HandleDeepSeek(w http.ResponseWriter, r *http.Request, body []byte, apiKey string) {
var req map[string]interface{}
json.Unmarshal(body, &req)
newBody, _ := json.Marshal(req)
proxyReq, _ := http.NewRequest("POST", "https://chat.deepseek.com/api/v1/chat/completions", bytes.NewReader(newBody))
proxyReq.Header.Set("Authorization", "Bearer "+deepseekToken)
proxyReq.Header.Set("Content-Type", "application/json")
proxyReq.Header.Set("User-Agent", "Mozilla/5.0")
proxyReq.Header.Set("Referer", "https://chat.deepseek.com/")
client := &http.Client{}
resp, err := client.Do(proxyReq)
if err != nil { http.Error(w, "DeepSeek error", 500); return }
defer resp.Body.Close()
respBody, _ := io.ReadAll(resp.Body)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(resp.StatusCode)
w.Write(respBody)
var result map[string]interface{}
if json.Unmarshal(respBody, &result) == nil {
if usage, ok := result["usage"].(map[string]interface{}); ok {
if total, ok := usage["total_tokens"].(float64); ok {
TrackUsage(apiKey, int(total))
}
}
}
}