WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=EtZwTYahfek

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/EtZwTYahfek.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:01.309 --> 00:00:03.309
[music]

s2
00:00:12.480 --> 00:00:17.320
So, we are going to look at how you can build and code your own autonomous Wall Street co-worker.

s3
00:00:17.320 --> 00:00:22.080
So, hopefully we have many finance people or like engineers working in finance here.

s4
00:00:22.080 --> 00:00:26.560
So, quickly before we go into like what right where we are coming from.

s5
00:00:26.560 --> 00:00:28.840
Two years ago, we basically had a chatbot.

s6
00:00:28.840 --> 00:00:32.279
We asked some simple question like what's the capital of France?

s7
00:00:32.279 --> 00:00:34.800
Like who won the last European championship?

s8
00:00:34.800 --> 00:00:42.000
Then we moved to assistance using tools on our own computer, having the first coding agents writing code for us.

s9
00:00:42.000 --> 00:00:56.880
And now we are moving into like this autonomous co-worker area where we basically give and or create a digital employee where we give an agent its own computer, give it a task and hopefully come back a few hours later with a good result.

s10
00:00:56.880 --> 00:00:59.880
So, what does a co-worker normally need?

s11
00:00:59.880 --> 00:01:03.440
And I think that goes for AI and for us humans as well.

s12
00:01:03.440 --> 00:01:06.800
We need a brain to be able to do our work.

s13
00:01:06.800 --> 00:01:12.640
We need a computer where we can save artifacts we create, where we can iterate.

s14
00:01:12.640 --> 00:01:14.840
We need some kind of a new playbook, right?

s15
00:01:14.840 --> 00:01:19.200
When you hire someone new, they are new to your environment, to your domain.

s16
00:01:19.200 --> 00:01:22.400
You might have specific workflows, so you need playbooks.

s17
00:01:22.400 --> 00:01:25.520
We need tools for them to be able to do that job.

s18
00:01:25.520 --> 00:01:29.360
They all need credentials in one or the other way.

s19
00:01:29.360 --> 00:01:37.160
Then there might be some specific house rules on what you should do or what you should not do, what you can do on your own or where you need to get some approvals.

s20
00:01:37.160 --> 00:01:45.320
And then of course, there are hopefully some schedules for working hours when you can come in or when you have to work.

s21
00:01:45.320 --> 00:01:47.320
And the same goes for for our agents.

s22
00:01:47.320 --> 00:01:54.280
So, and we are going to work through all of those seven steps and how you can build your own digital co-worker with Gemini in this talk.

s23
00:01:54.280 --> 00:01:56.760
But before we go in, yesterday was the big day.

s24
00:01:56.760 --> 00:02:01.092
We announced Gemini for Argon and made it available to you.

s25
00:02:01.092 --> 00:02:05.972
Um, biggest new features, we have now 1 million unified contacts window.

s26
00:02:05.972 --> 00:02:16.212
This means Gemini can generate up to 1 million output tokens and we see strong improvements especially on math and reasoning task where the model now has more than 64K

s27
00:02:16.212 --> 00:02:23.292
token available to think, to work through, to reason through some proofs and for math for for math.

s28
00:02:23.292 --> 00:02:27.612
And then very also very good is like we tested that model heavily.

s29
00:02:27.612 --> 00:02:35.372
So, we know there are always some thinking around hey, Gemini is just banks benchmarks, but the model is really good.

s30
00:02:35.372 --> 00:02:36.892
You should definitely give it a try.

s31
00:02:36.892 --> 00:02:39.452
We used it extensively at Google.

s32
00:02:39.452 --> 00:02:43.212
There are already many projects by Google employees who have used it.

s33
00:02:43.212 --> 00:02:46.412
The easiest way to get started is the interactions API.

s34
00:02:46.412 --> 00:02:49.492
It's literally four lines of code which for you to take.

s35
00:02:49.492 --> 00:02:57.052
You get your API key in the AI Studio, ai.studio.com/apikey and then you can immediately send your request.

s36
00:02:57.052 --> 00:03:02.492
It's also I would say quite affordable for a frontier model with $2 in and $10 out.

s37
00:03:02.492 --> 00:03:12.052
You should definitely try if you have a free minute later or even if you have some agents running right now, give it a link, tell it hey, please set up Gemini 4 and give it a try.

s38
00:03:12.052 --> 00:03:14.812
So, what have Googlers done so far with the model?

s39
00:03:14.812 --> 00:03:17.492
I think it's very impressive because it's like a super new model.

s40
00:03:17.492 --> 00:03:24.972
We had it available internally to test for a few weeks already, but Googlers are using it so heavily and like shipping so many cool things.

