[
  {
    "startMs": 12480,
    "text": "Hi everyone. Uh thank you for coming. I"
  },
  {
    "startMs": 14480,
    "text": "know it's the fourth day, last session"
  },
  {
    "startMs": 16240,
    "text": "before the keynote starts again and we"
  },
  {
    "startMs": 18720,
    "text": "are going to do something fun. Uh we're"
  },
  {
    "startMs": 20480,
    "text": "going to look into how files are"
  },
  {
    "startMs": 22240,
    "text": "basically replacing Python. And before"
  },
  {
    "startMs": 25039,
    "text": "we begin, I would like to start with my"
  },
  {
    "startMs": 26960,
    "text": "favorite definition of what is an agent"
  },
  {
    "startMs": 29519,
    "text": "from Simon. An LLM agent runs tools uh"
  },
  {
    "startMs": 32480,
    "text": "in a loop until it achieves a goal. And"
  },
  {
    "startMs": 34719,
    "text": "what we are going to do is we are going"
  },
  {
    "startMs": 36239,
    "text": "to build uh the same agent, the same"
  },
  {
    "startMs": 38079,
    "text": "GitHub PR review agent in three"
  },
  {
    "startMs": 40559,
    "text": "different ways. And we are going to"
  },
  {
    "startMs": 42000,
    "text": "delete code on the way. Each new"
  },
  {
    "startMs": 44320,
    "text": "version, less code, more files"
  },
  {
    "startMs": 46640,
    "text": "basically. Um before we begin, I would"
  },
  {
    "startMs": 49360,
    "text": "like to quickly introduce you to the"
  },
  {
    "startMs": 51360,
    "text": "interactions API, which is our new"
  },
  {
    "startMs": 53440,
    "text": "Gemini API. It's a unified interface for"
  },
  {
    "startMs": 56719,
    "text": "um running models and agents. So you can"
  },
  {
    "startMs": 58960,
    "text": "use the interactions API to call the"
  },
  {
    "startMs": 60800,
    "text": "Gemini models directly or to call our"
  },
  {
    "startMs": 63199,
    "text": "new agents, which also comes with"
  },
  {
    "startMs": 65199,
    "text": "sandbox. It supports serverside state"
  },
  {
    "startMs": 67680,
    "text": "management, background execution. So"
  },
  {
    "startMs": 69840,
    "text": "it's perfectly suited for all that's"
  },
  {
    "startMs": 71760,
    "text": "coming in the next years. and um the"
  },
  {
    "startMs": 75200,
    "text": "capabilities it's the same API for tool"
  },
  {
    "startMs": 78560,
    "text": "call multimodality understanding"
  },
  {
    "startMs": 80640,
    "text": "multimodality generation so you always"
  },
  {
    "startMs": 82960,
    "text": "have the same interface might look very"
  },
  {
    "startMs": 85119,
    "text": "familiar if you're using other LLM"
  },
  {
    "startMs": 87040,
    "text": "applications we really try to build"
  },
  {
    "startMs": 89119,
    "text": "something for developers which you like"
  },
  {
    "startMs": 90880,
    "text": "to use uh to build and that's something"
  },
  {
    "startMs": 92960,
    "text": "we are going to do so something little"
  },
  {
    "startMs": 96240,
    "text": "bit different in the interactions API to"
  },
  {
    "startMs": 98799,
    "text": "other LLM applications or APIs is that"
  },
  {
    "startMs": 101520,
    "text": "we moved away from this term based based"
  },
  {
    "startMs": 104240,
    "text": "uh conversation history to steps. So"
  },
  {
    "startMs": 106640,
    "text": "until I would say a few months ago, most"
  },
  {
    "startMs": 109680,
    "text": "of the applications were really"
  },
  {
    "startMs": 110960,
    "text": "turnbased. Normally you had a user in"
  },
  {
    "startMs": 112799,
    "text": "input and then a model output, a user"
  },
  {
    "startMs": 114799,
    "text": "input, a model output, which definitely"
  },
  {
    "startMs": 116960,
    "text": "works for normal chat application. But"
  },
  {
    "startMs": 118640,
    "text": "as soon as you start to build agents,"
  },
  {
    "startMs": 120320,
    "text": "use reasoning model. We have more than"
  },
  {
    "startMs": 122479,
    "text": "just a user role and a model role,"
  },
  {
    "startMs": 124719,
    "text": "right? So we have like different inputs,"
  },
  {
    "startMs": 126560,
    "text": "we have different types, we have"
  },
  {
    "startMs": 128239,
    "text": "reasoning. So we decided to like make a"
  },
  {
    "startMs": 131360,
    "text": "cut, make a change and build something"
  },
  {
    "startMs": 133280,
    "text": "really for agents and that's what you"
  },
  {
    "startMs": 135040,
    "text": "see on the flat steps timeline on the"
  },
  {
    "startMs": 136879,
    "text": "right where you have a user input then"
  },
  {
    "startMs": 138640,
    "text": "you have reasoning you have a function"
  },
  {
    "startMs": 140239,
    "text": "call you have a function result and you"
  },
  {
    "startMs": 142319,
    "text": "no longer need to like abuse the user"
  },
  {
    "startMs": 144720,
    "text": "role for passing back data from an"
  },
  {
    "startMs": 147120,
    "text": "environment. So"
  },
  {
    "startMs": 149840,
    "text": "roughly a year one and a half years ago"
  },
  {
    "startMs": 152160,
    "text": "writing agents mostly meant writing a"
  },
  {
    "startMs": 154560,
    "text": "loop in Python. You needed to define a"
  },
  {
    "startMs": 156879,
    "text": "JSON schema. You needed to define Python"
  },
  {
    "startMs": 159120,
    "text": "functions. You needed to look at the"
  },
  {
    "startMs": 161120,
    "text": "output from the LLM. Need to check if it"
  },
  {
    "startMs": 163519,
    "text": "was a function call or if it was a text"
  },
  {
    "startMs": 165440,
    "text": "response. And then needed to match it"
  },
  {
    "startMs": 167440,
    "text": "against um the type and then like call"
  },
  {
    "startMs": 169760,
    "text": "the tool"
  },
  {
    "startMs": 171519,
    "text": "look of if you get an error and then"
  },
  {
    "startMs": 173200,
    "text": "like go back and forth and let's look at"
  },
  {
    "startMs": 176160,
    "text": "some some code example on how this would"
  },
  {
    "startMs": 178160,
    "text": "look and also run it and hope that uh"
  },
  {
    "startMs": 181200,
    "text": "the demo gods are great to us. So I"
  },
  {
    "startMs": 184319,
    "text": "built or I let Gemini build a basic"
  },
  {
    "startMs": 186800,
    "text": "implementation of this Python loop. So"
  },
  {
    "startMs": 189599,
    "text": "we have our uh class. We have a run"
  },
  {
    "startMs": 192560,
    "text": "function which uses the interactions"
  },
  {
    "startMs": 194239,
    "text": "API. We have all of the weird complex"
  },
  {
    "startMs": 197280,
    "text": "passing with function calling with uh"
  },
  {
    "startMs": 199840,
    "text": "appending the errors checking if we get"
  },
  {
    "startMs": 201599,
    "text": "an error and then we have uh the result"
  },
  {
    "startMs": 203760,
    "text": "again. And what we need of course for an"
  },
  {
    "startMs": 205920,
    "text": "agent is we also need a system"
  },
  {
    "startMs": 207440,
    "text": "instruction. So there's a separate file"
  },
  {
    "startMs": 209120,
    "text": "for the system instruction. Very basic."
  },
  {
    "startMs": 211360,
    "text": "QR GitHub PR reviewer and then of course"
  },
  {
    "startMs": 214080,
    "text": "we need tools and for tools we needed to"
  },
  {
    "startMs": 216720,
    "text": "write those um JSON schemas"
  },
  {
    "startMs": 219040,
    "text": "specifications of description exactly"
  },
  {
    "startMs": 222080,
    "text": "define which uh actions the agent can"
  },
  {
    "startMs": 224720,
    "text": "take and then of course we need the"
  },
  {
    "startMs": 226560,
    "text": "implementation in this case using the"
  },
  {
    "startMs": 228879,
    "text": "the basic uh GitHub API just sending"
  },
  {
    "startMs": 231760,
    "text": "some some requests. So we can run this"
  },
  {
    "startMs": 235040,
    "text": "um in"
  },
  {
    "startMs": 238159,
    "text": "and basically the main main"
  },
  {
    "startMs": 239680,
    "text": "implementation is a very simple uh input"
  },
  {
    "startMs": 242560,
    "text": "interface and we can say something like"
  },
  {
    "startMs": 244560,
    "text": "hello"
  },
  {
    "startMs": 246480,
    "text": "and"
  },
  {
    "startMs": 248159,
    "text": "yes we get back hey I'm an agent and"
  },
  {
    "startMs": 250319,
    "text": "then we yes ask it to review a pull"
  },
  {
    "startMs": 253519,
    "text": "request on the Gemini skills repository"
  },
  {
    "startMs": 255760,
    "text": "and what we should see is like the agent"
  },
  {
    "startMs": 258079,
    "text": "should hopefully start soon sending"
  },
  {
    "startMs": 260239,
    "text": "function calls function results function"
  },
  {
    "startMs": 262320,
    "text": "calls function results but it's very"
  },
  {
    "startMs": 264400,
    "text": "limited to yes uh great it works very"
  },
  {
    "startMs": 268080,
    "text": "limited to the tools we define so if we"
  },
  {
    "startMs": 270960,
    "text": "ask the agent to do something which it"
  },
  {
    "startMs": 272960,
    "text": "does not have the capabilities to it"
  },
  {
    "startMs": 274880,
    "text": "just says hey I cannot do this um which"
  },
  {
    "startMs": 277280,
    "text": "is unfortunate but that's how we were"
  },
  {
    "startMs": 279280,
    "text": "building agents um raw Python code a lot"
  },
  {
    "startMs": 282240,
    "text": "of files a lot of things which can go"
  },
  {
    "startMs": 284080,
    "text": "wrong a lot of code to manage so what"
  },
  {
    "startMs": 287360,
    "text": "happened afterwards"
  },
  {
    "startMs": 289360,
    "text": "um or what we we need to do we have like"
  },
  {
    "startMs": 291600,
    "text": "a token generation We have the native"
  },
  {
    "startMs": 293280,
    "text": "function calling and we must execute the"
  },
  {
    "startMs": 296080,
    "text": "loop. We must handle the tool routing."
  },
  {
    "startMs": 297919,
    "text": "We must create a JSON schemas. We must"
  },
  {
    "startMs": 300320,
    "text": "write the Python code. We need to"
  },
  {
    "startMs": 302080,
    "text": "execute the Python code. We need to"
  },
  {
    "startMs": 303520,
    "text": "manage the state. So there's a lot of"
  },
  {
    "startMs": 304960,
    "text": "things we need to do to get an agent"
  },
  {
    "startMs": 306639,
    "text": "running. And then we got agent"
  },
  {
    "startMs": 309680,
    "text": "frameworks. There were many different"
  },
  {
    "startMs": 310880,
    "text": "agent frameworks which abstracted away"
  },
  {
    "startMs": 312880,
    "text": "some of that complexity. One example"
  },
  {
    "startMs": 315039,
    "text": "here is the ADK framework um where you"
  },
  {
    "startMs": 317919,
    "text": "have an agent class now which handles"
  },
  {
    "startMs": 319840,
    "text": "all of the tool loops, the function"
  },
  {
    "startMs": 321759,
    "text": "calling, the retries, the error handling"
  },
  {
    "startMs": 324639,
    "text": "and it made it a little bit easier. We"
  },
  {
    "startMs": 327520,
    "text": "basically removed all of the boiler"
  },
  {
    "startMs": 329600,
    "text": "plate code which we always needed to"
  },
  {
    "startMs": 331440,
    "text": "write for agents put it into a framework"
  },
  {
    "startMs": 334080,
    "text": "and help people build with it. So back"
  },
  {
    "startMs": 337360,
    "text": "to the demo and"
  },
  {
    "startMs": 340560,
    "text": "um same example. So we go into the CR2"
  },
  {
    "startMs": 343680,
    "text": "and what is very interesting if you let"
  },
  {
    "startMs": 346560,
    "text": "me open both. So we still have our we"
  },
  {
    "startMs": 350000,
    "text": "don't have our agent file anymore. So"
  },
  {
    "startMs": 351600,
    "text": "the agent went away. We still have our"
  },
  {
    "startMs": 354240,
    "text": "prompt same system prompt. We still have"
  },
  {
    "startMs": 357120,
    "text": "our tools in this case also no JSON"
  },
  {
    "startMs": 359600,
    "text": "definitions anymore because those agent"
  },
  {
    "startMs": 361759,
    "text": "frameworks now use the uh signature of"
  },
  {
    "startMs": 365199,
    "text": "our functions to create those JSON"
  },
  {
    "startMs": 367600,
    "text": "schemas on the fly to provide the model."
  },
  {
    "startMs": 370000,
    "text": "So let's stop our um agent. Now let's"
  },
  {
    "startMs": 374080,
    "text": "run our second agent."
  },
  {
    "startMs": 377520,
    "text": "Similar interface,"
  },
  {
    "startMs": 379840,
    "text": "similar prompt and we should see a"
  },
  {
    "startMs": 382400,
    "text": "similar expected behavior where we have"
  },
  {
    "startMs": 384319,
    "text": "function calls. We try to get the PR"
  },
  {
    "startMs": 386560,
    "text": "data. We try to get the diff, we try to"
  },
  {
    "startMs": 389680,
    "text": "get all of the code we need and it works"
  },
  {
    "startMs": 393280,
    "text": "and we wait for for the agent to yes"
  },
  {
    "startMs": 396080,
    "text": "continue. But similar difficulty here."
  },
  {
    "startMs": 398240,
    "text": "If I ask it like what's the weather in"
  },
  {
    "startMs": 402479,
    "text": "San Francisco"
  },
  {
    "startMs": 404880,
    "text": "um"
  },
  {
    "startMs": 406479,
    "text": "we should get back hopefully a result"
  },
  {
    "startMs": 408080,
    "text": "like hey I cannot do this I don't have"
  },
  {
    "startMs": 410479,
    "text": "access to the weather API which"
  },
  {
    "startMs": 411919,
    "text": "obviously makes sense because we did not"
  },
  {
    "startMs": 413520,
    "text": "define any tool still very unfortunate"
  },
  {
    "startMs": 415840,
    "text": "because we need to be very explicit on"
  },
  {
    "startMs": 417919,
    "text": "what our agent can do and we all know"
  },
  {
    "startMs": 419840,
    "text": "nowadays that we just want to prompt"
  },
  {
    "startMs": 421680,
    "text": "something and we wanted the agent to do"
  },
  {
    "startMs": 423599,
    "text": "whatever it takes to to achieve that"
  },
  {
    "startMs": 425120,
    "text": "goal. So what is left for us to do? What"
  },
  {
    "startMs": 428720,
    "text": "does the framework solve? The framework"
  },
  {
    "startMs": 430240,
    "text": "solves the turn taking loops, the"
  },
  {
    "startMs": 432400,
    "text": "routing, the execution mapping, the JSON"
  },
  {
    "startMs": 434960,
    "text": "schema creation for like the different"
  },
  {
    "startMs": 436639,
    "text": "function calls, but we still own the"
  },
  {
    "startMs": 438880,
    "text": "Python plumping. So we still need to"
  },
  {
    "startMs": 440560,
    "text": "write those tools with Python code. We"
  },
  {
    "startMs": 443199,
    "text": "still need to add specific rules or"
  },
  {
    "startMs": 446400,
    "text": "requirements to like make sure whatever"
  },
  {
    "startMs": 448319,
    "text": "we want the agent to do and we need to"
  },
  {
    "startMs": 450800,
    "text": "provide the environment where all of the"
  },
  {
    "startMs": 452720,
    "text": "tools are running, where we want to host"
  },
  {
    "startMs": 454960,
    "text": "it. So what comes afterwards? Afterwards"
  },
  {
    "startMs": 458560,
    "text": "hopefully comes remote agents and at"
  },
  {
    "startMs": 460720,
    "text": "Google IO we launched the anti-gravity"
  },
  {
    "startMs": 462639,
    "text": "remote agent on the Gemini API. The"
  },
  {
    "startMs": 465520,
    "text": "anti-gravity agent uh is powered by the"
  },
  {
    "startMs": 468319,
    "text": "same agent harness which powers the"
  },
  {
    "startMs": 470240,
    "text": "anti-gravity IDE. Here the same harness"
  },
  {
    "startMs": 472639,
    "text": "very important does not mean the same"
  },
  {
    "startMs": 474160,
    "text": "agent because the anti-gravity agent is"
  },
  {
    "startMs": 476000,
    "text": "a coding agent at the moment and the uh"
  },
  {
    "startMs": 478560,
    "text": "agent available in the Gemini API is a"
  },
  {
    "startMs": 480639,
    "text": "general purpose agent. So there might be"
  },
  {
    "startMs": 482639,
    "text": "different system instruction, there"
  },
  {
    "startMs": 484080,
    "text": "might be slightly different tools"
  },
  {
    "startMs": 485440,
    "text": "because the Gemini API already has a"
  },
  {
    "startMs": 487039,
    "text": "Google search tool. So we use that what"
  },
  {
    "startMs": 488879,
    "text": "we have built and but very importantly"
  },
  {
    "startMs": 491440,
    "text": "it comes with this new environment"
  },
  {
    "startMs": 493280,
    "text": "parameter and this environment parameter"
  },
  {
    "startMs": 495280,
    "text": "here allows the agent to get access to a"
  },
  {
    "startMs": 498400,
    "text": "hosted isolated cloud sandbox where it"
  },
  {
    "startMs": 501039,
    "text": "can run tools, where it can run bash"
  },
  {
    "startMs": 502720,
    "text": "commands and where it can save files."
  },
  {
    "startMs": 505120,
    "text": "And those environments can be um"
  },
  {
    "startMs": 508080,
    "text": "configured. So you can provide sources"
  },
  {
    "startMs": 510400,
    "text": "and sources can be a GitHub repository,"
  },
  {
    "startMs": 512800,
    "text": "it can be a GCS bucket, it can be inline"
  },
  {
    "startMs": 515200,
    "text": "files and of course very important we"
  },
  {
    "startMs": 517440,
    "text": "want to make sure that those agents are"
  },
  {
    "startMs": 519599,
    "text": "secured and cannot use our credentials"
  },
  {
    "startMs": 522479,
    "text": "in any way possible. So we created a"
  },
  {
    "startMs": 524800,
    "text": "network proxy around the um agent"
  },
  {
    "startMs": 526959,
    "text": "sandbox which basically injects the"
  },
  {
    "startMs": 529360,
    "text": "credentials when the agent makes a"
  },
  {
    "startMs": 531040,
    "text": "request from inside the sandbox to"
  },
  {
    "startMs": 533200,
    "text": "outside the sandbox. So the agent never"
  },
  {
    "startMs": 535200,
    "text": "really sees your credential. It just"
  },
  {
    "startMs": 536959,
    "text": "knows hey I can call the GitHub API and"
  },
  {
    "startMs": 539600,
    "text": "then on the fly we make sure that it"
  },
  {
    "startMs": 541680,
    "text": "received the correct token which you"
  },
  {
    "startMs": 543120,
    "text": "define and you can also limit which"
  },
  {
    "startMs": 545040,
    "text": "domains the agent has access to. So if"
  },
  {
    "startMs": 546959,
    "text": "you want to restrict the agent"
  },
  {
    "startMs": 548640,
    "text": "completely on which network access it"
  },
  {
    "startMs": 550800,
    "text": "can or which website it can access you"
  },
  {
    "startMs": 552480,
    "text": "just leave it blank. By default the"
  },
  {
    "startMs": 554640,
    "text": "agent can access all because I mean it's"
  },
  {
    "startMs": 556880,
    "text": "a hassle if you first need to define"
  },
  {
    "startMs": 558399,
    "text": "where to go. So we tried to stay simple"
  },
  {
    "startMs": 560880,
    "text": "and of course making an API call is nice"
  },
  {
    "startMs": 563040,
    "text": "but we thought hey people want to reuse"
  },
  {
    "startMs": 565760,
    "text": "their configuration want to reuse their"
  },
  {
    "startMs": 568000,
    "text": "agents. So we added the agents API where"
  },
  {
    "startMs": 570240,
    "text": "you can define your own custom ID you"
  },
  {
    "startMs": 572480,
    "text": "the same system instruction the same"
  },
  {
    "startMs": 573920,
    "text": "base agent the same base environment and"
  },
  {
    "startMs": 576640,
    "text": "then you can create that agent and then"
  },
  {
    "startMs": 578399,
    "text": "you can use that agent in the same exact"
  },
  {
    "startMs": 580399,
    "text": "way as you use Gemini models or as you"
  },
  {
    "startMs": 582320,
    "text": "use the anti-gravity agent by providing"
  },
  {
    "startMs": 584000,
    "text": "the ID. So all of the existing code can"
  },
  {
    "startMs": 586480,
    "text": "be reused with your own custom agent,"
  },
  {
    "startMs": 588399,
    "text": "with your own custom tools, with your"
  },
  {
    "startMs": 589839,
    "text": "own custom uh credentials, environments,"
  },
  {
    "startMs": 592160,
    "text": "whatever you need for it to to run. So"
  },
  {
    "startMs": 595120,
    "text": "let's look at how this will look for SS"
  },
  {
    "startMs": 598160,
    "text": "code and as a demo. And"
  },
  {
    "startMs": 601200,
    "text": "okay, now 03. And what might be very"
  },
  {
    "startMs": 606240,
    "text": "obvious is that we no longer have a"
  },
  {
    "startMs": 607920,
    "text": "source directory. So the code went away."
  },
  {
    "startMs": 611120,
    "text": "We have now an agents M uh folder with"
  },
  {
    "startMs": 614160,
    "text": "an agents MD file with system"
  },
  {
    "startMs": 616640,
    "text": "instructions. So very similar system"
  },
  {
    "startMs": 619040,
    "text": "instruction. The only difference here is"
  },
  {
    "startMs": 620800,
    "text": "that we tell the agent, hey, you have"
  },
  {
    "startMs": 622959,
    "text": "access to the GitHub CLI. So we no"
  },
  {
    "startMs": 626320,
    "text": "longer create specific tools for reading"
  },
  {
    "startMs": 629440,
    "text": "files from a GitHub pull request, for"
  },
  {
    "startMs": 631279,
    "text": "accessing a GitHub pull request. We just"
  },
  {
    "startMs": 633279,
    "text": "tell the agent, hey, you have a GitHub"
  },
  {
    "startMs": 634800,
    "text": "CLI, you have a bash tool, you have file"
  },
  {
    "startMs": 637279,
    "text": "systems. try to use it whenever you"
  },
  {
    "startMs": 639920,
    "text": "think it's important. And since we don't"
  },
  {
    "startMs": 642079,
    "text": "have the CLI installed, we have a very"
  },
  {
    "startMs": 644160,
    "text": "basic bash script in this case which"
  },
  {
    "startMs": 645920,
    "text": "checks, hey, if the GitHub CLI is"
  },
  {
    "startMs": 647760,
    "text": "installed, please use it. If not,"
  },
  {
    "startMs": 649040,
    "text": "download it and install it on the first"
  },
  {
    "startMs": 650480,
    "text": "turn. So, we go into our terminal and we"
  },
  {
    "startMs": 654560,
    "text": "run our agent here. In this case, maybe"
  },
  {
    "startMs": 657440,
    "text": "important I use a stream version because"
  },
  {
    "startMs": 659120,
    "text": "otherwise we would wait like a few"
  },
  {
    "startMs": 661279,
    "text": "seconds and we not get back any we would"
  },
  {
    "startMs": 663440,
    "text": "not get back any anything back. So same"
  },
  {
    "startMs": 666000,
    "text": "prompt"
  },
  {
    "startMs": 667680,
    "text": "and we should soon see um our function"
  },
  {
    "startMs": 671519,
    "text": "calls and function results coming in."
  },
  {
    "startMs": 673760,
    "text": "Yes. So in this case since we run inside"
  },
  {
    "startMs": 675519,
    "text": "a sandbox the agent first like explores"
  },
  {
    "startMs": 677920,
    "text": "the sandbox to really make sure hey do"
  },
  {
    "startMs": 679680,
    "text": "we have this GitHub CLI installed and"
  },
  {
    "startMs": 682240,
    "text": "then tries to run it. It did not find it"
  },
  {
    "startMs": 684399,
    "text": "on the first turn. So it installs it and"
  },
  {
    "startMs": 686959,
    "text": "then we can see the agent doing its"
  },
  {
    "startMs": 688640,
    "text": "work. And in this case it's not using"
  },
  {
    "startMs": 690240,
    "text": "the predefined function calls. It's"
  },
  {
    "startMs": 691920,
    "text": "using the GitHub CLI and it's already"
  },
  {
    "startMs": 694079,
    "text": "existing knowledge about how it works. I"
  },
  {
    "startMs": 696959,
    "text": "have a bash tool. I have like access to"
  },
  {
    "startMs": 698720,
    "text": "the file system and I do all of that"
  },
  {
    "startMs": 700640,
    "text": "work to see or to like review the the"
  },
  {
    "startMs": 703519,
    "text": "pull request. Let's wait a little bit."
  },
  {
    "startMs": 707360,
    "text": "Okay. And I think the the amazing part"
  },
  {
    "startMs": 710399,
    "text": "here is like if we ask the same question"
  },
  {
    "startMs": 712640,
    "text": "as before, what's the weather in San"
  },
  {
    "startMs": 717120,
    "text": "Francisco?"
  },
  {
    "startMs": 719600,
    "text": "We should hopefully see that the agent"
  },
  {
    "startMs": 722079,
    "text": "tries to use ah it uses Google search in"
  },
  {
    "startMs": 724240,
    "text": "this case on 2nd of July. Let me quickly"
  },
  {
    "startMs": 727200,
    "text": "check. Yeah, that's today. And we have"
  },
  {
    "startMs": 729920,
    "text": "around 20° Celsius and it works. So the"
  },
  {
    "startMs": 733200,
    "text": "agent became more of a general purpose"
  },
  {
    "startMs": 735200,
    "text": "agent and we don't need to like specify"
  },
  {
    "startMs": 737600,
    "text": "all of the tools. We basically trust the"
  },
  {
    "startMs": 739519,
    "text": "model on understanding hey I have a"
  },
  {
    "startMs": 741760,
    "text": "specific set of very atomic general"
  },
  {
    "startMs": 743839,
    "text": "purpose tools to solve my task or the"
  },
  {
    "startMs": 746399,
    "text": "task for the user. And if we look at the"
  },
  {
    "startMs": 748800,
    "text": "the code uh for like the the input or"
  },
  {
    "startMs": 752880,
    "text": "like the the sorry the the interface we"
  },
  {
    "startMs": 755760,
    "text": "have our sources here. So we have the"
  },
  {
    "startMs": 758079,
    "text": "the bash script which install the GitHub"
  },
  {
    "startMs": 760000,
    "text": "CLI. We have the agents MD file and then"
  },
  {
    "startMs": 762800,
    "text": "we say hey you can use the GitHub API"
  },
  {
    "startMs": 765760,
    "text": "with credentials. So I want to access or"
  },
  {
    "startMs": 768639,
    "text": "use GitHub credentials in a secure way."
  },
  {
    "startMs": 770480,
    "text": "So I created a token for the API and"
  },
  {
    "startMs": 773200,
    "text": "also for github.com since you need both"
  },
  {
    "startMs": 775120,
    "text": "URLs. one uses is used for the git uh"
  },
  {
    "startMs": 777680,
    "text": "commands. The other one is used for HTT"
  },
  {
    "startMs": 779360,
    "text": "commands and then domain all is"
  },
  {
    "startMs": 780959,
    "text": "basically hey in addition to the GitHub"
  },
  {
    "startMs": 782720,
    "text": "URLs you can use all of the web but you"
  },
  {
    "startMs": 785440,
    "text": "don't have credentials for it and then"
  },
  {
    "startMs": 787120,
    "text": "it's a it's a simple single API call to"
  },
  {
    "startMs": 790320,
    "text": "the anti-gravity agent with your or user"
  },
  {
    "startMs": 792639,
    "text": "input with the environment and then also"
  },
  {
    "startMs": 794639,
    "text": "with the previous interaction ID that we"
  },
  {
    "startMs": 796880,
    "text": "keep the multi-turn going and that"
  },
  {
    "startMs": 798959,
    "text": "that's all it takes and it's a single"
  },
  {
    "startMs": 800639,
    "text": "API call on the backend side we start"
  },
  {
    "startMs": 802959,
    "text": "that cloud sandbox we load the agents MD"
  },
  {
    "startMs": 805600,
    "text": "file and the skills from the environment"
  },
  {
    "startMs": 807519,
    "text": "provided to the model and then the model"
  },
  {
    "startMs": 810160,
    "text": "between the API and the sandbox does all"
  },
  {
    "startMs": 812639,
    "text": "of the the looping calling the function"
  },
  {
    "startMs": 814560,
    "text": "returning the function results calling"
  },
  {
    "startMs": 816160,
    "text": "the function returning the function"
  },
  {
    "startMs": 817760,
    "text": "results and that is all it takes. So"
  },
  {
    "startMs": 820720,
    "text": "where does it leave us? We no longer"
  },
  {
    "startMs": 823440,
    "text": "need to execute loops. We no longer need"
  },
  {
    "startMs": 826000,
    "text": "to do two routing. We have a serverside"
  },
  {
    "startMs": 828560,
    "text": "conversation and session state. So we"
  },
  {
    "startMs": 830240,
    "text": "only need to provide new inputs. The"
  },
  {
    "startMs": 832399,
    "text": "context window and the compaction is"
  },
  {
    "startMs": 834639,
    "text": "also automatically managed by the agent."
  },
  {
    "startMs": 836720,
    "text": "So if we continue our conversation at a"
  },
  {
    "startMs": 838959,
    "text": "certain point the context is compacted"
  },
  {
    "startMs": 840880,
    "text": "and we can continue without the need to"
  },
  {
    "startMs": 842639,
    "text": "manage anything and we also get an"
  },
  {
    "startMs": 844639,
    "text": "isolated remote Linux sandbox which we"
  },
  {
    "startMs": 846800,
    "text": "can use to run our code. So what is"
  },
  {
    "startMs": 849680,
    "text": "still left for us? We need to define"
  },
  {
    "startMs": 851920,
    "text": "instructions. We need to define rules"
  },
  {
    "startMs": 854079,
    "text": "behaviors in an agent MD file. We need"
  },
  {
    "startMs": 856399,
    "text": "to provide capabilities or context and"
  },
  {
    "startMs": 858480,
    "text": "skills MD and we need to own the evils."
  },
  {
    "startMs": 860880,
    "text": "So all of the heavy lifting, the"
  },
  {
    "startMs": 863120,
    "text": "infrastructure management, all of the"
  },
  {
    "startMs": 864959,
    "text": "same code which probably every one of us"
  },
  {
    "startMs": 866720,
    "text": "has written of us here like 20 times is"
  },
  {
    "startMs": 869120,
    "text": "no longer needed. And you can start"
  },
  {
    "startMs": 870800,
    "text": "really building your product instead of"
  },
  {
    "startMs": 872480,
    "text": "like needing to rewrite the same code"
  },
  {
    "startMs": 874639,
    "text": "over and over again. And very important"
  },
  {
    "startMs": 877360,
    "text": "is like, hey, that's great, but what"
  },
  {
    "startMs": 879680,
    "text": "about extending? And I think looking"
  },
  {
    "startMs": 881760,
    "text": "into how extending previous agents to"
  },
  {
    "startMs": 884320,
    "text": "like those new agents work. It's very"
  },
  {
    "startMs": 887600,
    "text": "obvious that previously if we want to do"
  },
  {
    "startMs": 890240,
    "text": "like some kind of security scanning on a"
  },
  {
    "startMs": 892000,
    "text": "pull request, we would need to define or"
  },
  {
    "startMs": 893839,
    "text": "write a Python function. We would need"
  },
  {
    "startMs": 895680,
    "text": "to understand okay which CLI tools do we"
  },
  {
    "startMs": 897600,
    "text": "need to use? We need to define a new"
  },
  {
    "startMs": 899440,
    "text": "function schema and then we needed to"
  },
  {
    "startMs": 901120,
    "text": "add it to our tools need to run it and"
  },
  {
    "startMs": 903680,
    "text": "then so there's a lot of things we need"
  },
  {
    "startMs": 905279,
    "text": "to do on on agents powered by files. We"
  },
  {
    "startMs": 908240,
    "text": "write a skills MD file maybe with some"
  },
  {
    "startMs": 910240,
    "text": "additional information on which CLI tool"
  },
  {
    "startMs": 911920,
    "text": "to use or maybe provide the CLI tool"
  },
  {
    "startMs": 913680,
    "text": "inside the environment and then we"
  },
  {
    "startMs": 915120,
    "text": "extended the capabilities. we don't need"
  },
  {
    "startMs": 916480,
    "text": "to change our code. We just provide more"
  },
  {
    "startMs": 918639,
    "text": "files to the agent and the agent decides"
  },
  {
    "startMs": 920639,
    "text": "on what we want to do. And I like to"
  },
  {
    "startMs": 923839,
    "text": "bring up some very good examples. So at"
  },
  {
    "startMs": 925519,
    "text": "a engineer in Europe, Cursor did a great"
  },
  {
    "startMs": 927839,
    "text": "talk on how they replaced uh roughly"
  },
  {
    "startMs": 930480,
    "text": "12,000 lines of TypeScript code with a"
  },
  {
    "startMs": 932560,
    "text": "200 lines agent files to create"
  },
  {
    "startMs": 935199,
    "text": "something similar. So they had a very"
  },
  {
    "startMs": 937440,
    "text": "hard-coded code um orchestration for"
  },
  {
    "startMs": 940399,
    "text": "doing git work trees and they were m"
  },
  {
    "startMs": 942560,
    "text": "able to replace it with just a skill and"
  },
  {
    "startMs": 944800,
    "text": "markdown files and there are more I"
  },
  {
    "startMs": 947360,
    "text": "would say bitter lessons of ancient"
  },
  {
    "startMs": 948720,
    "text": "engineering manos has refactored their"
  },
  {
    "startMs": 951440,
    "text": "harness five times in six months last"
  },
  {
    "startMs": 953920,
    "text": "year langen has rearchitected their open"
  },
  {
    "startMs": 956320,
    "text": "deep research three times a year and"
  },
  {
    "startMs": 957920,
    "text": "then also worsel has removed 80% of"
  },
  {
    "startMs": 960560,
    "text": "their tools to achieve fewer steps"
  },
  {
    "startMs": 962959,
    "text": "faster responses and better accuracy so"
  },
  {
    "startMs": 964880,
    "text": "there's an obvious trend that with"
  },
  {
    "startMs": 967040,
    "text": "better model capabilities, we can remove"
  },
  {
    "startMs": 969839,
    "text": "orchestration code. But if your harness"
  },
  {
    "startMs": 972800,
    "text": "is getting more complex as the model"
  },
  {
    "startMs": 974639,
    "text": "improves, you are most likely"
  },
  {
    "startMs": 976240,
    "text": "overengineering your harness. So if you"
  },
  {
    "startMs": 978560,
    "text": "struggle with model improvements and"
  },
  {
    "startMs": 980240,
    "text": "adding new capabilities which lead to"
  },
  {
    "startMs": 982399,
    "text": "more complexity and more code, you might"
  },
  {
    "startMs": 984399,
    "text": "need to rethink a little bit on how your"
  },
  {
    "startMs": 986240,
    "text": "agent harness looks. And so where does"
  },
  {
    "startMs": 990000,
    "text": "it end up? Agents are just files. We"
  },
  {
    "startMs": 993199,
    "text": "write markdown files to extend"
  },
  {
    "startMs": 994800,
    "text": "capabilities. Agents can learn from"
  },
  {
    "startMs": 997199,
    "text": "those um can create their own files. So"
  },
  {
    "startMs": 1000000,
    "text": "if you have a session and tell the agent"
  },
  {
    "startMs": 1002399,
    "text": "to remember something to take notes of"
  },
  {
    "startMs": 1004639,
    "text": "rules of preferences, the agent just"
  },
  {
    "startMs": 1006639,
    "text": "writes it to this and then can reuse it"
  },
  {
    "startMs": 1008639,
    "text": "in the later session and you can also"
  },
  {
    "startMs": 1011040,
    "text": "externalize context. So if you have a"
  },
  {
    "startMs": 1012959,
    "text": "very long running session and during"
  },
  {
    "startMs": 1014639,
    "text": "that session you notice hey maybe I want"
  },
  {
    "startMs": 1016639,
    "text": "to additionally work on another feature"
  },
  {
    "startMs": 1018480,
    "text": "you can like just write that information"
  },
  {
    "startMs": 1020720,
    "text": "that hand off to a file and like tell"
  },
  {
    "startMs": 1022800,
    "text": "the agent to later pick it up. Uh so"
  },
  {
    "startMs": 1025919,
    "text": "what are the takeaways? We should not"
  },
  {
    "startMs": 1027600,
    "text": "fight the model like we should stop"
  },
  {
    "startMs": 1029039,
    "text": "micromanaging the execution paths"
  },
  {
    "startMs": 1031199,
    "text": "provide general tools to the agent and"
  },
  {
    "startMs": 1032880,
    "text": "let the model explore reason and"
  },
  {
    "startMs": 1034799,
    "text": "discover the right solution. Own what is"
  },
  {
    "startMs": 1037280,
    "text": "yours meaning focus on your domain"
  },
  {
    "startMs": 1039520,
    "text": "instructions. Focus on the workflows."
  },
  {
    "startMs": 1041600,
    "text": "Focus especially on the evals, define"
  },
  {
    "startMs": 1044000,
    "text": "clean tools and verify the outcomes and"
  },
  {
    "startMs": 1046640,
    "text": "really build to delete. Like we have"
  },
  {
    "startMs": 1048400,
    "text": "seen in the past many many times, the"
  },
  {
    "startMs": 1050320,
    "text": "better the model get, the more code we"
  },
  {
    "startMs": 1052240,
    "text": "can remove and the more things we need"
  },
  {
    "startMs": 1053600,
    "text": "to change and obviously we all want to"
  },
  {
    "startMs": 1055440,
    "text": "benefit from better models. So what the"
  },
  {
    "startMs": 1059120,
    "text": "things for you to get to do on Monday,"
  },
  {
    "startMs": 1061520,
    "text": "you can scan that QR code which brings"
  },
  {
    "startMs": 1063039,
    "text": "you directly to EI studio where you can"
  },
  {
    "startMs": 1065600,
    "text": "immediately try out the anti-gravity"
  },
  {
    "startMs": 1067840,
    "text": "harness. So you can already start"
  },
  {
    "startMs": 1069520,
    "text": "prompting it. it will start your own"
  },
  {
    "startMs": 1071440,
    "text": "custom sandbox. If not, um, start or"
  },
  {
    "startMs": 1074640,
    "text": "create your API key. We are currently"
  },
  {
    "startMs": 1076640,
    "text": "working on a free tier for the API. So"
  },
  {
    "startMs": 1079200,
    "text": "hopefully you can start exploring faster"
  },
  {
    "startMs": 1081360,
    "text": "soon and then definitely start building"
  },
  {
    "startMs": 1083360,
    "text": "files and skills. And that's it. Thank"
  },
  {
    "startMs": 1086720,
    "text": "you for for coming."
  },
  {
    "startMs": 1089277,
    "text": "[applause]"
  },
  {
    "startMs": 1104342,
    "text": ">> [music]"
  }
]
