Skip to content

Instantly share code, notes, and snippets.

@arvi18
Created February 24, 2024 07:12
Show Gist options
  • Save arvi18/03785be24d274ac6fd57b3b470027d94 to your computer and use it in GitHub Desktop.
Save arvi18/03785be24d274ac6fd57b3b470027d94 to your computer and use it in GitHub Desktop.
golang sdk for calling claude v2.1 from aws bedrock
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