1package providertests
2
3import (
4 "net/http"
5 "testing"
6
7 "charm.land/fantasy"
8 "charm.land/fantasy/bedrock"
9 "gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
10)
11
12func TestBedrockCommon(t *testing.T) {
13 testCommon(t, []builderPair{
14 {"bedrock-anthropic-claude-3-sonnet", builderBedrockClaude3Sonnet, nil},
15 {"bedrock-anthropic-claude-3-opus", builderBedrockClaude3Opus, nil},
16 {"bedrock-anthropic-claude-3-haiku", builderBedrockClaude3Haiku, nil},
17 })
18}
19
20func builderBedrockClaude3Sonnet(r *recorder.Recorder) (fantasy.LanguageModel, error) {
21 provider := bedrock.New(
22 bedrock.WithHTTPClient(&http.Client{Transport: r}),
23 bedrock.WithSkipAuth(!r.IsRecording()),
24 )
25 return provider.LanguageModel("us.anthropic.claude-3-sonnet-20240229-v1:0")
26}
27
28func builderBedrockClaude3Opus(r *recorder.Recorder) (fantasy.LanguageModel, error) {
29 provider := bedrock.New(
30 bedrock.WithHTTPClient(&http.Client{Transport: r}),
31 bedrock.WithSkipAuth(!r.IsRecording()),
32 )
33 return provider.LanguageModel("us.anthropic.claude-3-opus-20240229-v1:0")
34}
35
36func builderBedrockClaude3Haiku(r *recorder.Recorder) (fantasy.LanguageModel, error) {
37 provider := bedrock.New(
38 bedrock.WithHTTPClient(&http.Client{Transport: r}),
39 bedrock.WithSkipAuth(!r.IsRecording()),
40 )
41 return provider.LanguageModel("us.anthropic.claude-3-haiku-20240307-v1:0")
42}