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("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("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("OPENAI_API_KEY")),
40 openai.WithHTTPClient(&http.Client{Transport: r}),
41 )
42 return provider.LanguageModel("gpt-5")
43}