51 lines
954 B
Go
51 lines
954 B
Go
package silicon
|
|
|
|
import (
|
|
"context"
|
|
"rss-to-feishu-next/internal/config"
|
|
"rss-to-feishu-next/internal/net"
|
|
)
|
|
|
|
type Client struct {
|
|
netClient *net.Client
|
|
}
|
|
|
|
func NewClient(client *net.Client) *Client {
|
|
return &Client{client}
|
|
}
|
|
|
|
func (c *Client) FetchModelResponse(ctx context.Context, message, model string) (*Response, error) {
|
|
cfg, err := config.LoadConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
token := cfg.Silicon.Token
|
|
|
|
headers := map[string]string{
|
|
"Content-Type": "application/json",
|
|
"Authorization": "Bearer " + token,
|
|
}
|
|
|
|
var messages []*Message
|
|
messages = append(messages, &Message{
|
|
Role: "user",
|
|
Content: message,
|
|
})
|
|
|
|
body := &RequestBody{
|
|
Model: model,
|
|
Messages: messages,
|
|
Temperature: 0.7,
|
|
MaxTokens: 8096,
|
|
}
|
|
|
|
var resp *Response
|
|
url := "https://api.siliconflow.cn/v1/messages"
|
|
if err := c.netClient.Post(ctx, headers, url, body, &resp); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return resp, nil
|
|
}
|