Skip to content

Commit 84933e9

Browse files
committed
refactor: carry selected provider into telemetry
1 parent 49a57e5 commit 84933e9

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

src/AiRouter/Routing/AiRouterService.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private async Task<RouterResult> ExecuteAsync(
6262
catch (RouteResolutionException ex)
6363
{
6464
var failure = new RouterResult { Success = false, StatusCode = 400, FailureKind = ProviderFailureKind.InvalidRequest, ErrorMessage = ex.Message };
65-
RecordSafe(failure, model, RoutingStrategy.Fallback, false, null, null, requestStarted, 0);
65+
RecordSafe(failure, model, RoutingStrategy.Fallback, false, null, null, null, requestStarted, 0);
6666
return failure;
6767
}
6868

@@ -74,7 +74,7 @@ private async Task<RouterResult> ExecuteAsync(
7474
if (resolved.Length == 0)
7575
{
7676
var unavailable = Unavailable("No enabled providers are available for this route.");
77-
RecordSafe(unavailable, route.RouteId, route.Strategy, route.Pinned, null, null, requestStarted, 0);
77+
RecordSafe(unavailable, route.RouteId, route.Strategy, route.Pinned, null, null, null, requestStarted, 0);
7878
return unavailable;
7979
}
8080

@@ -84,7 +84,6 @@ private async Task<RouterResult> ExecuteAsync(
8484
var affinitySource = requestContext?.AffinitySource ?? "route";
8585
var classification = route.Pinned ? "pinned" : "route";
8686
var affinityApplied = false;
87-
AffinityEntry? priorAffinity = null;
8887

8988
if (route.Strategy == RoutingStrategy.RoundRobin && !route.Pinned && eligible.Length > 1)
9089
{
@@ -100,7 +99,6 @@ private async Task<RouterResult> ExecuteAsync(
10099
if (index >= 0)
101100
{
102101
eligible = Rotate(eligible, index);
103-
priorAffinity = stored;
104102
affinityApplied = true;
105103
classification = "hit";
106104
}
@@ -118,6 +116,7 @@ private async Task<RouterResult> ExecuteAsync(
118116

119117
ProviderResponse? lastResponse = null;
120118
ResolvedTarget? lastTarget = null;
119+
ProviderDefinition? lastDefinition = null;
121120
var attempts = 0;
122121
foreach (var item in eligible)
123122
{
@@ -143,24 +142,25 @@ private async Task<RouterResult> ExecuteAsync(
143142
_affinity.Set(route.RouteId, key, item.Target, DateTimeOffset.UtcNow, _options.StickyAffinityTtl);
144143
}
145144
var mapped = Map(response, item.Target, route, affinityApplied, affinitySource, rebound, attempts > 1, attempts, classification);
146-
RecordSafe(mapped, route.RouteId, route.Strategy, route.Pinned, response, item.Target, requestStarted, attempts);
145+
RecordSafe(mapped, route.RouteId, route.Strategy, route.Pinned, response, item.Target, item.Provider.Definition, requestStarted, attempts);
147146
return mapped;
148147
}
149148

150149
MarkFailure(item.Provider, response, latency);
151150
lastResponse = response;
152151
lastTarget = item.Target;
152+
lastDefinition = item.Provider.Definition;
153153
if (response.StreamCommitted || response.FailureKind is ProviderFailureKind.InvalidRequest or ProviderFailureKind.Cancelled)
154154
{
155155
var terminal = Map(response, item.Target, route, affinityApplied, affinitySource, false, attempts > 1, attempts, classification);
156-
RecordSafe(terminal, route.RouteId, route.Strategy, route.Pinned, response, item.Target, requestStarted, attempts);
156+
RecordSafe(terminal, route.RouteId, route.Strategy, route.Pinned, response, item.Target, item.Provider.Definition, requestStarted, attempts);
157157
return terminal;
158158
}
159159
if (route.Pinned) break;
160160
}
161161

162162
var result = Map(lastResponse!, lastTarget!, route, affinityApplied, affinitySource, false, attempts > 1, attempts, classification);
163-
RecordSafe(result, route.RouteId, route.Strategy, route.Pinned, lastResponse, lastTarget, requestStarted, attempts);
163+
RecordSafe(result, route.RouteId, route.Strategy, route.Pinned, lastResponse, lastTarget, lastDefinition, requestStarted, attempts);
164164
return result;
165165
}
166166

@@ -171,13 +171,14 @@ private void RecordSafe(
171171
bool pinned,
172172
ProviderResponse? response,
173173
ResolvedTarget? target,
174+
ProviderDefinition? definition,
174175
long requestStarted,
175176
int attempts)
176177
{
177178
try
178179
{
179-
var definition = target is null ? null : FindProvider(target.ProviderId)?.Definition;
180-
var cost = CostEstimator.Resolve(response?.Usage, definition);
180+
var usage = response?.Usage;
181+
var cost = CostEstimator.Resolve(usage, definition);
181182
_telemetry.Record(new RouterTelemetryRecord(
182183
DateTimeOffset.UtcNow,
183184
routeId,
@@ -190,7 +191,7 @@ private void RecordSafe(
190191
result.AffinityClassification,
191192
attempts,
192193
Stopwatch.GetElapsedTime(requestStarted),
193-
response?.Usage,
194+
usage,
194195
cost?.Value,
195196
cost?.Source,
196197
result.Success,

0 commit comments

Comments
 (0)