1package providertests
2
3import (
4 "net/http"
5 "os"
6 "testing"
7
8 "charm.land/fantasy"
9 "charm.land/fantasy/openai"
10 "gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
11)
12
13var openaiTestModels = []testModel{
14 {"openai-gpt-4o", "gpt-4o", false},
15 {"openai-gpt-4o-mini", "gpt-4o-mini", false},
16 {"openai-gpt-5", "gpt-5", true},
17 {"openai-o4-mini", "o4-mini", true},
18}
19
20func TestOpenAICommon(t *testing.T) {
21 var pairs []builderPair
22 for _, m := range openaiTestModels {
23 pairs = append(pairs, builderPair{m.name, openAIBuilder(m.model), nil})
24 }
25 testCommon(t, pairs)
26}
27
28func openAIBuilder(model string) builderFunc {
29 return func(r *recorder.Recorder) (fantasy.LanguageModel, error) {
30 provider := openai.New(
31 openai.WithAPIKey(os.Getenv("FANTASY_OPENAI_API_KEY")),
32 openai.WithHTTPClient(&http.Client{Transport: r}),
33 )
34 return provider.LanguageModel(model)
35 }
36}