Video: Build, Publish, and Power Up Agents in Aura with Estelle Scifo & Jon Besga | Duration: 7244s | Summary: Build, Publish, and Power Up Agents in Aura with Estelle Scifo & Jon Besga | Chapters: Welcome to Workshop (6.48s), Workshop Introduction (72.685s), Workshop Setup Instructions (168.82501s), Creating Aura Database (413.53497s), Restoring Database Backup (520.98s), Book Categories Analysis (809.60004s), Science Fiction Recommendations (922.96s), Agent Functionality Demonstration (1028.28s), Understanding Database Integration (1149.465s), Exploring Database Structure (1311.98s), Creating Cypher Queries (1517.985s), Creating an Agent (1734.615s), Parameterizing Cypher Query (1957.335s), Agent Creation Tools (2123.74s), System Overload Issues (2905.54s), Text to Cypher (3061.2551s), Troubleshooting and Resuming (3378.7751s), Creating Cypher Tools (3525.06s), Tool Usage Insights (3856.6052s), Database Query Challenges (4102.005s), Improving Agent Performance (4540.6104s), Tool Usage Considerations (4745.815s), Vector Search Implementation (4919.965s), Similarity Search Tool (5070.605s), Vector Embedding Dimensions (5420.74s), Adding Similarity Search (5563.775s), Tool Integration Process (5926.88s), Application Integration Overview (6154.06s), External Agent Configuration (6228.36s), API Usage Script (6337.555s), API Integration Overview (6548.99s), Similarity Search Explained (6701.915s), Workshop Wrap-Up (6876.3696s), Workshop Conclusion and Farewell (6926.375s)
Transcript for "Build, Publish, and Power Up Agents in Aura with Estelle Scifo & Jon Besga": Alright. Hello, everybody. Good morning, good evening, good afternoon, and welcome to our final well, I should get this this starting soon out of the way. Our final road to notes workshop. It's it's been a couple of weeks now. It's been it is the seventh of of of seven of seven workshop now that we do. It's been a fun ride. I think we started with some fundamentals workshops. We dive dove in with some more, deeper graph, knowledge graph, agents yesterday, and we did something with, hybrid retrievals. And today, we do Aura agents. Aura agents is a fairly new addition to the Neo4j Aura platform. We just, announced this earlier in October, and, we thought, okay. This is a cool new feature. This is something people should be knowing about. This is something that, we want to educate everybody how to use it, how to work with it, how to build with it. And, yeah, so that's why we added this workshop. And I'm very happy to have, my my colleagues Estelle and Jon join me today to, do this workshop together. So here they are. Hi, Estelle. How how are you doing? Hi, everyone. Hey, Leon. All good. Happy to be here and share this new this new feature that we have built during the the past few months. So, yeah, happy to help people using it. Cool. Hi, Jon. How are you doing? Likewise. Very excited to be here and present what we have been cooking for the last few months. Absolutely. I I see people from The UK, from Cameroon, Algeria, Brazil, Canada, Germany. So, again, a very, very international all over the globe kind of audience. I think that's that's great to see with these workshops, great to see at notes. Notes is is is happening in two weeks' time. So, on the day actually, to the day. So, basically, in two weeks' time, Thursday, November 6. So if you have nothing to do on the November 6, please join us. If you have something to do, you really have a good excuse not to do notes. If you have, not registered for it yet, please do so. The registration is open. We have amazing speakers from all over the world with a full twenty four hours, basically, work a working day of of content. We start with a very interesting keynote by Andrew Heng and Emil Ifram on AI and, what the current life is going with graphs and data. So I think that's gonna be very, very interesting, and then we follow through with, all all kinds of interesting sessions across, the I think it's over a 160 160 something sessions, within, the, the twenty four hours that Knowles is going. So, I'll share yes, Ben. So I'll share I'll share a link, to Knowles in chat in a in a second. I just wanted to get a couple of other things, out of the way before I hand it over to Estelle and Jon is that we're gonna record the session, but this is actually, at the moment, already recording. So, you will get a link to this video afterwards, as everybody that addresses us for it. We want to make sure that you can drive back into it and look into it if if something was a little bit too quick or something you want to look at again. So everything is is, is recorded. If you have questions, and this is a workshop, and, and and I talked to Estelle and Jon just before this, and they said they want to make it interactive. They want you to participate. They want you to be, to try things out. And if if something is unclear, if something doesn't work for you, or if something doesn't make sense, please please let us know. Ideally, you use the q and a function. On your right hand side of your of your screen, you see a little, you know, three buttons, and one says q and a. Click this button, type in your question, send it up, and we can then make sure that we see your questions and then can answer the questions either as we go or at certain points when we when we collect a little bit of, of of q and a that, we can make sure that everybody is up to speed and everybody understands what we want to do. So don't be shy. If you have such general comments or anything you'd like to, the people to know that are just watching with you, you can always use the chat. But be aware, that maybe the chat scroll sometimes a little bit by, and then we don't miss we could miss your question. That's what I'm what I'm saying. And, yeah, I think with that, I'd like to hand it over to, Estelle and Jon. I'm really I'm really looking forward to this session. As I said, we just announced this feature. So you you are one of the first people to get the proper tour of how to build, with Aura agents, how to do it professionally, by the experts who are Estelle and Jon. So I'm really, yeah, hoping, everybody has a good time. Enjoy it. If you have questions, don't, you know, don't be shy. Use the q and a button. I'll be around all the time, but I'll be down there. So, enjoy everybody, and, I see you later. Okay. Hello, everyone. Thank you for joining us. Yeah. Let's start. You should have got an email, prompting you to create a database, in Aura console. For those of you who didn't get the chance yet of create one database for free, of course, I'm gonna paste the link in the chat, and I'm gonna share my screen to guide those of you that didn't get the chance to create the database yet. Let me see. Alright. So, to create an instance with Neo4j is very easy. Every user, that is registering the in the Aura console can create the database for free. So if you go to the instances section and then you go to create instance, you have in the third column here the option to select for free. You can put whatever name that you want. In this this case, I'm gonna call it agents in Aura workshop and then hit create. And then you're gonna get access to some credentials, and it's fine. You can download them then. But, we have created, some systems where you can connect straight to the database from the browser. So in this case, even if I downloaded the file, there is no need to for me to actually get the password. Okay. While it creates, can you write in the chat if you got a database or, if you don't, please also save so so we can wait five minutes, until the database is created for you. Otherwise, if yeah. Perfect. Good to go. Good to be. Perfect. Okay. To creating yeah. Okay. Don't be shy. If you are creating a database, tell me on the chat so I I get a sense of, who is waiting. I count two of you. Three. Nice. And, of course, when the database is created, please let me know as well in the chat. Pevan, Opawan. Sorry. Yes. So if you wanna create the database, go to console.neo4g.io, and then click on create instance, and then choose the free option. Okay. In the meantime, I don't know if you are familiar with what Aura is. There has been multiple, I think, workshops in the past about Aura, but, the most basic answer is that is the cloud platform that Neo4j has so you don't have to self host Neo4j. And it comes with a lot of tools, related to the Neo4j graphical system. So one of those tools that we are gonna use in this workshop today is the agents, but I'm not gonna go into that there. Actually, my database was created already. I don't know about yours. Okay. Okay. Don't worry if the database is not created yet, because we are gonna have to do a few more things that will take some time, while I show you a demo of the agents. So once the database is created, we have prepared a dataset for you, based on a few thousand books from Amazon and reviews. And I'm gonna share with you the backup with that dataset. So there it is. Let's see. Perfect. Cool. If, the dataset is 300 megabytes, so it's slightly heavy, not super heavy as way heavier datasets. So please download it. And once it's downloaded, let's proceed to restore the backup. I know it's gonna take a bit of time to download it, so I'm gonna show you how to, restore the dataset into the database that you have created. But I'm gonna repeat this process a bit later, so you can pay attention again. But it's it's quite easy. So in in the instances list, if you go to the three dots menu, there is a section that says backup and restore. If you click on it, the third tab option is restore from backup file. If you click on browse, you will get a prompt where you can click on the backup, hit upload. Remember that all the existing data will be destroyed. But, again, if you have created the data with just for this workshop, that shouldn't be a problem. It should be empty by default. So you hit upload, and it's gonna take around one minute and a half to upload from your computer to the cloud and then another four minutes to actually set up the whole graph inside the database. So, again, if you are in this process, don't be shy sharing the chat, how are you doing. Again, this is an interactive workshop, so we wanna know where you are at every stage of the process, to make sure that we are not going too too, too fast or too slow. Nice. Someone has a very good high speed connection here because it's faster than me. But that's not very hard because I don't have fiber optics yet. Cool. Alright. So while the backup is loading, then I'm gonna show you a short demo of what we are gonna do with agents today. Again, you don't have to do anything right now apart from loading the backup. I'm gonna show you what we are gonna do. This is the demo where you just chill, relax, just make sure that you are uploading the the backup, and that's it. Yes. That's out. If you go can I click this? Let's see. Maybe not. So so if you want to show where to upload, then you go to your instance, click on the three dots, backup and restore, and then click browse and choose the backup file. The backup file that you need to download is pinned at the top of the messages in the pinned messages. Okay. Mine is still uploading. Okay. Cool. Please see how to create this type of backup when you have a okay. Estelle, can you write in the q and a and at the end of the workshop we can deal with that? No worries. Cool. Let's go. So we are gonna show you how to create an AI agent. Now, I don't know if you're aware what are AI agents, what are the difference between agents and LLMs. So the easiest way to put it is like an agent is an LLM that has access to tools. That is, I think, the most basic way to to go with it. Of course, the ecosystem of agents is new, so you may find different definitions over the Internet until we kind of settle with one. But in general, if you have an LLM, you give them access to tools. And when I say tools, things like connect to the Internet or access this database or use, a Python interpreter to run some commands or have access to my system like in the case of cloud CloudComp. So what we are gonna create here is an agent that will have several tools related to Neo4j, to the Neo4j database. So the agent will be able to write queries to to the to send queries to the database and obtain information, and they will be able to do things with that information. So let's go. I have here Gutenberg, which is connected to, my database. Not the one I created, another one that I created previously to the workshop to show you how it is. So okay. The dataset is about books. So I'm gonna show you let's say what categories do we have in what categories of books do we have in the DB. By the way, if you have thought of some question that I should ask to the agents, also go with it. Send it through a chat, and I will ask it for you until you get your own agent, and then you can ask those questions yourself. Cool. What other areas do we have of books in the DB? Let's see what we got. It's gonna take a bit of time because, of course, it's not just like an LLM. It needs to use the tools. And there you go. Oh, a most excellent query, good sir of madame. Now if you're wondering why the LLM is behaving like this, it's because I put the system prompt that, it should reply in a Victorian style of writing. Of course, we can change that at any point, and we will, to something maybe slightly funnier, you know, like pirate or anything else. But, yeah, you can hear a sort of categories that we have in the database, which is a lot. Now I wanna show you, let's see. Yeah. Let's go with, what is question to the chat. What is your favorite category when it comes to books? Let's see some, yeah, some categories. No. Not yet, Kevin. Tax law. That sounds bedtime reading. Sci fi, romance, politics. Let's see. Let's go with sci fi since I'm it's right up my alley as well. Cool. What are some top rated books in the science fiction category? See, how is the backup doing? In my case, has it already uploaded? And then you should see the database loading for about, four, five minutes. So if you can let me know how that is going, will be great. And we got in the meantime, Gothenburg replied, you seek the creme de la creme of science fiction. Sorry to tell. I didn't pronounce it right probably. The tales that have captivated many river. Foundation by Isaac Asimov. Yes. That is super nice. Knife II, but Isaac Asimov as well. Foundation, the Federation trilogy, Isaac Asimov as well Isaac Asimov as well. Okay. There is a confession I need to make, and it's because I like Isaac Asimov. I actually put a lot of books of Isaac Asimov, compared to other books. So, yeah, Isaac Asimov have great chances. Let's go with something different of categories. So you see that I'm not, you know, preparing absolutely everything within the demo. Let's let's go with romantic. What are the top rated books in the romantic category? Pocket is loaded for you. Perfect. Here, roommate. Okay. We will wait a little bit more. Perfect. Nice. Oh, that's weird, Evangeline. Try to upload again the the backup. Make sure that you're using a free database. Minus still loading. Okay. Top rated books in the romantic category, hearts at play, love in bloom. Okay. Chasing Rose, rock falls. Right. So when you are speaking with the with the agents, we have also improved the accuracy of the agents, adding a ration in loop. So if later on when you have your own agent, you will be able to see that this thought for nine seconds is also something that you can expand and see the amount of tokens that has been used and also the inner thought of the agent. So here, the agent is using a text to cipher tool to get the top rated books of the category. Let's see what books, here it used search books as well. But for example, when looking at the categories, it was using a list categories tool that we have. And then the answer is in a language called Cypher, which is the language like SQL, that we use at, with Neo4j. And then once the, agent has this answer, it goes to the LLM, and then it prompts the the answer like this. Of course, something very interesting that we have noticed is that the inner thought is also Victorian, which I find quite funny, because I thought that it was gonna only gonna be in the answers, but, no. When you put the system prompt, the agent is completely behaving like that even in his inner inner mind. Okay. Loading is done. Oh, ask this question. What is psycho history? Oof. Okay. Yep. I'm gonna try this. The exactly as Alex is saying, the content of the books is not in there, but I am as curious as you are. And this is a workshop, so I am allowed to fail. Cool. Let's see. Yes. We will talk into the in configuration. Now we are just waiting for people to load the database. Okay. Last round of questions. And, well, last round of questions, I mean. Is everyone still is anyone still loading? Is just responding, like, in another line. Still loading. Okay. By the way, psychohistory. Yes. It knows. Okay. It knows, Jeff, because the LLM also has, the training, the training information from a normal LLM. So the when it comes to using Neo4j, that is to improve the accuracy related to the data that, if you have a specific set of data inside the database, then the LLM is gonna look first for that information in the database based on the tools that it has at disposal. But then when it comes to knowing what psychohistories, the LLM that we are using, in this case, Gemini from Google, has been trained in probably the entire Internet. So it knows about his psychohistory as well. And in this case, you get the answer. Now something that you should take into account is, like, when you use an agent, the tools the tool information that they get is accurate because it's getting it from the database. So that in that reduces the number of hallucinations. But for example, when it comes to the psychohistory, there is nothing in the database related to psychohistory. So I have read the books, and I know that this is slightly accurate, but it could be completely made up. So you cannot trust it on this. And, actually, we will do an example where we know that the LLM is hallucinating. We will show it to you in a sec. So, okay, most of you are already loading, so I think we are gonna move ahead. But to this, Estelle is gonna help me to understand the schema of the instance. So, Estelle, you're gonna take over? Sure. So let's see if I can share my screen. Do you need to stop sharing, Jon, maybe? Yeah. Jon Jon need to stop sharing for Estelle to be able to. Yep. Yes. Thank you. No worries. So now you should see, yeah, my screen. So this is the same, project as Jon was using. So we have the exact same, databases here. I'm going to connect to the one that Jon has just created, going into the query. And we're just gonna see a bit more what is inside this database in order to understand how we are going to build the agent and the different, tools. So you see from here, we have, four different node labels. So author, book, category, review, which is the information we have extracted from this, Amazon review dataset. And, of course, things are, connected. Otherwise, it wouldn't be, a graph. So, let's see, for instance, starting from some random, author. I don't know. This one, maybe. If we expand, so we double click, we can see that, this author, Jon Colley, has written one single book or at least we have, one single book in, our database. And we can try and expand some information from this book. So in here, we have only the, one single review for, for this book. We can expand a bit more. Same here. And for this book, we have a bit more information. So we have, the categories. So, again, a science fiction book or a check red book for this one. So yeah. And each of these, notes, of course, has some information. So for the author, we have mainly the name as property. For the books, we have a bit more information. So we have, the title, the, okay, price, for instance, And we have also, the average rating, and we have a couple of, vectors, that you see here that we will, explain a bit more, in details, later, but that encode some information, about about this book. And finally, we also have the reviews, with also some, information. So this one is a bit weird. Yeah. We have the text of the review that was I was looking for and, some title and also some, vector that we are gonna use later on during this workshop. So in order to get started and before we create our first, agents, we will just write, a Cypher query here. And let's say that our first tool, and our first goal will be to get some, all the books written by a given author. So we can basically, achieve this with, Cypher and write something like, let's use the same example as, John Isaac Asimov. And this, author can write books or books are written by as it is encoded in our database at the moment, some, author. And we will return, the books. So if we run this query, you'll see the books written by, yeah, Isaac Asimov, all of them or all the one that are on Amazon. So it's quite a lot, if you look at them. But we can see this, and we can see the information in the table. So this is the exact textual information, if you want, that is, returned, that contains all the nodes properties. So a bunch of quite long vectors. And hidden in the middle, you will see, the text, the the title of the book, and, everything. So I can't really see the chat while I'm sharing my screen. I'm just gonna check if someone has any issue or needs more details. I can definitely try paste the cipher in the chat. Yes. Here we go. Alright. Is everyone okay with that? Awesome. You're totally I mean, while we are waiting for everyone to be on that on the same page, you can, tweak the Cypher query, try something different just to get used to the data if you're not used to the data and to Cypher yet. All good. All good. Yes. Yes. Is someone not ready yet? Write it in the chat. Otherwise, we will move forward. Three, two, one. Okay. So let's now move to the most interesting part of this workshop. Right? We are going to start and write our agents. So Can you zoom in a little bit, Estelle, so it's a bit easier for people to see? Of course. Thank you. Yes. Right. So now we are going to go into this agent's tab here and just click here. And we are going to create a new agent. Let's call it bookstore. You choose the name. Right? Name and description are totally, fine. And an agent to, I don't know, talk about books. Yeah. So name and description are, not super important unless you want to use this agent in some agent to agent configuration. But, as we will use them today, so only using the Aura interface, this is more for you to, document what the agent is doing. However, the prompt instruction, this is important because this is where you can guide, the agent, give it some instructions about how to process the the the user questions. You can set the tone, for instance, at as Jon demoed, before with his Victorian style, demo. Here, we will just say, answer the user question in simple terms. Or feel free to choose whatever description you want. Really be creative. You do not have to use the exact same description as me. If you prefer your agent to be poetic or mysterious or whatever, it's definitely your chance to to try it. Alright. So once we have this, we need to select the target instance. So we are gonna use the one we have just created. And now we just have one agent, which is, let's say, useless because we haven't added any tool yet. Is everyone fine with the agents? Cool. Yeah. You choose the instructions. Joel. Yeah. I mean, you do not have to use the exact same instruction description as me. It really doesn't matter. What matter, will be the what we say in the tool. This will be important because you might get different results if you use different definition or different Cypher query. But for now, it's really, up to you. Alright. So let's move ahead and add our first tool. So our first tool, as you can see, you can choose between different, type of tools. We are going to use the three of them today, And we will start with, the Cypher template. And we would just, give it a name. So get all books from a given author and explain what this tool is doing. So this tool is, fetching all the the books, written by an author. And what we're gonna use is the same Cypher query we had before. It's still here. That's perfect. Except that we are going to parameterize this query because the user will not always be interested in Isaac Asimov. Right? So we are going to use a parameter, author name. And we need to define the parameter here, giving it a type and explaining, what this is. So all of this, what we're doing here, adding parameters, defining the type, and a description is to help the LLM extracting the parameters from, from the questions. So I can pass this in the chat. And so, yeah, as I was saying before, this this description can be, can be important to explain again to the LLM what when it should use this tool. So well, this one is quite simple. It's almost obvious from the tool name what it's doing. But for some other tools, it might be useful to add more information to the description. For instance, we could add, I don't know, that the author also contains, I don't know, the date of birth of of the author or something like this, which sometimes is not obvious for the for the LRM. So we can save this. And directly from here, we can start asking, questions, to the agents, live. And we can, for instance, ask, which books were written by Isaac Asimov. And let the LLM think, and hopefully, we will get some, some answer. Everyone okay with the agent creation and the Cypher template tool creation? So the fact that it's taking more than one minute to answer this question is just the demo effect, I would say. So, yeah, that's a good question, Jesse. So we will, tackle a bit this, during this workshop. But, yes, there there is a part when you're building your agents that is about thinking about the type of questions that your, your user are going to ask and try to identify some common patterns. Because if you can do that, you can write those parameterized Cypher queries and that you're kind of sure that works. But there are some other other solutions we will, we will talk about that a bit later. So, no, it doesn't take that long, usually. Wait. There are too many questions in the chat. Okay. Tool unavailable. Okay. Yeah. So I guess, you can try again. There are maybe some temporary issues on some servers. Is there a system prompt that you are using with the schema? So, yeah, we internally, we use a system prompt to teach DLM, or to instruct DLM what, what we want it to do. And there is not necessarily the the database schema, here, by the way. There is no need for the schema. We just need the tools description, because the cypher the cypher queries are written inside the tool. So the the other end doesn't need the the database schema at that stage. Prompt instruction. Yeah. Sure. So, the prompt instruction are an agent level configuration. So this is where you you explain to the to the to your agent how how to behave. You can give it some precise information. I don't know. For instance, in this database, the book ID is referred to a I well, it's not ID. It has a different name. So this is something you can also explain in this prompt instruction. Like, if you want to refer to a book by ID, use this property on the book, for instance. So you can give it some information about your database, some information about how you want it to answer the question, some information about the tone, and and and all of that. So it's it's your way to kind of control how the agent will behave and the tone of the answer and, all of those, informations. I can reopen the tool so that you can see what is inside while it's still thinking. Here we go. Yeah. So this feature is still a preview. So, definitely, there can be some issues related to the loads at the moment. So how can the you the agent understand human language? That's the magic of, LLM. So, basically, that that's the real, I mean, quite amazing, actually, when you think about it. But, what what how does the agent work? It has a list of tools with this kind of information, you know, a description. Okay. What is this tool doing? And the list of parameters. And when the LLM sees the question, it also has access to this information about the tool. So it's able to say, okay. This get all books from a given author tool will be able to answer that question if I give it as parameter author name equal Isaac Asimov. And we get that information from the LLM, then we call actually, we actually run the Cypher query. We fetch the information from the database that's that's returned from the query, and then this gets, enhanced, in the in the in the context for the LLM. And so the LLM is then able to generate the final answer that we should see at some point, when it works. Right? So, debug tools, we have, that. So once you receive the answer, hopefully, we will receive it at any time soon. Okay. Let's try something different. Basically, you are able to see the chain of, of thoughts. This doesn't work either. Fantastic. Okay. Well, let's see if yeah. The demo effect. Very nice. Yeah. So what I was, saying is that once the answer is actually returned, we also return, all the different steps that the agent has taken. So the tool that were chosen, with the parameters and also the, the, answer from the tool. So the exact information that was retrieved from the database so that you can, ground the the answer to some context and check that if you want to, you can check that the information that is returned by the LLM, was not hallucinated, which is one of the big advantages of using, graphs and graph rack. Right? You can exactly see what is inside your context, and you can exactly see from where the information that the LLM is actually returning is coming from. Yeah. We have some time out, and, actually, I think we have reached that, thing here. So I'm just going to reload here and see how it goes. Cool. Nope. I'm going to reuse the pinned question in answer. Good. Yes. Save. That's looks very nice. Well, you can try. Maybe it works for you to save your tool and see your your agent, sorry, and see if we can proceed and add some other tools. So now we do not have any plan for our GDS in agents in this session, But you should have this ability to create your own tools. So if you want to give it a try, you're totally free to do it. Explore. I have to admit I'm not really a big user of Explorer, so I can't really answer your question, Evangelina. I mostly use query. So in query now, you have the Copilot as well that can generate Cypher query for you if you want. That's very convenient. Alright. So can we save that agent now? No. Interesting. Can we try to update the agents that we had? No agents. What's that? Interesting. Does that work for you, Jon, by any chance? Yeah. I'm looking at the system, and we overloaded it. So it's completely cooked. And, yes, I mean, we are still in the AP, so this is something that we were foreseeing. Yeah. I don't have an answer for this. Okay. Let's wait a few minutes. I would like to show you the agent that we created earlier, but it doesn't show up. Let's see. Okay. Anyway, while we are waiting, because we are not going to wait, looking at our screen, Jon, do you want to try and explain, the other tools or should I do it? You go ahead, please. Alright. So what we have used in here is the Cypher template tool. Right? So where you define your query, you define your parameters, and, so far so good. We'll have two other types of tools. One is the text to Cypher tool. So in the text to cipher that's related to one of the questions we had in the chat earlier, the idea is that you do not have to write the cipher yourself. We will let the LLM write the cipher query for you. So you you might say, okay. That's great. Let's only use text to Cypher for everything. The drawback of that is that we rely on even if we rely on, our fine tune's text to cipher model, it will generate invalid cipher queries, from time to time. It will also generate cipher queries which are valid but doesn't really answer the user question. So it's not something that you can use and be, 100% confident that it will return the correct answer. So that's why most of the time, we use this tool more as, let's say, a fallback that will try to answer the questions that we haven't anticipated before on our agents rather than relying on the text decipher all the times. But, it can be it can be pretty good. So, I don't know. Let's say, fallback tool. Okay. For instance. So use this tool. One other tool can help. Something like this. So in that case, if we try to ask question, I can try, but I'm not sure it will work better. For instance, what's the average rating of do we have a book here? Let me just fetch a book title. Per made of plus deal. And in that case, basically, the agent has two tools, get all books from a given author, which obviously cannot answer that question. And so it will likely try to use the text to cipher tool. So in the text to cipher tool, what is done is there is, an extra step, which is, fetching the schema from the database. So the schema is, the the existing node labels, the existing, relationships, the exist existing properties, and ask an LLM to generate a Cypher query to answer that question based on the schema. So in that case, the, Cypher query should be able to fetch all the reviews, from a given book and compute, the average using some aggregation. And and once we have this Cypher query, we proceed, I mean, in the same way as with the, Cypher template tools. So, executing the query and providing its results, to to to to to the LLM as a context. So if you want to use the, text to cipher tool, you can just add this tool in the in the agent as text to cipher type. That's the only the only thing you need to to do to add it to the to the agent. So text to cipher is a way to perform graph rank. George. Yeah. It's a way to perform graph rank where the retriever we use text to cipher in the retriever. That's not the only one, but that's, one way to to to to do graph rank. Yes. Oh, start working again. It worked. That was unexpected. Alright. So if it works, so it's here. So when you save it and when you manage to save it, you, will land on that page. You can select your tool, and you can chat with it, as we were doing in the in the previous section. Right? So what was the question? What was what is the average rating of I don't know if it's gonna work, but, yeah, this is the the interface of the agent once you are done with, the experimentation and the agent is, actually saved. So if it stops working, we'll maybe try to come back to our initial plan. We were a bit off. And if so, I will leave the floor to Jon again. Okay. So let's see. I was trying to fix the whole infra while you were speaking. So let's I think I succeeded because everything is go back to it. Let's see. Where did you You're our hero today. Yeah. Okay. Where what part should I continue? Semantic questioning? Text decipher? Which of those? We can continue with the exercise. Second? We can continue with the exercise. Oh, yeah. Absolutely. Yeah. Text decipher. Okay. Cool. Perfect. So let me share the screen, and then we can go back on track. Alright. So we are now gonna leave you, a few minutes to try the whole thing on your own. I think I have fixed all the stability issues for the time being. So let's let me share the screen. I will propose the exercise. Cool. So this is the agent that Estelle was creating, and she showed you the Cypher template tools and the Text two Cypher tools. So as you can see, again, the Cypher template tool is like if you were running the query on browser, but instead of you doing it, the agent is gonna do it for you. So what we would like you to try on your own is on your own agent, create a Cypher template tool, create a Cypher query with whatever that you can think of. Put a name, put a description to it, and chat with the agent so it calls the tool that you have, that you are using that you have created. So for example, with Gothenburg, when I was asking what categories do you have. Then Gutenberg has a list categories tool, and I will show you how do we know that he's using the tool once the retrieves. Can you also zoom a tiny bit in, Joe? That is gonna be let me see. How about this, Peter? Yep. I think that's better. Perfect. Cool. So these are all all the categories. And if you open the thought reasoning, you are gonna be able to go through the inner monologue of the agent. So you can see here that he's using this tool, and this tool is one of the tools that we have here, the list categories. Now what is the list categories doing? Listing categories in the catalog using this simple Cypher query. So we're gonna leave you five, ten minutes to do that while we answer also questions or issues that you might have. Let us know in the chat what kind of questions what kind of tools you are creating with the agent, And, also, you can share Cypher queries that you find interesting, to prompt the agents. Like, again, based on the data that we have here, let me see, There is a world of ideas. Again, what kind of authors do we have? It can be completely crazy like, let's say. We have reviews, which we haven't done anything with it yet, but you can find, like I don't know. What are some reviews that mention, romance or what are some reviews that mention politics or anything? Creativity is here the best. So, yeah, share in the chat what tools are you creating, and we can go through them together. Yes. Exactly. So, Evangeline, let me show you very quickly what is going underneath, like, the the way the tools are actually working. So for Gatember, we got the list categories tool. And this list categories has this name, the description. It doesn't have actually, let me use one with parameters, get books by author. So this Cypher query, if you go to the browser and I change author name for Sysen Liu, let's say, free body problem, then if you run this query, you are gonna get all the books in the database written by Sysen Liu, like Taraporet, this is very good, bold lining, the free body problem in different editions. So what we wanna do is we don't want to run this query manually. We want the agent to do it for us. So and also with whatever author we mentioned. So what we do is create a tool. Actually, I don't know if you still create this one on her agent. So I'm gonna do it for her. Let's see. Get all books from a given author. Yes. She did. Okay. And her query is simple than yeah. It's basically essentially the same. So, yeah, we instead of writing here, you put it as a parameter, and then you add the parameter here. So when you ask the agent, hey. Give me all the books of Shizen Leo. Then the agent will see, oh, I have this tool that allows me to get all the books written by a given author. It's in the query that the user is asking an author name, and she it will see Shizen Leo. Okay. Nice. Then it will run this query replacing author name for, get the the result, which in this case, it will be exactly the same as his. And then that will go again through the LLM through Gemini and give us the formatted answer. I hope that answered your question. I try my best. Cool. Cool. How is the tool creation on your side, Chad? No. Not necessarily. You can ask the question in a way, and you let the LLM will decide what tool is best. You don't have to prompt it. How much details should be in the description section when creating the agent? Okay. When doing the description here, that is basically for you. It's for you as an indication of what, is the agent for. But for the tool description, that matters a lot. Like, an AGL, if you mean the description it was, this actually matters. The description, in the agent is not that relevant. But for the tools, it's important because it's the tool, the tool name and tool description is what the agent is looking at to decide what to answer. In fact, let's do one thing. Okay. So I'm gonna get still agents, and I'm gonna ask how many books does Susan Liu has. And remember that the only two tools that we have is text to cipher and also the get books by author. So with this question, if if if I told you, hey. You have these two tools. And I asked you these questions. Would you use any of those tools? Probably the reason it is, like, I'm gonna use the tool to get all the books from Scifo, and then I'm gonna count them. So this is what we expect the LLM to do. Like, that it will see that it has this tool, get all the books, and then count them. Now let's see how it goes. Forty five seconds. It has a lot of works. Well, this workshop is also being very useful to know many of the things to improve. So in that sense But it's taking too long. The l l DLLM that is using, is Gemini. At the moment, it's not configurable, but, yeah, I'm not sure if we have any plans on configuring that. So for now, it's it's just the the latest version of no. It's not the latest version of Gemini. I think it's Gemini two point zero at the moment. And in terms of prompt instructions, basically, it's to define the behavior of the of the LLM. The behavior well, not the behavior. The personality in this sense. Okay. It's taking too long to answer this. So let me refresh. Let's see. Okay. Let's find an author that has way less books. Let's see if it's a matter of going too crazy with the with the books, which, again, we are still in the AP. So these are some things that we are taking note of and we are gonna fix before GA to make sure that no matter how many books, we can still pretrip all of it regardless of the size. Okay. How many books does Vincent Marshall has? Okay. So I'm gonna it it said Marshall has one tongue, get books by author, and then it got this one. Okay. But I don't want something with one because it's very easy for BLM to count one. I'm gonna risk it again with Isaac Asimov. Yeah. I know. Let's see. See, George, match reviews, were and rating rating yeah. Perfect. Yes. For example, if you create a tool, with that Cypher query of matching the reviews, with rating, then you could ask the question, for example, how many reviews do have five stars? Although in this case, because you are returning limit 25, it will return only 25. So, yeah, in that case, the parameter will be rating. So you will have to specify in the query the the rating. Okay. Books for Isaac Asimov. Oh, okay. That's good. Because it only took four seconds to get all the books. So I think that's absolutely perfect. And it says that it two it has two seven 279 books. But I can tell you that I know that Isaac Asimov has 602 books in the database. Actually, this list is 602. So this is one of the lessons that we wanna convey in this workshop when it comes to agents, and it's that you cannot you can trust the LLM in some things, but not in other. And in this case, you can trust that the information that it was retrieved from the database in terms of the books that Aitaka Asimov has is correct, but you cannot trust it to count well. Like, again, I think, there was a joke back last year, like, how many hours there is in in a strawberry in the word strawberry, and the LLL was unable to do that. So in this case, it's something similar. Even if it has the information, it's unable to count all the books correctly. So we are gonna fix that right now. So the way I'm gonna do it is I'm gonna copy the Cypher query from here, and I'm gonna add another tool. And this tool is gonna be count books by author. And you use this tool to count the amount of books that an author has written. And the cipher query in this case, again, author names is still good. The only thing that I'm gonna change is count b. Oh, I didn't save it. Nice. Then use again. Count date. And then, count books by author and then count all the books that an author has written. And then the parameter needs to be author name because it's what we put here. Although, we are gonna put author, so you see something different. A string and then the name of the author. And here, I can use author as well. So it's any parameter that you write is gonna be fine. Cool. So now with this tool, which is here, count books by author, I'm gonna save it, and I'm gonna ask the same question as before. Did I do the part? Count books yeah. Perfect. So how many books has Isaac Asimov has written? And I'm here. So, actually, I'm gonna I'm going to tell you that if I oh, where an named Isaac Hasselmo. Oh, hold on. It's here. Then the relationship written by b to book, return count b. So I'm basically writing the query that we wrote before, and the count is 602. So we need to let's see what the LLM replied. It's thinking about it. Well, the latency is let's see. Okay. Someone says, what's the typical expected time overhead of using an agent when compared to direct site first entering query mode? Okay. Agile, regarding the overhead, of course, the agent is running the query. So, effectively, if you run the query directly, then there is no overhead when you when you are using the the browser here. When you are doing this, the overhead is that we are using DLLM in the middle. It needs to run the query, then it has to process the the response and then return it to you. Now the thing the usefulness here is that, for example, if you have, let's say that you're a company and then you wanna make a chat support bot. So you have a Neo4j database with a lot of information about common questions that the customers have, information, analysis of something. So then you can write tools related to those that information. Like, if you know that your customers usually are asking about something very specific, you can create tools that will reply those kind of questions. And that is where the usefulness lies because, the customer is not gonna run Cypher directly on your database. But we can expose this agent so you can use it in another applications, and then you benefit from the flexibility of rather than having, a customer support person doing that, then you can, put the agent in there for those repetitive queries and let the agent deal with them. Hope that answers your question. Let's see. George, recommend sci fi books, four point five seconds, filter books by genre. Okay. So, George, in your case, recommend sci fi books, I think, it cannot filter the one genre, and it doesn't have that tool unless you created the tool. So if you wanna do that, you should write the Cypher query where you kind of, filter them by the by the genre, and then you should be able to use that tool to get you those books. Okay. This is definitely taking too long. I'm gonna refresh, try again. Let's see if it's a matter of again, the latency seems to be an issue during the workshop. Yes, Jeff. Let me see if I can get this. Okay. Perfect. Now, so as you can see, the latency is something quite flaky. Sometimes it happens, sometimes it doesn't. So if it's taking if it's taking a lot of time for you, please refresh the browser and try again. Let's see if that fixes it. So put for five seconds. And if you, Jeff, if you expand here in the pop reasoning, you can see everything that DLLM, the inner monologue. And you can see here what is the tool that is applying, count books by author. So it's using the author from the query. And then running the Cypher query, it gets the 200 sorry. The 602, and then it returns this result and gives me the answer. So in this case, we have improved the performance of the agent in a sense of before it was making up how many books we have. Now we created a tool to cover that specific case and is counting the books properly. So through this kind of iteration flow, you can start adding more tools until the agent is quite self sufficient in how it uses the tool depending on the questions and so forth. Okay. Cool. The text to, by the way, the text to Cypher tool that Estelle introduced, as she mentioned, is kind of a wild card in a sense because any questions that, let let's say that you ask a question that is not covered by any tools. So in this case, text to cipher is a chance of getting it right because it will default to use text to cipher and then create the cipher query itself. So rather than you writing the tool with the cipher query, the agent will create the cipher query. Oh, yes. Absolutely. I can. Let me check. There you go. Okay. How is everyone doing? Is anyone having troubles with the latency? I think getting problems with that. Are you enjoying the use of the tools? How it's going? Don't be shy. Let's see. Hurt hurt, we are gonna use the vector index, right now after this, actually. Mark, text to cipher will surely be essential for multi hop queries and complex graphs. Yes. Like, of course, if you don't want to, write every single query, then text to cipher is gonna be useful. And we are actually working on improving the performance of text to cipher so it gets, the queries very right no matter how complex they are. Alexander, in the same way as the MCP servers, if you have too many tools, MCP server might be less effective in choosing the right tools. So it happens the same with your agents. I will argue by the way, good thing about MCP because that's something that we are working on, like making them compatible. But also in terms of your question, yes. That's right. In the same way as having too much context makes the LLM less accurate, like, you know, very long context window. In this case, I think having many tools could mislead the, agent in how to use them. However, I'm gonna say that I think this depends more in the description and the name. Right? Because if the description of your tools is quite different between between each other, you will not have that much of a problem, I think. So I I think when it comes to tool use, the naming and the description are the the the most important part. Like, the the main complaint that people have with agents is the ambiguity on how unpredictable they are when it comes to choosing the tools. And then that's where the work in the name of the description, matters a lot. Roger, where did you configure the language style? Oh, sorry. Actually, may I think I okay. Where do you configure the language style of the agent? Oh, I'm replying to questions that Estelle is already replying. So I don't okay. But, yes, it We can check if we have the same answer like this. Yeah. I think for sure. Where do you configure the language style of the agent? So we do it here. So got them by speaking like a British English in Victorian area. Now, speak like a pirate, in a sinking ship. I don't know what that looks like, but we are gonna find out how many books does Susan Liu has. Okay. Cool. Does the agent only answer by query, ask according to the tool? Ben, I thought, the agent only answers well, I don't know if I'm reading your question right, but you can answer queries that are with information of the training data as well. It's just that if you ask a query and the agent thinks that, one of the tools that they have is is right to use, they will use that and that improve, of course, reduce, hallucinations. But in a sense, yes, you can ask things like, okay. Let's see. Two plus two. Two plus two is four. And I assure you, I don't have a tool to do mathematics on this bot on this agent. So this is basically on the knowledge that they have. You can think of the agent as another person. Like, if you were the agent and someone asked you something about your, let's say, about your job, there are several options. And it's one you think, oh, do I need to look my email to find this information? Do I look to do I need to look in these documents? Those are your tools. But sometimes you don't even need to look at the tools because you rely on your own memory to say, oh, wait. I know this. So I think that's the best way to look at it. Like, just thinking as, a tool key like that you have, and the tool key is defined by you. Let's see. Right here. Here. I will have access to a database or books and authors. Make sure that you load the the datasets. When you created the agent and you link it to the database, make sure that you loaded the backup that we share at the top in the pinned messages. Okay. I think we are gonna we are six twenty, we are gonna use, vector search, which I think hurt, as before. Okay. Cool. So, let me show you here. We already have some vector indexes created before this. Of course, I'm gonna create one for you to see. But, basically, we are indexing, we are embedding information about the books and information about the reviews. And the way this has been done is we have taken all the reviews for a book, and then we have embedded compared them to vectors completely and then put them in the property reviews embedding. And with information of the book, like title, category, description, that goes into the embedding property. So if you go to the books, you can see the embedding property, which has the information of the book, and below, the reviews embedding. Okay. Jon, I wanna build up my instance in the upgrade out. I think that's something to do with some setting that needs to be enabled in in the settings about the SSO, I think. I think Estelle can help you with that while I move on with the workshop, but, I I will have an answer to that. Okay. Let's go on. Yes. The vectors. Cool. So let's go to the agent. Let's say, the agent runs there. And we are gonna create a similar similarity search tool. So this is gonna use the embeddings that we have created and the index the vector index that we have created as well. I mean, when I say we have created, I created before the workshop. I'm gonna create another one again, but I wanna show you what it looks like. So the similarity search, it will work quite good for very generic questions that your embeddings has been you know, based on the embeddings that you have generated. So because I generated embeddings about the book information, let's say search books, search, information about books. And here, the embedding provider, I'm we have two at this time. I generated embeddings using Gemini, and I generated with using the Gemini embedding zero zero one. Now the index, if I go to show vector index, is called book embedding index. So if you wanna populate this part, you need to go to the browser, to the query tool, and then write show vector indexes and get the book embedding index. And then top k is gonna be the amount of results that you're gonna get from that query. So I'm gonna put, let's say, five. I'm gonna give you some time to do this so you can follow me and then going through the chat. How many books we have by Mary Joy? Let's see, Ariane. Let me open the agency on another tab. I'm not sure can I'm gonna use because that is the one that has the tool for counting. Francis Chan in the database. Okay. Let me see, Evangeline, about Francis Chan. Let's see. Do we have an author called like that? Yes. It is. Okay. Evangeline, can you send me the query that you are using? Let's see how it goes. Abhishek, where are you training it? We are not training the anything. We are using Gemini, which is already trained. It's what we will call a foundational model. Very big. So, yeah, we are not training anything. We are just adding tools so the agent can be more accurate in the answers based on the database the and content of the database. Hey, Jay. Can you clarify what use case of using the current agent setup versus MCP server resolution using cloud desktop as the LLM? For sure, there is yesterday workshop. Okay. I think the use case here, versus m c at the end of the day, MCP server is, let's say, a rep a repository of tools. Right? You are connecting an LLM well, connecting an agent and letting them know that, hey. You have the the MCP server of Figma, the MCP server of Neo4j, the MCP server of GitHub. So they are exposed to many tools about that you haven't created, but other people have created. Essentially, it's using libraries, like, when programming, but the tools that have been created have been created by other people. So we are gonna offer that at some point, like exposing to your the tools that you have created as an MCB server. So in that sense, you, for example, could use the tools that you have created in the AGN with cloud desktop because MCB server will be exposed, and then you can use those tools. I hope that answer. If not, yep. Throw me the question again. Let's see. Joe, you all Baptista Gizmo real time. Yeah. I don't know the answer to that question. Estelle is a scientist here, and I think Gizmo sounds like geodata. So I know this, but I know this particular map tool, I have to say. I don't know if it's it's related. Okay. Let's go back to the similarity search. So just to recap, create a similarity search tool, description, search information of a book, something that is gonna be covered by the embeddings, then the embedding provider, Vertex AI in this case, and embedding model, Gemini. And this is because I generated embeddings, using this. If at some point you generate embeddings with OpenAI, then you will select OpenAI, you want embedding model. It needs to be the same. And then the index, you retrieve it from the list of vector indexes. We are gonna, make this easier in the future, so you will get probably another drop down where you already get your vector indexes. So you don't have to do this. So this is temporary. And then the top k is the amount of results that you are gonna get. So let's save this, and then now we got a search books tool. So now if I say, where is it going? It's in the bookstore. Right? Yes. Okay. Let's say search books about robots. Yes. Jesse. Jesse? Yes. Jesse. The vectors the the dimensions, I think you mean, needs to match. Yes. So for example, the human eye embeddings are 3,000 something dimensions. So when I was embedding the when I was embedding the the books, then they are embedded in three k. And then when you are making this query, we are embedding if you if you know how similarity search works, we are embedding this query using the same embeddings, and then using cosine similarity to find out the the top five results in this case. So when it comes to the dimension, yes, they need to be the same. Otherwise, it's gonna complain. But I'm not creating a vector index right now to show you. So if I go here to Neo4j, and I think I have the oh, I have a query around here to create a vector index. So something that I took the free the freedom of doing is that we have reviews that we haven't done much with them, but the reviews also have embeddings. It's reviews about the different books. And the embeddings is the content and the title of the review. So we are gonna create a vector index of the reviews. I'm gonna send it to you on the chat. And you can see here that the vector dimensions is 2,022. So this is important thing. If you put here seven six eight, your embeddings are stored in the database in the dimension of 3,000. So when you are making the query, it's gonna be, embedded with this amount of dimensions. And because it's not gonna match, it's not gonna be able to work properly. So you need to make sure that when you are embedding things, the vector index is matching the the amount, the right size. So if I run this query, I got the index created. And if you do show vector indexes, there it is. So once this is done, I'm gonna go and add another similarity search tool. Actually, before doing that, let's add something on the query. Search reviews, that are skeptical of the books. Let's see. As long as soon as it passes the ninety seconds, I'm gonna refresh the okay. I don't have enough information to answer this question because the search user will provide the book details. It does not include any actual reviews. So we can see that it's using the search books tool, which, of course, is incorrect because you're gonna get books, and it doesn't have any information about the reviews. So instead, we are gonna add a similarity search tool for the reviews based on the index that we have created. So search reviews. Use this tool when asked about reviews. And it's gonna be vertex AI with the Gemini zero zero one. The index is reduce e m b index, which is the one that I created here. And then let's say 10, so we get the 10 results. Then I'm gonna make the same question, which is gonna be, give me reviews that are skeptical about the books. And one interesting thing is that you don't need to save the agent every time that you do some change to this. You can just add it and then speak with the agent here in the let's call it the draft mode. So any change that you will do here is reflected when you speak with the agent here. Oh, wow. Okay. So search reviews. It used the right tool. However, missing index hold on. Did I? Oh, wait a second. Uh-huh. You see, I added this bookstore to the agents in order workshop, but I'm not used but but I didn't create the the index on on this database. So hold on. Let's fix this right away. It's the same data everywhere, so it doesn't matter. I'm gonna create it right now. And now the index is added, so I'm gonna repeat the query. But as you can see, I got some information. And in this case, information is useful because there is no vector schema index called reviews e m b index. So okay. Thank you, bookstore. Jane. Okay. So given the reviews that I skeptical books, I have added collector index now. Let's see. Let's see one more question. It's rather intuitive for a user to know if the LLM agent will use the vector index or the direct sector sets, but he can't be sure. That is the thing with agents, Herb. When it comes to oh, by the way, you replied already, but let me reply to your question first. One of the main issues with agents is the reliability of the tools. That depends a lot on how you are writing the name and description of the tool. So it's not gonna be strictly deterministic. Like, I think you could ask the same in the same way when you're speaking with ChargeGPT or with Gemini or any LLM. If you ask the same question several times, you're gonna get different answers because the model is probabilistic. So when it comes to the tool usage, you can be confident that some descriptions are more accurate than others, and then, you will get the the right tool use more often than not. However, this is where you have to have a agent evaluation frameworks, agent evaluation systems to make sure that the agent gets to a level that is enough for your use case, like, is good enough for your use case. Okay. Felt for seventeen seconds, and then we got some reviews, two of them, actually. Couldn't get into this book and the book boring describing it as a episodic cop TV drama with lots of immaterial relationship drama, no suspense or mystery on investigations. Oh, every single was an object of lust at first sight. Okay. Wait a second. What kind of book is this that, is complaining about? What is the book with Ace in see, what is this book that is so bad? Although, I'm not sure. Okay. Here, my guess is that maybe it uses the search books tool. Let's see. I don't have enough information to answer this question because the search result did not return details for that specific book and is using search books. So for example, in this case, search books is maybe too generic in this case for for the query. I'm gonna add another tool, search book by asin, which is the Amazon standard identification number for books. And, actually, the description is gonna be the same, and the parameter is gonna be asin. The data type is gonna be a string and the asin of the book. And then on top of my head, let's match book with Ace, the parent Acem. It is Acem. And in case you are not aware, it's parent Acem because I know that one of the properties of the box is parent ASIN. So this is the way and then return b. This should return the book given one ASIN number. So I'm gonna save it to It's here, and then I'm gonna ask the same question again. Exactly the same question. And let's see if this improves. Thanks. Estelle, is there a documentation for best practices to have the tool descriptions to satisfy certain minimum requirements when constructing agents? Well, all the ecosystem of agents is, new. So you have some documents around the Internet when it comes to what is the best way of creating agents. But to be honest, I'm not sure if there is something, specific to, specific to tool descriptions. Regarding the query that I created, this is the query, and this is the description. Okay. Hold for seven seconds, and there you go. The book with Aceh is titled Parker and Knight. And you can see if we expand the reasoning, then the agent knows that he can use like, he can use this tool. And he choose the tool, run the cipher. He got the book. And now description, thriller, detectives, Rick Parker and John Knight investigate the murder of a 19 year old Tiffany Graves investigation and covers a complex web of love, lies, and infidelity involving the homeowners. So the review was probably yeah. I mean, it's related to the book for sure. Okay. Although the average rating is 4.5, so this user is probably in the minority. Actually, let's go. What are the general reviews very general sentiment on reviews of the book with Jason. Let's see if how this goes through. Pavan, the rating doesn't match the early query. No. But that is expected because this is the average rating. It's 4.5 out of five stars based on 381 reviews sorry, ratings. Yeah. Reviews. So in this case, it's only one review, in this case, of this book. So this review in specific, it was two stars. But my guess is like many other people, at least 380 have better ratings than, this person. So, for example, the general sentiment is overwhelmingly positive because many reviewers praise the book and its author, Remington Kane, highlighting engaging characters, enjoyable read, strong storytelling. However, there is a couple of skeptical and less positive. And, actually, this one is the one that we read previously. So as you can see, only one review was skeptical, but it was to be expected because we got this answer in the first place because I asked give me skeptical reviews about books. So we are getting two that are skeptical. K. Any questions before we move into the next section. As now, Estelle is gonna show you the last part of the workshop, which is how to make this run not within Neo4j Aura, but in your own applications, in your own code. Okay. Well, feel free to ask questions, while Estelle and I will answer them. And and Estelle, over to you. Great. So glad to see this working. I'm going to share my screen again. And this. Yes. So if we go to the agent edit again, there is one thing we haven't talked about yet. It's this internal versus external configuration. So so far, we have used the agent in internal mode. That means you can write in the Neo4j Aura chat. You can interact with your agent within the console, but you cannot use your agent outside of Neo4j Aura. If we want to do this, you have to make your agent external and save the agent. So what has changed is that now if you look here on the three dots, you have this copy endpoint, thing. And that means that you will be able to query the agent through the Aura API. So before we do that, we actually need to create some credentials. And so if you haven't any credential yet, you just need to go to your account settings here, API keys, and, generate API key. So you just give it a name, whatever. And you do not need to copy this. You just need to, download, the file. So it will create it will download the Neo4j credential file that we will use to connect to, the database. Good. So I'm going to delete this one right away because you saw it. And use the key I created earlier. All good for the API keys. Yeah. So then let's move on. I will share, actually, this with you. So I put a script in this repo. So, oops, the, API usage so, I mean, it's an API, so you can use Curb if you want to. What I'm sharing with you is a Python script, mainly because I'm mostly used to Python rather than Curb. But it's the same ID. Basically, what we need to do is based on the credentials we have just created, we are going to patch a token. And based on that token, we will call the Aura agent. So let me actually switch window and go to PyCharm so that we can try this live. Yes. So inside inside PyCharm, what you will have or inside the repo, you have this dot on dot example file. And you need to do two things. So you need to provide the path to the credential file that we have just downloaded, And you need to copy paste the endpoint to the agent. So the the endpoint to the agent is the one you get when you, make your agent public. And then you have, you know, your three dots, and you can copy the endpoint from from there. So it took something like this, API Neo4j, p two beta. Yeah. Exactly. The tools will, accept the data. That's the only way to accept the data. So everyone are protesting the API. So once you have this, you just need to run the script. It has only two dependencies, dot env and h t t b x. And we can ask a question like, yeah, show me some books written by Azimuth. And it's actually fetching the token and calling the exact same agent that we have been building in this, workshop, and so we should get a very similar answer. Any question regarding the API setup? So, yes, in in that in in the this script is actually loading the Neo4j credential files, from your local system. Yeah. So when you create the API key, you can download that file and just, pass it in the in the dot home here, and you can provide the full path to that file. We could also copy the client ID and secret ID from from the credential file or from the, from the UI. There are many ways to to write this. Okay. So in the meantime, we got some answer. And yeah. So oh, okay. A whole bunch of books. I have the impression it returns the 602 books written by Isaac Asimov, but that's the answer. So it works. So, yeah, what so once you're happy with your experimentation and your tool definition and you're pretty confident that your agent will be able to answer most of the questions that your user will be asking about your data. You can make your, agent public and, and stop from there. Integrate it in this way in your in your application. You can even, wrap it into some MCP server. We have some example about that, already. And, yeah, move forward with that. So at the moment, agents cannot write data in the graph. It's a bit risky, but, I know some people are interested so it might come in the future. I cannot promise anything. But for now, it's true that we can't. So the name and the description of the agent have an, an effect on the answer? No. No. The only way you can act on the answer is through the prompt instructions, not the name and description of the agent. It's not used. It's unknown from from the LLM. Agents in Neo4j desktop, as far as I know, this is not planned. Internally, we called it agents in Aura. So, yeah, as far as I know, it's not planned. But, I shared in the in some of the answers already. I can share it in the Slack. We have a link for feature requests. So, really, if there is some feature that are missing here that will just prevent you from using it, feel free to share a feature request. We will definitely consider it. In the similarity search, could could you reexplain the use of the index? Yes. So in the similarity tool, what we are doing is, when we are ingesting the data, we have some texts that we embed. So that creates some vector, which represents kind of the meaning of the text. And we create a vector index based on that so that we are able to search through those vectors in an efficient way. And when we use the semantic the similarity search tool, sorry, what we are doing is that we are embedding the question with the same embedding model, and then we query the vector index for the most similar, data points inside this index compared to the compared to the user question. So when Jon Jon was asking questions about, was it skeptical reviews of something like this? The the the the the the sorry. The similarity tool is embedding the the the the questions or about technical reviews or ratings and is comparing that to all the, the the embeddings that we have in the database and returns the the the the the records that are closer in terms of embedding, so in terms of meaning, to this question. And so that's why in the in the reviews that we, were able to see, you had this either the same word or at least the same meaning, coming. I hope it's a bit clearer. Yeah. Any other question? I'll give everybody a few more minutes. We have we have five minutes left, but that was that was amazing, Estelle and Jon. I really have to say, it was so many questions, so many so many answers from you both. So really, really, really, really super tough job. And even with, you know, breaking, of the of the What's it called? Start. So yeah. I'm like, you know, restarting the agent API in between the workshop live. It was pretty pretty, you know, I'm I'm astonished. That's really amazing. Okay. Great great job. Yeah. Thank you everybody for for for watching for sure. Thank you for participating. I I could really feel that lots of people were participating with all these questions, but also with your feedback. It, it was really good good to see this today. And, as as we said in the beginning, right, this was recorded. So, hopefully, if you can, try it out, with a bit more time, a bit more more, you know, ease ease of mind, you can, you can give this another shot shot shot, and we can, you can hope that then maybe the agent API or x doesn't act up. So let let us know. I mean, again, apologies if it didn't quite work as smoothly as it as it was supposed to. But, you know, as as Estelle and Jon said, this is a little, it's an early access program. So we, we are trying to find in workshops like this all the all the issues, all the kinks that are still there, and to iron them out. And, you know, this was this was great. So thank you for being our guinea pigs today. I think it's, it's it's but you can see, right, when it works, it it really gives you a quick a quick boost and a ride a quick turnaround. So I think that's that's really what what the amazing, bit is for for this one. So, yeah, what I like to, leave everybody with is, because, obviously, notes is is happening already in two weeks' time as in the beginning. We have a little, teaser event next week on the October 28, speaker round table with Katharina, Christian, and Luan to talk a little bit about what they are gonna say and what they're gonna present, during the notes, day itself. So if you're interested in that and have a little bit of an impression of what to expect during notes, join us. We are streaming this live on YouTube and on LinkedIn. So either of these channels, you can watch it. I said in the beginning already, if you haven't registered for notes, please, you know, two weeks' time. It's gonna be amazing. We record lots of sessions. We share lots of things afterwards. But, you know, let us, let us know if if you like it and and register for it and and participate live as as much as you can. That would be great. And, yeah, if you have any many more questions, anything is unclear, I think Estelle shared the feedback link a couple of times, so that's that's a great way of of letting us know what you'd like to see with Aura agents. If you are generally, wondering what to do with with graph databases and where to go next, Graph Academy is your your place to go and to learn. We have a Aura, a fundamentals course there, which is launched last week or a couple weeks ago. So it's super fresh, but also other chatbot building, graph rec, you know, general app development. So it's a great place to learn and to start. You already have your Neo4j Aura free instance, so you can already get get going with that. And if you have beyond of beyond of that, if you have any questions, you know, check out our community on Discord as well as on the forum, the extensive documentation pages, the extensive, developer pages around Gen AI, are there as well. So it's really a lot, of content for you to explore and, yeah, just, just, you know, go go and, and learn, go and develop. Let us know what you built. You know, this is obviously always nice after after such workshops like today. If you build something cool, if you're open to sharing it, share it with the community. Say, hey. This is what I built with Aura agents. This is what I built with Neo4j, and the people should be knowing it. So, that was great. So, yeah. Again, thank you very much, Estelle and Jon. What a what an amazing session. I'm, it's it's it's ending road to notes with a high note. I'm I'm I can I can say I was glued to the screen all all all these two hours, so really, really well done? Top job, as well as to you all for participating today for you, for writing your own agents, for, you know, writing your own Cypher queries. And it seems maybe for some of you, it was was one of the first Cypher queries. So it's great to to have you on board here with this, with this journey. And, yeah, I'll see you next week at the at the, speakers roundtable maybe. If not, then at, at notes itself in in two weeks' time. Any any final words from you too, Estelle, Jon? Thank you for everyone for staying despite the the smaller issues at the beginning, and I really hope you you learned something. It was, definitely great experience delivering this workshop. Yeah. Same thing. Thank you very much for staying during the hard times of the workshop. I hope you enjoyed it. Also learned a lot about agents and tools. Hopefully, you can get to build some great things with it. And, yeah, see you in the notes. Exactly. See you in the notes. Take care, everybody. Have a good rest of the day, and, see you soon. Bye bye.