1package providertests
 2
 3import (
 4	"net/http"
 5	"os"
 6	"testing"
 7
 8	"github.com/charmbracelet/fantasy/ai"
 9	"github.com/charmbracelet/fantasy/openai"
10	"gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
11)
12
13func TestOpenAICommon(t *testing.T) {
14	testCommon(t, []builderPair{
15		{"gpt-4o", builderOpenaiGpt4o, nil},
16		{"gpt-4o-mini", builderOpenaiGpt4oMini, nil},
17		{"gpt-5", builderOpenaiGpt5, nil},
18	})
19}
20
21func builderOpenaiGpt4o(r *recorder.Recorder) (ai.LanguageModel, error) {
22	provider := openai.New(
23		openai.WithAPIKey(os.Getenv("FANTASY_OPENAI_API_KEY")),
24		openai.WithHTTPClient(&http.Client{Transport: r}),
25	)
26	return provider.LanguageModel("gpt-4o")
27}
28
29func builderOpenaiGpt4oMini(r *recorder.Recorder) (ai.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("gpt-4o-mini")
35}
36
37func builderOpenaiGpt5(r *recorder.Recorder) (ai.LanguageModel, error) {
38	provider := openai.New(
39		openai.WithAPIKey(os.Getenv("FANTASY_OPENAI_API_KEY")),
40		openai.WithHTTPClient(&http.Client{Transport: r}),
41	)
42	return provider.LanguageModel("gpt-5")
43}