new ai provider

This commit is contained in:
2026-01-19 16:47:11 +03:00
parent 4dd87ddecc
commit 96d40bffa4
9 changed files with 119 additions and 48 deletions

View File

@@ -87,10 +87,14 @@ func NewOpenAIAPI(baseURL, token, model string) *OpenAIAPI {
}
type CreateCompletionReq struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
Verbosity string `json:"verbosity"`
Temperature float32 `json:"temperature"`
Model string `json:"model"`
Messages []Message `json:"messages"`
Verbosity string `json:"verbosity"`
Temperature float32 `json:"temperature"`
PresencePenalty int `json:"presence_penalty"`
FrequencyPenalty int `json:"frequency_penalty"`
TopP int `json:"top_p"`
MaxCompletionTokens int `json:"max_completition_tokens"`
}
func (o *OpenAIAPI) CreateCompletion(request CreateCompletionReq) (*OpenAIResponse, error) {
@@ -109,7 +113,9 @@ func (o *OpenAIAPI) CreateCompletion(request CreateCompletionReq) (*OpenAIRespon
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", o.Token))
if o.Token != "" {
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", o.Token))
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
@@ -125,3 +131,43 @@ func (o *OpenAIAPI) CreateCompletion(request CreateCompletionReq) (*OpenAIRespon
err = json.Unmarshal(body, response)
return response, err
}
func (o *OpenAIAPI) CompressChat(history []Message) (*OpenAIResponse, error) {
request := CreateCompletionReq{
Model: o.Model,
Messages: history,
Verbosity: "low",
Temperature: 1.0,
}
u := fmt.Sprintf("%s/v1/chat/completions", o.BaseURL)
data, err := json.Marshal(request)
o.Logger.Debug("COMPRESS REQ", u, string(data))
if err != nil {
return nil, err
}
buf := bytes.NewBuffer(data)
req, err := http.NewRequest("POST", u, buf)
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
if o.Token != "" {
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", o.Token))
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
o.Logger.Debug("COMPRESS RES", u, string(body))
response := new(OpenAIResponse)
err = json.Unmarshal(body, response)
return response, err
}