1 00:00:05,239 --> 00:00:07,259 [music] 2 00:00:09,825 --> 00:00:11,845 [music] 3 00:00:15,280 --> 00:00:17,359 Thank you and good morning all. Welcome 4 00:00:17,359 --> 00:00:20,560 to my talk. I'm Brett Morgan. I'm a 5 00:00:20,560 --> 00:00:22,880 Google employee. I have spent 15 years 6 00:00:22,880 --> 00:00:25,600 at Google. Um I don't know quite how I 7 00:00:25,600 --> 00:00:27,439 managed that. It was only meant to be 18 8 00:00:27,439 --> 00:00:30,640 months. I've worked on a few products. 9 00:00:30,640 --> 00:00:32,640 Um, call out if you remember any of 10 00:00:32,640 --> 00:00:35,120 these. Oops, sorry. [laughter] 11 00:00:35,120 --> 00:00:38,160 Um, the the fun part to me is through 12 00:00:38,160 --> 00:00:40,640 this time, it's always been an essence 13 00:00:40,640 --> 00:00:43,360 of change and nothing quite like now. 14 00:00:43,360 --> 00:00:44,719 So, I just want to do a quick review of 15 00:00:44,719 --> 00:00:46,399 the synopsis just to point out what's 16 00:00:46,399 --> 00:00:48,559 changed since I wrote the synopsis. The 17 00:00:48,559 --> 00:00:50,160 first one is I don't think anyone still 18 00:00:50,160 --> 00:00:52,399 uses the term Genai, which makes the 19 00:00:52,399 --> 00:00:54,480 talk rather entertaining to me at least. 20 00:00:54,480 --> 00:00:58,399 Um, the next is what I'm diving into in 21 00:00:58,399 --> 00:01:02,160 in looking at Devril as an educational 22 00:01:02,160 --> 00:01:04,479 um a generator of educational material 23 00:01:04,479 --> 00:01:06,479 is do we still matter now that people 24 00:01:06,479 --> 00:01:09,040 can just ask their local LLM to generate 25 00:01:09,040 --> 00:01:11,840 everything for them? And more 26 00:01:11,840 --> 00:01:13,600 importantly, one of the key parts of 27 00:01:13,600 --> 00:01:15,360 what I was intending to do when I 28 00:01:15,360 --> 00:01:19,040 designed this uh talk, 29 00:01:19,040 --> 00:01:21,680 yay. Um, was to dive into hands-on 30 00:01:21,680 --> 00:01:23,680 coding environments. A little thing 31 00:01:23,680 --> 00:01:25,280 happened though. I went out and started 32 00:01:25,280 --> 00:01:28,159 giving talks and I realized that uh the 33 00:01:28,159 --> 00:01:31,280 audience that I was presenting to like 34 00:01:31,280 --> 00:01:33,840 last year before I went on uh long 35 00:01:33,840 --> 00:01:36,400 service leave was highly technical. I 36 00:01:36,400 --> 00:01:37,920 was representing flatter. All of my 37 00:01:37,920 --> 00:01:39,520 audience were programmers. I came back. 38 00:01:39,520 --> 00:01:42,560 I was representing uh anti-gravity and 39 00:01:42,560 --> 00:01:44,799 in a room of 50 people I might get three 40 00:01:44,799 --> 00:01:47,680 programmers and sort of like the whole 41 00:01:47,680 --> 00:01:49,040 concentrating on coding thing sort of 42 00:01:49,040 --> 00:01:51,280 went out the window. So instead, I'm 43 00:01:51,280 --> 00:01:53,119 going to look at how to use AI, 44 00:01:53,119 --> 00:01:54,880 specifically in my case, anti-gravity, 45 00:01:54,880 --> 00:01:56,880 being the anti-gravity devril, how to 46 00:01:56,880 --> 00:01:58,640 use that to learn things because a large 47 00:01:58,640 --> 00:02:00,320 chunk of being a Devril is getting 48 00:02:00,320 --> 00:02:01,920 thrown in the deep end and going, I have 49 00:02:01,920 --> 00:02:03,600 a new technology I need to represent. 50 00:02:03,600 --> 00:02:06,320 How the hell do I figure it out? So what 51 00:02:06,320 --> 00:02:08,399 I'm going to do is that I'm going to 52 00:02:08,399 --> 00:02:10,560 talk about a few things. Specifically, I 53 00:02:10,560 --> 00:02:12,959 want to dive into the concept of this is 54 00:02:12,959 --> 00:02:14,879 a psychological concept called locus of 55 00:02:14,879 --> 00:02:16,720 control. It's how you approach the world 56 00:02:16,720 --> 00:02:18,879 or how you let the world approach you. 57 00:02:18,879 --> 00:02:21,599 It's sort of like do you feel that you 58 00:02:21,599 --> 00:02:23,360 are the one in control or do you feel 59 00:02:23,360 --> 00:02:25,520 that the world is in control? Now this 60 00:02:25,520 --> 00:02:28,160 is not a binary situation. This is not a 61 00:02:28,160 --> 00:02:30,000 hard setting. This is something that 62 00:02:30,000 --> 00:02:31,840 changes you know time of day, how long 63 00:02:31,840 --> 00:02:33,360 since your last meal, whether you're 64 00:02:33,360 --> 00:02:34,400 dealing with something that you're 65 00:02:34,400 --> 00:02:36,480 comfortable with or something that you 66 00:02:36,480 --> 00:02:38,400 like say taxes where you basically just 67 00:02:38,400 --> 00:02:41,440 feel overwhelmed by the world. But it 68 00:02:41,440 --> 00:02:43,519 changes how you interact with AI. And 69 00:02:43,519 --> 00:02:44,879 that's kind of what I'll be getting at 70 00:02:44,879 --> 00:02:46,319 today. 71 00:02:46,319 --> 00:02:49,200 So what have I been doing at codelab at 72 00:02:49,200 --> 00:02:51,680 codelab at uh Google for the last 15 73 00:02:51,680 --> 00:02:54,160 years? Most of my time has been spent 74 00:02:54,160 --> 00:02:56,560 thinking about and developing codelabs. 75 00:02:56,560 --> 00:02:59,120 Uh please squint. I'm about to flashbomb 76 00:02:59,120 --> 00:03:01,760 you. Let's have a look at the last code 77 00:03:01,760 --> 00:03:05,760 lab I wrote when I was still FL de. 78 00:03:05,760 --> 00:03:08,239 So you know it's this traditional doc. 79 00:03:08,239 --> 00:03:09,920 It talks about, you know, here's a thing 80 00:03:09,920 --> 00:03:13,040 we're going to build 81 00:03:13,040 --> 00:03:15,599 and then we'll have some configuration. 82 00:03:15,599 --> 00:03:17,680 We'll have some code. So, the standard 83 00:03:17,680 --> 00:03:19,680 sort of document where we're taking 84 00:03:19,680 --> 00:03:21,680 someone and walking them through the 85 00:03:21,680 --> 00:03:24,640 process. 86 00:03:24,640 --> 00:03:26,640 But 87 00:03:26,640 --> 00:03:29,200 then comes along AI. And has anyone in 88 00:03:29,200 --> 00:03:31,840 the room played with Matt PCO's teach 89 00:03:31,840 --> 00:03:34,799 skill? Got one or two? I'll show you 90 00:03:34,799 --> 00:03:36,799 what it is because it kind of for 91 00:03:36,799 --> 00:03:39,120 someone that spent a lot of my I I felt 92 00:03:39,120 --> 00:03:43,040 my identity was I was a codeab author. 93 00:03:43,040 --> 00:03:45,599 What is [sighs] what is going on in the 94 00:03:45,599 --> 00:03:49,120 world? So what Matt PCO's teach skill 95 00:03:49,120 --> 00:03:51,599 does it's a skill that you install into 96 00:03:51,599 --> 00:03:53,680 your AI environment. Whichever AI 97 00:03:53,680 --> 00:03:55,040 environment you choose to use, please 98 00:03:55,040 --> 00:03:58,720 use anti-gravity. Um 99 00:03:58,720 --> 00:04:00,400 it allows you to turn around and answer 100 00:04:00,400 --> 00:04:02,239 some questions. say I'm learning a thing 101 00:04:02,239 --> 00:04:04,159 I want to concentrate on for this reason 102 00:04:04,159 --> 00:04:07,120 and it generates content sort of like a 103 00:04:07,120 --> 00:04:10,720 codeab so much so how about I actually 104 00:04:10,720 --> 00:04:13,040 show you one 105 00:04:13,040 --> 00:04:17,519 I know show don't tell it's a thing so 106 00:04:17,519 --> 00:04:19,600 it generated this wonderful little 107 00:04:19,600 --> 00:04:23,120 overview page and let's say let's dive 108 00:04:23,120 --> 00:04:26,639 into one of the lessons for context one 109 00:04:26,639 --> 00:04:28,160 of my hobbies at the moment is playing 110 00:04:28,160 --> 00:04:30,080 with soldering irons and putting 111 00:04:30,080 --> 00:04:32,400 together these weird contraptions known 112 00:04:32,400 --> 00:04:34,560 as Eurorrack synthesizers. They are 113 00:04:34,560 --> 00:04:36,479 effectively very expensive adult Lego 114 00:04:36,479 --> 00:04:39,440 involving voltage and noise and maybe 115 00:04:39,440 --> 00:04:40,720 possibly if you know what you're doing 116 00:04:40,720 --> 00:04:43,840 music but I don't. 117 00:04:43,840 --> 00:04:48,160 So here's a style of uh so an op amp is 118 00:04:48,160 --> 00:04:51,120 effectively the analog version of you 119 00:04:51,120 --> 00:04:53,759 remember and gates or gates or gates all 120 00:04:53,759 --> 00:04:56,400 those sorts of things. An op amp is the 121 00:04:56,400 --> 00:04:58,400 analog version. It tries to make the 122 00:04:58,400 --> 00:05:00,320 plus input and the minus input close 123 00:05:00,320 --> 00:05:02,479 together. The minus input is effectively 124 00:05:02,479 --> 00:05:04,800 the negative feedback. So if you have a 125 00:05:04,800 --> 00:05:07,680 voltage coming in on the plus rail, 126 00:05:07,680 --> 00:05:10,639 it will drive the output rail based on 127 00:05:10,639 --> 00:05:12,400 this negative feedback to be as close as 128 00:05:12,400 --> 00:05:16,400 possible to the in input rail. 129 00:05:16,400 --> 00:05:18,400 Nice little concept. You can wire it up 130 00:05:18,400 --> 00:05:20,880 in a bunch of different ways. So for 131 00:05:20,880 --> 00:05:23,120 example, if you are use that 132 00:05:23,120 --> 00:05:24,639 configuration, but with some resistors, 133 00:05:24,639 --> 00:05:27,360 you can amplify the signal based on the 134 00:05:27,360 --> 00:05:29,759 concept of a voltage divider, you can 135 00:05:29,759 --> 00:05:31,600 turn it upside down and make it smaller, 136 00:05:31,600 --> 00:05:33,199 but it changes the phase. So if you got 137 00:05:33,199 --> 00:05:34,800 a positive voltage coming in, you get a 138 00:05:34,800 --> 00:05:36,160 negative voltage out. Got a negative 139 00:05:36,160 --> 00:05:37,440 voltage coming in, you get a positive 140 00:05:37,440 --> 00:05:40,160 voltage out. If you've got say a an 141 00:05:40,160 --> 00:05:42,320 analog signal that's oscillating around 142 00:05:42,320 --> 00:05:45,120 zero plus - 5 volts say then you get the 143 00:05:45,120 --> 00:05:47,360 same thing out bigger or smaller 144 00:05:47,360 --> 00:05:49,199 depending on those two resistors but 145 00:05:49,199 --> 00:05:51,520 completely out of phase 146 00:05:51,520 --> 00:05:54,080 will come back I promise. 147 00:05:54,080 --> 00:05:56,479 Okay. So 148 00:05:56,479 --> 00:05:59,919 why am I showing you this? Let's 149 00:05:59,919 --> 00:06:03,919 dive out and actually have a look at 150 00:06:03,919 --> 00:06:08,769 a later lesson. Listen nine. 151 00:06:08,769 --> 00:06:10,479 [clears throat] 152 00:06:10,479 --> 00:06:12,000 So we've got a slightly more complicated 153 00:06:12,000 --> 00:06:14,639 circuit that it's showing us. It's an 154 00:06:14,639 --> 00:06:16,560 inverted one. It's mixing multiple 155 00:06:16,560 --> 00:06:20,240 signals together to achieve an input. So 156 00:06:20,240 --> 00:06:23,919 I'll just put the the context in 157 00:06:23,919 --> 00:06:26,800 Eurorack. Uh audio signals are usually 158 00:06:26,800 --> 00:06:31,440 plus - 5 volts. Um but as a gentle sort 159 00:06:31,440 --> 00:06:35,360 of trap for later there are also 0 to 10 160 00:06:35,360 --> 00:06:37,919 volt positive things for controlling 161 00:06:37,919 --> 00:06:40,720 like triggering uh drum synthesizers and 162 00:06:40,720 --> 00:06:42,960 things like this. So this is uh a 163 00:06:42,960 --> 00:06:46,000 circuit that's intended to enable uh an 164 00:06:46,000 --> 00:06:49,600 embedded MCU example Raspberry Pi 165 00:06:49,600 --> 00:06:51,680 Raspberry Pi Pico to actually sense 166 00:06:51,680 --> 00:06:53,360 what's going on. And so what they're 167 00:06:53,360 --> 00:06:56,400 doing is they are injecting a bias 168 00:06:56,400 --> 00:06:59,440 voltage and the signal using this 169 00:06:59,440 --> 00:07:02,479 inverter to squish it down. So there's 170 00:07:02,479 --> 00:07:05,840 some math down here. 171 00:07:05,840 --> 00:07:06,960 And then [sighs and gasps] 172 00:07:06,960 --> 00:07:09,680 there's this mess here. 173 00:07:09,680 --> 00:07:11,840 This is this is where I'm sort of 174 00:07:11,840 --> 00:07:14,800 getting with AI and going it's trying to 175 00:07:14,800 --> 00:07:16,240 tell you the right thing, but it's 176 00:07:16,240 --> 00:07:18,960 broken a couple of problems. One, the 177 00:07:18,960 --> 00:07:21,440 second diode labeled D2 is upside down. 178 00:07:21,440 --> 00:07:23,199 The point of these two diodes is to 179 00:07:23,199 --> 00:07:25,039 prevent the magic smoke coming out of 180 00:07:25,039 --> 00:07:27,280 the the Raspberry Pi Pico by feeding it 181 00:07:27,280 --> 00:07:28,880 either too much voltage or too little 182 00:07:28,880 --> 00:07:33,360 voltage. And secondly, the BAT 54S is a 183 00:07:33,360 --> 00:07:35,199 single integrated circuit. So it 184 00:07:35,199 --> 00:07:37,759 shouldn't have D1 and D2. It should be a 185 00:07:37,759 --> 00:07:41,680 U. So yes, I can see how it got there, 186 00:07:41,680 --> 00:07:45,440 but it's wrong. Interesting. And the 187 00:07:45,440 --> 00:07:47,680 second part is if you feed because this 188 00:07:47,680 --> 00:07:49,440 is an inverter, if you feed it + 10 189 00:07:49,440 --> 00:07:51,599 volts, it will come out the other side 190 00:07:51,599 --> 00:07:55,440 as a negative. And because it's + 10 and 191 00:07:55,440 --> 00:07:59,120 the math is all squish and offset, as 192 00:07:59,120 --> 00:08:02,400 you can see down here, if we have + 5 193 00:08:02,400 --> 00:08:04,639 vol, then at 0 volt, but if you follow 194 00:08:04,639 --> 00:08:07,919 that math with minus with plus 10 volt, 195 00:08:07,919 --> 00:08:11,039 this will be minus 1.65 65 volts at 196 00:08:11,039 --> 00:08:13,360 which point your poor little pico is 197 00:08:13,360 --> 00:08:17,520 going to goof. Not good. So what I'm 198 00:08:17,520 --> 00:08:20,879 getting at here is you need to verify 199 00:08:20,879 --> 00:08:24,240 the results you get out of an AI. 200 00:08:24,240 --> 00:08:26,240 So 201 00:08:26,240 --> 00:08:29,120 just to verify this is an excerpt from 202 00:08:29,120 --> 00:08:32,719 the data sheet the BAT 54S. This is why 203 00:08:32,719 --> 00:08:35,120 I can see how the LLM got to where it 204 00:08:35,120 --> 00:08:38,560 got to. These are frequently on uh a 205 00:08:38,560 --> 00:08:41,120 schematic as a pair of dodes together 206 00:08:41,120 --> 00:08:43,279 inside of a box. So yes, I can see why 207 00:08:43,279 --> 00:08:46,160 it drew it as a pair of dodes, but it 208 00:08:46,160 --> 00:08:48,480 is, as you can see, a single integrated 209 00:08:48,480 --> 00:08:49,680 circuit. So it shouldn't have been done 210 00:08:49,680 --> 00:08:54,320 that way. So I see the idea wrong. So 211 00:08:54,320 --> 00:08:56,000 this isn't a case of rolling dice and 212 00:08:56,000 --> 00:08:58,080 getting it wrong and hallucinating. It's 213 00:08:58,080 --> 00:08:59,839 something else. By the way, these dice 214 00:08:59,839 --> 00:09:01,920 are totally uh hallucinated. I'm waiting 215 00:09:01,920 --> 00:09:06,920 for you to spot it. Get it? Spot. Ha. 216 00:09:06,931 --> 00:09:08,399 [snorts] 217 00:09:08,399 --> 00:09:11,279 So, so the the fun thing about I'll stay 218 00:09:11,279 --> 00:09:12,880 there for a second. Um, the fun thing 219 00:09:12,880 --> 00:09:14,959 that I'm getting at here is that AI is 220 00:09:14,959 --> 00:09:17,680 really great. It generates content, but 221 00:09:17,680 --> 00:09:19,600 how you interact with that content is 222 00:09:19,600 --> 00:09:22,240 actually vital. If you turn around and 223 00:09:22,240 --> 00:09:24,560 interact with it as if it were, you 224 00:09:24,560 --> 00:09:26,080 know, absolutely guaranteed to be 225 00:09:26,080 --> 00:09:27,519 correct because computers never make 226 00:09:27,519 --> 00:09:29,120 mistakes, then you're going to get in 227 00:09:29,120 --> 00:09:31,120 big trouble. Whereas if you view it as a 228 00:09:31,120 --> 00:09:33,519 set of hypotheses that you need to test, 229 00:09:33,519 --> 00:09:34,640 you'll actually get a lot more out of 230 00:09:34,640 --> 00:09:37,839 it. And I think that as as dev rails is 231 00:09:37,839 --> 00:09:40,880 a a mind shift that we have to encourage 232 00:09:40,880 --> 00:09:42,399 in people who are using these tools. 233 00:09:42,399 --> 00:09:44,080 It's sort of like yes, you have a 234 00:09:44,080 --> 00:09:46,720 computer generating content. It's mostly 235 00:09:46,720 --> 00:09:49,760 correct. How do you prove it's correct? 236 00:09:49,760 --> 00:09:50,959 How do you verify it? How do you 237 00:09:50,959 --> 00:09:53,200 validate? 238 00:09:53,200 --> 00:09:56,480 Okay. So, one of the things that um I'm 239 00:09:56,480 --> 00:09:59,200 I'm talking with my audiences about and 240 00:09:59,200 --> 00:10:00,959 trying to find a way to communicate is 241 00:10:00,959 --> 00:10:02,880 agent skills. 242 00:10:02,880 --> 00:10:07,760 Okay. Call out to uh Katie. I' I've got 243 00:10:07,760 --> 00:10:10,467 a quote from Katie that she gave me. 244 00:10:10,467 --> 00:10:12,000 [laughter] 245 00:10:12,000 --> 00:10:15,040 Um so, what are skills? Skills are a 246 00:10:15,040 --> 00:10:17,120 combination of markdown documents and 247 00:10:17,120 --> 00:10:20,240 programs and resources that you can give 248 00:10:20,240 --> 00:10:23,279 to your LLM and go when you have a thing 249 00:10:23,279 --> 00:10:25,200 that needs to be done, here's some 250 00:10:25,200 --> 00:10:27,040 resources and some knowledge that you 251 00:10:27,040 --> 00:10:30,000 can use to get that thing done. 252 00:10:30,000 --> 00:10:32,320 So, here's a slightly more complicated 253 00:10:32,320 --> 00:10:35,360 version of the previous thing and I want 254 00:10:35,360 --> 00:10:38,079 to show you how an an LLM with a skill 255 00:10:38,079 --> 00:10:40,480 can do a better job. 256 00:10:40,480 --> 00:10:45,360 So, let's go to the first demo. 257 00:10:46,800 --> 00:10:48,880 Okay. 258 00:10:48,880 --> 00:10:51,519 So now I'm showing you 259 00:10:51,519 --> 00:10:54,480 actually I will get rid of the agent and 260 00:10:54,480 --> 00:10:58,519 show you what happens 261 00:10:59,839 --> 00:11:03,480 without the agent. 262 00:11:07,040 --> 00:11:11,120 So, if I ask our friendly a friendly 263 00:11:11,120 --> 00:11:13,440 anti-gravity just to confirm where we 264 00:11:13,440 --> 00:11:15,920 are, we're in a directory. This is a 265 00:11:15,920 --> 00:11:17,760 schematic. 266 00:11:17,760 --> 00:11:20,640 And I'm going to turn around and yes, 267 00:11:20,640 --> 00:11:23,519 we've deleted the skill. So, inside 268 00:11:23,519 --> 00:11:26,000 anti-gravity, 269 00:11:26,000 --> 00:11:27,440 we can turn around and ask it to 270 00:11:27,440 --> 00:11:28,480 actually go and have a look at the 271 00:11:28,480 --> 00:11:31,200 schematic. So, what's happening here? We 272 00:11:31,200 --> 00:11:33,440 have a program that's operating inside 273 00:11:33,440 --> 00:11:35,920 of my editor. Uh, anti-gravity comes in 274 00:11:35,920 --> 00:11:37,760 a variety of forms. It can be embedded 275 00:11:37,760 --> 00:11:39,920 in your IDEs. It can run standalone. It 276 00:11:39,920 --> 00:11:41,279 can run in the command line. It can run 277 00:11:41,279 --> 00:11:43,680 on your cloud server. The joy of little 278 00:11:43,680 --> 00:11:46,000 Go binary wrapped up as a Python SDK. 279 00:11:46,000 --> 00:11:48,399 You can use it absolutely everywhere. 280 00:11:48,399 --> 00:11:51,360 The thing I'm getting at is that how 281 00:11:51,360 --> 00:11:53,600 anti-gravity or Gemini through 282 00:11:53,600 --> 00:11:55,360 anti-gravity is interacting with our 283 00:11:55,360 --> 00:11:57,120 system. It's running a series of 284 00:11:57,120 --> 00:11:59,600 commands, searching for a bunch of 285 00:11:59,600 --> 00:12:01,279 things to figure out what the schematic 286 00:12:01,279 --> 00:12:06,000 does. So, just to bring you back, 287 00:12:06,000 --> 00:12:08,560 yes, it's complicated, but effectively 288 00:12:08,560 --> 00:12:10,320 what's going on, we've got a jack here. 289 00:12:10,320 --> 00:12:12,320 You put a signal in there, it gets 290 00:12:12,320 --> 00:12:14,720 through to here, and these op amps, as I 291 00:12:14,720 --> 00:12:16,560 showed you before, we can just have them 292 00:12:16,560 --> 00:12:19,560 positive. 293 00:12:20,079 --> 00:12:22,959 Um, and it should turn around and give 294 00:12:22,959 --> 00:12:25,360 us 295 00:12:25,360 --> 00:12:29,000 uh cameo. 296 00:12:31,040 --> 00:12:33,440 So, it's gone through and figured out a 297 00:12:33,440 --> 00:12:36,240 bunch of things about this circuit. So, 298 00:12:36,240 --> 00:12:38,639 it's got outputs, resistors, it's got 299 00:12:38,639 --> 00:12:41,200 some lead stuff. 300 00:12:41,200 --> 00:12:43,200 Now, the fun stuff is that usually, and 301 00:12:43,200 --> 00:12:45,760 the joy of demoing with a random number 302 00:12:45,760 --> 00:12:47,600 generator, 303 00:12:47,600 --> 00:12:49,040 and it hasn't done it this time, of 304 00:12:49,040 --> 00:12:50,399 course, it will frequently turn around 305 00:12:50,399 --> 00:12:51,680 and say, "Oh, the circuit's broken 306 00:12:51,680 --> 00:12:53,279 because of x, y, and zed." The reason 307 00:12:53,279 --> 00:12:56,240 that happens is that it has spent a 308 00:12:56,240 --> 00:12:58,399 bunch of its context window writing code 309 00:12:58,399 --> 00:13:01,920 to try and figure things out. Whereas if 310 00:13:01,920 --> 00:13:05,279 you turn around and 311 00:13:05,279 --> 00:13:07,200 bring back the skills by reversing the 312 00:13:07,200 --> 00:13:10,519 get change 313 00:13:11,279 --> 00:13:14,399 and so just effectively showing you the 314 00:13:14,399 --> 00:13:17,200 beforehand it worked for 25 seconds 315 00:13:17,200 --> 00:13:19,760 explored a bunch of stuff 316 00:13:19,760 --> 00:13:21,440 ran some git log so it's looking at the 317 00:13:21,440 --> 00:13:24,399 history but more importantly 318 00:13:24,399 --> 00:13:26,399 it turned around and created a bunch of 319 00:13:26,399 --> 00:13:28,880 Python code. So this is something that 320 00:13:28,880 --> 00:13:30,160 we don't want it to do for 321 00:13:30,160 --> 00:13:31,839 repeatability. We want it to actually 322 00:13:31,839 --> 00:13:35,040 have a consistent chunk of code. And so 323 00:13:35,040 --> 00:13:37,519 what we do is we hand it a skill. And 324 00:13:37,519 --> 00:13:39,040 just to show you what that skill looks 325 00:13:39,040 --> 00:13:41,200 like, 326 00:13:41,200 --> 00:13:45,639 we have a skill document. 327 00:13:48,399 --> 00:13:52,480 Just kill that. Kill that. 328 00:13:52,480 --> 00:13:54,480 We have a a skill document that turns 329 00:13:54,480 --> 00:13:57,519 around and tells the LLM, you have a 330 00:13:57,519 --> 00:14:01,760 thing when you when you need to do this. 331 00:14:01,760 --> 00:14:03,839 Here's some commands to run. And by the 332 00:14:03,839 --> 00:14:08,000 way, here's a whole bunch of Python code 333 00:14:08,000 --> 00:14:09,600 that I didn't write because I stopped 334 00:14:09,600 --> 00:14:11,600 writing Python back when Python 27 was 335 00:14:11,600 --> 00:14:15,360 new. Yes. Yes. Gray hair. It's a thing. 336 00:14:15,360 --> 00:14:16,959 So, 337 00:14:16,959 --> 00:14:19,199 if we go back back here, well, actually, 338 00:14:19,199 --> 00:14:21,120 no, I need to bring back one of my 339 00:14:21,120 --> 00:14:24,120 files. 340 00:14:24,399 --> 00:14:27,760 Put that back in preview mode. 341 00:14:27,760 --> 00:14:29,519 So, if we go back to anti-gravity, now 342 00:14:29,519 --> 00:14:32,160 that I brought back the skill 343 00:14:32,160 --> 00:14:34,399 and I started a new context, so I don't 344 00:14:34,399 --> 00:14:38,240 have a polluted context, I can ask it to 345 00:14:38,240 --> 00:14:41,720 review a schematic. 346 00:14:41,760 --> 00:14:43,920 So, same command, but what I've changed 347 00:14:43,920 --> 00:14:47,279 is I've given L the LLM some context. 348 00:14:47,279 --> 00:14:48,880 Here's a skill. When you're trying to do 349 00:14:48,880 --> 00:14:50,880 a thing, run this program. Here's a 350 00:14:50,880 --> 00:14:53,040 program that 351 00:14:53,040 --> 00:14:56,000 doesn't make it up on the fly, but I 352 00:14:56,000 --> 00:14:57,519 have tested the fact that the program 353 00:14:57,519 --> 00:14:59,120 extracts the correct things from the 354 00:14:59,120 --> 00:15:02,320 schematic so that it knows what's there 355 00:15:02,320 --> 00:15:05,120 in a token efficient way. So instead of 356 00:15:05,120 --> 00:15:07,839 just randomly poking through a large 357 00:15:07,839 --> 00:15:11,920 file, which while this is running, oh, 358 00:15:11,920 --> 00:15:15,480 it's already run. 359 00:15:15,920 --> 00:15:17,839 And as you can see, it's done a better 360 00:15:17,839 --> 00:15:19,760 job. 361 00:15:19,760 --> 00:15:22,560 So last Lauran took 25 seconds. This one 362 00:15:22,560 --> 00:15:26,000 took 11. So half the time. Uh if I could 363 00:15:26,000 --> 00:15:28,079 dig out the tokens used, it would used a 364 00:15:28,079 --> 00:15:29,760 lot less tokens because if we have a 365 00:15:29,760 --> 00:15:31,519 look and see what it actually did, it 366 00:15:31,519 --> 00:15:33,519 ran four commands, all of them just 367 00:15:33,519 --> 00:15:35,360 running the program. So it's read the 368 00:15:35,360 --> 00:15:37,279 skill and said, I've got this program. 369 00:15:37,279 --> 00:15:38,880 It does these things. This is what I 370 00:15:38,880 --> 00:15:40,800 need to do. 371 00:15:40,800 --> 00:15:43,600 It's straight through. 372 00:15:43,600 --> 00:15:46,079 And if we have a look and at what it's 373 00:15:46,079 --> 00:15:48,000 actually done, it's figured out power 374 00:15:48,000 --> 00:15:50,639 supply. It's correctly figured out. It's 375 00:15:50,639 --> 00:15:52,320 a cascading configuration. You plug one 376 00:15:52,320 --> 00:15:54,000 thing in at the top, it flows all the 377 00:15:54,000 --> 00:15:55,759 way through. 378 00:15:55,759 --> 00:15:57,600 It's figured out pull downs. It's 379 00:15:57,600 --> 00:15:58,959 picking on the fact that I've done 380 00:15:58,959 --> 00:16:00,560 something wrong with the design, which 381 00:16:00,560 --> 00:16:03,920 it didn't do last time. So, all in all, 382 00:16:03,920 --> 00:16:05,759 because I've given it a set of tools 383 00:16:05,759 --> 00:16:07,600 that it can correctly configure figure 384 00:16:07,600 --> 00:16:10,160 out what's going on, it's doing a better 385 00:16:10,160 --> 00:16:12,560 job. So, that's the the primary uh 386 00:16:12,560 --> 00:16:14,000 reason I'm giving this part of the demo 387 00:16:14,000 --> 00:16:16,480 is going skills allow you to get better 388 00:16:16,480 --> 00:16:18,639 information out of an LLM. So if you're 389 00:16:18,639 --> 00:16:21,120 doing something with a random file and 390 00:16:21,120 --> 00:16:24,079 just to give you sort of a a 391 00:16:24,079 --> 00:16:26,399 demonstration of why we're seeing what 392 00:16:26,399 --> 00:16:27,839 we're seeing if we actually have a look 393 00:16:27,839 --> 00:16:30,639 at the schematic file yes it's 394 00:16:30,639 --> 00:16:33,199 effectively scheme or lisp but the 395 00:16:33,199 --> 00:16:37,040 important thing and the reason why it 396 00:16:37,040 --> 00:16:39,360 couldn't just ingest the whole file 397 00:16:39,360 --> 00:16:42,160 which I'll stop doing that that's just 398 00:16:42,160 --> 00:16:44,480 is that it's almost 15,000 lines of of 399 00:16:44,480 --> 00:16:48,160 of skin code. So an LLM can't just suck 400 00:16:48,160 --> 00:16:51,040 the whole file in. It needs to go and 401 00:16:51,040 --> 00:16:52,720 pick out parts of it, which is why it 402 00:16:52,720 --> 00:16:54,160 was writing Python code in the first 403 00:16:54,160 --> 00:16:56,959 place to go and selectively pull parts 404 00:16:56,959 --> 00:16:59,600 of the file out. Whereas if you actually 405 00:16:59,600 --> 00:17:03,120 spend some time with an LLM and break it 406 00:17:03,120 --> 00:17:04,720 down and go write this code that 407 00:17:04,720 --> 00:17:08,079 extracts this information in this format 408 00:17:08,079 --> 00:17:10,160 that I know that you will do well with, 409 00:17:10,160 --> 00:17:13,520 you'll get better results. Okay. 410 00:17:13,520 --> 00:17:15,120 So now that I've done that motivation 411 00:17:15,120 --> 00:17:18,600 part of the talk, 412 00:17:19,120 --> 00:17:22,120 let's 413 00:17:22,400 --> 00:17:24,559 we will get you. So what I'm doing now 414 00:17:24,559 --> 00:17:26,799 is I'm going to go into yet another data 415 00:17:26,799 --> 00:17:29,200 format. This one is a thing called VCV 416 00:17:29,200 --> 00:17:32,480 rack. This is a virtual Euro module. 417 00:17:32,480 --> 00:17:35,760 It's a set of modules that think of them 418 00:17:35,760 --> 00:17:37,840 as code running processes that have data 419 00:17:37,840 --> 00:17:39,600 flow between them. So think of this as 420 00:17:39,600 --> 00:17:41,200 visual programming where all the little 421 00:17:41,200 --> 00:17:45,440 cables are actually virtual voltages. 422 00:17:45,440 --> 00:17:47,440 Well, just consider them data flow. Some 423 00:17:47,440 --> 00:17:48,720 of them are controlling, some of them 424 00:17:48,720 --> 00:17:50,960 are analog, some of them are all sorts 425 00:17:50,960 --> 00:17:53,120 of things. So making sense of this 426 00:17:53,120 --> 00:17:54,960 program, if you will, is what we're 427 00:17:54,960 --> 00:17:57,039 going to do. Moreover, AI is going to do 428 00:17:57,039 --> 00:18:01,600 it for us. And we're going to 429 00:18:01,600 --> 00:18:04,320 over here. 430 00:18:04,320 --> 00:18:06,960 Okay. again with getting rid of the 431 00:18:06,960 --> 00:18:09,987 agents. [snorts] 432 00:18:13,520 --> 00:18:16,240 I won't do that yet. 433 00:18:16,240 --> 00:18:18,720 So again, anti-gravity. And what I'm 434 00:18:18,720 --> 00:18:19,679 going to do is I'm going to get 435 00:18:19,679 --> 00:18:22,400 anti-gravity to create a scale. So it's 436 00:18:22,400 --> 00:18:24,000 going to write some Python code for me, 437 00:18:24,000 --> 00:18:25,840 which is good. Trusting me with Python 438 00:18:25,840 --> 00:18:28,272 code is not a good idea. 439 00:18:28,272 --> 00:18:29,360 [snorts] 440 00:18:29,360 --> 00:18:31,360 So I'm asking anti-gravity, I've got a 441 00:18:31,360 --> 00:18:33,360 file. Figure out what it is. So, it's 442 00:18:33,360 --> 00:18:35,360 going off and writing some Python code, 443 00:18:35,360 --> 00:18:39,240 poking at it, and going, 444 00:18:40,240 --> 00:18:41,840 "Oh, it's cheating. It read the read me 445 00:18:41,840 --> 00:18:43,760 file." 446 00:18:43,760 --> 00:18:48,760 Llens will always cheat. Heads up. 447 00:18:49,600 --> 00:18:51,440 So, it's correctly figured out. It's a 448 00:18:51,440 --> 00:18:54,480 Zstand file. It's basically a tarball 449 00:18:54,480 --> 00:18:56,880 and it's got a JSON file inside of it. 450 00:18:56,880 --> 00:18:58,640 So if we can extract the JSON file out 451 00:18:58,640 --> 00:19:00,400 of it, then we can actually figure out 452 00:19:00,400 --> 00:19:02,080 what all those patch cables actually 453 00:19:02,080 --> 00:19:03,600 mean. 454 00:19:03,600 --> 00:19:06,480 Okay. 455 00:19:06,480 --> 00:19:08,720 Now, I shouldn't need to do this cuz it 456 00:19:08,720 --> 00:19:11,760 is my computer, but just making sure 457 00:19:11,760 --> 00:19:13,840 using UV because we're going to need a 458 00:19:13,840 --> 00:19:16,799 Zstandard inspe uh extension for Python 459 00:19:16,799 --> 00:19:19,120 to be able to read that Zstandard file. 460 00:19:19,120 --> 00:19:21,919 And yes, we have UV installed. 461 00:19:21,919 --> 00:19:23,840 So now 462 00:19:23,840 --> 00:19:25,600 the closest thing to programming I'm 463 00:19:25,600 --> 00:19:27,120 going to do all day which is give it 464 00:19:27,120 --> 00:19:29,120 half a spec. 465 00:19:29,120 --> 00:19:31,280 Please create a Python file for passing 466 00:19:31,280 --> 00:19:34,080 JSON file inside a VCV rack file. Make 467 00:19:34,080 --> 00:19:35,679 the path of the blah blah blah blah 468 00:19:35,679 --> 00:19:37,280 blah. 469 00:19:37,280 --> 00:19:40,240 So now what I'm doing is I'm effectively 470 00:19:40,240 --> 00:19:42,000 guiding 471 00:19:42,000 --> 00:19:44,480 an LLM to write code and now I'll go 472 00:19:44,480 --> 00:19:46,799 through a loop where I get it to use 473 00:19:46,799 --> 00:19:49,600 that code, get it to improve the code 474 00:19:49,600 --> 00:19:52,720 and eventually I'll ask it what the heck 475 00:19:52,720 --> 00:19:58,840 is in that uh VC react file. 476 00:19:59,840 --> 00:20:03,679 Yeah, I trust you YOLO. It's not a C 477 00:20:03,679 --> 00:20:07,320 laptop. It's fine. 478 00:20:13,280 --> 00:20:15,440 So, it's gone and done a first version 479 00:20:15,440 --> 00:20:18,640 of writing some code. 480 00:20:18,640 --> 00:20:20,320 161 lines. That's not going to be 481 00:20:20,320 --> 00:20:22,400 enough, 482 00:20:22,400 --> 00:20:25,880 but that's okay. 483 00:20:30,799 --> 00:20:33,120 And because I like things to be pretty, 484 00:20:33,120 --> 00:20:35,760 let's use rough to make the file a 485 00:20:35,760 --> 00:20:38,799 little bit better formatted. 486 00:20:38,799 --> 00:20:41,840 Yes. Yes. You need to fix a few things. 487 00:20:41,840 --> 00:20:46,520 You'll fix a few things. Good. 488 00:20:46,960 --> 00:20:49,280 Now, the next part is I've shown you the 489 00:20:49,280 --> 00:20:51,440 effect of having a skill, but you might 490 00:20:51,440 --> 00:20:53,600 be scared. Oh, I have a new thing I've 491 00:20:53,600 --> 00:20:55,520 got to create. Where are all the docs? 492 00:20:55,520 --> 00:20:58,080 Well, here's a wonderful thing. because 493 00:20:58,080 --> 00:21:00,480 we have documentation on what a skill is 494 00:21:00,480 --> 00:21:03,840 for creating for for an LLM. Turns out 495 00:21:03,840 --> 00:21:05,840 the LLMs know how to create skills. So 496 00:21:05,840 --> 00:21:09,440 you can just now that we have a a Python 497 00:21:09,440 --> 00:21:12,440 program, 498 00:21:12,559 --> 00:21:14,559 we can ask anti-gravity, please go 499 00:21:14,559 --> 00:21:17,039 create a skill out of this program. So 500 00:21:17,039 --> 00:21:19,039 it's going to turn around and go, okay, 501 00:21:19,039 --> 00:21:21,120 I have a skill for creating skills. It 502 00:21:21,120 --> 00:21:23,200 tells me how to what files to put where, 503 00:21:23,200 --> 00:21:27,240 and I'll go do that for you. 504 00:21:28,320 --> 00:21:30,159 Ah, cool. It's used the same name this 505 00:21:30,159 --> 00:21:31,760 time. Last time it changed the name on 506 00:21:31,760 --> 00:21:34,640 me. So now it's moved the file into a 507 00:21:34,640 --> 00:21:37,840 directory, added a skill.md, which we'll 508 00:21:37,840 --> 00:21:40,720 go and have a look at. 509 00:21:40,720 --> 00:21:43,679 Accept all those changes. 510 00:21:43,679 --> 00:21:46,400 So the skill.md is basically a markdown 511 00:21:46,400 --> 00:21:49,360 file. Nothing to be scared of. 512 00:21:49,360 --> 00:21:51,039 The description at the top is 513 00:21:51,039 --> 00:21:52,799 incorrectly named because as with all 514 00:21:52,799 --> 00:21:54,240 things in technology, we create them 515 00:21:54,240 --> 00:21:55,360 before we understand how they're going 516 00:21:55,360 --> 00:21:58,159 to be used. Uh the name itself is kind 517 00:21:58,159 --> 00:22:01,600 of irrelevant, but the description is 518 00:22:01,600 --> 00:22:04,400 really the invitation to the LLM that 519 00:22:04,400 --> 00:22:06,559 says if you hit a situation that matches 520 00:22:06,559 --> 00:22:08,720 this description, ingest the rest of the 521 00:22:08,720 --> 00:22:12,159 file into your context. So this should 522 00:22:12,159 --> 00:22:14,880 really be use case or something like 523 00:22:14,880 --> 00:22:16,559 that, but it's description. We're stuck 524 00:22:16,559 --> 00:22:20,880 with it. It's the the publish standard. 525 00:22:20,880 --> 00:22:24,840 So now that we have that 526 00:22:25,679 --> 00:22:28,559 uh yes, a human readable version of the 527 00:22:28,559 --> 00:22:32,480 skill, we have usage path to file. Oh, 528 00:22:32,480 --> 00:22:34,159 this is nowhere near enough. That's 529 00:22:34,159 --> 00:22:37,280 okay. That is okay because what we can 530 00:22:37,280 --> 00:22:40,159 do. 531 00:22:40,159 --> 00:22:44,440 Close out some of the random files. 532 00:22:45,679 --> 00:22:48,159 get back to my readme so that I know 533 00:22:48,159 --> 00:22:51,559 what I'm doing 534 00:22:55,679 --> 00:22:58,880 is that now that we have this and I am 535 00:22:58,880 --> 00:23:01,280 just going to delete 536 00:23:01,280 --> 00:23:03,679 this 537 00:23:03,679 --> 00:23:07,159 random file. 538 00:23:12,159 --> 00:23:14,159 So we just have the agents directory 539 00:23:14,159 --> 00:23:17,679 with scripts and scale. So now we can go 540 00:23:17,679 --> 00:23:22,080 back to here. Start a new context. So 541 00:23:22,080 --> 00:23:23,679 the important thing for you when you 542 00:23:23,679 --> 00:23:25,440 start playing with AI is be very 543 00:23:25,440 --> 00:23:28,080 sensitive about what's in your context. 544 00:23:28,080 --> 00:23:30,240 Don't let it run too long. Once the 545 00:23:30,240 --> 00:23:32,880 context gets long, it starts losing the 546 00:23:32,880 --> 00:23:34,720 ability to remember a what it was trying 547 00:23:34,720 --> 00:23:38,240 to do and what it's just done. So if you 548 00:23:38,240 --> 00:23:39,520 have something that's important, write 549 00:23:39,520 --> 00:23:42,320 it to disk. tell the LLM where it is so 550 00:23:42,320 --> 00:23:44,720 it can go find it when it needs it. But 551 00:23:44,720 --> 00:23:46,240 when you're testing things like skills, 552 00:23:46,240 --> 00:23:48,480 starting a new context means that it 553 00:23:48,480 --> 00:23:50,400 doesn't remember what it's done and it 554 00:23:50,400 --> 00:23:54,679 has to use the skill as a result. 555 00:23:57,919 --> 00:24:01,559 Okay, so 556 00:24:02,159 --> 00:24:04,000 we've asked to go review the patch file 557 00:24:04,000 --> 00:24:06,000 again. This time it's gone, okay, I have 558 00:24:06,000 --> 00:24:10,240 a skill for doing that. Let's run the 559 00:24:10,240 --> 00:24:12,080 the thing it's failed to do it because 560 00:24:12,080 --> 00:24:13,919 it's actually running it inside of a 561 00:24:13,919 --> 00:24:17,279 sandbox. It should have run it uh with 562 00:24:17,279 --> 00:24:20,159 the ub command- isolated I believe but 563 00:24:20,159 --> 00:24:21,760 it will figure that out because I will 564 00:24:21,760 --> 00:24:25,520 tell it to figure that out cuz it's as 565 00:24:25,520 --> 00:24:27,360 you can see 566 00:24:27,360 --> 00:24:29,279 it's failed 567 00:24:29,279 --> 00:24:31,360 and it should have created oh it's it's 568 00:24:31,360 --> 00:24:33,360 done it as Python 3 and a few other 569 00:24:33,360 --> 00:24:35,600 things. The important thing here is that 570 00:24:35,600 --> 00:24:38,720 it's started to get an understanding of 571 00:24:38,720 --> 00:24:40,799 what's going on. It's started creating a 572 00:24:40,799 --> 00:24:43,679 mermaid diagram saying 573 00:24:43,679 --> 00:24:46,640 uh this is what the configuration is. 574 00:24:46,640 --> 00:24:50,640 Here's how it works. It's 575 00:24:50,640 --> 00:24:51,760 it's turning around and going it's 576 00:24:51,760 --> 00:24:53,440 expressive ambient generative modular 577 00:24:53,440 --> 00:24:57,720 patch. So it makes music. 578 00:24:58,159 --> 00:25:01,279 Okay. So the important thing here is 579 00:25:01,279 --> 00:25:02,480 this is not where you stop. This is 580 00:25:02,480 --> 00:25:06,517 where you start. So what you can do 581 00:25:06,517 --> 00:25:07,840 [clears throat] is you can turn around 582 00:25:07,840 --> 00:25:09,760 and tell it it's been bad and it should 583 00:25:09,760 --> 00:25:12,240 improve itself. 584 00:25:12,240 --> 00:25:14,159 You write Python code to answer this 585 00:25:14,159 --> 00:25:15,440 question. What additional functionality 586 00:25:15,440 --> 00:25:16,720 did you need that wasn't in the skill? 587 00:25:16,720 --> 00:25:19,520 So basically saying you failed. 588 00:25:19,520 --> 00:25:21,919 What did you do wrong? Think about it. 589 00:25:21,919 --> 00:25:24,400 And it's come back and gone okay I 590 00:25:24,400 --> 00:25:26,080 needed some additional capability in 591 00:25:26,080 --> 00:25:29,360 that skill that wasn't there previously. 592 00:25:29,360 --> 00:25:34,320 So uh do it again. 593 00:25:35,039 --> 00:25:37,279 So yes, my programming now consists of 594 00:25:37,279 --> 00:25:38,799 poking machines and telling them to do 595 00:25:38,799 --> 00:25:41,799 better. 596 00:25:44,640 --> 00:25:48,320 Okay, so ah yes, it's picked up the dash 597 00:25:48,320 --> 00:25:50,240 isolated so it will do a better job of 598 00:25:50,240 --> 00:25:53,480 running it. 599 00:25:54,960 --> 00:25:56,640 And it also ran rough. That's nice. It 600 00:25:56,640 --> 00:25:57,760 means I don't have to tell it to run 601 00:25:57,760 --> 00:26:00,799 rough again. 602 00:26:00,799 --> 00:26:05,039 It's updated the script. Cool. So, in 603 00:26:05,039 --> 00:26:08,039 theory, 604 00:26:08,080 --> 00:26:11,520 once it says it is done, 605 00:26:11,520 --> 00:26:13,120 time for interpretive dance while we 606 00:26:13,120 --> 00:26:16,799 make up for what the program is doing. 607 00:26:16,799 --> 00:26:20,679 What are you doing anyway? 608 00:26:22,640 --> 00:26:24,159 Oh, it's testing running the script. 609 00:26:24,159 --> 00:26:26,000 That's nice. 610 00:26:26,000 --> 00:26:27,679 I wish all programmers tested what they 611 00:26:27,679 --> 00:26:29,440 did. 612 00:26:29,440 --> 00:26:31,200 I know, I know. I have I have high 613 00:26:31,200 --> 00:26:33,039 hopes. 614 00:26:33,039 --> 00:26:35,120 So, let's have a look and see what it's 615 00:26:35,120 --> 00:26:39,360 changed. H clicked on things. 616 00:26:39,360 --> 00:26:42,320 So, it's turned around and 617 00:26:42,320 --> 00:26:44,799 it's given itself more capabilities to 618 00:26:44,799 --> 00:26:46,480 dive into things and it's written a 619 00:26:46,480 --> 00:26:50,240 bunch more code. Cool. So, we'll accept 620 00:26:50,240 --> 00:26:52,240 all those changes 621 00:26:52,240 --> 00:26:55,679 and oops, 622 00:26:55,679 --> 00:26:58,799 we'll start a new context. 623 00:26:58,799 --> 00:27:00,480 and tell it to review the patch file. 624 00:27:00,480 --> 00:27:02,080 Again, 625 00:27:02,080 --> 00:27:03,760 you can do this as often as as is 626 00:27:03,760 --> 00:27:06,760 required. 627 00:27:12,159 --> 00:27:14,960 Boop boop. 628 00:27:14,960 --> 00:27:16,480 So, yes, I thought it was important to 629 00:27:16,480 --> 00:27:17,760 come to a Python conference and actually 630 00:27:17,760 --> 00:27:18,960 write Python code, but given the fact 631 00:27:18,960 --> 00:27:21,600 that I don't write Python, LLM's to the 632 00:27:21,600 --> 00:27:25,279 to the rescue. And hopefully 633 00:27:25,279 --> 00:27:26,960 I 634 00:27:26,960 --> 00:27:30,279 Oh, wow. 635 00:27:32,159 --> 00:27:33,520 Given the fact that we're running out of 636 00:27:33,520 --> 00:27:35,600 time, I will save you the going around 637 00:27:35,600 --> 00:27:37,520 the loop again. But that's effectively 638 00:27:37,520 --> 00:27:39,679 how I got it to the point where it 639 00:27:39,679 --> 00:27:41,679 actually worked. I turned around and 640 00:27:41,679 --> 00:27:43,200 went around the loop about four or five 641 00:27:43,200 --> 00:27:44,480 times and got to the point where I went, 642 00:27:44,480 --> 00:27:48,480 "Okay, I'm happy with the code." Um, and 643 00:27:48,480 --> 00:27:51,840 so as a way of being able to 644 00:27:51,840 --> 00:27:53,679 think about, okay, what is it we're 645 00:27:53,679 --> 00:27:55,760 creating, 646 00:27:55,760 --> 00:27:57,919 does it actually here's a way of 647 00:27:57,919 --> 00:28:01,840 creating a a quick 648 00:28:01,840 --> 00:28:04,880 Yeah, I'll let it work. 649 00:28:04,880 --> 00:28:08,640 So, let's just I'll come back to that. 650 00:28:08,640 --> 00:28:10,480 So, just wrapping up the talk cuz I've 651 00:28:10,480 --> 00:28:12,960 only got a minute left. One of the 652 00:28:12,960 --> 00:28:14,559 things I wanted to get at here is that 653 00:28:14,559 --> 00:28:18,559 LLMs create code that or create generate 654 00:28:18,559 --> 00:28:21,360 content that's probably correct but not 655 00:28:21,360 --> 00:28:24,159 absolutely correct. So you as a person 656 00:28:24,159 --> 00:28:28,399 need to approach it with um some 657 00:28:28,399 --> 00:28:30,080 questions in mind. Think about okay how 658 00:28:30,080 --> 00:28:32,080 can I prove out what it is generated? 659 00:28:32,080 --> 00:28:34,159 Figure out if it's correct. What would 660 00:28:34,159 --> 00:28:35,840 you do if it is correct or if it isn't 661 00:28:35,840 --> 00:28:38,159 correct? I you need to take 662 00:28:38,159 --> 00:28:40,399 responsibility and ownership of what 663 00:28:40,399 --> 00:28:42,880 you're creating and then poke it and 664 00:28:42,880 --> 00:28:44,799 make sure it's correct. So that's why 665 00:28:44,799 --> 00:28:46,799 I'm getting at locus of control. Don't 666 00:28:46,799 --> 00:28:48,399 treat it as a god. Treat it as a 667 00:28:48,399 --> 00:28:51,840 sparring partner, a sort of potentially 668 00:28:51,840 --> 00:28:55,520 unreliable antagonist. And just 669 00:28:55,520 --> 00:28:58,240 look for it to for inspiration, not for 670 00:28:58,240 --> 00:29:01,279 commandments. So I suppose what I'm 671 00:29:01,279 --> 00:29:03,279 getting at is it generates stuff that's 672 00:29:03,279 --> 00:29:05,440 probably correct. we want to get to 673 00:29:05,440 --> 00:29:07,679 actually correct. We are the people that 674 00:29:07,679 --> 00:29:09,200 figure out how to bridge those two 675 00:29:09,200 --> 00:29:10,720 domains. 676 00:29:10,720 --> 00:29:13,840 Um, I have a medium. I am documenting 677 00:29:13,840 --> 00:29:15,360 what I'm learning there. I currently 678 00:29:15,360 --> 00:29:18,399 have a blog post up there about the last 679 00:29:18,399 --> 00:29:20,240 demo. I'm about to write a blog post 680 00:29:20,240 --> 00:29:22,080 about the one before that. Yes, I'm 681 00:29:22,080 --> 00:29:24,240 doing them back to front. Don't ask. I 682 00:29:24,240 --> 00:29:26,080 will have them on dev.2 as soon as I 683 00:29:26,080 --> 00:29:27,520 figure out where they hit the post 684 00:29:27,520 --> 00:29:29,679 button. And with that, I thank you all 685 00:29:29,679 --> 00:29:33,160 very much. [applause]