s41
00:03:24.972 --> 00:03:30.292
We had the Chrome team like basically accelerating some decoupling of the Chromium browser.

s42
00:03:30.292 --> 00:03:38.132
We have Gemma which is our open model where Gemini accelerated Gemma to be more easily and more efficient to run.

s43
00:03:38.132 --> 00:03:50.932
The ADK team from Cloud improved their the framework and then many many other things and especially the right one at the bottom is like we use it internally heavily and we see strong improvements for our

s44
00:03:50.932 --> 00:03:53.092
internal like code base as well.

s45
00:03:53.092 --> 00:03:54.732
So, what have people built?

s46
00:03:54.732 --> 00:03:56.012
There are some demos.

s47
00:03:56.012 --> 00:04:00.532
You can look them up, but there's one specific one from a colleague of mine which I want to show.

s48
00:04:00.532 --> 00:04:14.454
He basically prompted Gemini to build a custom 3D ray tracer in Python and it was completely built from Gemini and nothing external tools and at the end just Python and it also used

s49
00:04:14.454 --> 00:04:23.494
the Gemini TTS model and Luria to add some voice over to explain how it works and it's like very impressive for me how far we can push those models now.

s50
00:04:23.494 --> 00:04:25.814
So, try to be very ambitious.

s51
00:04:25.814 --> 00:04:29.094
So, how can we build our agent?

s52
00:04:29.094 --> 00:04:39.534
And in Gemini API we have a product called managed agents and managed agent is basically a simple way for you to build a remote agent where you give Gemini

s53
00:04:39.534 --> 00:04:42.974
a sandbox which it can use to run tools.

s54
00:04:42.974 --> 00:04:47.974
So, when we normally build an agent we have this weird tool calling loop, right?

s55
00:04:47.974 --> 00:04:57.854
We send a request to the model, the model might generate a JSON function call, we receive that function call, we run that function call on our machine, execute the code

s56
00:04:57.854 --> 00:04:59.174
and then we go back to the model.

s57
00:04:59.174 --> 00:05:05.214
And with managed agents we basically provide a sandbox which Gemini can directly use to run all of those calls.

s58
00:05:05.214 --> 00:05:13.534
So, if it decides to execute code to write a file, it has its own computer available for it to use and it takes just an API call.

s59
00:05:13.534 --> 00:05:22.934
So, instead of providing the model ID with Gemini 4 Argon you provide the agent ID in this case it's anti-gravity preview 09.

s60
00:05:22.934 --> 00:05:23.854
Give it a prompt.

s61
00:05:23.854 --> 00:05:28.774
The environment is remote so you want to run it in the managed sandbox and that's all it takes.

s62
00:05:28.774 --> 00:05:32.014
So, let's get into building bug.

s63
00:05:32.014 --> 00:05:36.014
Bug is our co-worker for today and bug needs a brain.

s64
00:05:36.014 --> 00:05:42.134
Our brain is going to be Gemini, our computer is going to be agents and then we have all of the other things.

s65
00:05:42.134 --> 00:05:44.614
So, how can you create an agent?

s66
00:05:44.614 --> 00:05:49.294
In managed agents you have a very simple API where you can define your own agent.

s67
00:05:49.294 --> 00:05:53.854
So, you give it an ID, that's the name which you're going to use later to call the agent.

s68
00:05:53.854 --> 00:05:57.574
We have the base agent so that's the the main agent underlying.

s69
00:05:57.574 --> 00:05:59.534
In this case it's the the agent harness.

s70
00:05:59.534 --> 00:06:06.495
So, the remote agent uses the same managed uh sorry, the same agent harness which we have in anti-gravity as well.

s71
00:06:06.495 --> 00:06:12.615
So, if you're using anti-gravity as your coding agent, you get the same agent uh harness uh remotely.

s72
00:06:12.615 --> 00:06:15.935
Then, we want to use the new model, so we define our model.

s73
00:06:15.935 --> 00:06:26.735
We have a system instruction, you are bug, and then all it takes to call it again, interactions API create, and instead of um using the model ID for Gemini

s74
00:06:26.735 --> 00:06:30.255
or the default agent, we use our own agent, bug.

s75
00:06:30.255 --> 00:06:36.935
And our agent needs a computer, and the computer normally needs some additional files, additional scaffolding.

s76
00:06:36.935 --> 00:06:43.295
So, with managed agents, you can provide your skills or an agents.md file maybe from your GitHub repository.

s77
00:06:43.295 --> 00:06:45.375
You can inline those files directly.

