Skip to content

Commit 8068b80

Browse files
committed
refactor: Rename openAIV3Provider to completions
Rename openai_v3_internal.go to openai_completions_internal.go and the provider struct from openAIV3Provider to openAICompletionsProvider to align with the existing openai_responses_internal.go naming convention. Shared types (openAIV3ModelParams, ResponseFormat, CompletionHandler) are unchanged as they serve both the Chat Completions and Responses API providers.
1 parent 05d8513 commit 8068b80

6 files changed

Lines changed: 27 additions & 27 deletions

File tree

providers/alibaba.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func NewAlibaba(cfg config.AlibabaClientConfig, availableTools []config.ToolConf
2222
option.WithAPIKey(cfg.APIKey),
2323
option.WithBaseURL(cfg.GetEndpoint()),
2424
}
25-
openaiProvider := newOpenAIV3Provider(availableTools, openAIV3Opts...)
25+
openaiProvider := newOpenAICompletionsProvider(availableTools, openAIV3Opts...)
2626

2727
return &Alibaba{openaiProvider: openaiProvider}
2828
}
@@ -31,7 +31,7 @@ func NewAlibaba(cfg config.AlibabaClientConfig, availableTools []config.ToolConf
3131
// The Qwen models from Alibaba Cloud support OpenAI-compatible interfaces
3232
// allowing them to be used with the existing OpenAI provider implementation.
3333
type Alibaba struct {
34-
openaiProvider *openAIV3Provider
34+
openaiProvider *openAICompletionsProvider
3535
}
3636

3737
func (a Alibaba) Name() string {

providers/moonshotai.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func NewMoonshotAI(cfg config.MoonshotAIClientConfig, availableTools []config.To
2727
option.WithAPIKey(cfg.APIKey),
2828
option.WithBaseURL(cfg.GetEndpoint()),
2929
}
30-
openaiProvider := newOpenAIV3Provider(availableTools, openAIV3Opts...)
30+
openaiProvider := newOpenAICompletionsProvider(availableTools, openAIV3Opts...)
3131
openaiProvider.NewCompletionHandler = func() CompletionHandler {
3232
return &moonshotAICompletionHandler{}
3333
}
@@ -39,7 +39,7 @@ func NewMoonshotAI(cfg config.MoonshotAIClientConfig, availableTools []config.To
3939
// The Kimi models from Moonshot AI support OpenAI-compatible interfaces
4040
// allowing them to be used with the existing OpenAI provider implementation.
4141
type MoonshotAI struct {
42-
openaiProvider *openAIV3Provider
42+
openaiProvider *openAICompletionsProvider
4343
}
4444

4545
func (m MoonshotAI) Name() string {

providers/openai.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ import (
2323
func NewOpenAI(cfg config.OpenAIClientConfig, availableTools []config.ToolConfig) *OpenAI {
2424
opts := []option.RequestOption{option.WithAPIKey(cfg.APIKey)}
2525
return &OpenAI{
26-
completionProvider: newOpenAIV3Provider(availableTools, opts...),
26+
completionProvider: newOpenAICompletionsProvider(availableTools, opts...),
2727
responsesProvider: newOpenAIResponsesProvider(availableTools, opts...),
2828
}
2929
}
3030

3131
// OpenAI implements the Provider interface for OpenAI generative models.
3232
type OpenAI struct {
33-
completionProvider *openAIV3Provider
33+
completionProvider *openAICompletionsProvider
3434
responsesProvider *openAIResponsesProvider
3535
}
3636

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ func (h *defaultCompletionHandler) ToParam(_ context.Context, _ logging.Logger,
7878
return message.ToParam()
7979
}
8080

81-
// openAIV3Provider is an OpenAI-compatible provider implementation using
82-
// OpenAI's official Go SDK v3.
83-
type openAIV3Provider struct {
81+
// openAICompletionsProvider is an OpenAI-compatible Chat Completions API
82+
// provider implementation using OpenAI's official Go SDK v3.
83+
type openAICompletionsProvider struct {
8484
client openai.Client
8585
availableTools []config.ToolConfig
8686

@@ -90,7 +90,7 @@ type openAIV3Provider struct {
9090
NewCompletionHandler func() CompletionHandler
9191
}
9292

93-
// openAIV3ModelParams is an internal model configuration used by openAIV3Provider.
93+
// openAIV3ModelParams is an internal model configuration used by OpenAI implementations.
9494
// It is not user-facing; provider wrappers translate their user-facing model params
9595
// into this struct.
9696
type openAIV3ModelParams struct {
@@ -144,18 +144,18 @@ func (r ResponseFormat) Ptr() *ResponseFormat {
144144
return utils.Ptr(r)
145145
}
146146

147-
func newOpenAIV3Provider(availableTools []config.ToolConfig, opts ...option.RequestOption) *openAIV3Provider {
147+
func newOpenAICompletionsProvider(availableTools []config.ToolConfig, opts ...option.RequestOption) *openAICompletionsProvider {
148148
clientOpts := append([]option.RequestOption{
149149
option.WithMaxRetries(0), // disable SDK retries since MindTrial has its own retry policy
150150
}, opts...)
151151

152-
return &openAIV3Provider{
152+
return &openAICompletionsProvider{
153153
client: openai.NewClient(clientOpts...),
154154
availableTools: availableTools,
155155
}
156156
}
157157

158-
func (o *openAIV3Provider) Run(ctx context.Context, logger logging.Logger, cfg config.RunConfig, task config.Task) (result Result, err error) {
158+
func (o *openAICompletionsProvider) Run(ctx context.Context, logger logging.Logger, cfg config.RunConfig, task config.Task) (result Result, err error) {
159159
request := openai.ChatCompletionNewParams{
160160
Model: openai.ChatModel(cfg.Model),
161161
Messages: []openai.ChatCompletionMessageParamUnion{},
@@ -370,7 +370,7 @@ func (o *openAIV3Provider) Run(ctx context.Context, logger logging.Logger, cfg c
370370
} // move to the next conversation turn
371371
}
372372

373-
func (o *openAIV3Provider) createPromptMessage(ctx context.Context, logger logging.Logger, promptText string, files []config.TaskFile, result *Result) (message openai.ChatCompletionMessageParamUnion, err error) {
373+
func (o *openAICompletionsProvider) createPromptMessage(ctx context.Context, logger logging.Logger, promptText string, files []config.TaskFile, result *Result) (message openai.ChatCompletionMessageParamUnion, err error) {
374374
if len(files) > 0 {
375375
parts := make([]openai.ChatCompletionContentPartUnionParam, 0, (len(files)*2)+1)
376376
for _, file := range files {
@@ -403,7 +403,7 @@ func (o *openAIV3Provider) createPromptMessage(ctx context.Context, logger loggi
403403
// to "high" (nearest higher) to avoid artificially reducing image fidelity during evaluations.
404404
// A nil or unrecognised value maps to "auto" (OpenAI's default behavior); a warning is logged
405405
// for unrecognised values so the operator is aware of the fallback.
406-
func (o *openAIV3Provider) mapImageDetailToOpenAI(ctx context.Context, logger logging.Logger, detail *config.ImageDetail) string {
406+
func (o *openAICompletionsProvider) mapImageDetailToOpenAI(ctx context.Context, logger logging.Logger, detail *config.ImageDetail) string {
407407
if detail != nil {
408408
switch *detail {
409409
case config.ImageDetailAuto:
@@ -421,7 +421,7 @@ func (o *openAIV3Provider) mapImageDetailToOpenAI(ctx context.Context, logger lo
421421
return "auto"
422422
}
423423

424-
func (o *openAIV3Provider) isTransientResponse(err error) bool {
424+
func (o *openAICompletionsProvider) isTransientResponse(err error) bool {
425425
return isOpenAITransientResponse(err)
426426
}
427427

@@ -444,15 +444,15 @@ func isOpenAITransientResponse(err error) bool {
444444

445445
// newCompletionHandler returns a fresh CompletionHandler for the current API call.
446446
// If a custom factory is set, it is used; otherwise, the defaultCompletionHandler is returned.
447-
func (o *openAIV3Provider) newCompletionHandler() CompletionHandler {
447+
func (o *openAICompletionsProvider) newCompletionHandler() CompletionHandler {
448448
if o.NewCompletionHandler != nil {
449449
return o.NewCompletionHandler()
450450
}
451451
return &defaultCompletionHandler{}
452452
}
453453

454454
// handleRequest dispatches the request to the appropriate handler based on streaming mode.
455-
func (o *openAIV3Provider) handleRequest(ctx context.Context, logger logging.Logger, request openai.ChatCompletionNewParams, acc CompletionAccumulator) (*openai.ChatCompletion, error) {
455+
func (o *openAICompletionsProvider) handleRequest(ctx context.Context, logger logging.Logger, request openai.ChatCompletionNewParams, acc CompletionAccumulator) (*openai.ChatCompletion, error) {
456456
if request.StreamOptions.IncludeUsage.Value {
457457
return o.handleStreamingRequest(ctx, logger, request, acc)
458458
}
@@ -461,7 +461,7 @@ func (o *openAIV3Provider) handleRequest(ctx context.Context, logger logging.Log
461461

462462
// handleStreamingRequest executes a streaming chat completion request,
463463
// delegating chunk accumulation to the provided CompletionAccumulator.
464-
func (o *openAIV3Provider) handleStreamingRequest(ctx context.Context, logger logging.Logger, request openai.ChatCompletionNewParams, acc CompletionAccumulator) (resp *openai.ChatCompletion, err error) {
464+
func (o *openAICompletionsProvider) handleStreamingRequest(ctx context.Context, logger logging.Logger, request openai.ChatCompletionNewParams, acc CompletionAccumulator) (resp *openai.ChatCompletion, err error) {
465465
stream := o.client.Chat.Completions.NewStreaming(ctx, request)
466466
defer stream.Close()
467467

@@ -476,6 +476,6 @@ func (o *openAIV3Provider) handleStreamingRequest(ctx context.Context, logger lo
476476
return acc.Result(), nil
477477
}
478478

479-
func (o *openAIV3Provider) Close(ctx context.Context) error {
479+
func (o *openAICompletionsProvider) Close(ctx context.Context) error {
480480
return nil
481481
}

providers/openai_v3_internal_test.go renamed to providers/openai_completions_internal_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import (
1818
"github.com/stretchr/testify/require"
1919
)
2020

21-
func TestOpenAIV3_Run_IncompatibleResponseFormat(t *testing.T) {
21+
func TestOpenAICompletions_Run_IncompatibleResponseFormat(t *testing.T) {
2222
logger := testutils.NewTestLogger(t)
23-
p := &openAIV3Provider{}
23+
p := &openAICompletionsProvider{}
2424
runCfg := config.RunConfig{
2525
Name: "test-run",
2626
Model: "gpt-test",
@@ -33,9 +33,9 @@ func TestOpenAIV3_Run_IncompatibleResponseFormat(t *testing.T) {
3333
require.ErrorIs(t, err, ErrIncompatibleResponseFormat)
3434
}
3535

36-
func TestOpenAIV3_FileTypeNotSupported(t *testing.T) {
36+
func TestOpenAICompletions_FileTypeNotSupported(t *testing.T) {
3737
logger := testutils.NewTestLogger(t)
38-
p := &openAIV3Provider{} // nil client is sufficient to exercise early validation
38+
p := &openAICompletionsProvider{} // nil client is sufficient to exercise early validation
3939

4040
runCfg := config.RunConfig{Name: "test-run", Model: "gpt-test"}
4141
task := config.Task{
@@ -159,7 +159,7 @@ func TestDefaultCompletionHandler_ToParam(t *testing.T) {
159159
}
160160

161161
func TestMapImageDetailToOpenAI(t *testing.T) {
162-
provider := &openAIV3Provider{}
162+
provider := &openAICompletionsProvider{}
163163
logger := testutils.NewTestLogger(t)
164164

165165
tests := []struct {

providers/openrouter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ func NewOpenRouter(cfg config.OpenRouterClientConfig, availableTools []config.To
3535
openAIV3Opts = append(openAIV3Opts, option.WithHeader("X-Title", appTitle))
3636
}
3737

38-
openaiProvider := newOpenAIV3Provider(availableTools, openAIV3Opts...)
38+
openaiProvider := newOpenAICompletionsProvider(availableTools, openAIV3Opts...)
3939

4040
return &OpenRouter{openaiProvider: openaiProvider}
4141
}
4242

4343
// OpenRouter implements the Provider interface for models reachable via OpenRouter.
4444
type OpenRouter struct {
45-
openaiProvider *openAIV3Provider
45+
openaiProvider *openAICompletionsProvider
4646
}
4747

4848
func (o OpenRouter) Name() string {

0 commit comments

Comments
 (0)