Submind YouTube summaries
Thumbnail for Beyond Chatbots: Creating Smarter, Personalized Experiences in Drupal with AG-UI

Beyond Chatbots: Creating Smarter, Personalized Experiences in Drupal with AG-UI

Watch on YouTube

Video summary

The presentation "Beyond Chatbots" introduces a transformative approach to Drupal development using AG-UI and advanced AI strategies led by ImageX, moving beyond simple chat interfaces to create smarter, personalized user experiences. This evolution is driven by the shift from legacy lexical search methods that rely on keyword matching to semantic search powered by vector embeddings, which understand concepts, synonyms, and user intent rather than just exact text matches. By utilizing an open-source standard for agent-user communication, AG-UI enables bi-directional streaming through Server-Sent Events, dynamic generative UI elements like adaptive cards, and seamless model swapping without code changes, effectively overcoming PHP limitations with a specialized Go-based module to handle high-concurrency connections efficiently. A live demonstration of the University of Waterloo digital admissions advisor illustrates these capabilities in action, showcasing how the system maintains contextual conversations by remembering session history and user profiles while delivering multimodal responses that integrate real-time weather data, campus maps, and media galleries directly from Drupal storage. The platform dynamically selects appropriate interface components based on query intent, such as displaying tables for cost information or cards for program details, all within a secure framework that supports human-in-the-loop interactions to allow interruptions and enforce safety guardrails when accessing private user data like email addresses through OpenID authentication. Security and operational efficiency are central to this architecture, addressing risks such as denial-of-service attacks and high token costs by implementing fail-safes, IP detection, traffic monitoring, and Web Application Firewalls alongside configurable guardrails that prevent sensitive data exposure or irrelevant responses. The solution is designed as a low-impact standalone application that layers over existing Drupal infrastructure without requiring full re-platforming, utilizing caching mechanisms to eliminate redundant token usage for repeated questions while integrating with distributed data environments via APIs and custom blocks using the Agno framework. Ultimately, ImageX emphasizes that embedding content costs are relatively inexpensive compared to traditional LLM queries, making this approach economically viable even as teams consider migrating toward pure PHP implementations or hybrid search models combining keyword and semantic techniques through reciprocal rank fusion. By abstracting dependencies on specific languages like Python and enforcing strict policies against raw generated code in open-source projects, the strategy ensures long-term sustainability and flexibility for organizations to orchestrate complex tasks across various tools without rewriting their entire ecosystem, proving that Drupal can evolve into a robust platform capable of delivering sophisticated AI-driven experiences securely and cost-effectively.
Read the full video transcript
Okay. Welcome. Can everyone hear me okay? Excellent. So, welcome to our session on beyond chatbots with HG UI. First, a special thanks to everyone on the ImageX team that helped make the demo possible. We couldn't bring everyone, so we have uh the honor of showcasing their hard work today for you. I'm John Tran. I'm the CTO of ImageX. And I've been delivering web applications and services for over 25 years in the industry, and the last eight of those have been ImageX. Uh this is Aaron Christian, one of our architects. I'll let him introduce himself. Yeah. Hey, everybody. Uh my name is Aaron Christian. Uh I'm a front-end architect at ImageX. I've been working uh in the Drupal space for about 18 years. I've been with uh ImageX for about eight. Um and I'm super passionate about interaction design, uh animation, things like that. Uh yeah. So, this is the team that's kind of behind the demo today that we're going to show you guys. Uh we'll get into that. Can you click on that? There we go. Um so, first and foremost, uh quickly uh overview the agenda here. So, a little bit about ImageX, and then our uh AI innovation uh roadmap, a little bit about semantic search, uh some details on HG UI itself, and then we have a demo for you, and then uh hopefully some time for Q&A at the end. So, about ImageX. Uh we were founded in 2001, so we're also celebrating our 25th anniversary this year. Yeah. Uh and about 20 of those years have been specialized on Drupal, so a lot of uh history with Drupal. At Axelerant, we're about 100 people worldwide headquartered in Vancouver, Canada with hubs all across North America, Europe, and Latin America. And about 45 or half of the team are developers. Um but so that's my team, but even with our global hubs, we've got 25 hours of a day of coverage 6 days a week of development going on, so it's pretty pretty cool. Um our verticals are non-for-profits, commercial, and education. And we're a full-service agency, so we provide strategy and consulting, design, and UX. Um as well as development and integration, of course, and managed services and support for our long-term clients that have that have been with us over 10 years. So, next let's talk about Drupal and AI and Axelerant specifically our our road map for for AI. So, a little bit of background, about a year ago our CEO, Glen Hilton, who's in the back there, he and I traveled to Europe for a Drupal conference and an impromptu AI summit kind of formed involving some of the key players in the Drupal space. Dries Buytaert himself was there. Um and basically that ended up launching the Drupal AI initiative and with Glen joining the board of the Drupal Association. So, us and several other industry leaders committed at that conference to driving AI adoption within Drupal. And then fast forward a year, just 2 weeks ago version 1.3 of the Drupal AI suite of modules was released. Um and we can kind of broadly categorize the their strategy into three uh three streams here, so content generation, content governance, and content automation. Um but Adobe Project basically tried to extend that strategy uh beyond the the major experience and we're trying to enable end user uh experiences powered by AI. So, our focus is on three areas, uh internal development optimization tools that might give users to deliver these experiences. And then the two streams of experiences that we've been focused on are implementing semantic search, which we feel feel is the next generation and the natural evolution of search technology. And the second is something we call the content concierge. So, that's basically an objective digital advisor that guides users through the content consumption experience. Um so, we'll we'll show you that uh working today and it'll make more sense, but over to Aaron first to talk a little bit about semantic search. Okay. Um yeah, so semantic search um let's take a look at what it actually is. So, semantic search uh basically passes your raw query data when you type in your search um through these three lenses. So, the first one being intent, what does that user actually want? The next one being some context, so maybe it's uh uh a past interaction with the the system or their device, where they're located. And then the last one being meaning, so it really ties in um or connects intent with context to try to figure out what the the user's actually um asking about. Okay. Uh so, what do we know about search? Um this is where we kind of expose the problem. So, we We that uh majority of the users are actually bypassing your really cool design mega menus, probably that nice little hero banner that you guys spent a lot of time designing. Uh and they're going straight to that search icon. Uh the problem is that over 2/3 of those people aren't finding the results that they're actually looking for. They're getting frustrated and they're actually dropping off you guys' ecosystem entirely. So, we know that's obviously bad um and it I mean increases your your guys' bounce rates. Uh so, you guys are going to kind of uh passing those users off to your competitors. Uh so, if you can fix search, you can keep your users engaged. Uh and so, we'll take a little a little look at what that looks like and where uh legacy search fails. So, uh legacy search or um you guys might have heard of it as uh lexical search as well. Keyword searching, it's really fast. Um it doesn't require a lot of um uh CPUs, so it's low latency. Uh it's really good for deterministic outcomes. So, things like part numbers, CPC codes, error codes, program IDs. Uh anything that has like a uh actual value that you're you're looking for. So, it does have two pretty big blind spots though. Uh the first one is that it has zero conceptual understanding of any of the other um data that you pass to it. So, for example, if I'm searching for com- comfortable running shoes for bad knees, it's going to look at um comf- or it's going to look at the running shoes, but it's not going to take into context that you are actually meaning that you are looking for a comfy shoe. Maybe it's got some extra padding cuz you got bad knees. Um it also misses things like synonyms. So, if you had like a really cool designed page that was all about athletic footwear, somebody searching for running shoes, they might completely miss that. Semantic search, on the other hand, this is AI search, AI-powered search. Uh it maps words with similar meanings. Uh so, it would put pick up those uh intents that are passed through like the the medical or the cushioning intent. Uh but, it kind of has a very blind spot. So, it's not great at looking at program IDs or UPC codes. It tries to be creative and they might give you a list of, you know, similar products. Okay, so we're looking at probably a paradigm shift here, um but it's pretty important to understand how both of these uh types of search work. Uh so, the keyword search, uh it works off of an inverted index. You can think of that as like a textbook, one of those old dusty textbooks that you guys probably haven't pulled out in a while. Uh so, it doesn't search when you type in your search term, it doesn't search through every page on your site line by line. It flips to the back of the index, finds where that that word was, and then it relates back to the page. Uh so, this uses an algorithm that's pretty much uh the gold standard. It's called BM25, stands for best match 25. Um it's based off of term fre- frequency and term saturation um or rarity. Uh and so, who remembers the olden days of keyword stuffing? Yeah? You know, you hit that page and scroll to the bottom, you got all this white space, and what is that? You highlight it, and you're like, I got product product uh keyword tags in here. So, um they introduced the uh parameter called the K1 parameter. Uh It basically stops a lot of that. Creates like an async auto curve. Um essentially, so uh the first time you um uh mention, say, nursing on your page, you get a big boost. The third, fourth, fifth time that you get that that curve that just levels out. Um and then there's also another one called the B parameter, which takes into consideration the document length. So, uh sometimes, well, longer documents are obviously going to have that keyword in it a lot more than another document, but it doesn't necessarily mean that it's more important. Uh so, that's what that parameter tries to take into consideration. Uh keyword search, it does a lot of things that you guys are probably familiar with if you've ever um adjusted in your search settings in the back of the Drupal. Things like keyword stemming, does uh tokenization, uh stop word removal, removing all that the common uh uh um joining words like that. Um and then whoop. I'm not sure what that means. Uh semantic search works off of uh an embedding index. So, it tries to use natural language processing. Um and so, one of the ways that we can use an embedding index is through vector embeddings. So, a vector embedding might be text, audio, uh multimedia, any type. Uh and so, I'll try to explain this um uh for you guys or in an imaginary way. So, think about it like a digital landscape or a map. Um and so, something like beer would sit next to survey stuff. Okay? They don't have the same language, but they're mapped by meaning. Okay? And then from there, you might have a a stemming. That might be Budweiser or Modelo or something like that. So, you can kind of see where it's um it works like a daisy chain. Um you guys heard of the uh the game six degrees of Kevin Bacon? Yeah? So, it's basically uh if you haven't, it's uh you can basically link any actor to Kevin Bacon in six steps or less, uh where each step is a shared movie. So, the lower the score, the higher the rank. Uh and so, the goal here uh of semantic search, the broader goal, is uh just basically the conceptual understanding of human language. Uh so, we know that expectations are changing. Back to John. Thanks, Aaron. So, uh what exactly do we mean by smarter personalized experiences? Well, basically, uh while we've been rolling out semantic search over the last year, our version our vision was to extend that uh concept of semantic search to the entire site experience. So, uh along the way, we wanted some funding from the Canadian government to help us build out that vision. So, what we did was we partnered with the University of Waterloo to uh develop uh first iteration of this concept. So, what exactly did we build? So, in this case, we built uh an AI-powered university admissions advisor. Oops, sorry. Um so, it starts off by looking at a typical semantics looking like a typical semantic search experience, but it dynamically responds with multimodal media content um in a conversational flow. So, you kind of have to see it to to really understand how it works, but we'll show you in a in a while here. So, first a little bit about under covers, kind of how this stuff technology works. It's obviously a very Drupal-centric stack. Uh Drupal is the foundation, and we leverage everything it has to offer, including the Drupal AI modules. And then, we also contributed a new AGUI module to the Drupal AI initiative. Um And finally, we integrate with a series of enterprise uh services as needed, vector databases, uh various LLM models, ejective frameworks, third-party data. Uh so, it's a true enterprise scale uh framework. So, what exactly is AGUI? Okay, so it stands for agent user interaction protocol. So, it's a part of a suite of protocols that are the the emerging standard for ejective communications. So, I'm sure you've heard a lot about MCP um in your research and then here at the conference this week, but MCP stands for model context protocol, and in essence, it's a communications protocol between agents and regular software tools, okay? Uh so, that's straightforward. A2A is similar, but it's for agent-to-agent communication. And then, finally, AGUI is the protocol for communication between agents and the user interface. So, with this um suite of protocols, basically that defines the kind of state of the art in uh ejective communication. It's all really just just JSON um specifications on how uh these things can talk to each other. So, with our emphasis on building AI-enabled user experiences, uh AGUI becomes critical, obviously. So, that's why we have um invested a lot into it. So, what are the design principles at a high level for AGUI is basically bi-directional communication between agents and the user interface. It defines a series of standard events, 60 about 16 of them by default and you can extend that with your own events as well. It's transport agnostic so it supports streaming communication using server sent events, webhooks, web sockets, or even polling. So those of you that are deep into the Drupal stack you know PHP has some issues with streaming. It doesn't support SSE out of the box so we've also have a sister module that kind of helps with that in the Drupal stack. It's also agent agnostic AGUI. So what what that means is you can swap out any LLM models, you know, instantly with like one line of code and you can also swap out any agentic framework. So all the major ones, LangGraph, Co AI, Agno which used to be called by data, Microsoft, Google, and now Drupal all support AGUI so they basically speak the same language between the agent and the front end. So you can almost instantly with very little effort swap agentic frameworks which is really powerful. So now I'll give you over back to Aaron for a little bit more detail on how AGUI interacts with the Drupal front end. Thanks, John. Okay, yeah. So we want to stop forcing users to filter and start generating answers. And that's the reason why we got into the AI. Okay, so this is pretty much the AGUI module kind of um at a a layering level. Um, but we can get into kind of the the how, what, and why. So, why did we need a Drupal module? Well, it's um basically the bridge between Drupal and the human interacting with AI. Um, we ported in the the AGUI um uh TypeScript library into to Drupal. Um, and we chose AGUI because it is open source. Um, it's built on TypeScript like I said, has strict uh type checking. Um, and it's also built uh with Python on the back end for the HMTX side. Uh, so to touch on a little a little more about what John was talking about with some of the bottlenecks in Drupal with um PHP. Uh, so right now um when you send a uh a message through uh uh a system like a a normal chat system, goes through this HTTP request and response method. Um where we want to go is through the SSE events. Those those uh server-side events. So, think about it as like uh uh a walkie-talkie or or maybe like a voicemail type. So, you pick up the phone, you call somebody, they don't pick up. Um, you have to leave a message and then you hang up. Okay? The agent then picks up the phone, listens to the voicemail, has returned your message. Then they hang up. That process repeats. We want to go to into SSE. This is that open line uh communication. So, both you and your friend are both on the phone at the same time. You can stop, interrupt them, change the direction of the conversation, steer them in a different different way. So, that's uh SSE. Um, and to bring SSE into Drupal, we built this uh uh sister module uh that AGUI Mercur is it connects with the the Drupal Mercur module. Um and that's the one that handles the uh SSE protocol. So, um why it's important, um think about this uh in the traditional sense where um say 50 users came to your site and your server only had uh 50 PHP workers assigned to it, that 51st person that starts to interact with your chat, they start to fill up this PHP worker queue. Uh and so, if anybody knows how that works, if you get too many people in the a queue, uh things start to exhaust. You might your your server will probably crash and you're looking at a self-inflicted uh DDoS attack. So, that's not fun. Um how do we do it now with Drupal? We do the polling method, which is basically just a a fake a fake SSE um implementation. It's an AJAX polling request. Uh think about it as like the kid in the back of the car, are we there yet? Are we there yet? Um so, it's it basically it gets stuck in this like while true loop essentially. Um and so, uh it's it it works, but it's slow. Uh and it's again, you're you're running up against uh uh memory exhaustion. Uh so, Mercur is actually built on Go, um which is super fast. Um Docker, Kubernetes, they're all built on Go as well. Um and we chose it because of its concurrency. It can handle thousands of those chat threads. So, now we're not 50 PHP workers, you're looking at thousands of workers um who are able to to handle those um connections relatively inexpensively. Uh, okay. So, let's look at some of the features. We built it, um, around SDC. I I'd be remiss if I didn't, uh, mention Brian Sharp here. Uh, if you haven't seen him in like the Drupal Auto or forums or anything like that, he's, um, he's part of the Drupal AI uh, initiative and kind of heading things, um, for us. So, uh, he's, uh, he was responsible for a lot of the original porting, uh, and then the team kind of gathered around that. Uh, so, uh, one of the cool things that is, uh, AGUI supports the streaming chat integration, uh, human in the loop transactions, so that's, um, like the ability for the agent to ask you for more information and then you can provide it that extra context or or intent or whatever. Um, generative UI, so this could be things like presenting the user a commerce product when they start to search and it's in like a fancy design, a card that that fits really nicely with your your design. Uh, it could be like a program card or or a weather card or something like that. Um, it also has built-in JWT support, so I'll chase some web tokens. Um, and not just access like this digital VIP wrist band. It's, uh, basically says like, the agent says, "Who are you?" and you have to present like your passport and that verifies them and then you're able to continue the conversation or I won't provide you data back. Uh, and then it has custom tool integration, um, so anybody can create their own module, hook into the system. We have like a public, um, uh, event system inside of, uh, AGUI that you can hook into. Uh, so, when a a message starts or something like that, you could you could, um, provide an extra detail to the UI. Uh, and in the the end there's, uh, a demo page at admin/agui/demo. And that will convert Drupal's deep chat to be AGUI compatible. Okay. Well, we are an open source community, so I think it's probably a good time to talk about how to contribute back. And as ImageX, we have quite a few people who are involved in the community. Last year, we had a contribution initiative that each of our developers had to get a core credit. So, we attained that. Um we're looking for more AI stuff this year. But, you can see that the we've completed a few things from this is like the porting from AGUI into Drupal. So, these are all like Drupal specific items that have already been built into Drupal. Our road map is items that AGUI has created, we just haven't ported into Drupal yet. So, those are awesome. If anybody wants to have a look at those, there's lots of documentation around AGUI on how these things work. So, one of them would be like step tracking. That's like tells us what step the user's kind of on as they're going through the journey. Right now, we have like this thinking bubble and you kind of see it. It's essentially when you're like interacting with a cloud or something like that and you it starts to to really give you those reasoning or those those tracking um steps. So, the other one is is reasoning. There's activity events which streams live agent progress between the messages. There's the interruption life cycle which evolves human in the loop into like pause, edit, and retry. And then there's messages. So, we've all dragged an image or some sort of document into chat GPT or another system and it's enabled to read that. So, that's kind of the next level of AGUI inside of Drupal being able to drag and drop things. Okay. Thanks, Aaron. So, demo time. Let's finish this up and show you guys how it works. Okay, so this is the Waterloo digital admissions advisor. So, looks very typical for like an agentic user interface. So, we'll start off just by kind of asking it uh what it does, but why don't you log on first, Aaron? So, we've connected the system with open ID Drupal module and presented it basically a form here. Just one of the features of AGUI is it supports sessions. So, we can do uh authenticated uh interactions and then also track your history for context. So, Aaron's gone ahead and logged in. So, why don't we go ahead and ask it uh what it does. All right, yeah. So, for brevity's sake, I'm just going to copy and paste in here, but imagine I'm taking this out with lots of spelling errors. So, it's telling us what it does. It's an agentic uh admissions advisor. It's going to help us with general information and uh the walks us through the whole admissions process and answers any questions we might have. So, let's tell let's ask it uh to tell us a little bit about Waterloo here. Okay. Can you all zoom in a bit. Sure. I'm passive. Okay, so you can see it's doing a tool call right there. Um, that's basically uh AGUI talking to the agent and then the agent uh designating um a task to a tool. Yeah, at this point it's essentially a semantic search implementation, so it's uh it's reading our intent, uh feeding that in context the fact that it knows who we are and what our previous conversations might have been and then translating that to a more meaningful uh response for us. But uh next let's talk about the uh the university >> what it's known for. So we're just having a little bit of conversations with it at first, um and we'll get into some more advanced features in a second, but uh let's ask it about the campus. So again, it's just kind of remembering what we've been talking about and giving us um contextual responses and kind of building our profile around that. So it does markdown formatting and you can kind of see it starts to bold things. Um, it'll return uh this structured JSON back into a format that we can um essentially uh format into like bullet points and things like that. So now we know a little bit about uh Waterloo and the campus and uh me and Aaron are West Coast boys, so we're a little bit uh concerned about the weather. Let's ask it uh about that. Here it is pulled up there. So here's our first little um nugget here, some multi-modal response. Um, it's detected that we've talked about weather, so it makes an API call in the back end to uh tickets.weather.com. I'm not sure which API it used, but um it's getting real data live based on our prompts and creating a multi-modal response, in this case a weather widget. So, and Aaron, we're in Chicago here, so let's figure out what that is in Fahrenheit. So, it can do a little bit of math. Um and make another API call to do some conversions there. And we're actually planning to visit the campus at some point, so let's see if we can get a little bit of a layout of of the campus. You might want to zoom out. Yeah. Okay, so >> put it back to full zoom out. We're just going to zoom out so you can see a little bit more of this interesting stuff here. So, Aaron, what's going on here? Yeah, so we basically made a tool call to Google Maps API with some location data. We pulled in a canvas tool, so you can kind of see at the top there we have this new tab system, one for history, one for canvas. Canvas is like the building area, and then you can kind of toggle those to to close them or or change. So, we'll get into the history in a second, but essentially every time we do this tool call, whether it's like a um a weather card or like this product, whatever it is that you guys want to present in this generative UI, it stacks up in this history call, and then we can do things like when we come back maybe a week later and we want to you know, extend on our conversation, we can do things like tool hydration. Um so, it'll actually pull in all that data that's been saved in private kind of storage on on our side, and then it can actually build in that history so it can refresh like this exact map as well. Awesome. And so we're planning to live on campus so let's figure out where we might be able to do that. Sure. I'll just make one more note. We added some functionality around notebooks so I'll just add us and we'll show you that feature in a moment. And also we just bookmark this location for now. We'll show you why we want to do that Okay, so we just asked where we can live on campus which is probably pretty typical thing that a prospective student would come to look for when they're looking for the site. So the idea is that we don't want people out in the open site for ChatGPT and find all this information on it. Right in your guys' site and it's uh tailored for you guys' customers so it only knows about your institution or your your guys' site. So you have these guardrails in place. So this is another API call to different uh API for uh location and then we just bring that together to one experience. So once you once you find a couple of locations here for the notebook later. Yeah. So maybe I'm maybe I'm really interested in um Village One University of Waterloo. So we'll add that to our notebook. And then we're going to have to eat while we're there so let's figure out where the nearest Walmart is. So we do another API call. This one's using um directions API. And we'll see that no locations got returned, but we can maybe try it get from U W place. So, it'll give us uh another it tried to do a tool call there. Um something obviously went wrong where it didn't find any locations. So, um you can always kind of um get back into that text response um messaging. All right. Well, that's classic in live demo mode. We're working with chat or open AI, so everything's kind of unpredictable. Well, let's uh let's change tracks and see if we can get some some photos of uh campus life there. All right. So, now we've uh plugged back into Drupal and pulled out media from uh Drupal's uh media storage, and uh we've got a full image gallery right here that we can look through. Yes, that one fetched it straight from um Drupal using a view uh to output all these these um cards here. Okay, so the point of the university obviously is uh studying, so let's let's ask it about what programs are available. Okay, so you have another tool call to our program catalog. Uh it's going to pull open all the programs. Uh and so you guys can kind of set these things up like how you're going to connect this data. Um it could be from Drupal, it could be from any API really. So, we dig in to kind of structure data within Drupal, and then we can respond differently to the different content types you have, and map different tools to those content types. So, we just saw how images are mapped to the gallery, and in case, program information is mapped to a collection of filterable cards. You can do the filter. Yeah, yeah, I just popped that open. Yeah, so we have filtering and again, tagging for the notebook. And then there's another general tools we have. Maybe let's ask it about the percentage of kids that are accepted. Sometimes it takes a second. There we go. There we go. So this is kind of a I mean, it's just a little interesting module, but essentially, it's detected that it's like a highlighted statistic. So we'll have a statistic module, and then it kind of the AI actually decides what relevant icon would represent that statistic well. So just kind of add a little bit more intelligent thinking on the agent side. Next, let's look at what it's going to cost for us to go there. All right, sounds good. So just asking what it costs to get a master's degree. It's going to query to try to find out from the the vector database here what what it's going to cost. Okay, so now we've got table representation of data, which makes the most sense in this case. The agent decided to represent it as a table, and then our little front end module here allows for filtering of columns as well as uh searching go the the table as well. Okay, so yeah, there's another tool called there that would stack up in your history. Uh next, let's plan our visit here. So, we want to see what events are coming up at uh at Waterloo for orientation here. Yeah. So, again, we're pulling in some event details from the content type and we're presenting the user with uh this event cards. Yeah, so if we scroll down a little bit, maybe we find an event that we like. Uh again, this is tied back to structured content in Drupal and then that to particular tool for rendering out as kind of cards. So, let's see if we we can attend this AI uh workshop here. That looks interesting. Okay, so it's brought up a registration form for us to sign up for the event. So, uh let's uh make sure we get on the list here. Yeah, so you'll notice uh cuz I'm logged in, it's filled in my cheats, got my email address. Uh you could easily populate, you know, extra field data in in your user profile for capturing this kind of information um and then presenting it to the user, but you'll see it automatically pulls in all that data. So, this is a standard Drupal form. Um uh it's obviously rendered a little bit more interestingly and and it is at um dynamically uh selected by the uh agent uh based on our prompt. Yeah, and then you'll notice that it pulled in all the other events from our last query as well. So, if I search for, you know, events in May, I'll get different options in our swipe list here. So, Aaron will go ahead and uh register and then can you bring up the Drupal back end quickly? Yeah, sure. Let me pull it up. I'll just mention that's the Ajax form message that you get back in Drupal. So, you can actually set all that in on the web form. Okay, so Okay, so we just built like that simple page in the back end to kind of capture all this data in a a table. So, I'm just going to refresh cuz I just submitted the form there. But, you'll see yeah, we just submitted our um our form submission and went into the back end and then obviously a um email could be triggered from that. So, Hopefully, you've got the confirmation by now. Yeah, let's double check. Okay, so there you go. You can see uh it connected straight to Gmail. I have auto no responding, so I didn't uh accept it. But, um yeah, it came straight to our Gmail. Um so, you can see it's all very um uh neatly tied in with Drupal um ecosystem. Okay, so that's uh that's pretty much all the tools for now and uh you can extend the system obviously, add more tools, add uh more mappings to Drupal content, and basically build out any kind of custom experience you want. Um so, let's look quickly at some other features on the front end. We We have that history that we've been talking about. Uh so, Aaron's brought up the history here. You can see all the tool calls that have happened throughout this session. And uh you can go back and just uh revisit all the content that's uh that's stored with your user account. Um and then the reason we keep flagging stuff, we'll show you right now. There's a There's a feature called the notebook, which allows you to kind of collect content that that you found useful along your experience here. And um for those of us that uh have kids already in university, you know, whenever you talk about this stuff, you end up with with a stack of paper brochures um everywhere you go. So, uh if you We built this cool little feature in uh called the notebook, which allows you to uh download a PDF customized brochure um as part of the advising experience. So, there you see all the flagged content, uh housing, program information, whatever you want. So, we we haven't built all this stuff very very far, but essentially this will be like a full um you know, glossy brochure uh that you'll walk away with uh like a digital magazine, basically. So, that's where we're at now. Um just quickly before Q&A, we have that uh we have Stan speak quickly. Sure. So, this is another implementation of more straightforward. This is kind of like dipping your toes into the this uh digital experience, but um semantic search uh very easy to roll out. We've done this uh many times over the last year, now we have a very um um mature process for for integrating semantic search into Drupal sites. Uh this is one of our latest implementations. Um it's got some cool features. It's essentially like layering complexity on top of your search experience. So, uh Aaron's asked a question, it's answered it really nicely with uh with footnotes and references to other more traditional Drupal pages um with content. He asked follow-up, so he asked that asking about cost. Yeah, there's a little feature at the bottom there for like popular search queries. Those are they're not tied in with any system. It's just on a back end there's like a pill setting form essentially. But we we do have a feature where it will track like the most recent or so the most commonly asked kind of questions and then dynamically populate those for you. Um and if you scroll up you'll see full context history with your conversation. We also have the toggle back to traditional keyword search in case someone doesn't want to use AI search for some reason or if you run out of token budget because people are using so much of it it will toggle over back dynamically to regular search. Yeah, this is the case. This is probably as good as it gets for for Drupal. This is like a solar implementation with passive search. Um It's it's good but it's obviously got its blind spots with yeah semantic search. Yeah, and if you once you experience kind of perplexity or the Google's new AI mode kind of hard to go back to keyword search. And it's relatively easy these days to So we really think you know months or years all search will will ultimately end up being semantic. There's Just before we take a question I'll just say there's one thing. There's the hybrid approach where you get the both best of both worlds. You get keyword search as well as semantic search and it uses something called reciprocal rank fusion. And they basically takes like the the highest ranking from both comparisons and then it gives you the best um between the two. Yeah, we've done a couple of hybrid implementations as well, so we can uh we can customize this stuff as well. And the semantic search solution is actually built on the same AGUI framework that we just showed you with water wheel. So, it's a it's a nice stepping stone to that more native experience. Um and you you kind of get uh to test the the framework and and the architectural all initially that we talked about. We already have one question so I'm going to go ahead and Yeah. Okay, thanks. First of all, this is really cool. I can't wait to try it. Awesome. And then second, um one thing I'm I'm noticing every time I try something with AI, it's always using Python libraries. Mhm. Can you opine on is this a problem for the PHP community? Should we be trying to get these libraries into PHP so that we are first-class citizens? Yeah, that's a great question. Uh we we've obviously talked about it ourselves being in the Drupal shop. Um so, I'll tell you that the I've done a lot of research into this space um and the latest and greatest stuff out there is Python for the time being, but the Drupal AI initiative has made a huge step forward in the last year. Um so, our system does use uh Agno, which is a Python based framework right now, but because we implemented AGUI natively in Drupal, we can uh we can literally uh swap between uh Agno and uh Drupal AI's agent framework with literally a couple lines of code. So, uh because we started this about 6 months ago, we started building against Agno, but really uh we're actually literally working uh this week on a semantic search implementation implementation that's AGUI and 100% PHP and Drupal AI. So, it's definitely possible. We're I think we're on the forefront of it right now. But, you know, fast forward a few months, I think it's definitely possible to build this whole thing out on pure PHP. With Drupal, there is some limitations with their streaming stuff, but we also have a solution for that. It requires Sneak Peek or or some other kind of proxy solution for the streaming. But, but really that's the only kind of core fundamental thing that probably won't ever get fixed in PHP, but there is like alternatives like proxy that will solve that long term. So. Yeah. Does that answer your question? Well, yes, specifically for your project, I'm I'm concerned about the larger ecosystem. Yeah, I mean, it's uh I think they've got a head start, but like a lot of it there's a lot of momentum towards JavaScript as well. And then PHP will just feel a little bit outdated. So, I think we're we're pretty close to catching up, to be honest. There's not a lot uh left that isn't possible. Um But, yeah. Yeah, I was just going to say, I think like the the reason why um like behind the the Python is because a lot of these are built in Python. So, I don't know if you as soon as you start kind of doing something in a certain technology like PHP, you might kind of pigeonhole yourself into only being able to to use um that method. So, if you wanted to switch out your back end um that used Python or something like that, then um you might have a little bit more of a difficult time. I would add that like as uh enterprise specialists, that we can't really limit ourselves to one technology. Like there we walk into organizations and we're literally integrating with dozens of subsystems Uh some of them are on Microsoft, some of them are on Python, some of them are on Go. Uh so, the the key is to is integration. So, because everything is uh has essentially just based on APIs, uh you can build the uh the web framework on what works best for us, which I believe is Drupal. Um it's an end-to-end just integrate with the the subsystems through these APIs cuz there's no need to rewrite the the whole internet in PHP. Um just integrate with with what's in there and and let people do what they do best. That's our approach. Yeah. How do you know it's working? And I mean that from a consumer perspective. In analytics lines, how do you know it's successful? And from an audit trail perspective, how do you know it's not breaking through the the guardrails that you've set up? Yeah, great question. Um I mean, a lot of this is leading edge, so there's there's uh it's a bit of an art, but there's uh Richard, one of our guys, He's in here, too. Yeah, he's here. Okay. Well, he's an expert in uh in AVO. So, uh he could track kind of success from uh musical like from a traditional analytics perspective. And then a lot of these systems have backends that allow you to track um all the responses coming in. It's basically analytics from the AVO perspective. So, uh I'm not an expert in in analyzing that data, but the the data is there. So, our job is kind of make sure that we're tracking all that that data accurately and then um you know, AVO is pretty out. So, uh it's we're all kind of learning together at this point. And a lot of this is uh an exercise in kind of trying to be on the leading edge right now. Um you know, nobody wants to get left behind and I I was a I graduated university right when the uh dot-com boom uh hit in 98. Aging myself here, but uh this feels a lot like that, but I never thought in my entire life that we would go through a cycle like that again. Uh and we're doing that right now and it's like literally multiple times faster than the emergence of the internet, which is just insane. Like I can't I spend all my spare time researching this stuff and I can barely keep up to be honest. Like so um yeah, I still want to not get left behind. Uh yeah. So, what's the average cost to implement this? Yeah, another good question. So, uh it's complicated. So, first of the let's talk about the LLMs first, right? So, when you do semantic search or or or just more advanced um implementation, the first thing you need to do is get your Drupal data um encoded as vectors. So, what you need is an embedding model, which is a specialized model from the LLMs to basically uh parse all your traditional content, whether it's a PDF or databases or or images, and then it transforms it into this long list of numbers called vectors and it stores that in a vector database. Typically a Postgres database. So, those embedding models charge you you're probably familiar how like you're charged by the token when you use an LLM. So, the good news is embedding your content is relatively cheap. It's like orders of about 10 times cheaper than your traditional uh uh querying cost per token. And you only have to do that incrementally. So, then you do that once for your content. So, obviously if you have terabytes of data, that's going to cost more than megabytes of data, but it's still going to be like dollars per month. It's quite inexpensive, but that's a cost. And that may go up with more content. Uh so, that's the first thing you pay for. Then when your when your user is query uh uh the search feature, then you get charged by token for the LM. That's why we have the hot fill over in case you you use that like a little $100 per month for your search. Um uh for your search budget, then once you run out of tokens, you got to either uh refill the the tank or um shut it off and switch back to traditional search. So, there's that incremental search uh cost, but it's to be honest, it's not much different than using solar or Algolia. And uh we estimate like a traditional e-commerce site is still in the maybe tens of dollars per month. Worst case, it's in the hundreds of dollars. Um you do There's a lot of bots out there, so you got to be careful that people aren't like denial of service attacking you or just accidentally pounding on your search and and cranking up your token usage. Uh so, there's fail-safes for that, but um that's kind of just the cost of being on the internet. Um and then a more fancy system like this, there may be additional API calls that you need, but that's, you know, you just have to work out that architecture and and figure out the cost model, but relatively cheap. Yeah. It can be done, especially semantic search can be done for the tens of dollars of a month, which is pretty pretty well. It's almost it's cheaper than traditional search even sometimes. So, my uh one question is if we open it up for a whole external user base we currently have, but only for internal network users, but external user base, how it will differentiate between bad actors versus real users? Uh yeah, so What was the question, John? Oh, the question is how to differentiate between uh good actors and bad actors, uh specifically internally or externally? >> Externally. Yeah, so you open this up externally, uh how do you prevent uh or how do you detect bad actors? So, it's pretty much like traditional uh security there. So, uh We're not worried about this now. You can detect IP addresses, you can detect uh spikes in traffic. Uh there's more advanced technology like Cloudflare that can implement like a WAF. Um but it's getting trickier. Um we're seeing bots getting more and more intelligent about trying to break into systems, but it's not any different than traditional security for current applications. So, it's hard to deal with that question. Yeah, so with these um uh chatbots being open source, can you speak to how ImageXOR users navigate security or compliance? Like in in uh instances that you're that you're seeing. Yeah, so a lot of it um you know, by by selecting standard-based stuff that's open source um and uh well adopted, you know, we rely on the community to to provide security oversight. Um and then we rely on the people AI um modules as much as possible, you know, things that we trust and that we will uh actively um involved with. And and then we assist a lot of testing and and kind of standard best practice standards uh on the security front, making sure that uh all our code um you know, we we have a strict policy that all developers are responsible for their own code. Um like the usual saying, we don't accept any, you know, just um raw generated uh code at all. So, You wouldn't have like PII data being in like a record database. >> We do not allow that prompt even to go through. Yeah, you would set up these guardrails for sure. I mean, just say no, like don't answer anything to do with FTI. How much of this effort involved uh significant structural changes to their website and contents um versus something they already had? Was this in conjunction with a a full re-platform or Yeah, so this is For for now, this is the prototype that we're working on with them. Um they have a whole a whole bunch of initiatives that I don't want to kind of give away their internal strategy or anything, but uh this is very low um impact, so this is uh can be a standalone uh layered-on uh application. It just is it it's all Drupal. So, um it it it integrates with all their existing uh uh data within Drupal. Uh so, everything that you saw there was being pulled from Drupal. Yeah. This is a block that we created just for ease of use, but it uh basically just fills in an SDC props and con varying stuff like that. So, all these little fields that you'll you'll see here like the ant forms and all that stuff, it's just um available as an SDC. Um Yeah, but it just sits on top. It can be a modal or like a full-screen app. So, we decided to do ours as the the full-screen app. And then here's how we're kind of embedding all those tools. So, you can see there's like the events tool, the web form tool. And these are all tools that you set up in um uh your agent framework. So, we're using Agno. Um and it's it's pretty cool. There's uh in Agno, there's a team, and then the team orchestrates down to agents, and then the agents orchestrate or designate tasks to tools. Okay? So, that's kind of how that that works. It's not like a swarm. A swarm is like everybody coming in trying to figure out what's going on. It's it's a lot more structured like that. Question. I I mean I see that all the data exists within this one beautiful site. How would this work in a more distributed environment where like every faculty has its own set of events sort of thing? Yeah, so with that the databases you can pull from any number of sources. So in the demo a lot of the content is coming through other APIs. And then we have other implementations where we're we're querying PBS just in you know any kind of storage. So we can definitely pull data from multiple sources. Just curious about the the guardrails you currently have. Like what happens if how do you determine what people are asking? Let's say they say who's the best heavy metal guitarist in America? Like or something you know something completely unrelated to this. What's in place right now to handle that? Yeah, so that's built into the the framework that we're using. You can set it up at various levels. >> Okay. Yeah, so these are the guardrails guardrails. Sorry can't help it anything to do with that. That's we'll still pass you some tokens with it. I will say though that he's so Aig knows really good at caching and stuff like that. So like if someone like this uh somebody else asks the same question it's not going to cost you anything. I think we're over time if you want to get to the keynote but come by the booth and talk to us anytime. Thank you.