s78
00:06:45.375 --> 00:06:56.255
You can provide a GitHub repository, private or public, with your skills, and you can connect GCS bucket, so you can already bootstrap the environment the agent is going to work in.

s79
00:06:56.255 --> 00:06:59.735
And everything in managed agent lives as a file.

s80
00:06:59.735 --> 00:07:03.895
So, we have skills, we have hooks, we have system instructions.

s81
00:07:03.895 --> 00:07:12.615
At the end, it's just a file system or the agent's own computer where it can create new skills if it thinks it needs to improve itself, where it can stores

s82
00:07:12.615 --> 00:07:15.175
um memories from previous sessions or learning.

s83
00:07:15.175 --> 00:07:17.815
So, at the end, we just work with files.

s84
00:07:17.815 --> 00:07:25.015
And for knowledge or for our agent, I like to separate those in like three different categories.

s85
00:07:25.015 --> 00:07:30.135
So, we have uh knowledge which we always need to include into every request.

s86
00:07:30.135 --> 00:07:31.935
That's normally the system instructions.

s87
00:07:31.935 --> 00:07:33.695
We want to be very concise.

s88
00:07:33.695 --> 00:07:38.735
We want to try to keep it very short because that's something we need to pay on every request.

s89
00:07:38.735 --> 00:07:43.855
So, if we have very long system instructions, all of our requests are going to be much more expensive.

s90
00:07:43.855 --> 00:07:51.575
If we have concise, then we have um knowledge which uh the agent can decide when it needs to use them or not.

s91
00:07:51.575 --> 00:07:53.575
So, that's typically uh with skills, right?

s92
00:07:53.575 --> 00:08:03.535
With skills, we have very short descriptions which give the agent some guidance on like, "Hey, you can use that skill if the user wants to do a certain task or if you have to do certain task."

s93
00:08:03.535 --> 00:08:06.295
And then can can read the agent can read that skill.

s94
00:08:06.295 --> 00:08:14.097
But for skills, we also want to make sure that we are not having a super long dense skills because that's also a high cost at the end.

s95
00:08:14.097 --> 00:08:16.417
Context is very valuable for us.

s96
00:08:16.417 --> 00:08:27.817
So, we want to decouple them and separate them into much more slices where we can then have like dedicated references and scripts if we want the agent to like do very certain

s97
00:08:27.817 --> 00:08:29.897
things where it needs more context.

s98
00:08:29.897 --> 00:08:30.497
Okay.

s99
00:08:30.497 --> 00:08:33.137
So, let's look at an example skill which we are going to use.

s100
00:08:33.137 --> 00:08:35.097
So, we have a portfolio audit.

s101
00:08:35.097 --> 00:08:36.097
The agent should use it.

s102
00:08:36.097 --> 00:08:38.657
It has some instructions available for it how to run it.

s103
00:08:38.657 --> 00:08:46.097
So, we have a Python script the agent can run and then some additional information on what it needs to do with the results and where to store it.

s104
00:08:46.097 --> 00:08:52.337
Um our fourth um part of our onboarding for our co-workers tools, right?

s105
00:08:52.337 --> 00:08:54.537
We humans use normal software.

s106
00:08:54.537 --> 00:08:59.857
For agents, that's either built-in skills like Google Search, code executions, or MCP server.

s107
00:08:59.857 --> 00:09:05.177
Or if you don't have an MCP server and rather want to write um local function, that's also possible.

s108
00:09:05.177 --> 00:09:08.657
So, in managed agents, we still have our agents create.

s109
00:09:08.657 --> 00:09:12.817
We are now extending uh it to define our tools.

s110
00:09:12.817 --> 00:09:16.217
We have built-in tools from the Gemini API for Google Search.

s111
00:09:16.217 --> 00:09:20.337
So, you there's nothing you need to additionally do to get Google Search integrated.

s112
00:09:20.337 --> 00:09:29.337
But if you want to use for example spreadsheets, uh workspace has now an MCP server available for Gmail, for spreadsheets, so we can use that.

s113
00:09:29.337 --> 00:09:34.537
Or if you want to provide your own functions or MCP server, that's also possible.

s114
00:09:34.537 --> 00:09:38.937
So, for your own function, it still works the same way as you normally do with models.

s115
00:09:38.937 --> 00:09:43.137
So, the agent creates a function call and then you send back the function result.

s116
00:09:43.137 --> 00:09:50.697
So, it's basically for you a way to have agentic capabilities outside of these uh agent's environment and computer.

s117
00:09:50.697 --> 00:09:57.737
So, if you want to do certain things where the agent should not run the execution in the sandbox, that's a way for you to do it.

s118
00:09:57.737 --> 00:09:59.737
And then we are logins.

