This commit is contained in:
zyj
2025-09-13 10:22:49 +08:00
commit 002419a7ed
28 changed files with 1888 additions and 0 deletions

94
utils/ai_request.go Normal file
View File

@@ -0,0 +1,94 @@
package utils
import (
"encoding/json"
"fmt"
"github.com/go-resty/resty/v2"
)
type AiReqeust struct{}
type DeepseekResponse struct {
ID string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
Choices []struct {
Index int `json:"index"`
Message struct {
Role string `json:"role"`
Content string `json:"content"`
} `json:"message"`
Logprobs interface{} `json:"logprobs"` // 可能是null或复杂结构
FinishReason string `json:"finish_reason"`
} `json:"choices"`
Usage struct {
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
PromptTokensDetails struct {
CachedTokens int `json:"cached_tokens"`
} `json:"prompt_tokens_details"`
PromptCacheHitTokens int `json:"prompt_cache_hit_tokens"`
PromptCacheMissTokens int `json:"prompt_cache_miss_tokens"`
} `json:"usage"`
SystemFingerprint string `json:"system_fingerprint"`
}
func (*AiReqeust) Deepseek(text string) string {
// 定义结构体
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type ChatRequest struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
}
// 创建 resty 客户端
client := resty.New()
// 目标URL
url := "https://api.deepseek.com/v1/chat/completions"
request := ChatRequest{
Model: "deepseek-chat",
Messages: []Message{
{
Role: "user",
Content: text,
},
},
}
// 发送 POST 请求
resp, err := client.R().
SetHeader("Content-Type", "application/json"). // 必填头
SetHeader("Authorization", "Bearer sk-9ca769cb45c249559276b979a2e1a2cd"). // 认证头
SetBody(request). // 设置JSON体
Post(url)
if err != nil {
fmt.Println("请求失败:", err)
return ""
}
// 解析响应
var response DeepseekResponse
if err := json.Unmarshal(resp.Body(), &response); err != nil {
fmt.Println("解析失败:", err)
return ""
}
// 提取关键信息
if len(response.Choices) > 0 {
firstChoice := response.Choices[0]
// fmt.Printf("\nAI回复 (%s):\n%s\n",
// firstChoice.Message.Role,
// firstChoice.Message.Content)
return firstChoice.Message.Content
}
return ""
}