openai_test.go

 1package providertests
 2
 3import (
 4	"net/http"
 5	"os"
 6	"testing"
 7
 8	"charm.land/fantasy"
 9	"charm.land/fantasy/providers/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, nil})
24	}
25	testCommon(t, pairs)
26}
27
28func openAIBuilder(model string) builderFunc {
29	return func(r *recorder.Recorder) (fantasy.LanguageModel, error) {
30		provider, err := openai.New(
31			openai.WithAPIKey(os.Getenv("FANTASY_OPENAI_API_KEY")),
32			openai.WithHTTPClient(&http.Client{Transport: r}),
33		)
34		if err != nil {
35			return nil, err
36		}
37		return provider.LanguageModel(model)
38	}
39}