s119
00:09:59.737 --> 00:10:08.457
And I think that's for me the most exciting and the greatest feature about the managed agents API because credentials are super hard and super easy to get wrong with agents.

s120
00:10:08.457 --> 00:10:26.658
And I think the previous talk already also mentioned that we are very careful about using agent because things could go wrong very easily, and we thought a lot about this with managed agents, and we have support for three different ways of credentials, which makes it secure for your agent to use them, and provide an isolated way.

s121
00:10:26.658 --> 00:10:32.338
So, we have bearer tokens for normal API calls, very familiar if you are doing software engineering.

s122
00:10:32.338 --> 00:10:42.978
We have OAuth for all of the consumer-oriented MCP servers or like tools, and then of course we need environment variables if we want to use certain CLIs or other features.

s123
00:10:42.978 --> 00:10:48.818
And for managed agents, we are separating them via an external network proxy.

s124
00:10:48.818 --> 00:10:57.098
So, instead of providing the agent the credentials inside the sandbox, we basically allow you to create credentials externally.

s125
00:10:57.098 --> 00:11:05.898
They are right only, so once they're written, there's no way for you to retrieve the credentials, so you can only override them.

s126
00:11:05.898 --> 00:11:11.338
So, there's no possibility of leaking, and then you define how and where those credentials should be used.

s127
00:11:11.338 --> 00:11:21.258
So, for it's like if you want to connect Slack, you can define, "Hey, here's the credential, and you are only allowed to use that credential with a certain domain

s128
00:11:21.258 --> 00:11:23.738
or with a certain environment variable."

s129
00:11:23.738 --> 00:11:30.178
So, that way you can control when a credential is used, and that works via this network proxy.

s130
00:11:30.178 --> 00:11:38.098
And by network proxy, we basically mean a proxy that sits around the sandbox that watches all of the network traffic going in and out.

s131
00:11:38.098 --> 00:11:51.658
So, if you define credential as an environment variable, the model has a local dummy value, so the environment variable is set, and then when it makes that call, it uses that dummy value, and the network proxy basically

s132
00:11:51.658 --> 00:12:03.258
monitors it, sees, "Hey, here is a domain which has to which the user has defined," and then it swaps that dummy value with the real credential, and you can make the call successfully,

s133
00:12:03.258 --> 00:12:09.578
and then it the agent gets back the result and has like no idea this dummy token is not working.

s134
00:12:09.578 --> 00:12:13.379
And the benefit here is that there's no way for a prompt injection, right?

s135
00:12:13.379 --> 00:12:19.539
Normally, when you have some malicious attacker, it can tell you like, "Hey, please print all of your values in your .env file."

s136
00:12:19.539 --> 00:12:23.819
And then the agent might go there and like prints all of your keys, and that's nothing we want to do.

s137
00:12:23.819 --> 00:12:38.779
So, with this network proxy where you can define the credentials per domain, it is not possible that an attacker could steal credentials which are getting swapped on your request because the proxy only swaps them for the domains you define.

s138
00:12:38.779 --> 00:12:49.819
So, there's no way the an MCP server which is malicious can like just steal your Gmail token, which is very cool because it makes it much more easier to trust the agent and to

s139
00:12:49.819 --> 00:12:54.139
integrate MCP servers which the agent then obviously can use.

s140
00:12:54.139 --> 00:12:58.979
So, and then if that's not enough, we have also hooks available.

s141
00:12:58.979 --> 00:13:03.459
So, hooks allows you to basically deterministically guard certain decisions.

s142
00:13:03.459 --> 00:13:13.979
So, if the agent wants to run certain commands which you might want to monitor or where you need some human in the loop approval, which is not part of like the normal agenda conversation,

s143
00:13:13.979 --> 00:13:24.379
you can define your hooks very similar to all of the other agent harnesses where you have a matcher, which is basically regex, and then every tool call which the agent generates checks if there's a match,

s144
00:13:24.379 --> 00:13:25.939
and then writes those hooks.

s145
00:13:25.939 --> 00:13:36.699
And those hooks are also files, but they are protected, so the agent cannot just go there and changes a hook and like basically tries to to to find a way around it.

s146
00:13:36.699 --> 00:13:43.619
Okay, so last but not least, we need a way to, yeah, get our agent more proactive.

s147
00:13:43.619 --> 00:13:55.819
And currently, we support one kind of triggers, basic cron triggers which you can set up a schedule every uh 30 days a month at 8:00 a.m. you want the agent to run a certain trigger

s148
00:13:55.819 --> 00:14:01.179
with a certain input in the same environment to do maybe some due diligence, some auditing.

