Skip to content

Commit 18a2b96

Browse files
committed
feat: init dynamic modules work
Signed-off-by: Takeshi Yoneda <[email protected]>
1 parent a1e4899 commit 18a2b96

File tree

4 files changed

+23
-23
lines changed

4 files changed

+23
-23
lines changed

cmd/dynamic_module/main.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func (g *globalState) initializeEnv() error {
8181
return fmt.Errorf("failed to create prometheus reader: %w", err)
8282
}
8383

84-
meter, _, err := metrics.NewMetricsFromEnv(ctx, os.Stdout, promReader)
84+
meter, _, err := metrics.NewMeterFromEnv(ctx, os.Stdout, promReader)
8585
if err != nil {
8686
return fmt.Errorf("failed to create metrics: %w", err)
8787
}
@@ -103,12 +103,12 @@ func (g *globalState) initializeEnv() error {
103103
g.env = &dynamicmodule.Env{
104104
RootPrefix: os.Getenv("AI_GATEWAY_dynamicmodule_ROOT_PREFIX"),
105105
EndpointPrefixes: endpointPrefixes,
106-
ChatCompletionMetricsFactory: metrics.NewChatCompletionFactory(meter, metricsRequestHeaderAttributes),
107-
MessagesMetricsFactory: metrics.NewMessagesFactory(meter, metricsRequestHeaderAttributes),
108-
CompletionMetricsFactory: metrics.NewCompletionFactory(meter, metricsRequestHeaderAttributes),
109-
EmbeddingsMetricsFactory: metrics.NewEmbeddingsFactory(meter, metricsRequestHeaderAttributes),
110-
ImageGenerationMetricsFactory: metrics.NewImageGenerationFactory(meter, metricsRequestHeaderAttributes),
111-
RerankMetricsFactory: metrics.NewRerankFactory(meter, metricsRequestHeaderAttributes),
106+
ChatCompletionMetricsFactory: metrics.NewMetricsFactory(meter, metricsRequestHeaderAttributes, metrics.GenAIOperationChat),
107+
MessagesMetricsFactory: metrics.NewMetricsFactory(meter, metricsRequestHeaderAttributes, metrics.GenAIOperationMessages),
108+
CompletionMetricsFactory: metrics.NewMetricsFactory(meter, metricsRequestHeaderAttributes, metrics.GenAIOperationCompletion),
109+
EmbeddingsMetricsFactory: metrics.NewMetricsFactory(meter, metricsRequestHeaderAttributes, metrics.GenAIOperationEmbedding),
110+
ImageGenerationMetricsFactory: metrics.NewMetricsFactory(meter, metricsRequestHeaderAttributes, metrics.GenAIOperationImageGeneration),
111+
RerankMetricsFactory: metrics.NewMetricsFactory(meter, metricsRequestHeaderAttributes, metrics.GenAIOperationRerank),
112112
}
113113
return nil
114114
}

internal/dynamicmodule/dynamic_module.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ const (
3232

3333
// Env holds the environment configuration for the dynamic module that is process-wide.
3434
type Env struct {
35-
RootPrefix string
36-
EndpointPrefixes internalapi.EndpointPrefixes
37-
ChatCompletionMetricsFactory metrics.ChatCompletionMetricsFactory
38-
MessagesMetricsFactory metrics.MessagesMetricsFactory
39-
CompletionMetricsFactory metrics.CompletionMetricsFactory
40-
EmbeddingsMetricsFactory metrics.EmbeddingsMetricsFactory
41-
ImageGenerationMetricsFactory metrics.ImageGenerationMetricsFactory
42-
RerankMetricsFactory metrics.RerankMetricsFactory
35+
RootPrefix string
36+
EndpointPrefixes internalapi.EndpointPrefixes
37+
ChatCompletionMetricsFactory,
38+
MessagesMetricsFactory,
39+
CompletionMetricsFactory,
40+
EmbeddingsMetricsFactory,
41+
ImageGenerationMetricsFactory,
42+
RerankMetricsFactory metrics.Factory
4343
}

internal/dynamicmodule/upstream_filter.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/envoyproxy/ai-gateway/internal/filterapi"
2121
"github.com/envoyproxy/ai-gateway/internal/headermutator"
2222
"github.com/envoyproxy/ai-gateway/internal/internalapi"
23+
"github.com/envoyproxy/ai-gateway/internal/metrics"
2324
"github.com/envoyproxy/ai-gateway/internal/translator"
2425
)
2526

