0:00 Hey everyone, Marcus here. 0:02 I'm gonna talk about AI 1.5: it is released, and why we are making it leaner. 0:08 I will say there will be a lot of changes going on now, and I do not have time to produce these videos. 0:15 So for actual tutorial screencasts, I'm gonna create another channel where I will have AI-produced videos. 0:23 Also, full disclosure, everything you see here has actually been created by AI. 0:28 It's still my voice. I'm not using ElevenLabs for this. 0:32 But this is just so you're aware of what you're gonna see. 0:37 So let's start with the big picture. 0:41 With AI 1.5, we are making the core of Drupal AI leaner. 0:46 The AI module is becoming the foundation: the provider layer, the abstractions, and the tools that you need to build and debug, but nothing else. 0:56 Features that sit on top of that foundation are moving out into their own projects, where they can grow at their own pace. 1:06 Outside of the deprecations we did in 1.4, there are two newly deprecated modules, AI CKEditor and AI Search. 1:14 They still ship in 1.5. They still work as they did before, so nothing breaks. 1:19 There's no white screen of death, but they will be removed in 1.6. 1:24 If you use either of them, just install the standalone project via Composer and run the update command. 1:30 I will make it clear as well now that any features that get added only get added in the standalone project. 1:38 They do not get added in the AI core module's submodule versions. 1:43 They will only be getting security updates. 1:47 So there are five other submodules that already made the move in 1.5: AI Content Suggestions, AI Logging, AI Translate, AI Validations and Field Widget Actions. 1:57 They are completely out now, so they are inside the composer.json. It's gonna pull them in. 2:03 And if you're utilizing them, just run drush updatedb, and this is gonna take care of the rest. 2:10 So this means that they become hidden stubs now in the AI module and can't be enabled; you have to get the standalone project. 2:17 So why are we doing that? 2:19 If you go back to where it all started, when we released the AI module in 2024, most people might have seen a chatbot. 2:27 The biggest challenge for us was not the code, it was imagination. 2:31 Very few had thought about how you can actually use AI inside a CMS. 2:38 And we needed to show the vastness of what was possible, at the same time as we had a unified provider layer that anyone could extend. 2:49 So we bundled a lot. You just needed to get the AI module and you got a lot of features. 2:55 Some of that was probably premature, which we have seen with AI Logging, for instance. 3:00 It's moving out, and we use AI Observability now, which follows a lot of standards. 3:06 But every submodule was like a demo, so people could understand that this is something they can utilize. 3:15 And looking back, what AI could do in 2024 was a small drop of what it can do today. 3:21 Back then, it was taking unstructured things and making them structured, writing workflows around it. 3:27 And we thought AI was moving fast back then. 3:30 It is moving at a crazy speed now. 3:34 And this means that we have to make sure that the AI module stays lean, so we can move as fast. 3:43 So we're moving out features for three reasons. 3:46 The first reason is choice. 3:47 For many of these features there are now other contrib modules, sometimes even better ones, sometimes with a different feature set. 3:55 You can solve things in many ways, and one of those ways might fit you better. 4:00 And the problem is, if the AI module ships its own version of everything, it kind of picks a winner. 4:07 And we don't want to dictate what you choose, and we don't want to stop anyone from innovating, feeling like: okay, the AI module has this, so why would I do this? 4:18 So moving features into their own projects puts them on the same footing as everyone else in contrib. 4:25 The second reason is maintainership, and mainly our maintainership. This is egoistic. 4:31 AI moves incredibly fast. New model capabilities show up every few weeks. 4:36 With a smaller core, we can move the base offering at the speed that AI is moving, that the rest of the world is moving. 4:44 And contrib modules can come along at their own pace, with their own maintainers and their own release cycles, independent of us. 4:52 That makes the whole ecosystem better, I think, and it makes it a lot easier for us to maintain. 5:00 The third point is what this means in practice. 5:03 The AI module keeps the things every AI site needs. 5:07 So development tools like the API Explorer, debugging, observability. 5:13 It's also gonna ship with some frameworks that other modules build on, like the automators, for instance. 5:20 In 2.0 we will probably pull in agents as well, but everything else should live in contrib. 5:27 So let's talk about what is new. 5:30 I will say this is a process that is actually gonna continue in 1.6 and 1.7. 5:35 It adopts a lot of what Symfony AI does, so that move will be simpler later. 5:41 So the idea is basically that you have layers for chatting, the most important being the chat processor, where anyone can hook in. 5:49 We're adding chat memory as well, which keeps track of the conversation. 5:54 And the bottom then has the providers and the models. 5:58 So this is basically what it unlocks. 6:00 On one hand, you can create chatbots that can look a multitude of ways. 6:07 You can even see... This is actually AI that suggests a voice assistant, but you could create a voice assistant if you want to. 6:16 The problem is that our chatbot, which has been highly coupled up until now, is kind of outdated. 6:22 It was something that was modern two years ago. 6:26 On the other hand, you have the actual processors, and this can be any layer that can take a chat input and provide a chat output. 6:35 So this means that in 2.0, we might actually move away from AI Assistants and just add AI Agents there. 6:44 It also means that if you need a more complex version of agents, you can swap the agents for FlowDrop. This is already possible. 6:53 Chatbots remembering the chat history is something we already had. But once again, this was highly coupled. 7:00 We decouple it now into its own interface, and this follows Symfony AI's idea of how to do this. 7:06 This means that you can pick whatever way you want to store it. 7:10 If you want to store it in the private tempstore, that's possible. 7:14 If you want to store it in Cloudflare, that's possible. We just have an interface for it. 7:21 And then a few smaller wins. 7:24 You can set the message shown while an agent hands off to a sub-agent. 7:29 There are agent-backed assistants now that get the same page context as classic assistants, and HTML is preserved in the streamed output. 7:41 So next up is guardrails. 7:43 1.5 brings the first actual streaming guardrails. This is actually quite uncommon in frameworks. 7:49 What this does is that it can look at the text while it's being written out, look for patterns, and actually make sure that it doesn't get written out while it's streaming. 8:00 So you do not have to wait to apply the guardrail until the full text is there. 8:08 There are two more guardrail improvements. 8:11 The moderation guardrail exists now. It uses the provider's moderation endpoints instead of classification prompts, which is cheaper and faster. 8:22 And if no provider is available, it fails closed, so it's safe by default. 8:28 The restricted topic guardrail gets a semantic mode. 8:32 So bananas, banana, banana fruit all match banana, for instance. This is pretty cool. 8:39 It's part of the newest version of Field Widget Actions. 8:43 Automators can now be editorial assistants. 8:46 This means that it's not just one shot, where you click one button and you get one result. 8:51 Instead, it can open a chatbot, for instance, where it gives a suggestion and you can refine it. 8:58 So you actually write what you want it to do better. 9:01 You can run full automator chains straight from the edit form using Field Widget Actions, meaning you can have seven automators linked together, but you only care about the input and the output in the end, and that's what you're saving. 9:14 Text automators can describe images embedded in rich text and use that as context, to actually look at images inside CKEditor. 9:23 And there is now an agent skill and tools, so agents like Claude Code can set up the automators for you. 9:31 So now for the bulk. Embeddings can be sent in batches. 9:35 Instead of one request per text, many texts can go to the provider in just one call. 9:41 And for large sites with a lot of content, this means that the indexing just goes a lot faster. 9:49 For providers that cannot batch yet, that's fine. There is a fallback; they just work like they have always worked. 9:57 In 1.4 we added the rerank operation type. 10:01 Now we have a plugin for Search API that just gets enabled. 10:05 If you enable it in Search API, you can take search results, no matter if they come from Solr or vector databases or whatever, and rerank them. 10:14 And there's also a new operation type we added, extractive question answering, which returns the exact answer span from your text together with a score. 10:24 Again, starting to adapt to Symfony AI: for developers, every request now carries a freeform metadata bag through the pre-generate, post-generate and streaming events. 10:33 So the API Explorer can show you things like token usage, including reasoning and cached tokens, plus provider rate limits. 10:42 Observability follows the OpenTelemetry GenAI conventions, and there are services now for converting HTML to Markdown and back. 10:53 So upgrading is simple: run composer update drupal/ai, then drush updb. 10:59 As mentioned before, if you use AI CKEditor or AI Search, make sure to use the standalone projects now, so you are ready for 1.6. 11:08 One note: workflows-of-ai.com has been completely overhauled. 11:16 I'm writing blog posts there. 11:17 It's following what Dries spoke about in his last Driesnote, that we have to reach out more. 11:23 Just creating some YouTube videos two times per month at most is not enough, and this actually makes it easier for me to produce a lot of documentation, a lot of articles. 11:35 But I will still continue doing videos. 11:38 There will be another channel, which I will have more information about later, with completely AI-generated tutorials. 11:47 So if you're just looking for a tutorial on how to set up a module, I won't be doing this anymore. 11:52 AI is perfectly capable of creating these end to end. I will talk more about this later. 12:00 None of this would happen without the community, obviously. 12:04 There are so many people who contributed to this release with code reviews, testing, documentation and ideas. 12:10 This list is based on whoever actually wrote code, so it's not fair. There are actually a lot more people who have helped out. 12:19 So to every one of you, thank you. 12:22 I will also mention a healthy sign of this release: as far as I know, I'm not the one who contributed the most code. 12:31 That's a very good sign. 12:34 So thank you for watching. 12:38 See you in the next release.