1package providertests
 2
 3import (
 4	"net/http"
 5	"os"
 6	"testing"
 7
 8	"github.com/charmbracelet/fantasy/ai"
 9	"github.com/charmbracelet/fantasy/openaicompat"
10	"gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
11)
12
13func TestOpenAICompatibleCommon(t *testing.T) {
14	testCommon(t, []builderPair{
15		{"xai-grok-4-fast", builderXAIGrok4Fast, nil},
16		{"xai-grok-code-fast", builderXAIGrokCodeFast, nil},
17		{"groq-kimi-k2", builderGroq, nil},
18	})
19}
20
21func builderXAIGrokCodeFast(r *recorder.Recorder) (ai.LanguageModel, error) {
22	provider := openaicompat.New(
23		"https://api.x.ai/v1",
24		openaicompat.WithAPIKey(os.Getenv("XAI_API_KEY")),
25		openaicompat.WithHTTPClient(&http.Client{Transport: r}),
26	)
27	return provider.LanguageModel("grok-code-fast-1")
28}
29
30func builderXAIGrok4Fast(r *recorder.Recorder) (ai.LanguageModel, error) {
31	provider := openaicompat.New(
32		"https://api.x.ai/v1",
33		openaicompat.WithAPIKey(os.Getenv("XAI_API_KEY")),
34		openaicompat.WithHTTPClient(&http.Client{Transport: r}),
35	)
36	return provider.LanguageModel("grok-4-fast")
37}
38
39func builderGroq(r *recorder.Recorder) (ai.LanguageModel, error) {
40	provider := openaicompat.New(
41		"https://api.groq.com/openai/v1",
42		openaicompat.WithAPIKey(os.Getenv("GROQ_API_KEY")),
43		openaicompat.WithHTTPClient(&http.Client{Transport: r}),
44	)
45	return provider.LanguageModel("moonshotai/kimi-k2-instruct-0905")
46}