@@ -36,7 +37,7 @@ type (
3637

3738
// -- per endpoint processor --
3839
translator any
39-
metrics any
40+
metrics metrics.Metrics
4041
}
4142
)
4243

@@ -213,15 +214,15 @@ func (f *upstreamFilter) initializeTranslatorMetrics(b *filterapi.Backend) error
213214
default:
214215
return fmt.Errorf("unsupported API schema: backend=%s", out)
215216
}
216-
f.metrics = f.env.ChatCompletionMetricsFactory()
217+
f.metrics = f.env.ChatCompletionMetricsFactory.NewMetrics()
217218
case completionsEndpoint:
218219
switch out.Name {
219220
case filterapi.APISchemaOpenAI:
220221
f.translator = translator.NewChatCompletionOpenAIToOpenAITranslator(out.Version, modelNameOverride)
221222
default:
222223
return fmt.Errorf("unsupported API schema: backend=%s", out)
223224
}
224-
f.metrics = f.env.CompletionMetricsFactory()
225+
f.metrics = f.env.CompletionMetricsFactory.NewMetrics()
225226
case embeddingsEndpoint:
226227
switch out.Name {
227228
case filterapi.APISchemaOpenAI:
@@ -231,31 +232,31 @@ func (f *upstreamFilter) initializeTranslatorMetrics(b *filterapi.Backend) error
231232
default:
232233
return fmt.Errorf("unsupported API schema: backend=%s", out)
233234
}
234-
f.metrics = f.env.CompletionMetricsFactory()
235+
f.metrics = f.env.CompletionMetricsFactory.NewMetrics()
235236
case imagesGenerationsEndpoint:
236237
switch out.Name {
237238
case filterapi.APISchemaOpenAI:
238239
f.translator = translator.NewImageGenerationOpenAIToOpenAITranslator(out.Version, modelNameOverride)
239240
default:
240241
return fmt.Errorf("unsupported API schema: backend=%s", out)
241242
}
242-
f.metrics = f.env.CompletionMetricsFactory()
243+
f.metrics = f.env.CompletionMetricsFactory.NewMetrics()
243244
case rerankEndpoint:
244245
switch out.Name {
245246
case filterapi.APISchemaCohere:
246247
f.translator = translator.NewRerankCohereToCohereTranslator(out.Version, modelNameOverride)
247248
default:
248249
return fmt.Errorf("unsupported API schema: backend=%s", out)
249250
}
250-
f.metrics = f.env.RerankMetricsFactory()
251+
f.metrics = f.env.RerankMetricsFactory.NewMetrics()
251252
case messagesEndpoint:
252253
switch out.Name {
253254
case filterapi.APISchemaAnthropic:
254255
f.translator = translator.NewAnthropicToAnthropicTranslator(out.Version, modelNameOverride)
255256
default:
256257
return fmt.Errorf("unsupported API schema: backend=%s", out)
257258
}
258-
f.metrics = f.env.MessagesMetricsFactory()
259+
f.metrics = f.env.MessagesMetricsFactory.NewMetrics()
259260
default:
260261
return fmt.Errorf("unsupported endpoint for per-route upstream filter: %v", f.rf.endpoint)
261262
}

internal/tracing/tracing_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/envoyproxy/ai-gateway/internal/testing/testotel"
2626
tracing "github.com/envoyproxy/ai-gateway/internal/tracing/api"
2727
"github.com/envoyproxy/ai-gateway/internal/tracing/openinference"
28-
openaisdk "github.com/openai/openai-go/v2"
2928
)
3029

3130
// clearEnv clears any OTEL configuration that could exist in the environment.

0 commit comments

Comments
 (0)