|
| 1 | +package anthropic |
| 2 | + |
| 3 | +import ( |
| 4 | + // Packages |
| 5 | + "github.com/mutablelogic/go-client" |
| 6 | + schema "github.com/mutablelogic/go-client/pkg/openai/schema" |
| 7 | +) |
| 8 | + |
| 9 | +/////////////////////////////////////////////////////////////////////////////// |
| 10 | +// TYPES |
| 11 | + |
| 12 | +type reqMessage struct { |
| 13 | + Model string `json:"model"` |
| 14 | + Messages []schema.Message `json:"messages,omitempty"` |
| 15 | + MaxTokens int `json:"max_tokens,omitempty"` |
| 16 | +} |
| 17 | + |
| 18 | +type respMessage struct { |
| 19 | + Id string `json:"id"` |
| 20 | + Type string `json:"type,omitempty"` |
| 21 | + Role string `json:"role"` |
| 22 | + Model string `json:"model"` |
| 23 | + StopReason string `json:"stop_reason"` |
| 24 | + StopSequence string `json:"stop_sequence"` |
| 25 | + Content []schema.Content `json:"content"` |
| 26 | + Usage struct { |
| 27 | + InputTokens int `json:"input_tokens"` |
| 28 | + OuputTokens int `json:"output_tokens"` |
| 29 | + } `json:"usage"` |
| 30 | +} |
| 31 | + |
| 32 | +/////////////////////////////////////////////////////////////////////////////// |
| 33 | +// PUBLIC METHODS |
| 34 | + |
| 35 | +func NewMessage(role, text string) schema.Message { |
| 36 | + return schema.Message{ |
| 37 | + Role: role, |
| 38 | + Content: text, |
| 39 | + } |
| 40 | +} |
| 41 | + |
| 42 | +/////////////////////////////////////////////////////////////////////////////// |
| 43 | +// API CALLS |
| 44 | + |
| 45 | +// Send a structured list of input messages with text and/or image content, |
| 46 | +// and the model will generate the next message in the conversation. |
| 47 | +func (c *Client) Messages(message schema.Message) ([]schema.Content, error) { |
| 48 | + var request reqMessage |
| 49 | + var response respMessage |
| 50 | + |
| 51 | + request.Model = defaultMessageModel |
| 52 | + request.MaxTokens = defaultMaxTokens |
| 53 | + request.Messages = []schema.Message{message} |
| 54 | + |
| 55 | + // Return the response |
| 56 | + if payload, err := client.NewJSONRequest(request); err != nil { |
| 57 | + return nil, err |
| 58 | + } else if err := c.Do(payload, &response, client.OptPath("messages")); err != nil { |
| 59 | + return nil, err |
| 60 | + } else { |
| 61 | + return response.Content, nil |
| 62 | + } |
| 63 | +} |
0 commit comments