mirror of
https://github.com/k8sgpt-ai/k8sgpt.git
synced 2025-09-17 07:41:25 +00:00
* chore: rebased chore: removed trivy Signed-off-by: AlexsJones <alexsimonjones@gmail.com> * chore: updated deps Signed-off-by: AlexsJones <alexsimonjones@gmail.com> * fix: missing error Signed-off-by: AlexsJones <alexsimonjones@gmail.com> * fix: missing error Signed-off-by: AlexsJones <alexsimonjones@gmail.com> * feat: switching old sonnet to message API Signed-off-by: AlexsJones <alexsimonjones@gmail.com> --------- Signed-off-by: AlexsJones <alexsimonjones@gmail.com>
156 lines
3.7 KiB
Go
156 lines
3.7 KiB
Go
package bedrock_support
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
type IResponse interface {
|
|
ParseResponse(rawResponse []byte) (string, error)
|
|
}
|
|
|
|
type CohereMessagesResponse struct {
|
|
response IResponse
|
|
}
|
|
|
|
func (a *CohereMessagesResponse) ParseResponse(rawResponse []byte) (string, error) {
|
|
type InvokeModelResponseBody struct {
|
|
ID string `json:"id"`
|
|
Type string `json:"type"`
|
|
Role string `json:"role"`
|
|
Model string `json:"model"`
|
|
Content []struct {
|
|
Type string `json:"type"`
|
|
Text string `json:"text"`
|
|
} `json:"content"`
|
|
StopReason string `json:"stop_reason"`
|
|
StopSequence interface{} `json:"stop_sequence"` // Could be null
|
|
Usage struct {
|
|
InputTokens int `json:"input_tokens"`
|
|
OutputTokens int `json:"output_tokens"`
|
|
} `json:"usage"`
|
|
}
|
|
|
|
output := &InvokeModelResponseBody{}
|
|
err := json.Unmarshal(rawResponse, output)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// Extract the text content from the Content array
|
|
var resultText string
|
|
for _, content := range output.Content {
|
|
if content.Type == "text" {
|
|
resultText += content.Text
|
|
}
|
|
}
|
|
|
|
return resultText, nil
|
|
}
|
|
|
|
type CohereResponse struct {
|
|
response IResponse
|
|
}
|
|
|
|
func (a *CohereResponse) ParseResponse(rawResponse []byte) (string, error) {
|
|
type InvokeModelResponseBody struct {
|
|
Completion string `json:"completion"`
|
|
Stop_reason string `json:"stop_reason"`
|
|
}
|
|
output := &InvokeModelResponseBody{}
|
|
err := json.Unmarshal(rawResponse, output)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return output.Completion, nil
|
|
}
|
|
|
|
type AI21Response struct {
|
|
response IResponse
|
|
}
|
|
|
|
func (a *AI21Response) ParseResponse(rawResponse []byte) (string, error) {
|
|
type Data struct {
|
|
Text string `json:"text"`
|
|
}
|
|
type Completion struct {
|
|
Data Data `json:"data"`
|
|
}
|
|
type InvokeModelResponseBody struct {
|
|
Completions []Completion `json:"completions"`
|
|
}
|
|
output := &InvokeModelResponseBody{}
|
|
err := json.Unmarshal(rawResponse, output)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return output.Completions[0].Data.Text, nil
|
|
}
|
|
|
|
type AmazonResponse struct {
|
|
response IResponse
|
|
}
|
|
|
|
type NovaResponse struct {
|
|
response NResponse
|
|
}
|
|
type NResponse interface {
|
|
ParseResponse(rawResponse []byte) (string, error)
|
|
}
|
|
|
|
func (a *AmazonResponse) ParseResponse(rawResponse []byte) (string, error) {
|
|
type Result struct {
|
|
TokenCount int `json:"tokenCount"`
|
|
OutputText string `json:"outputText"`
|
|
CompletionReason string `json:"completionReason"`
|
|
}
|
|
type InvokeModelResponseBody struct {
|
|
InputTextTokenCount int `json:"inputTextTokenCount"`
|
|
Results []Result `json:"results"`
|
|
}
|
|
output := &InvokeModelResponseBody{}
|
|
err := json.Unmarshal(rawResponse, output)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return output.Results[0].OutputText, nil
|
|
}
|
|
|
|
func (a *NovaResponse) ParseResponse(rawResponse []byte) (string, error) {
|
|
type Content struct {
|
|
Text string `json:"text"`
|
|
}
|
|
|
|
type Message struct {
|
|
Role string `json:"role"`
|
|
Content []Content `json:"content"`
|
|
}
|
|
|
|
type UsageDetails struct {
|
|
InputTokens int `json:"inputTokens"`
|
|
OutputTokens int `json:"outputTokens"`
|
|
TotalTokens int `json:"totalTokens"`
|
|
CacheReadInputTokenCount int `json:"cacheReadInputTokenCount"`
|
|
CacheWriteInputTokenCount int `json:"cacheWriteInputTokenCount,omitempty"`
|
|
}
|
|
|
|
type AmazonNovaResponse struct {
|
|
Output struct {
|
|
Message Message `json:"message"`
|
|
} `json:"output"`
|
|
StopReason string `json:"stopReason"`
|
|
Usage UsageDetails `json:"usage"`
|
|
}
|
|
|
|
response := &AmazonNovaResponse{}
|
|
err := json.Unmarshal(rawResponse, response)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if len(response.Output.Message.Content) > 0 {
|
|
return response.Output.Message.Content[0].Text, nil
|
|
}
|
|
|
|
return "", nil
|
|
}
|