s149
00:14:01.179 --> 00:14:12.019
And we are also working on webhooks that you can even like make this much more interactive that you could connect um external webhooks like from some certain SAC provider or maybe other

s150
00:14:12.019 --> 00:14:15.621
providers you work together with which would directly then call your agent.

s151
00:14:15.621 --> 00:14:27.141
The agent does [clears throat] some first auditing and then like basically can call your Slack or your Microsoft Teams directly without you even needing to manage some infrastructure at all.

s152
00:14:27.421 --> 00:14:29.581
So, that's that.

s153
00:14:29.581 --> 00:14:38.141
Uh final pit picture and now let's look at some real demos and let's hopefully hope that the Wi-Fi is good enough.

s154
00:14:38.141 --> 00:14:51.421
So, I told Gemini that I want to do a cool Google Sheets demo and it helped me create basically this whole Google Sheets replication in my browser and when I click here, we basically simulate the strong trigger.

s155
00:14:51.421 --> 00:14:55.061
So, we send a real API call to managed agents.

s156
00:14:55.061 --> 00:14:59.661
It should use our portfolio auditing skill and it runs the request.

s157
00:14:59.661 --> 00:15:04.701
So, first step basically see like, "Hey, I need to read the skill."

s158
00:15:04.701 --> 00:15:05.981
It gets the result back.

s159
00:15:05.981 --> 00:15:08.301
So, it tries to understand what it should do here.

s160
00:15:08.301 --> 00:15:12.901
It's like a I hope that's roughly accurate on like the the Google Sheets.

s161
00:15:12.901 --> 00:15:20.741
Um but it basically runs through all of those call calls financial services, tries to see, "Okay, did the market or the stock price change?"

s162
00:15:20.741 --> 00:15:27.061
And then at the end, hopefully it should update our own Google Sheets completely uh automatically.

s163
00:15:27.061 --> 00:15:29.101
So, it's still working through it.

s164
00:15:29.101 --> 00:15:39.261
It has some first result and it updates the Google Sheet based on that trigger and that trigger would run every 8:30 a.m. without you needing to do anything.

s165
00:15:39.261 --> 00:15:47.421
And then of course, if the agent has access to Slack, then it can even like post in some like specific trading channel, "Okay, what changed?

s166
00:15:47.421 --> 00:15:48.341
What is going on?

s167
00:15:48.341 --> 00:15:49.901
How does it work?"

s168
00:15:49.901 --> 00:15:59.901
And here we have an example where I can just ask Spark, uh any recommendation?

s169
00:16:01.821 --> 00:16:03.981
And hopefully this works as well.

s170
00:16:03.981 --> 00:16:05.221
So, it takes a little bit of time.

s171
00:16:05.221 --> 00:16:06.701
You have seen in the other demo.

s172
00:16:06.701 --> 00:16:08.981
We have seen all of that perfect.

s173
00:16:08.981 --> 00:16:10.461
So, there there are three positions.

s174
00:16:10.461 --> 00:16:13.661
So, that's based on like this Slack uh Slack content.

s175
00:16:13.661 --> 00:16:23.462
So, it has all of the previous turns available and it provides the context of what changed, but it's still basically not taking actions based on the system instructions you gave.

s176
00:16:23.462 --> 00:16:29.502
And all of the infrastructure you need to run that agent is part of the managed agents environment.

s177
00:16:29.502 --> 00:16:38.782
So, it's very easy for you to get started to like integrate those into like the tools you already use, provide the the systems you need, and then like to get started.

s178
00:16:38.782 --> 00:16:45.302
So, back to the slide.

s179
00:16:45.302 --> 00:16:49.982
So, the whole co-worker, which we need in like one service we have to plan, Gemini.

s180
00:16:49.982 --> 00:16:51.982
We have the computer with managed agents.

s181
00:16:51.982 --> 00:16:56.982
We can provide skills for the same agents you use maybe on your your local computer.

s182
00:16:56.982 --> 00:16:58.222
You can use the tools.

s183
00:16:58.222 --> 00:17:03.022
You can provide MCP server for external services, data providers to connect.

s184
00:17:03.022 --> 00:17:07.462
We have a secure way for you to provide credentials, to rotate credentials.

s185
00:17:07.462 --> 00:17:10.462
We have hooks to protect certain deterministic logic.

s186
00:17:10.462 --> 00:17:14.342
And of course, we have triggers to much more proactively integrated into it.

s187
00:17:14.342 --> 00:17:19.822
So, thanks for listening, and hopefully go hire your first AI co-worker.

s188
00:17:20.151 --> 00:17:22.151
[applause]
