AI Engineer World's Fair 2026
FinOps for AI Agents: Who Spent All the Tokens? — Tisha Chawla & Susheem Koul, Microsoft
Read the talk
FinOps for AI Agents: Steering Runs Before the Budget Runs Out
Tisha Chawla and Susheem Koul explain how Token Ops connects spending attribution, run-level budgets, and developer-authorized actions to control agent costs while preserving the chance of completion.
From a talk by Tisha Chawla and Susheem Koul
At a glance
Ideas worth remembering
Useful cost governance connects model-call spending to agent runs and user dimensions, then uses that attribution to govern loops, context growth, and shared budgets.
The boundary annotation carries telemetry to the control plane and actions back to the agent; the governor limits those actions to capabilities authorized by the developer.
Preview mode separates policy evaluation from enforcement. Steering then offers interventions such as shorter outputs or reduced tool results, while halting remains the final budget boundary.
The reported full-suite results pair almost 78% lower average spending with completion rising from 67% to roughly 96% compared with simple throttling. Missing benchmark details limit conclusions about output quality and transfer to other workloads.
Learning new policies or tuning existing ones from ledger data is future work; the demonstrated system relies on an existing policy catalog and configured actions.
From token consumption to useful work
An AI bill can reveal how much an agent workflow spent without explaining which activity produced the expense. Tisha Chawla opens with that attribution problem and frames the goal as a shift from maximizing token consumption to maximizing the value obtained from it. Exploration can justify substantial usage, but the eventual question is whether that usage produced something worthwhile.
Her historical comparison connects each software business model to its controls. SaaS offered usage caps, seat limits, and tier-based policies. Cloud computing introduced pay-as-you-go consumption with provisioning and autoscaling policies. In agent workflows, code repeatedly calls models, and those calls create spending. Chawla argues that this execution layer needs its own controls, beyond the hard caps and model downgrades available through gateways.
Reports of rapidly exhausted AI budgets and runaway loops motivate the proposal. Chawla cites a report that Uber exhausted its AI budget within four months, but uses these examples to introduce a design question: what mechanisms would control unbounded consumption at its source? The argument proceeds from attribution and execution rather than from choosing a particular cost dashboard.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Attribute model calls, then control the run
The first principle is to connect the unit of spending to the work responsible for it. Tokens provide a consumption measure, and the model-call boundary is where the system must record that consumption. A call also needs an agent identity and a run identity. Without those associations, an aggregate bill can expose a problem while leaving the responsible execution unknown.
Attribution makes targeted intervention possible. If an agent is repeating an unnecessary loop, the intervention should address that loop. If its context is growing excessively, the intervention should address context growth. Chawla places a budget-triggered halt at the end of this sequence: first attempt to correct the behavior that is consuming resources, then terminate if the budget still requires it.
This explains the emphasis on entire runs. An individual model request is only one step in a process that may alternate between an agent and its tools, spawn multiple subagents, and carry an expanding context into later calls. Request routing and hard caps can affect individual calls, but the proposed controller needs enough execution context to act on those larger patterns.
The proposed platform therefore combines cumulative budgets across attributed runs with enforcement in the call path. Context compaction and caching are examples of interventions that could happen during execution, before a final budget cap stops the work. The presenters’ criticism of gateway controls is specifically about this missing run-level influence: controlling a request does not by itself control the workflow that keeps generating requests.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Instrumentation, accounting, and enforcement
Token Ops organizes governance into three responsibilities. Instrumentation supplies telemetry, enrichment, and attribution. Accounting accumulates the activity in a ledger. Enforcement uses policies to steer execution, with halting retained as the final response to an exhausted budget. The ledger connects observation to intervention: it provides the accumulated record against which spending decisions can be made.
The presenters describe an out-of-band control plane intended to avoid rewriting the agent’s application logic. Taking over the design explanation, Susheem Koul separates the architecture into the existing agent runtime, a bridge that transfers data between the runtime and the controller, and the control plane where decisions reside. That separation gives the application a local integration point while keeping the governance logic in a distinct system.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A boundary carries observations up and actions down
The bridge starts with attribution dimensions attached to each agent run. Its central integration mechanism is a boundary annotation applied to an existing method. Koul presents this as independent of the agent framework: the annotation tracks the method’s inputs and outputs, sends that information to the control plane, and records a ledger entry associated with the run ID and other attributes.
The same annotation is also a return channel for actions. The control plane can send a behavioral adjustment back to the running agent through the boundary. This makes the bridge bidirectional: observations support a decision, and the decision can influence subsequent execution. The intended benefit is to fit more completed runs inside a budget by changing how resources are used while work is underway.
Koul illustrates this with a retrieval tool returning 20 chunks per call, sorted by relevance. Suppose only the first five are useful to the model. The controller could request that the tool’s output be limited to five chunks, reducing the material passed onward. This is a conditional example: its justification depends on the later chunks being irrelevant. The explanation does not establish a general method for determining which chunks the model actually needs.
Receiving an action and applying it are separate responsibilities. The boundary receives the request; a governor knows which actions the developer has allowed and how to apply them. The controller’s authority is therefore constrained by the integration’s configured capabilities. For model providers exposed through objects rather than standalone methods, Koul also describes a helper called “wrap complete” that applies the boundary mechanism to those objects.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Turn attribution into budgets and policies
On the control plane, a segment groups activity using the dimensions emitted by the agent. Koul’s example is a preview agent shared with conference attendees and tagged with the cohort AIE 2026. A budget can apply to that cohort collectively, rather than only to an individual agent or run. The same mechanism supports finer or coarser groupings, depending on the dimensions the application supplies.
The ledger gathers a run’s traces in one place. A budget supplies a static threshold over a time window for a segment or an agent run. Actions define what can happen when intervention is needed, and policies combine the budgets and actions with the segments or runs to which they apply. This separates the scope of accounting, the spending limit, and the response to that limit.
Actions have two broad forms. Halt actions terminate an agent that exceeds its budget. Steer actions change the behavior of the agent or one of its components to try to complete within the allotted amount. Steering is an attempt to preserve useful execution; it is not presented as a guarantee that every task can fit within any budget.
Integration consists of annotating existing methods and creating a governor with configuration declaring the allowed actions. Koul says the control plane resides in the developer’s own tenant. That describes the intended deployment boundary, although tenant placement alone does not establish the broader claim that data cannot leak. The concrete control described here is the governor’s restriction on what the control plane may do to an agent.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Preview policies before enabling enforcement
The demonstration uses a two-agent workflow. A research agent receives a question and can invoke a web-search tool as many times as it wants. Once it considers its evidence sufficient, it passes the findings to a summarizer that produces a research report. This gives the governance system a concrete workflow with discretionary tool use followed by a distinct output stage.
The first scenario runs Token Ops in preview mode. Policies evaluate normally, but their associated actions cannot execute. Koul describes a completed run with governance off while the dashboard still shows policy evaluations, including the cost budget and cost guard. This distinction lets an operator examine when policies would intervene without allowing those interventions to change the workflow.
Koul positions preview mode as a way to introduce governance into production: observe the guardrails, adjust their behavior, and settle on thresholds before enabling enforcement. The second scenario enables governance and demonstrates the harder boundary. When the run exceeds its allotted budget, it is killed immediately. This circuit breaker constrains further execution, but the run does not get to finish.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Steer using consumption and velocity
The steering scenario uses another prompt with a slightly higher budget, which Koul describes as still insufficient for the unadjusted run. A cost guard considers two signals: how much of the allotted budget has already been consumed and the velocity of token consumption. Together, these signals are used to predict whether the run will exhaust its allowance before finishing.
When the guard predicts an overrun, it injects an instruction into the system instructions asking the model to make its outputs more succinct or summarized. The intervention therefore changes requested behavior before the budget is exhausted. The explanation supplies the signals and the action, but not the forecasting formula, how remaining work is estimated, or a measured final outcome for this particular scenario. A request for brevity should consequently be understood as steering, rather than a deterministic token limit.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Measure spending alongside completion
Beyond the small demonstration, the presenters report benchmarks on two open-source repositories. Koul says the testing covered multiple iterations, stress tests, and both simple and hard scenarios. With the full policy suite enabled, he reports an almost 78% reduction in average spending.
Completion is the second measure. Compared with simple throttling, which stops runs when limits are reached, the reported completion share rises from 67% to roughly 96%. That result supports the presenters’ central concern: a lower bill is less useful if it is achieved by preventing work from finishing. These are presenter-reported results, however. Sample sizes, exact task sets, output-quality criteria, and the spending comparison baseline are not specified, so the figures do not establish equivalent answer quality or a general savings rate for other workloads.
The benchmark uses a broader catalog than the demonstrated brevity instruction. Koul lists spending controls, context compaction, tool-output reduction, loop detection, and progress detection. The action vocabulary includes allow, mutate, and inject for steering, alongside termination for halting. Because the reported savings come from the full suite, the talk does not isolate how much improvement came from any one policy.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Use the ledger to improve future policies
The closing proposal extends the ledger’s role beyond accounting. Because it is continuously updated, a future self-learning module could inspect it for failure modes that existing policies still miss. Koul describes two possible responses: generate new policies for remaining runaway costs, or refine the parameters of existing policies so they intervene more effectively.
This learning loop is an envisioned next step, not a demonstrated capability. The proposal identifies what it would inspect and what it might change, without describing how generated policies would be validated. The presenters close by pointing attendees to a public wiki they say they update regularly and inviting further discussion.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Read the complete timestamped transcript
- 0:01
[music]
- 0:13
Okay. Um, good morning everyone. So, um,
- 0:16
I'm Tisha and I have Sushim with me as
- 0:18
my co-presenter. All right. So, we'll be
- 0:21
talking about the most expensive
- 0:23
question in AI today. I think a lot of
- 0:27
you would have come across the scenario
- 0:29
that um you know when you opened an AI
- 0:32
bill like through your agent workflows
- 0:34
um you couldn't actually trace back
- 0:37
where that bill was actually coming from
- 0:39
right and um and I don't think that's a
- 0:42
problem right now because right now the
- 0:45
industry is valuing you know um token
- 0:48
maxing that is like spending the most
- 0:51
amount of tokens for exploration for all
- 0:54
of those purposes
- 0:55
And um people are proud to call
- 0:57
themselves token billionaires and um I
- 0:59
think that's all right but this talk is
- 1:02
you know the shift from token maxing to
- 1:05
value maxing you know how do we get
- 1:08
there and um we'll talk about it from
- 1:12
this question um who spent all the
- 1:15
tokens and um if anyone spent all the
- 1:19
tokens there has to be value associated
- 1:21
with this right and that is um the talk
- 1:26
about.
- 1:30
All right. Now in order to minimize the
- 1:33
gap you know from token maxing to value
- 1:36
maxing we'll kind of see we'll observe
- 1:39
the patterns which the like the existing
- 1:43
um u like the past software evolution
- 1:46
eras had like for instance when we talk
- 1:49
about the SAS era the interface was UI
- 1:53
and the control was in the form of usage
- 1:56
caps right like or the seat limits or
- 1:58
tier based policies
- 2:00
Now when we moved on to the cloud era,
- 2:03
the control surface again changed. The
- 2:06
model became pay as you go and the
- 2:08
control moved like in the form of
- 2:10
autoprovisioning and you know
- 2:12
autoscaling policies.
- 2:14
Now we are in the agentic era right and
- 2:18
um now how the cost is calculated here
- 2:22
is in the form of model calls right like
- 2:26
u how like the code calls your model but
- 2:31
what we've observed is that there isn't
- 2:34
a proper control plane in place for that
- 2:37
like we do have control plane in place
- 2:40
for you in place as model gateways where
- 2:43
they're um are hard caps or there is
- 2:46
model routing to downgrade the model but
- 2:49
the part like where the code you know
- 2:53
calls the model that um is what we'll be
- 2:57
talking about uh today
- 3:00
and um we also you know see um like in
- 3:05
the last year we've seen a lot of
- 3:07
unbounded consumption happening like um
- 3:12
if you've read the news. There was news
- 3:14
about the like the uh AI budget for Uber
- 3:19
getting exhausted within 4 months and um
- 3:21
there were companies who like who ran
- 3:24
into you know
- 3:26
like hundreds of millions of dollars
- 3:28
within just months or days and like
- 3:30
there were a lot of um like other news
- 3:32
in place as well where like these
- 3:35
runaway loops um led to a very like
- 3:39
massive increase in the cost and there
- 3:42
wasn't proper mechanisms to control it.
- 3:47
Um so when we see all of this the first
- 3:50
thing that comes to our mind is is there
- 3:52
a tool or is there a product to save us?
- 3:54
But uh we'll instead talk about the
- 3:58
first principles of how you know we can
- 4:02
design a system which is actually true
- 4:05
enough to solve the problem from the
- 4:07
very root. So for that let's um like
- 4:10
dive onto the principles. First of all,
- 4:13
let's talk about token being the unit of
- 4:15
cost. Right? We are charged in terms of
- 4:18
token. So the now we have to see value
- 4:23
also in terms of token. Right? Next um
- 4:27
we all know that cost is created at the
- 4:30
LLM like the model call boundary. Um so
- 4:33
that is what we'll have to track and if
- 4:37
we don't have proper attribution like if
- 4:39
we don't know what agent want run made
- 4:42
that particular call we we can't you
- 4:45
know control it right we we just know
- 4:48
the like the broad uh picture of what
- 4:51
went wrong but we don't we can't you
- 4:53
know trace it back or narrow it down. So
- 4:55
that is why attribution is a very
- 4:57
important element to have and um like
- 5:01
once you know which particular run or
- 5:04
which particular agent is actually you
- 5:07
know attributing to the cost you should
- 5:09
have proper policies in place to
- 5:11
actually stop it. Like um let's take
- 5:14
example that um if you have a you know
- 5:17
um a loop which is you know running um
- 5:22
very excessively and which is not
- 5:24
required or you know if your context is
- 5:27
growing very out of range. you should
- 5:30
have in place policies which can um like
- 5:33
solve that particular thing there and
- 5:35
there instead of halting that and if um
- 5:38
and as the last resort only a like a
- 5:41
halting or a should happen from a budget
- 5:44
cap. So these are the first principles.
- 5:46
Now let's see how we can you know define
- 5:50
an ideal uh platform on top of that from
- 5:53
these principles which we talked about.
- 5:56
All right. Uh so one thing which is very
- 5:58
important that which matters here is
- 6:00
that u when we talk about um like the um
- 6:05
existing frameworks for token ops or for
- 6:07
token management most of them are at the
- 6:11
um like u basically monitor the model uh
- 6:15
request. they like they are like model
- 6:19
gateways which will u you know u
- 6:22
basically um do like model routing or
- 6:26
hard budget capping. But what we need
- 6:28
right now is something which you know um
- 6:33
like monitors you at the run instead.
- 6:35
Like um if you see we need something uh
- 6:39
which can control the loop between like
- 6:43
the agent call between the tool um and
- 6:47
the agent. something you know which can
- 6:50
um uh see or control the the spawning of
- 6:54
multiple sub aents happening from a one
- 6:56
main agent or um like something which
- 7:00
can control the growing of context. So
- 7:02
like that is the need of the right and
- 7:05
that is what we need. So for all of this
- 7:08
um we like uh kind of are proposing a
- 7:12
platform which first of all um has a
- 7:15
cumulative budget across like the uh
- 7:19
like the attribution runs which happened
- 7:24
and then where enforcement actually
- 7:26
happens in call path rather than um you
- 7:30
know a separate thing like for example
- 7:33
if something goes wrong if your like if
- 7:35
your context is just growing heavily.
- 7:38
Then like in place compaction should
- 7:43
happen or like in place caching or
- 7:45
something like that should happen. And
- 7:47
um after that if like after basically
- 7:50
exhausting the list of all in place
- 7:53
policies only like uh the budget cap
- 7:57
should happen at the very last. Um so
- 7:59
that is something which we are
- 8:01
proposing. But um if you look at the
- 8:04
landscape today, if you see the uh like
- 8:07
the uh tools like um this light LLM,
- 8:10
port key, cloudflare, all of those they
- 8:12
happen at again the request level right
- 8:16
um like if you see like halting is
- 8:20
there, routing is there for some of
- 8:22
those but all of this again is at a
- 8:26
request and you can't control the cost
- 8:28
at the uh request layer uh at the model
- 8:31
layer, Right.
- 8:34
So this is the missing piece which is
- 8:36
you know the
- 8:38
u basically navigating it at the um you
- 8:42
know the model the agent run layer.
- 8:47
So for that we have token ops which is
- 8:50
uh you know a runaway token governance
- 8:52
for AI agents and u this is the uh
- 8:57
architecture for that. So first of all
- 9:00
one thing I would want to highlight is
- 9:02
the like the intentional design decision
- 9:04
we took here was an out ofbound plane.
- 9:07
So it doesn't interfere with your code
- 9:10
at all. Um so if you see here that out
- 9:13
of the bandound plane has three modules
- 9:15
which I'll be talking about. The first
- 9:17
one being instrumentation. It is a
- 9:19
common observability layer where you
- 9:21
know you'll u like uh have u like the
- 9:25
basic telemetry the open telemetry the
- 9:27
cost in microns and um like the um like
- 9:32
enrichment layer and basically um the uh
- 9:37
attribution like what caused that uh
- 9:40
like particular run
- 9:43
and then there is um obviously
- 9:45
accounting where
- 9:48
you'll basically accumulate it in a kind
- 9:51
of a ledger like the total runs which
- 9:54
are happening. And finally we have this
- 9:56
enforced layer which has uh two main
- 10:00
purposes. one is steering it um through
- 10:04
the policies which we've defined which I
- 10:06
think will cover later and um then we
- 10:10
have halt in place as the you know final
- 10:13
um like u final thing if um you know
- 10:16
your budget is getting exhausted
- 10:19
so yeah that is there now when we again
- 10:22
look at the landscape this kind of will
- 10:26
solve a lot of problems
- 10:29
um which kind of happened uh when we
- 10:32
like look at the previous um tools or
- 10:35
products there because uh it is at
- 10:38
happening at run and it is you know uh
- 10:41
helping you solve the problem from the
- 10:44
very root by steering it in place.
- 10:48
All right. So uh with this I would like
- 10:51
to hand it over to Sashim for the demo.
- 10:53
>> Yeah.
- 10:57
>> Oh yeah. Now I think I should be able to
- 10:59
everyone in the back can hear me. All
- 11:00
right, perfect. So yeah, we have
- 11:03
established the principles behind token
- 11:05
ops till now. Right. Now let's shift
- 11:08
gears, talk about the design part of it
- 11:09
and uh maybe get into the code and the
- 11:12
eventual demo. Right? So what I have
- 11:14
behind me on the screen is the like
- 11:16
bird's eye view of what token ops looks
- 11:19
like today. It's it's three layers.
- 11:21
We'll go left to right and top to
- 11:23
bottom. So on the left most you have
- 11:24
your own agent runtime which you're
- 11:26
trying to instrument and kind of manage
- 11:27
the cost for right the middle layer is
- 11:30
what we're calling the bridge that
- 11:32
basically shuffles data between your
- 11:33
agent and the control plane and the
- 11:36
control plane is where the mind of the
- 11:38
system lies right so let's talk about
- 11:40
the bridge layer very briefly if we uh
- 11:42
go from top to bottom you have the
- 11:43
attribution on top so what we're trying
- 11:45
to do here is every agent run that you
- 11:48
do it's attributed to some user
- 11:50
dimensions so the idea is everything
- 11:53
that you do every run of the agent is
- 11:55
accounted to some usability or some
- 11:57
usage. This comes in handy later. We'll
- 11:59
talk about it. Uh the second part which
- 12:01
is the boundary annotation that you see
- 12:03
this is pretty much the heart and soul
- 12:04
of this middle layer. So the idea behind
- 12:07
the boundary annotation is that you take
- 12:08
any method. It doesn't matter what
- 12:10
framework you're using. You might be
- 12:11
using uh let's say lang chain lang
- 12:13
whatever. If you have a method you can
- 12:15
annotate it with boundary. What this
- 12:17
annotation is going to do is it's going
- 12:19
to do two things. First it's going to
- 12:20
track the input and the output and it's
- 12:22
going to flight that up to the control
- 12:24
layer and record it there as a ledger
- 12:26
entry. Now this will be annotated with
- 12:28
the further agent run ID and the other
- 12:30
attributes and so on. The second thing
- 12:32
the boundary annotation does is it acts
- 12:34
as a channel through which the control
- 12:35
plane can push actions down to the
- 12:37
agent. This is where the entire
- 12:39
intelligence lies. So we do not have a
- 12:41
single directional highway. We want the
- 12:43
control plane to be able to tweak the
- 12:45
behavior of the agent on the fly to
- 12:48
ensure that we are able to squeeze in
- 12:49
more runs inside our budget cap. Right
- 12:52
now let's say the control plane pushes
- 12:54
down an action. Let's take a small
- 12:55
example. Let's say you have a rag
- 12:56
retrieval tool which is generating like
- 12:58
20 chunks every retrieval for every call
- 13:01
and that's eating up eating up your
- 13:02
budget. And let's say the LLM is not
- 13:04
even using the chunks that are after
- 13:06
five because they are just not relevant,
- 13:07
right? They're sorted by relevance. So
- 13:09
let's say the control plane observes
- 13:10
this and it wants to limit the output to
- 13:13
just five chunks. So it can push down an
- 13:15
action but that action has to be
- 13:17
received by boundary and then has to be
- 13:19
executed by something. That is where the
- 13:21
third node, the governor node comes in.
- 13:22
The governor knows what actions are
- 13:26
allowed on your agent by you as a
- 13:28
developer and it receives those actions
- 13:30
from the control plane and knows how to
- 13:31
apply it in a non-destructive way. So
- 13:34
that's the first three. The fourth one
- 13:35
wrap uh the wrap complete is essentially
- 13:37
just a helper method. So as we know most
- 13:40
of the agent providers or the model
- 13:41
providers they provide objects rather
- 13:43
than methods for their LMS right. So
- 13:45
wrap complete is just another way of
- 13:46
applying boundary on objects rather than
- 13:48
methods. Let's shift right to the
- 13:51
control plane. On the control plane the
- 13:52
first layer is the segment. Now this is
- 13:55
where the attribution that we talked
- 13:56
about earlier comes into picture. So any
- 13:59
dimensions that you float from the
- 14:01
attribution layer. Let's say you have a
- 14:03
preview agent that you share with
- 14:04
everyone in this room and your agent is
- 14:06
floating a dimension saying that cohort
- 14:09
is AIE 2026 right so you can create a
- 14:12
segment which is a cohort of users which
- 14:15
is based on this tag like dimension
- 14:16
being AI 2026 right and you can apply
- 14:19
your budgets at this cohort level so you
- 14:21
don't necessarily have to restrict
- 14:23
everything at an agent level or a run
- 14:24
level you can do you can do rollups you
- 14:27
can do fine grain or coarse grain
- 14:28
control right so that's the segmentation
- 14:31
part of Ledger as I mentioned is just
- 14:33
one agent run all the traces in one
- 14:35
place. Then you have budgets. Budgets
- 14:37
are basically just the static thresholds
- 14:39
that work across a time window against a
- 14:41
particular segment or an agent run. And
- 14:43
then you have actions. So on the actions
- 14:45
part we have broadly two flavors. First
- 14:48
is the halt type actions which basically
- 14:49
just kill your agent if it exceeds a
- 14:51
budget. The second part where we are
- 14:53
adding value is the steer type actions.
- 14:56
So here we do not kill the agent.
- 14:58
Instead we try to steer the behavior of
- 15:00
the agent or the components of the agent
- 15:02
to try and fit that particular run
- 15:05
within the alerted budget. Right? And
- 15:07
then the policies layer is where it all
- 15:09
comes together. You basically uh group
- 15:11
the budgets the actions and then set
- 15:13
your policies against certain segments
- 15:15
or agent runs and that is where it
- 15:16
executes. Right? So moving on uh what
- 15:20
changes in your code that is the
- 15:21
boundary annotation that we just talked
- 15:22
about. As Disha mentioned earlier this
- 15:24
is all out of band. So you do not have
- 15:26
to change your code. You just have to
- 15:27
apply the annotation on the methods that
- 15:29
you have. This boundary annotation will
- 15:31
take care of floating all the
- 15:32
information up to the control plane. And
- 15:34
uh the control plane lies in your own
- 15:35
tenant. So you do not need to worry
- 15:37
about any data leaks or anything. Then
- 15:39
if I talk about the governor, so for the
- 15:42
governor, you just have to create an
- 15:43
instance. You just have to pass it your
- 15:44
own configs. These configs will
- 15:46
basically declare what sort of actions
- 15:48
are allowed for those agents, right? so
- 15:50
that your control plane cannot just
- 15:53
willingly do any random things on your
- 15:55
on your agents. So before we move on to
- 15:58
the demo, I'll just briefly touch upon
- 16:00
the uh test that we're going to use
- 16:01
today. So it's a simple two agent
- 16:03
workflow. We have a research agent which
- 16:06
has access to a search tool. Uh you give
- 16:08
it a question. It's allowed to look up
- 16:10
on the web as many times as it wants.
- 16:12
And once it knows that it has all the
- 16:14
data, it passes the findings on to the
- 16:16
second agent which is a summarizer which
- 16:17
creates creates a research report.
- 16:19
Right? So with that out of the way,
- 16:21
let's just quickly walk over to the
- 16:23
demo. So for the demo, we have three
- 16:25
different scenarios that we're going to
- 16:26
talk about. For the first one, we're
- 16:28
going to run the token ops in what we
- 16:30
call preview mode. So in preview mode,
- 16:32
what happens is that all the policies
- 16:34
run as is, but the enforcement doesn't
- 16:36
happen. So if you see we ran a
- 16:39
particular run over here which completed
- 16:42
but we did not see any sort of failures
- 16:45
there. The policies executed but the
- 16:48
actions that were associated with those
- 16:50
policies were not allowed to be
- 16:51
executed. So we're just going to load
- 16:53
the dashboard screen here.
- 16:57
Yeah. So this is the governance output.
- 17:00
Governance is off. The run completed.
- 17:02
But in the dashboard you can see the
- 17:03
policies have executed. So you can see
- 17:04
the cost budget, the cost guard and so
- 17:06
on. Right? So this was the first
- 17:08
scenario. For the second scenario, what
- 17:10
we're going to do is we're going to turn
- 17:11
on the governance. Now while that is
- 17:14
happening, I just want to touch upon why
- 17:15
this is important. So if you want to
- 17:17
like include this product into your
- 17:19
production agents, you want to have a
- 17:21
safe environment or a safe way to
- 17:22
firstly put it in your production
- 17:24
environment, test the guardrails, tweak
- 17:25
the guardrail, see what's the policies
- 17:27
are doing and then finalize the
- 17:30
thresholds. Right? So this is the second
- 17:32
one where we have now enforced the
- 17:34
governance and you can see in the
- 17:36
dashboard that the pre-all cost cap has
- 17:39
exceeded. So you had a budget allotted
- 17:41
for this run but the agent exceeded the
- 17:44
budget and it was killed immediately. So
- 17:45
that's the simple circuit breaker sort
- 17:47
of a methodology. So this is the halt
- 17:49
behavior. And now let's see the steer
- 17:52
behavior which is the which is where we
- 17:55
are trying to add value to this entire
- 17:57
cost management scenario. So this time
- 17:59
we're going to run the third the second
- 18:00
prompt. The budget allotted for this one
- 18:03
is slightly higher but it's still not
- 18:04
high enough for the agent to complete in
- 18:07
time. So what instead happens is there
- 18:09
is something called cost guard which
- 18:11
kicks in. This cost guard it takes into
- 18:13
account two things. First how much of
- 18:15
your allotted budget have you consumed?
- 18:17
Second what is the velocity at which
- 18:19
you're consuming tokens. [music] Now
- 18:20
based on these two things if it predicts
- 18:22
that you're going to run out of your
- 18:24
tokens or your allotted budget by the
- 18:26
end of the run it's going to inject
- 18:28
something into your system instructions
- 18:30
that something could be as simple as hey
- 18:33
you're running out of budget so make
- 18:35
sure that the LM outputs are more
- 18:36
succinct or more summarized right so
- 18:39
that is the way we are doing the
- 18:41
steering now the this was a very simple
- 18:44
test bench to show you like how this
- 18:46
works on a like working code we have
- 18:49
also benchmarked it on a couple of open
- 18:51
source repos. So we have benchmarked it
- 18:53
on browser use as well as metagp. Uh we
- 18:56
ran it across multiple iterations across
- 18:58
stress tests across simple scenarios
- 19:00
hard scenarios and everything. And the
- 19:01
results we see are the average spend
- 19:03
goes down by almost 78% with token ops
- 19:06
enabled with the full policy suit that
- 19:07
we have today. On the completion part
- 19:10
when we compare it with throttling just
- 19:12
simple throttling your simple throttling
- 19:14
is going to kill your agent runs no
- 19:16
matter what. Right? So with the reduced
- 19:18
average spend what you get is you get an
- 19:20
uplift in that completion percentage
- 19:22
from 67% to roughly 96%. So that is the
- 19:25
value ad that token ops is doing here.
- 19:27
Now this is the policy catalog that we
- 19:29
run this benchmark against. This is what
- 19:31
we support today. We kind of researched
- 19:33
what are the different failure modes
- 19:34
that are there today out in the wild and
- 19:36
tried to cover most of them here. So you
- 19:38
have things across spend management, you
- 19:40
have things across context management
- 19:41
like context compaction, tool output
- 19:43
reduction, you have things across loop
- 19:45
detection and progress detection and
- 19:46
stuff like that. So this is the entire
- 19:48
set of policies that we support. And at
- 19:50
the bottom you can see the actions. So
- 19:51
as I mentioned earlier, we have two
- 19:53
flavors. You have the uh the halt type
- 19:56
actions and then the steer type actions.
- 19:58
So for the steer we can do allow,
- 20:00
mutate, inject and so on. And for the
- 20:02
halt, it can be a simple kill. But this
- 20:04
is not the end state that we envision
- 20:05
for this. The end state is we have a lot
- 20:09
of data right we have a ledger that is
- 20:11
continuously being updated. So what we
- 20:13
want to try is we want to try a
- 20:15
self-learning module within the token
- 20:17
ops plane within the control plane which
- 20:19
can look at this ledger and ask this
- 20:21
question hey why or what is the failure
- 20:24
mode that I'm still not able to catch
- 20:26
and then based on that it can do two
- 20:28
things one is it can enhance it can
- 20:30
generate new policies on the fly based
- 20:33
on the missing or the still uh runaway
- 20:36
costs or it can refine the existing
- 20:39
parameters for the existing policies
- 20:40
that are there so that the runaway costs
- 20:43
are managed more effectively in the
- 20:44
future. So with that I think uh that is
- 20:47
all we have for you guys today. Thank
- 20:49
you so much for your time and you can
- 20:51
scan this QR code that's the public
- 20:52
wiki. We are updating it almost
- 20:54
regularly. So you can scan this and stay
- 20:57
up to date and uh Tisha and I are around
- 20:59
so if you guys have any questions or if
- 21:00
you want to discuss more about it just
- 21:02
let us know. That's it. Thank you.
- 21:05
[applause]