Feat: add external tool web search

This commit is contained in:
Grail Finder
2025-10-09 10:36:55 +03:00
parent dc183e3692
commit 314c07835e
7 changed files with 373 additions and 306 deletions

144
models/deepseek.go Normal file
View File

@@ -0,0 +1,144 @@
package models
type DSChatReq struct {
Messages []RoleMsg `json:"messages"`
Model string `json:"model"`
Stream bool `json:"stream"`
FrequencyPenalty int `json:"frequency_penalty"`
MaxTokens int `json:"max_tokens"`
PresencePenalty int `json:"presence_penalty"`
Temperature float32 `json:"temperature"`
TopP float32 `json:"top_p"`
// ResponseFormat struct {
// Type string `json:"type"`
// } `json:"response_format"`
// Stop any `json:"stop"`
// StreamOptions any `json:"stream_options"`
// Tools any `json:"tools"`
// ToolChoice string `json:"tool_choice"`
// Logprobs bool `json:"logprobs"`
// TopLogprobs any `json:"top_logprobs"`
}
func NewDSChatReq(cb ChatBody) DSChatReq {
return DSChatReq{
Messages: cb.Messages,
Model: cb.Model,
Stream: cb.Stream,
MaxTokens: 2048,
PresencePenalty: 0,
FrequencyPenalty: 0,
Temperature: 1.0,
TopP: 1.0,
}
}
type DSCompletionReq struct {
Model string `json:"model"`
Prompt string `json:"prompt"`
Echo bool `json:"echo"`
FrequencyPenalty int `json:"frequency_penalty"`
// Logprobs int `json:"logprobs"`
MaxTokens int `json:"max_tokens"`
PresencePenalty int `json:"presence_penalty"`
Stop any `json:"stop"`
Stream bool `json:"stream"`
StreamOptions any `json:"stream_options"`
Suffix any `json:"suffix"`
Temperature float32 `json:"temperature"`
TopP float32 `json:"top_p"`
}
func NewDSCompletionReq(prompt, model string, temp float32, stopSlice []string) DSCompletionReq {
return DSCompletionReq{
Model: model,
Prompt: prompt,
Temperature: temp,
Stream: true,
Echo: false,
MaxTokens: 2048,
PresencePenalty: 0,
FrequencyPenalty: 0,
TopP: 1.0,
Stop: stopSlice,
}
}
type DSCompletionResp struct {
ID string `json:"id"`
Choices []struct {
FinishReason string `json:"finish_reason"`
Index int `json:"index"`
Logprobs struct {
TextOffset []int `json:"text_offset"`
TokenLogprobs []int `json:"token_logprobs"`
Tokens []string `json:"tokens"`
TopLogprobs []struct {
} `json:"top_logprobs"`
} `json:"logprobs"`
Text string `json:"text"`
} `json:"choices"`
Created int `json:"created"`
Model string `json:"model"`
SystemFingerprint string `json:"system_fingerprint"`
Object string `json:"object"`
Usage struct {
CompletionTokens int `json:"completion_tokens"`
PromptTokens int `json:"prompt_tokens"`
PromptCacheHitTokens int `json:"prompt_cache_hit_tokens"`
PromptCacheMissTokens int `json:"prompt_cache_miss_tokens"`
TotalTokens int `json:"total_tokens"`
CompletionTokensDetails struct {
ReasoningTokens int `json:"reasoning_tokens"`
} `json:"completion_tokens_details"`
} `json:"usage"`
}
type DSChatResp struct {
Choices []struct {
Delta struct {
Content string `json:"content"`
Role any `json:"role"`
} `json:"delta"`
FinishReason string `json:"finish_reason"`
Index int `json:"index"`
Logprobs any `json:"logprobs"`
} `json:"choices"`
Created int `json:"created"`
ID string `json:"id"`
Model string `json:"model"`
Object string `json:"object"`
SystemFingerprint string `json:"system_fingerprint"`
Usage struct {
CompletionTokens int `json:"completion_tokens"`
PromptTokens int `json:"prompt_tokens"`
TotalTokens int `json:"total_tokens"`
} `json:"usage"`
}
type DSChatStreamResp struct {
ID string `json:"id"`
Object string `json:"object"`
Created int `json:"created"`
Model string `json:"model"`
SystemFingerprint string `json:"system_fingerprint"`
Choices []struct {
Index int `json:"index"`
Delta struct {
Content string `json:"content"`
ReasoningContent string `json:"reasoning_content"`
} `json:"delta"`
Logprobs any `json:"logprobs"`
FinishReason string `json:"finish_reason"`
} `json:"choices"`
}
type DSBalance struct {
IsAvailable bool `json:"is_available"`
BalanceInfos []struct {
Currency string `json:"currency"`
TotalBalance string `json:"total_balance"`
GrantedBalance string `json:"granted_balance"`
ToppedUpBalance string `json:"topped_up_balance"`
} `json:"balance_infos"`
}