package remote_http import ( "context" "errors" "fmt" "mylomen_server/common/dto" "mylomen_server/common/utils" ) type aiRouterImpl struct { } func (aiRouterImpl) Completions(ctx context.Context, prompt, groupId string) (*dto.AiRes, error) { logger := utils.NewLog("") url := "https://openrouter.ai/api/v1/chat/completions" var aiResult Result[dto.AiRes] var result RouterResultVO //const body = JSON.stringify({model: "google/gemma-7b-it:free", "stream": false, messages: messages}); resp, err := httpClient.R(). SetBody(map[string]interface{}{ "model": "qwen/qwen-2-7b-instruct:free", "stream": false, "messages": []map[string]interface{}{{"role": "user", "content": prompt}}, }).SetHeaders(map[string]string{ "Content-Type": "application/json", "Authorization": "Bearer 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", }). SetSuccessResult(&result). Post(url) if err != nil { logger.Error(fmt.Sprintf("remote_http_wx_SendMsg error: %s", err.Error())) return nil, err } if !resp.IsSuccessState() { logger.Error(fmt.Sprintf("remote_http_wx_SendMsg resp:%+v", resp)) return nil, errors.New("接口异常") } aiResult.Data.Completions = result.Choices[0].Message.Content return &aiResult.Data, nil } type RouterResultVO struct { Id string `json:"id"` Model string `json:"model"` Object string `json:"object"` Created int `json:"created"` Choices []struct { Index int `json:"index"` Message struct { Role string `json:"role"` Content string `json:"content"` } `json:"message"` FinishReason string `json:"finish_reason"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` TotalTokens int `json:"total_tokens"` } `json:"usage"` }