@@ -14,16 +14,18 @@ func RegisterOpenAIRoutes(app *echo.Echo,
1414 re * middleware.RequestExtractor ,
1515 application * application.Application ) {
1616 // openAI compatible API endpoint
17+ traceMiddleware := middleware .TraceMiddleware (application )
1718
1819 // realtime
1920 // TODO: Modify/disable the API key middleware for this endpoint to allow ephemeral keys created by sessions
2021 app .GET ("/v1/realtime" , openai .Realtime (application ))
21- app .POST ("/v1/realtime/sessions" , openai .RealtimeTranscriptionSession (application ))
22- app .POST ("/v1/realtime/transcription_session" , openai .RealtimeTranscriptionSession (application ))
22+ app .POST ("/v1/realtime/sessions" , openai .RealtimeTranscriptionSession (application ), traceMiddleware )
23+ app .POST ("/v1/realtime/transcription_session" , openai .RealtimeTranscriptionSession (application ), traceMiddleware )
2324
2425 // chat
2526 chatHandler := openai .ChatEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .TemplatesEvaluator (), application .ApplicationConfig ())
2627 chatMiddleware := []echo.MiddlewareFunc {
28+ traceMiddleware ,
2729 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_CHAT )),
2830 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
2931 func (next echo.HandlerFunc ) echo.HandlerFunc {
@@ -41,6 +43,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
4143 // edit
4244 editHandler := openai .EditEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .TemplatesEvaluator (), application .ApplicationConfig ())
4345 editMiddleware := []echo.MiddlewareFunc {
46+ traceMiddleware ,
4447 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_EDIT )),
4548 re .BuildConstantDefaultModelNameMiddleware ("gpt-4o" ),
4649 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
@@ -59,6 +62,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
5962 // completion
6063 completionHandler := openai .CompletionEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .TemplatesEvaluator (), application .ApplicationConfig ())
6164 completionMiddleware := []echo.MiddlewareFunc {
65+ traceMiddleware ,
6266 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_COMPLETION )),
6367 re .BuildConstantDefaultModelNameMiddleware ("gpt-4o" ),
6468 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
@@ -78,6 +82,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
7882 // MCPcompletion
7983 mcpCompletionHandler := openai .MCPCompletionEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .TemplatesEvaluator (), application .ApplicationConfig ())
8084 mcpCompletionMiddleware := []echo.MiddlewareFunc {
85+ traceMiddleware ,
8186 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_CHAT )),
8287 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
8388 func (next echo.HandlerFunc ) echo.HandlerFunc {
@@ -95,6 +100,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
95100 // embeddings
96101 embeddingHandler := openai .EmbeddingsEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .ApplicationConfig ())
97102 embeddingMiddleware := []echo.MiddlewareFunc {
103+ traceMiddleware ,
98104 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_EMBEDDINGS )),
99105 re .BuildConstantDefaultModelNameMiddleware ("gpt-4o" ),
100106 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
@@ -113,6 +119,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
113119
114120 audioHandler := openai .TranscriptEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .ApplicationConfig ())
115121 audioMiddleware := []echo.MiddlewareFunc {
122+ traceMiddleware ,
116123 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_TRANSCRIPT )),
117124 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
118125 func (next echo.HandlerFunc ) echo.HandlerFunc {
@@ -130,6 +137,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
130137
131138 audioSpeechHandler := localai .TTSEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .ApplicationConfig ())
132139 audioSpeechMiddleware := []echo.MiddlewareFunc {
140+ traceMiddleware ,
133141 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_TTS )),
134142 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.TTSRequest ) }),
135143 }
@@ -140,6 +148,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
140148 // images
141149 imageHandler := openai .ImageEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .ApplicationConfig ())
142150 imageMiddleware := []echo.MiddlewareFunc {
151+ traceMiddleware ,
143152 // Default: use the first available image generation model
144153 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_IMAGE )),
145154 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
@@ -164,6 +173,7 @@ func RegisterOpenAIRoutes(app *echo.Echo,
164173 // videos (OpenAI-compatible endpoints mapped to LocalAI video handler)
165174 videoHandler := openai .VideoEndpoint (application .ModelConfigLoader (), application .ModelLoader (), application .ApplicationConfig ())
166175 videoMiddleware := []echo.MiddlewareFunc {
176+ traceMiddleware ,
167177 re .BuildFilteredFirstAvailableDefaultModel (config .BuildUsecaseFilterFn (config .FLAG_VIDEO )),
168178 re .SetModelAndConfig (func () schema.LocalAIRequest { return new (schema.OpenAIRequest ) }),
169179 func (next echo.HandlerFunc ) echo.HandlerFunc {
0 commit comments