@@ -164,9 +164,16 @@ func (a *Agent) Process(ctx context.Context, chatID int64, userMsg llm.Message,
164164 sysPrompt += "\n \n " + crossSessionCtx
165165 }
166166
167- endLLM := tr .begin (fmt .Sprintf ("iter%d_llm" , i ))
168- resp , err := a .router .Chat (ctx , history , sysPrompt , tools )
169- endLLM ()
167+ iterCtx , timing := llm .WithTimings (ctx )
168+ llmStart := time .Now ()
169+ resp , err := a .router .Chat (iterCtx , history , sysPrompt , tools )
170+ llmTotal := time .Since (llmStart )
171+ if timing .ClassifyRan {
172+ tr .addSpan (fmt .Sprintf ("iter%d_classify" , i ), timing .ClassifyDur )
173+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal - timing .ClassifyDur )
174+ } else {
175+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal )
176+ }
170177 if err != nil {
171178 tr .log (a .logger , chatID , "llm_error" )
172179 return "" , fmt .Errorf ("llm: %w" , err )
@@ -256,10 +263,17 @@ func (a *Agent) ProcessStream(ctx context.Context, chatID int64, userMsg llm.Mes
256263 sysPrompt += "\n \n " + crossSessionCtx
257264 }
258265
259- endLLM := tr .begin (fmt .Sprintf ("iter%d_llm" , i ))
260- ch , err := a .router .ChatStream (ctx , history , sysPrompt , tools )
266+ iterCtx , timing := llm .WithTimings (ctx )
267+ llmStart := time .Now ()
268+ ch , err := a .router .ChatStream (iterCtx , history , sysPrompt , tools )
261269 if err != nil {
262- endLLM ()
270+ llmTotal := time .Since (llmStart )
271+ if timing .ClassifyRan {
272+ tr .addSpan (fmt .Sprintf ("iter%d_classify" , i ), timing .ClassifyDur )
273+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal - timing .ClassifyDur )
274+ } else {
275+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal )
276+ }
263277 tr .log (a .logger , chatID , "llm_error" )
264278 return "" , fmt .Errorf ("llm: %w" , err )
265279 }
@@ -270,7 +284,13 @@ func (a *Agent) ProcessStream(ctx context.Context, chatID int64, userMsg llm.Mes
270284
271285 for chunk := range ch {
272286 if chunk .Err != nil {
273- endLLM ()
287+ llmTotal := time .Since (llmStart )
288+ if timing .ClassifyRan {
289+ tr .addSpan (fmt .Sprintf ("iter%d_classify" , i ), timing .ClassifyDur )
290+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal - timing .ClassifyDur )
291+ } else {
292+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal )
293+ }
274294 tr .log (a .logger , chatID , "stream_error" )
275295 return "" , fmt .Errorf ("llm stream: %w" , chunk .Err )
276296 }
@@ -287,7 +307,13 @@ func (a *Agent) ProcessStream(ctx context.Context, chatID int64, userMsg llm.Mes
287307 }
288308 }
289309 }
290- endLLM ()
310+ llmTotal := time .Since (llmStart )
311+ if timing .ClassifyRan {
312+ tr .addSpan (fmt .Sprintf ("iter%d_classify" , i ), timing .ClassifyDur )
313+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal - timing .ClassifyDur )
314+ } else {
315+ tr .addSpan (fmt .Sprintf ("iter%d_llm" , i ), llmTotal )
316+ }
291317
292318 if len (toolCalls ) == 0 {
293319 a .store .AddMessage (chatID , llm.Message {Role : "assistant" , Content : accumulated })
0 commit comments