Created
February 24, 2024 07:12
-
-
Save arvi18/03785be24d274ac6fd57b3b470027d94 to your computer and use it in GitHub Desktop.
golang sdk for calling claude v2.1 from aws bedrock
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package metric | |
import ( | |
"context" | |
"encoding/json" | |
"fmt" | |
"log" | |
"github.com/aws/aws-sdk-go-v2/aws" | |
"github.com/aws/aws-sdk-go-v2/config" | |
"github.com/aws/aws-sdk-go-v2/credentials" | |
"github.com/aws/aws-sdk-go-v2/service/bedrockruntime" | |
"github.com/devdynamics-ai/devd-gpt/pkg/metric/prompts" | |
) | |
type Request struct { | |
Prompt string `json:"prompt"` | |
MaxTokensToSample int `json:"max_tokens_to_sample"` | |
Temperature float64 `json:"temperature,omitempty"` | |
TopP float64 `json:"top_p,omitempty"` | |
TopK int `json:"top_k,omitempty"` | |
StopSequences []string `json:"stop_sequences,omitempty"` | |
} | |
type Response struct { | |
Completion string `json:"completion"` | |
} | |
func initiateBedrockRuntimeClient() *bedrockruntime.Client { | |
AWS_BEDROCK_KEY := getSecret("AWS_BEDROCK_KEY") | |
AWS_BEDROCK_SECRET := getSecret("AWS_BEDROCK_SECRET") | |
cfg, err := config.LoadDefaultConfig(context.Background(), | |
config.WithRegion("us-east-1"), | |
config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(AWS_BEDROCK_KEY, AWS_BEDROCK_SECRET, "")), | |
) | |
if err != nil { | |
log.Fatal(err) | |
} | |
return bedrockruntime.NewFromConfig(cfg) | |
} | |
func (app App) generateResponseFromAwsBedrock() (string, error) { | |
promptFormatted := prompts.GetPrompt() | |
fmt.Println(promptFormatted) | |
payload := Request{Prompt: promptFormatted, MaxTokensToSample: 2048} | |
payloadBytes, err := json.Marshal(payload) | |
if err != nil { | |
return "", err | |
} | |
brc := initiateBedrockRuntimeClient() | |
output, err := brc.InvokeModel(context.Background(), &bedrockruntime.InvokeModelInput{ | |
Body: payloadBytes, | |
ModelId: aws.String("anthropic.claude-v2:1"), | |
ContentType: aws.String("application/json"), | |
}) | |
if err != nil { | |
log.Println("Error invoking model", err) | |
return "", err | |
} | |
var resp Response | |
err = json.Unmarshal(output.Body, &resp) | |
if err != nil { | |
return "", err | |
} | |
return resp.Completion, nil | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment