bedrock_test.go

 1package providertests
 2
 3import (
 4	"net/http"
 5	"os"
 6	"testing"
 7
 8	"charm.land/fantasy"
 9	"charm.land/fantasy/providers/bedrock"
10	"gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
11)
12
13func TestBedrockCommon(t *testing.T) {
14	testCommon(t, []builderPair{
15		{"bedrock-anthropic-claude-3-sonnet", builderBedrockClaude3Sonnet, nil, nil},
16		{"bedrock-anthropic-claude-3-opus", builderBedrockClaude3Opus, nil, nil},
17		{"bedrock-anthropic-claude-3-haiku", builderBedrockClaude3Haiku, nil, nil},
18	})
19}
20
21func TestBedrockBasicAuth(t *testing.T) {
22	testSimple(t, builderPair{"bedrock-anthropic-claude-3-sonnet", buildersBedrockBasicAuth, nil, nil})
23}
24
25func builderBedrockClaude3Sonnet(r *recorder.Recorder) (fantasy.LanguageModel, error) {
26	provider, err := bedrock.New(
27		bedrock.WithHTTPClient(&http.Client{Transport: r}),
28		bedrock.WithSkipAuth(!r.IsRecording()),
29	)
30	if err != nil {
31		return nil, err
32	}
33	return provider.LanguageModel("us.anthropic.claude-3-sonnet-20240229-v1:0")
34}
35
36func builderBedrockClaude3Opus(r *recorder.Recorder) (fantasy.LanguageModel, error) {
37	provider, err := bedrock.New(
38		bedrock.WithHTTPClient(&http.Client{Transport: r}),
39		bedrock.WithSkipAuth(!r.IsRecording()),
40	)
41	if err != nil {
42		return nil, err
43	}
44	return provider.LanguageModel("us.anthropic.claude-3-opus-20240229-v1:0")
45}
46
47func builderBedrockClaude3Haiku(r *recorder.Recorder) (fantasy.LanguageModel, error) {
48	provider, err := bedrock.New(
49		bedrock.WithHTTPClient(&http.Client{Transport: r}),
50		bedrock.WithSkipAuth(!r.IsRecording()),
51	)
52	if err != nil {
53		return nil, err
54	}
55	return provider.LanguageModel("us.anthropic.claude-3-haiku-20240307-v1:0")
56}
57
58func buildersBedrockBasicAuth(r *recorder.Recorder) (fantasy.LanguageModel, error) {
59	provider, err := bedrock.New(
60		bedrock.WithHTTPClient(&http.Client{Transport: r}),
61		bedrock.WithAPIKey(os.Getenv("FANTASY_BEDROCK_API_KEY")),
62		bedrock.WithSkipAuth(true),
63	)
64	if err != nil {
65		return nil, err
66	}
67	return provider.LanguageModel("us.anthropic.claude-3-sonnet-20240229-v1:0")
68}