Transcription: OpenAgents Episode 011 - Chatting with a PDF
June 9, 2026 ยท View on GitHub
Source: https://twitter.com/OpenAgentsInc/status/1723525820357005661 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 011: Chatting with a PDF We connect our chat UI to Vectara, e... Upload date: 20231112 Transcription model: gpt-4o-transcribe-diarize Generated at: 2026-05-31T23:48:51Z
Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.
[00:00] Christopher David: Let's pick up where we left off.
[00:02] Christopher David: Our goal for this video will be to have our chat interface here actually
[00:13] Christopher David: work to chat with the document in the same way that we were able to chat with the document or query the document.
[00:26] Christopher David: via the Vektara back-end.
[00:30] Christopher David: So if we say summarize what an AI agent is,
[00:34] Christopher David: we get a pretty good natural language response with sources,
[00:41] Christopher David: and I'd love to see that in the interface.
[00:49] Christopher David: So we have our test suite that's passing.
[00:56] Christopher David: We know that the Vektara service that we built now has all of the functionality that we need.
[01:01] Christopher David: We just need to connect it to the UI.
[01:03] Christopher David: We've already connected the upload file Vektara
[01:13] Christopher David: flow to the interface.
[01:17] Christopher David: I think we're skipping over that in our current API test.
[01:23] Christopher David: So for the next piece of this, let's make sure we're doing this all via TDD.
[01:29] Christopher David: So let's do,
[01:30] Christopher David: what should we do?
[01:32] Christopher David: User can query a corpus via API. Sounds like what we need to do next.
[01:42] Christopher David: So we've got the Victara test that's like for the service itself, but now I want to do API.
[01:48] Christopher David: And we'll model it kind of on this create conversation test. So we'll call it query
[01:56] Christopher David: corpus,
[01:59] Christopher David: query for
[02:05] Christopher David: now we'll call it the query corpus test.
[02:11] Christopher David: So we're testing that a user can.
[02:16] Christopher David: It's not even a user. It's like anyone.
[02:19] Christopher David: We're not requiring auth users right now.
[02:24] Christopher David: Anyone can... Yeah,
[02:29] Christopher David: query corpus. That looks good, actually.
[02:31] Christopher David: Query corpus via API.
[02:38] Christopher David: Yeah, copilot's pretty good.
[02:43] Christopher David: So let's...
[02:45] Christopher David: Run just this test,
[02:47] Christopher David: see
[02:52] Christopher David: what we get.
[02:53] Christopher David: Route query is not defined.
[03:07] Christopher David: Probably put this in a new route.
[03:12] Christopher David: Called API query we can name it name
[03:21] Christopher David: query
[03:29] Christopher David: We'll remove the middleware off for now
[03:36] Christopher David: The error now is because it's
[03:38] Christopher David: pass it back to agent controller.
[03:42] Christopher David: What controller should we put this in?
[03:53] Christopher David: I don't yet know if it should belong on like a vectora controller or in be more generic about it because we may not rely on vectora for the whole thing.
[04:05] Christopher David: But query should be a pretty generic thing.
[04:06] Christopher David: So here we'll want this kind of stuff.
[04:15] Christopher David: Just copy that for now.
[04:22] Christopher David: So a query controller.
[04:39] Christopher David: I don't know if we're going to use the inertia post or a regular Axios request.
[04:43] Christopher David: There's some differences there. We'll cover that in a little bit.
[04:47] Christopher David: All right, so we do query controller.
[05:01] Christopher David: I guess we could just make it the same.
[05:04] Christopher David: I think it's query.store.
[05:18] Christopher David: Okay, what are we getting?
[05:20] Christopher David: Target class query controller does not exist.
[05:24] Christopher David: Import it.
[05:42] Christopher David: And we are starting with the status.
[05:45] Christopher David: 200, but for now we're turning it to a 1.
[05:50] Christopher David: And this wants to assert that okay is true.
[06:05] Christopher David: Okay.
[06:09] Christopher David: Did a dumb little test for that.
[06:11] Christopher David: Now let's test
[06:30] Christopher David: Let's take a look at our Victara API and see what we should expect back from the response.
[06:38] Christopher David: Query service,
[06:39] Christopher David: query.
[06:43] Christopher David: So we get back response set, status,
[06:47] Christopher David: and metrics.
[07:06] Christopher David: Let's see if I can find their PHP demo rest examples
[07:21] Christopher David: It's wondering if there's a good example of how to parse the response that we get back from it
[07:33] Christopher David: Well
[07:36] Christopher David: Let's just throw in here.
[07:42] Christopher David: What is it that we need to send to Vektara?
[07:47] Christopher David: Vektara is new Vektara.
[07:55] Christopher David: And we need to do Vektara.
[08:01] Christopher David: Query. Let's go check out that test.
[08:08] Christopher David: the corpus ID and then the query.
[08:15] Christopher David: Okay.
[08:17] Christopher David: So we need both the corpus ID and the query.
[08:30] Christopher David: And really I should drive out every piece of this via TDD,
[08:33] Christopher David: although we've kind of already implemented this pattern multiple times in the past, so I'm just going to.
[08:37] Christopher David: Validate that request has.
[08:55] Christopher David: Well, that still succeeds,
[08:56] Christopher David: although I'm guessing this did not return.
[09:01] Christopher David: Let's see what we get back from this.
[09:09] Christopher David: Is that succeeding as we go?
[09:24] Christopher David: It succeeded.
[09:31] Christopher David: All right, let's pop back over to ChatGPT for help to parse this.
[09:38] Christopher David: Let me see if I can pull up.
[09:43] Christopher David: For querying via controller,
[09:46] Christopher David: we now have this,
[09:48] Christopher David: and
[09:56] Christopher David: that returned.
[10:24] Christopher David: Hopefully that's not too large.
[10:57] Christopher David: This was great.
[10:59] Christopher David: Thank you, ChatGPT, for helping me disrupt ChatGPT.
[11:04] Christopher David: Let's do this.
[11:14] Christopher David: And then we should be expecting a 200,
[11:17] Christopher David: not 400.
[11:22] Christopher David: And I don't even actually know what...
[11:29] Christopher David: pay is true yeah we do and
[11:36] Christopher David: the test still passes Wow so
[11:45] Christopher David: let's
[11:49] Christopher David: for now just kind of take a look at what that response looks like
[12:48] Christopher David: Okay,
[12:58] Christopher David: well that's enough to start.
[12:59] Christopher David: Like I don't fully know how to map this stuff to this
[13:08] Christopher David: stuff,
[13:08] Christopher David: but
[13:16] Christopher David: it's enough to get started.
[13:18] Christopher David: So, assert
[13:33] Christopher David: that results is an array of arrays that have keys,
[13:42] Christopher David: text,
[13:42] Christopher David: score.
[13:44] Christopher David: Metadata.
[13:53] Christopher David: I think that should work.
[14:02] Christopher David: Okay,
[14:02] Christopher David: so let's check out from our client.
[14:05] Christopher David: So we'll commit this as test passes. Anyone can query corpus via API.
[14:28] Christopher David: So what we want to do is when we finish
[14:40] Christopher David: the upload,
[14:41] Christopher David: I'm
[14:44] Christopher David: actually going to hard code that file name one more time.
[14:47] Christopher David: We're just going to use a demo corpus.
[14:52] Christopher David: I don't have to keep re-uploading the PDF.
[15:04] Christopher David: Hit enter instead of just updating messages.
[15:16] Christopher David: Let's try this first as a fetch request.
[15:19] Christopher David: Or do we have Axios?
[15:25] Christopher David: Let's do this. Send an Axios post request to...
[15:31] Christopher David: API query with
[15:41] Christopher David: the user's message and Corpus ID of
[16:04] Christopher David: So that's interesting,
[16:05] Christopher David: although we're not going to set
[16:29] Christopher David: the messages. I'll just take a look at the response.
[16:32] Christopher David: Um,
[16:33] Christopher David: does
[16:38] Christopher David: this work?
[16:41] Christopher David: Okay,
[16:41] Christopher David: unprocessable content.
[16:49] Christopher David: So first of all, I'm
[16:57] Christopher David: guessing that's not a string.
[16:59] Christopher David: No, it's not.
[17:01] Christopher David: It's dot content.
[17:25] Christopher David: Still an unprocessable thingy. Why?
[17:31] Christopher David: Corpus ID is good.
[17:32] Christopher David: Message is good.
[18:51] Christopher David: Corp's ID and query.
[18:54] Christopher David: Corp's ID and message.
[18:55] Christopher David: Duh.
[18:58] Christopher David: That would have been nicer if I had a cleaner error message there. Okay.
[19:19] Christopher David: We got back some stuff.
[19:55] Christopher David: Now please edit that function to create a message by concatenating the text
[20:02] Christopher David: fields of each object in order to create one big message and append that to the message state.
[20:45] Christopher David: Remember that messages...
[21:18] Christopher David: Good except messages are not just strings.
[21:21] Christopher David: Remember they look like this.
[21:51] Christopher David: And I think that might be expecting it to be role equals assistance.
[22:54] Christopher David: Unprocessable content again.
[23:36] Christopher David: Oh, it changed query vector message again.
[23:39] Christopher David: Gosh darn.
[23:46] Christopher David: What is an AI agent?
[24:00] Christopher David: That's real nice.
[24:01] Christopher David: Now I don't know what these spaces are.
[24:05] Christopher David: And let's see,
[24:07] Christopher David: that's looking for a logo file that may not exist.
[24:11] Christopher David: Logo.png,
[24:13] Christopher David: pulled it over from there.
[24:42] Christopher David: Got our logo.
[24:45] Christopher David: Wow.
[24:50] Christopher David: We chat with a doc.
[24:52] Christopher David: Okay,
[24:53] Christopher David: so let's
[24:57] Christopher David: clean that up a bit.
[25:12] Christopher David: Joins with a space.
[25:13] Christopher David: We don't necessarily want that, do we?
[25:29] Christopher David: I guess we do.
[25:48] Christopher David: Query PDF works via... Okay.
[26:00] Christopher David: Well, we're still only querying the one corpus.
[26:02] Christopher David: We're not... We just gotta hook up the actual document.
[26:06] Christopher David: But I'm just kind of wondering in some of these weird grammar things.
[26:11] Christopher David: Like, what if I query the same corpus?
[26:14] Christopher David: Let me see. Corpus ID 4.
[26:25] Christopher David: Yeah, we're querying Corpus 4,
[26:26] Christopher David: which is here.
[26:28] Christopher David: So now what if I ask the same question here?
[26:38] Christopher David: What is an AI agent?
[26:44] Christopher David: It's a little bit different
[27:28] Christopher David: Out of curiosity, let me try a different corpus.
[27:31] Christopher David: Let's try corpus 3.
[27:34] Christopher David: I've uploaded the seasteading book PDF.
[27:49] Christopher David: Tell me about the Portunus Project.
[27:59] Christopher David: It seemed like that took less than a second.
[28:02] Christopher David: Enter the massive Portunus project planned to build six O-ting?
[28:08] Christopher David: Floating.
[28:09] Christopher David: Megaport surrounding the United States, each 400 acres in size and located 20 to 40 miles.
[28:15] Christopher David: Portunus, I think that's misspelled.
[28:25] Christopher David: No,
[28:25] Christopher David: never mind.
[28:26] Christopher David: I misspelled it.
[28:35] Christopher David: But that should say floating,
[28:36] Christopher David: not oating.
[28:44] Christopher David: Name.
[28:46] Christopher David: Yeah, sometimes there's - that's
[28:58] Christopher David: missing.
[28:58] Christopher David: That's missing.
[29:01] Christopher David: Let me take a look at our response,
[29:02] Christopher David: see if I can see why it's missing.
[29:04] Christopher David: I'm not going to spend too much time on it. I'm just happy that we got that working.
[29:08] Christopher David: But if I look at the data,
[29:10] Christopher David: yeah.
[29:36] Christopher David: I'm wondering if that's maybe a problem with their parsing of the PDF,
[29:40] Christopher David: like an OCR problem.
[29:44] Christopher David: Because what you could do if you wanted this to be more grammatical, you could always feed this through an LLM.
[29:48] Christopher David: Like have it tell the Kuna, hey, just clean this up.
[29:52] Christopher David: In fact, out of curiosity,
[29:54] Christopher David: what happens if I go to gptopia.ai?
[30:03] Christopher David: We got it.
[30:05] Christopher David: Do some fixing of this.
[30:14] Christopher David: Log in chat.
[30:23] Christopher David: What if I just say,
[30:24] Christopher David: give
[30:29] Christopher David: me this same.
[30:32] Christopher David: Paragraph, but clean up the grammar and missing letters to be fully readable.
[31:06] Christopher David: And then it does that,
[31:06] Christopher David: but
[31:10] Christopher David: okay,
[31:21] Christopher David: so it worked. It came back in like less than a second.
[31:29] Christopher David: And now...
[31:34] Christopher David: And if I deploy that,
[31:39] Christopher David: I'll just check to make sure that that works.
[31:43] Christopher David: And before then,
[31:44] Christopher David: let's make it so that it actually does the corpus.
[31:51] Christopher David: So right now, I don't think we're not creating a corpus based on the document.
[32:00] Christopher David: So where would we test?
[32:16] Christopher David: We're testing vectorial functionality or vectorial functionality is going to be in it,
[32:19] Christopher David: but I don't know that that belongs in this test along with the service files.
[32:25] Christopher David: Maybe we'll put it in an upload file test like uploading
[32:32] Christopher David: a file
[32:36] Christopher David: creates a corpus. Exactly correct.
[32:48] Christopher David: Save it to the users,
[32:49] Christopher David: are we?
[32:56] Christopher David: Let's see if that deployed.
[33:02] Christopher David: Deployed one minute ago,
[33:03] Christopher David: no errors.
[33:11] Christopher David: Define seasteading.
[33:20] Christopher David: Yeah, there's probably some problems with the OCR of the PDF,
[33:24] Christopher David: so it's kind of giving back some flawed data,
[33:28] Christopher David: but what
[33:45] Christopher David: is maritime law?
[34:10] Christopher David: Am I doing this right?
[34:13] Christopher David: We have answers,
[34:14] Christopher David: but is it actually
[34:18] Christopher David: am I supposed to be just spitting things out?
[34:29] Christopher David: No, that does not flow together.
[34:43] Christopher David: Okay,
[34:43] Christopher David: okay,
[34:43] Christopher David: okay,
[34:44] Christopher David: okay. I might have been misunderstanding this.
[34:53] Christopher David: Watch this.
[34:54] Christopher David: So if I do the same thing here.
[35:11] Christopher David: Okay, okay, okay,
[35:12] Christopher David: okay, okay.
[35:13] Christopher David: So the summary,
[35:14] Christopher David: this is clearly generated by an LLM, I think. I think that's clear.
[35:19] Christopher David: And then this is actually,
[35:23] Christopher David: I'm stringing together basically these strings here,
[35:27] Christopher David: which is why it's kind of disjointed.
[35:35] Christopher David: But I don't get back.
[35:38] Christopher David: A full-on finished summary,
[35:40] Christopher David: do I?
[35:41] Christopher David: Do I have to generate that myself?
[36:22] Christopher David: Let's read a little more about the tar query.
[36:29] Christopher David: I already read that.
[38:59] Christopher David: Summary mode was
[39:05] Christopher David: summary mode.
[39:43] Christopher David: I see.
[39:44] Christopher David: So I think there's some sort of summary mode thing you need to pass in.
[40:09] Christopher David: Corpus key let me play with this I'm not gonna do a test I just don't know quite what I want
[40:37] Christopher David: Optionally, one or more requests to summarize the results.
[41:12] Christopher David: I see.
[41:13] Christopher David: Okay.
[41:15] Christopher David: Switch the mode of the UX to summary mode or search mode.
[41:19] Christopher David: If not specified,
[41:20] Christopher David: this is not exactly the parameter, but I'm guessing that, so with summary, summary is shown in lowercase. Okay.
[41:28] Christopher David: So we need to do summary.
[41:36] Christopher David: They don't give me an example of that?
[41:38] Christopher David: Summary?
[41:48] Christopher David: This is not clear.
[42:04] Christopher David: The name of the summarizer plus prompt combination.
[42:22] Christopher David: I'm just gonna see what this does.
[42:27] Christopher David: Default.
[42:29] Christopher David: Okay,
[42:29] Christopher David: let's just try this.
[42:55] Christopher David: That's probably not what I want to search.
[42:59] Christopher David: Unexpected
[45:48] Christopher David: I'm formulating this object correctly.
[46:14] Christopher David: It is an array.
[47:30] Christopher David: Figure it out for me chat GPT.
[47:46] Christopher David: It said one or more but
[47:50] Christopher David: I'll try it
[48:03] Christopher David: Huh.
[48:04] Christopher David: Okay,
[48:05] Christopher David: now it says failed to retrieve summarizer.
[48:20] Christopher David: Okay, I should have RTFM.
[48:24] Christopher David: Behind the scenes,
[48:25] Christopher David: Victor supports both selecting the summarizer model as well as a prompt for the model. We make a range of these and if you are a skilled customer or considering,
[48:32] Christopher David: blah blah blah.
[48:38] Christopher David: There are two official summarizers available to our users. You specify,
[48:41] Christopher David: I see.
[48:43] Christopher David: And they use OpenAI.
[48:45] Christopher David: Can't get away from OpenAI here,
[48:48] Christopher David: but soon.
[48:51] Christopher David: Shoot.
[48:52] Christopher David: Is that?
[48:54] Christopher David: How's that?
[49:02] Christopher David: The return results did not contain sufficient information to be summarized in the USB app.
[49:29] Christopher David: So,
[49:30] Christopher David: now
[49:41] Christopher David: that that works,
[49:43] Christopher David: or
[49:46] Christopher David: at least fails the way we expect it to,
[49:54] Christopher David: here we can return the summary.
[50:01] Christopher David: Does it rest?
[50:45] Christopher David: Well, it seems less magical now that I know that they're just doing the vector search and then passing it to GPT,
[50:56] Christopher David: but of course, that's
[51:03] Christopher David: what people do.
[51:22] Christopher David: Okay, back to Victara this
[51:48] Christopher David: maybe
[52:13] Christopher David: So here hopefully I have a summary object zero
[52:37] Christopher David: summary
[52:54] Christopher David: Oh wait a second,
[52:55] Christopher David: I'm still querying.
[53:07] Christopher David: Okay,
[53:08] Christopher David: enter the massive is not the summary.
[53:12] Christopher David: I want the summary.
[53:14] Christopher David: But it just says, oh summary,
[53:17] Christopher David: what the hell?
[53:19] Christopher David: Oh, that's because I'm not actually passing it.
[53:42] Christopher David: Summary.
[53:45] Christopher David: Oh, here we go.
[53:46] Christopher David: Here we go.
[53:53] Christopher David: Not response results.
[53:55] Christopher David: Do not concatenate the results.
[54:11] Christopher David: Maybe.
[54:13] Christopher David: What is the Portunus project?
[54:21] Christopher David: There we go.
[54:25] Christopher David: The Portunus project is an ambitious plan to construct six floating megaports off the coast of the United States.
[54:34] Christopher David: These megaports would be 400 acres in size and located approximately 20 to 40 miles offshore.
[54:40] Christopher David: Beyond the 12-mile territorial limit of the U.S., the megaboards would be assembled from modules that are self-powered by wind turbines and wave energy converters.
[54:49] Christopher David: The search results provide a brief overview of the pretentious project and its key features.
[54:54] Christopher David: The search results.
[54:58] Christopher David: Okay.
[54:58] Christopher David: Well,
[54:59] Christopher David: cool.
[55:02] Christopher David: Now if I say what is seasteading.
[55:11] Christopher David: And we get these footnotes, but I don't know what those are supposed to link to.
[55:16] Christopher David: I mean, I'm sure it's linked in the metadata.
[55:21] Christopher David: That's really cool.
[55:23] Christopher David: Okay,
[55:24] Christopher David: so none of this concatenation stuff.
[55:29] Christopher David: Okay,
[55:29] Christopher David: so change response message
[55:36] Christopher David: to be the summary.
[55:38] Christopher David: Now it's actually coherent.
[55:41] Christopher David: What was I doing over here?
[55:44] Christopher David: Okay,
[55:45] Christopher David: that's where we left off.
[55:47] Christopher David: First,
[55:48] Christopher David: let's do that and push that up.
[55:52] Christopher David: Okay, we've got reasonable answers coming back from what I uploaded previously because I've hard-coded the corpus number.
[56:02] Christopher David: Now we need to create the corpus based on the PDF that's uploaded.
[56:18] Christopher David: And in this case, we're not going to use a fake document.
[56:24] Christopher David: We're going to use a real document,
[56:26] Christopher David: same as our test.
[56:50] Christopher David: And what are we going to want to happen?
[56:53] Christopher David: This copilot seemed to want us to have a user
[57:00] Christopher David: own a Quora.
[57:09] Christopher David: But I don't want the agent to have a Quora.
[57:16] Christopher David: I do want...
[57:20] Christopher David: the agent to
[57:24] Christopher David: have a
[57:36] Christopher David: corpus of knowledge.
[57:41] Christopher David: In my previous formulation of this,
[57:48] Christopher David: I've called this like a
[57:49] Christopher David: brain brain
[57:53] Christopher David: equals corpus back
[58:09] Christopher David: to forge and just test this out and then we will think through it so right now this is hard-coded to chat over the c-static doc
[58:19] Christopher David: What is he setting?
[58:27] Christopher David: Ooh, yeah.
[58:28] Christopher David: Ooh, citations colon.
[58:32] Christopher David: What is the Portunis project?
[58:47] Christopher David: Now here's a thing that I want to know.
[58:50] Christopher David: Are these citations from the PDF that I uploaded,
[58:52] Christopher David: which I do believe has citations, or is this augmenting it from GPT, which would be bad?
[59:08] Christopher David: Who is Patrick Takahashi?
[59:26] Christopher David: What is Patrick Takahashi's blue
[59:33] Christopher David: revolution?
[59:46] Christopher David: Okay,
[59:47] Christopher David: it's kind of annoying how it keeps saying the search results, the search results.
[59:51] Christopher David: But this is not horrible.
[59:54] Christopher David: It's something to work with.
[01:00:02] Christopher David: Okay, let's do the last leg of this,
[01:00:04] Christopher David: which is getting the corpuses attached to the actual files that we're uploading.
[01:00:32] Christopher David: What do I want to happen?
[01:00:34] Christopher David: I do want it to create a corpus,
[01:00:35] Christopher David: but
[01:00:38] Christopher David: I don't know how I want to represent that corpus in our data model.
[01:00:45] Christopher David: I don't really want to have to commit to that or think through that really.
[01:00:49] Christopher David: Brains, I just don't know how much of that we're going to want to keep.
[01:00:57] Christopher David: What do we need? We need the corpus to be associated with the user or with the agent.
[01:01:07] Christopher David: I guess the first thing we need is uploading
[01:01:13] Christopher David: a file. For now, it's like uploading a file creates an agent.
[01:01:32] Christopher David: Yeah, and
[01:01:37] Christopher David: I know that's not going to pass yet.
[01:02:10] Christopher David: Okay, so we're going to assert first that the user does not have any agents.
[01:02:16] Christopher David: That's easy.
[01:02:46] Christopher David: So you're saying in file controller,
[01:02:48] Christopher David: we
[01:02:54] Christopher David: should what,
[01:02:55] Christopher David: create an agent for this, but
[01:03:02] Christopher David: there might not be a user.
[01:03:08] Christopher David: Should we start a session?
[01:03:18] Christopher David: I could store the corpus ID in session.
[01:03:26] Christopher David: Yo.
[01:03:28] Christopher David: Save something in the...
[01:03:30] Christopher David: Where do I get the corpus ID back from Bektar?
[01:03:32] Christopher David: That's what I want to know.
[01:03:39] Christopher David: Did I get anything back from this method?
[01:03:46] Christopher David: It's not actually uploading it in the unit test.
[01:03:54] Speaker B: Let me uncomment that for now.
[01:04:15] Christopher David: Uploading a file is not going to create a corpus.
[01:04:19] Christopher David: We have to create a corpus.
[01:04:25] Christopher David: Should I be bad and just go implement it directly without test?
[01:04:34] Christopher David: When you upload a file...
[01:04:45] Christopher David: Instead of uploading it to a corpus that's hard-coded, we're going to first create a corpus.
[01:05:19] Christopher David: come back later and clean this stuff up but I just want to get it implemented really quickly here so we're gonna create a corpus with
[01:05:29] Christopher David: like the name of the file agents
[01:05:54] Christopher David: Name cannot be more than 50 characters long. Okay,
[01:05:56] Christopher David: the path is I guess super long there
[01:06:26] Christopher David: Corpus creation failed. Maximum number of corpora reached.
[01:06:30] Christopher David: 10 allowed.
[01:06:34] Christopher David: Okay,
[01:06:35] Christopher David: billing.
[01:06:45] Christopher David: 10 of 10 corpora.
[01:06:52] Christopher David: Yeah,
[01:06:53] Christopher David: how many?
[01:06:58] Christopher David: How many?
[01:07:12] Christopher David: I don't want to contact sales.
[01:09:37] Christopher David: Okay!
[01:11:06] Christopher David: Okay,
[01:11:06] Christopher David: we are not going to do corpus creation based on DOC because that doesn't work with their pricing model.
[01:11:31] Christopher David: plan is 10 corpora the scale plan which requires talking to sales is up to five others i'm not going to talk to sales i don't want to so um for now we're just going to do one we're going to throw everyone everyone's doc into one corp sucks but that's too bad i would like happily have a card just auto scaling
[01:11:56] Christopher David: like charge me for it but i'm not gonna talk to a salesman so uh
[01:12:03] Christopher David: for now we'll just throw everything into one corpora and we may as well just keep throwing in six um
[01:12:11] Christopher David: so if we're just throwing everything into one corpora corpus then oh
[01:12:23] Christopher David: i deleted corpus six
[01:12:27] Christopher David: Let's throw it into corpus for
[01:12:31] Christopher David: and
[01:12:46] Christopher David: then when we upload oh yeah creates an agent
[01:12:54] Christopher David: I was going to do create an agent in order to associate the corpus with the agents,
[01:13:01] Christopher David: but if it's all in one corpus, that's
[01:13:10] Christopher David: not relevant.
[01:13:12] Christopher David: Okay.
[01:13:17] Christopher David: Just make sure our test passed.
[01:13:22] Christopher David: They do.
[01:13:31] Christopher David: Right now, this is aimed at Corpus 4,
[01:13:35] Christopher David: Corpus
[01:13:42] Christopher David: ID 3, the C study.
[01:13:45] Christopher David: And right now we are uploading docs to Corpus 4.
[01:14:26] Christopher David: Is that it?
[01:14:40] Christopher David: Corpus of I am.
[01:15:05] Christopher David: So if I am uploading,
[01:15:20] Christopher David: okay, so for now I'm uploading to Corpus 4,
[01:15:23] Christopher David: which
[01:15:26] Christopher David: I'm going to rename to
[01:15:48] Christopher David: I don't see that I can rename it.
[01:15:50] Christopher David: Okay.
[01:15:57] Christopher David: Let's go pull in a
[01:16:03] Christopher David: new PDF.
[01:16:08] Christopher David: I'm going to download this PDF called Motion GPT.
[01:16:14] Christopher David: And what I want to try to do...
[01:16:18] Christopher David: Let's go to open agents and
[01:16:22] Christopher David: I want to chat.
[01:16:26] Christopher David: Oh, it's hard coded.
[01:16:28] Christopher David: Need to unhard code it.
[01:16:48] Christopher David: So what I'm expecting to happen is documents that I upload in that front end are uploaded to Vectara.
[01:16:56] Christopher David: I'm going to the chat and then I'm able to chat with the corpus.
[01:17:00] Christopher David: And in this case, we're just not creating one corpus per document or per user.
[01:17:04] Christopher David: That is the logical thing to do.
[01:17:07] Christopher David: But I'm limited to 10 to 10 corpus. So we're going to rethink that.
[01:17:13] Christopher David: But I just want to see it working with a doc, you know, chatting over a document that I upload.
[01:17:21] Christopher David: Uh, did that go?
[01:17:24] Christopher David: Looks like it did.
[01:17:27] Christopher David: Let's see what's cooking.
[01:17:29] Christopher David: Let's drop our ocean GPT thing there.
[01:17:36] Christopher David: Request entity too large.
[01:17:43] Christopher David: Because it's over
[01:17:47] Christopher David: a megabyte.
[01:18:06] Christopher David: You know what,
[01:18:06] Christopher David: don't I have an auto GPD PDF?
[01:18:11] Christopher David: Here we go.
[01:18:13] Christopher David: Here's a tiny PDF I know I have.
[01:18:15] Christopher David: Where do we go?
[01:18:20] Christopher David: Okay.
[01:18:22] Christopher David: I just want to do something that I know works. We'll figure out the size of PDFs later. I've got a tiny PDF called auto GPT UI design document.
[01:18:45] Christopher David: What are AI agents?
[01:18:52] Christopher David: Good.
[01:18:54] Christopher David: Now,
[01:18:54] Christopher David: what's
[01:18:57] Christopher David: a good question for this document?
[01:19:09] Christopher David: What is the chat view?
[01:19:24] Christopher David: Let's see if it made it into our corpus.
[01:19:29] Christopher David: It was 38.2 KB. It is now 43.3 KIB.
[01:19:33] Christopher David: So it was uploaded,
[01:19:34] Christopher David: but I called this, I'm guessing that why this didn't work is because I called it the document AutoGPTUI design document,
[01:19:45] Christopher David: but the text does not.
[01:19:48] Christopher David: Well,
[01:19:49] Christopher David: it says it there.
[01:19:56] Christopher David: Tell me about the...
[01:20:31] Christopher David: This is not good.
[01:20:39] Christopher David: The search results do not contain enough information,
[01:20:41] Christopher David: but why is this in German?
[01:21:40] Christopher David: Any difference local host?
[01:21:49] Christopher David: I have to try that again because does
[01:21:58] Christopher David: it like take time to process?
[01:22:12] Christopher David: Why is that returning in German?
[01:22:22] Christopher David: Oops, I misspelled that.
[01:22:30] Christopher David: Okay.
[01:22:34] Christopher David: Is this correct?
[01:22:36] Christopher David: Is the user interface designed to facilitate?
[01:22:43] Christopher David: Look at this.
[01:22:46] Christopher David: Is a user interface designed to facilitate discussions and interactions with a single agent?
[01:22:56] Christopher David: It aims to assist users in various tasks by providing a platform for exchanging information and engaging in conversation with an AI agent.
[01:23:09] Christopher David: While the search results...
[01:23:12] Christopher David: did not provide detailed information,
[01:23:15] Christopher David: it can be inferred that AutoGPT chat view is a tool that allows users to communicate and collaborate with an AI agent for different persons.
[01:23:26] Christopher David: Okay,
[01:23:26] Christopher David: this is pure hallucination.
[01:23:30] Christopher David: I don't know what the fuck is going on.
[01:23:36] Christopher David: Vive W isn't a thing.
[01:23:40] Christopher David: If the search results didn't provide detailed information,
[01:23:42] Christopher David: why are you saying any of this?
[01:23:47] Christopher David: They're clearly passing some results it got,
[01:23:50] Christopher David: probably from...
[01:23:53] Christopher David: Can I even see it?
[01:23:56] Christopher David: Yeah, let's see.
[01:23:57] Christopher David: Let's take a look under the hood and see what's actually getting back here.
[01:24:14] Christopher David: Let's try that again.
[01:24:35] Christopher David: The AutoGPT UI is designed to facilitate users in discussing various tasks with a single agent.
[01:24:52] Christopher David: Yeah,
[01:24:53] Christopher David: let's pull it from there.
[01:24:53] Christopher David: That's good.
[01:25:07] Christopher David: Okay,
[01:25:07] Christopher David: well,
[01:25:08] Christopher David: it at least has the data in there now.
[01:25:11] Christopher David: I just, I don't know that I like, I don't know that I like the algorithm.
[01:25:16] Christopher David: Let's try this.
[01:25:20] Christopher David: Tell me about it.
[01:25:27] Christopher David: Bro, that's the name of the file.
[01:25:31] Christopher David: That's the name of the file.
[01:25:54] Christopher David: Okay,
[01:25:55] Christopher David: so...
[01:25:57] Christopher David: What this tells me is that there's like potential in
[01:26:05] Christopher David: the idea of because like sometimes it produces a great answer and then sometimes it puts stuff in like another language.
[01:26:13] Christopher David: Why is it doing this? I have language set to auto.
[01:26:16] Christopher David: I'm not speaking Spanish.
[01:26:19] Christopher David: Sorry,
[01:26:19] Christopher David: Italian.
[01:26:25] Christopher David: So, like, we're just going to need to do our own thing.
[01:26:32] Christopher David: I'm going to try to play with this a little bit more.
[01:26:51] Christopher David: That sounds like some bullshit from GPT.
[01:27:17] Christopher David: Yeah,
[01:27:17] Christopher David: this isn't it didn't answer my question.
[01:27:20] Christopher David: I said what uses it and very clearly auto GBT uses it and it's it is querying the document,
[01:27:28] Christopher David: but
[01:27:36] Christopher David: then it's like passing it somehow to chat GPT and I don't know what that prompt is.
[01:27:41] Christopher David: I'm guessing that there's a way in this.
[01:27:45] Christopher David: vector thing for me too i
[01:27:51] Christopher David: mean i don't know but it's at the point now where like i i don't want to like have to try to learn about how they're doing the prompts for the summaries
[01:28:14] Christopher David: There are services that are trying to solve needs for a whole bunch of people in a domain like Rak.
[01:28:21] Christopher David: And I'm just not a whole bunch of people. I have specific needs and specific expectations that are not being satisfied by this,
[01:28:29] Christopher David: apparently.
[01:28:34] Christopher David: But we learned a bunch from it.
[01:28:36] Christopher David: And I'm sure if we were to like...
[01:28:39] Christopher David: spend enough time with it we could figure out how to kind of massage it make it work for us but the problem with that is that um that's time not spent building up from first principles that's wrangling with some other persons yeah and i don't want to do that um but that's okay so we made some definite progress here we have the ability to um
[01:29:08] Christopher David: chat over a document we like seeing how it looks and should feel and we know that we need to upgrade our rag algorithms bring it more under our control we may check out this argue flow thing scripture
[01:29:32] Christopher David: and had done one bounty for us and i think it's working on
[01:29:37] Christopher David: Another one.
[01:29:49] Christopher David: So we'll leave it there for now.
[01:29:51] Christopher David: We have basic chat over a document kind of sort of working up here.
[01:29:54] Christopher David: You can test it out by,
[01:29:56] Christopher David: you
[01:29:59] Christopher David: know, we might even do just hard code the skip over.
[01:30:08] Christopher David: Hibernate. Hibernate. I'll put this back to corpus3.
[01:30:13] Christopher David: I'm going to hard code the file name.
[01:30:19] Christopher David: Where was that?
[01:30:21] Christopher David: Upload doc form.
[01:30:24] Christopher David: Yeah.
[01:30:36] Christopher David: So for demonstration purposes,
[01:30:37] Christopher David: I don't want people uploading their own docs because we're probably not going to use Vector moving forward because of the corpora limit and I don't want to pay them for something that we can develop ourselves and learning and having more control over.
[01:30:53] Christopher David: But it was great for demo purposes and, you know, best of luck to them.
[01:31:08] Christopher David: So for now, we will leave our application in the state such that, yeah,
[01:31:15] Christopher David: tell
[01:31:18] Christopher David: me about T-Study.
[01:31:24] Christopher David: Yeah, okay,
[01:31:25] Christopher David: so we're going to change that chat message on the empty screen to say demo mode.
[01:31:32] Christopher David: Ask questions about...
[01:31:36] Christopher David: seasteading and oceanic civilization.
[01:31:58] Christopher David: I love Forge and how fast it uploads.
[01:32:06] Christopher David: Six, seven,
[01:32:08] Christopher David: ten,
[01:32:27] Christopher David: that took a good 20 seconds.
[01:32:32] Christopher David: Let's see if it works.
[01:32:33] Christopher David: Do-do-do.
[01:32:34] Christopher David: Demo mode. Ask questions about seasteading and oceanic civilization.
[01:32:39] Christopher David: What are you talking about?
[01:32:45] Christopher David: What is seasteading? Cool.
[01:32:55] Christopher David: What is...
[01:32:57] Christopher David: Is kelp good for,
[01:32:59] Christopher David: I don't know, is that answered anywhere?
[01:33:05] Christopher David: Kelp, a brown seaweed,
[01:33:06] Christopher David: has various beneficial characteristics.
[01:33:10] Christopher David: What is hempcrete?
[01:33:21] Christopher David: Can I make a sea platform out of hempcrete?
[01:33:29] Christopher David: yeah so this is um this isn't really like one coherent conversation because we're not passing the context back it's not like all powered by an llm it's just llm is only used to like synthesize from the search results um oh and i see i didn't didn't know what to do there um but we have basic chat over doc you can see that like it's cool that it kind of works there's limitations with it the rag piece of it needs to be upgraded
[01:33:56] Christopher David: of the algorithms need to be tweaked but that's a great stopping point for this video and what will we do in the next video yeah
[01:34:10] Christopher David: probably build rag step-by-step ourselves using embeddings now that we have a kind of idea of how it should feel we'll just do rag
[01:34:23] Christopher David: ourselves and build it up building block by building block and control the hell out of it
[01:34:29] Christopher David: see you soon