Skip to content

Commit f2c3389

Browse files
chore: update to llamaindex 0.4.3 (#143)
--------- Co-authored-by: Alex Yang <[email protected]>
1 parent 5093b37 commit f2c3389

File tree

7 files changed

+35
-83
lines changed

7 files changed

+35
-83
lines changed

.changeset/happy-lamps-rush.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"create-llama": patch
3+
---
4+
5+
chore: update to llamaindex 0.4.3

templates/types/streaming/express/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"dotenv": "^16.3.1",
2121
"duck-duck-scrape": "^2.2.5",
2222
"express": "^4.18.2",
23-
"llamaindex": "0.3.16",
23+
"llamaindex": "0.4.3",
2424
"pdf2json": "3.0.5",
2525
"ajv": "^8.12.0",
2626
"@e2b/code-interpreter": "^0.0.5",

templates/types/streaming/express/src/controllers/llamaindex-stream.ts

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,12 @@ import {
77
type AIStreamCallbacksAndOptions,
88
} from "ai";
99
import {
10+
EngineResponse,
1011
MessageContent,
1112
MessageContentDetail,
12-
Metadata,
13-
NodeWithScore,
14-
Response,
15-
ToolCallLLMMessageOptions,
1613
} from "llamaindex";
1714

18-
import { AgentStreamChatResponse } from "llamaindex/agent/base";
19-
import { CsvFile, appendSourceData } from "./stream-helper";
20-
21-
type LlamaIndexResponse =
22-
| AgentStreamChatResponse<ToolCallLLMMessageOptions>
23-
| Response;
15+
import { CsvFile } from "./stream-helper";
2416

2517
export const convertMessageContent = (
2618
content: string,
@@ -86,39 +78,19 @@ const convertAnnotations = (
8678
return content;
8779
};
8880

89-
function createParser(
90-
res: AsyncIterable<LlamaIndexResponse>,
91-
data: StreamData,
92-
) {
81+
function createParser(res: AsyncIterable<EngineResponse>, data: StreamData) {
9382
const it = res[Symbol.asyncIterator]();
9483
const trimStartOfStream = trimStartOfStreamHelper();
9584

96-
let sourceNodes: NodeWithScore<Metadata>[] | undefined;
9785
return new ReadableStream<string>({
9886
async pull(controller): Promise<void> {
9987
const { value, done } = await it.next();
10088
if (done) {
101-
if (sourceNodes) {
102-
appendSourceData(data, sourceNodes);
103-
}
10489
controller.close();
10590
data.close();
10691
return;
10792
}
108-
109-
let delta;
110-
if (value instanceof Response) {
111-
// handle Response type
112-
if (value.sourceNodes) {
113-
// get source nodes from the first response
114-
sourceNodes = value.sourceNodes;
115-
}
116-
delta = value.response ?? "";
117-
} else {
118-
// handle other types
119-
delta = value.response.delta;
120-
}
121-
const text = trimStartOfStream(delta ?? "");
93+
const text = trimStartOfStream(value.delta ?? "");
12294
if (text) {
12395
controller.enqueue(text);
12496
}
@@ -127,7 +99,7 @@ function createParser(
12799
}
128100

129101
export function LlamaIndexStream(
130-
response: AsyncIterable<LlamaIndexResponse>,
102+
response: AsyncIterable<EngineResponse>,
131103
data: StreamData,
132104
opts?: {
133105
callbacks?: AIStreamCallbacksAndOptions;

templates/types/streaming/express/src/controllers/stream-helper.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ export function createStreamTimeout(stream: StreamData) {
8484
export function createCallbackManager(stream: StreamData) {
8585
const callbackManager = new CallbackManager();
8686

87-
callbackManager.on("retrieve", (data) => {
88-
const { nodes, query } = data.detail;
87+
callbackManager.on("retrieve-end", (data) => {
88+
const { nodes, query } = data.detail.payload;
89+
appendSourceData(stream, nodes);
8990
appendEventData(stream, `Retrieving context for query: '${query}'`);
9091
appendEventData(
9192
stream,

templates/types/streaming/nextjs/app/api/chat/llamaindex-stream.ts

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,12 @@ import {
77
type AIStreamCallbacksAndOptions,
88
} from "ai";
99
import {
10+
EngineResponse,
1011
MessageContent,
1112
MessageContentDetail,
12-
Metadata,
13-
NodeWithScore,
14-
Response,
15-
ToolCallLLMMessageOptions,
1613
} from "llamaindex";
1714

18-
import { AgentStreamChatResponse } from "llamaindex/agent/base";
19-
import { CsvFile, appendSourceData } from "./stream-helper";
20-
21-
type LlamaIndexResponse =
22-
| AgentStreamChatResponse<ToolCallLLMMessageOptions>
23-
| Response;
15+
import { CsvFile } from "./stream-helper";
2416

2517
export const convertMessageContent = (
2618
content: string,
@@ -86,39 +78,19 @@ const convertAnnotations = (
8678
return content;
8779
};
8880

89-
function createParser(
90-
res: AsyncIterable<LlamaIndexResponse>,
91-
data: StreamData,
92-
) {
81+
function createParser(res: AsyncIterable<EngineResponse>, data: StreamData) {
9382
const it = res[Symbol.asyncIterator]();
9483
const trimStartOfStream = trimStartOfStreamHelper();
9584

96-
let sourceNodes: NodeWithScore<Metadata>[] | undefined;
9785
return new ReadableStream<string>({
9886
async pull(controller): Promise<void> {
9987
const { value, done } = await it.next();
10088
if (done) {
101-
if (sourceNodes) {
102-
appendSourceData(data, sourceNodes);
103-
}
10489
controller.close();
10590
data.close();
10691
return;
10792
}
108-
109-
let delta;
110-
if (value instanceof Response) {
111-
// handle Response type
112-
if (value.sourceNodes) {
113-
// get source nodes from the first response
114-
sourceNodes = value.sourceNodes;
115-
}
116-
delta = value.response ?? "";
117-
} else {
118-
// handle other types
119-
delta = value.response.delta;
120-
}
121-
const text = trimStartOfStream(delta ?? "");
93+
const text = trimStartOfStream(value.delta ?? "");
12294
if (text) {
12395
controller.enqueue(text);
12496
}
@@ -127,7 +99,7 @@ function createParser(
12799
}
128100

129101
export function LlamaIndexStream(
130-
response: AsyncIterable<LlamaIndexResponse>,
102+
response: AsyncIterable<EngineResponse>,
131103
data: StreamData,
132104
opts?: {
133105
callbacks?: AIStreamCallbacksAndOptions;

templates/types/streaming/nextjs/app/api/chat/stream-helper.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ export function createStreamTimeout(stream: StreamData) {
8484
export function createCallbackManager(stream: StreamData) {
8585
const callbackManager = new CallbackManager();
8686

87-
callbackManager.on("retrieve", (data) => {
88-
const { nodes, query } = data.detail;
87+
callbackManager.on("retrieve-end", (data) => {
88+
const { nodes, query } = data.detail.payload;
89+
appendSourceData(stream, nodes);
8990
appendEventData(stream, `Retrieving context for query: '${query}'`);
9091
appendEventData(
9192
stream,

templates/types/streaming/nextjs/package.json

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
"lint": "next lint"
1111
},
1212
"dependencies": {
13+
"@apidevtools/swagger-parser": "^10.1.0",
14+
"@e2b/code-interpreter": "^0.0.5",
15+
"@llamaindex/pdf-viewer": "^1.1.1",
1316
"@radix-ui/react-collapsible": "^1.0.3",
1417
"@radix-ui/react-hover-card": "^1.0.7",
1518
"@radix-ui/react-slot": "^1.0.2",
@@ -19,45 +22,43 @@
1922
"clsx": "^2.1.1",
2023
"dotenv": "^16.3.1",
2124
"duck-duck-scrape": "^2.2.5",
22-
"llamaindex": "0.3.16",
25+
"formdata-node": "^6.0.3",
26+
"got": "^14.4.1",
27+
"llamaindex": "0.4.3",
2328
"lucide-react": "^0.294.0",
24-
"next": "^14.0.3",
29+
"next": "^14.2.4",
2530
"pdf2json": "3.0.5",
2631
"react": "^18.2.0",
2732
"react-dom": "^18.2.0",
2833
"react-markdown": "^8.0.7",
2934
"react-syntax-highlighter": "^15.5.0",
35+
"rehype-katex": "^7.0.0",
3036
"remark": "^14.0.3",
3137
"remark-code-import": "^1.2.0",
3238
"remark-gfm": "^3.0.1",
3339
"remark-math": "^5.1.1",
34-
"rehype-katex": "^7.0.0",
3540
"supports-color": "^8.1.1",
3641
"tailwind-merge": "^2.1.0",
37-
"vaul": "^0.9.1",
38-
"@llamaindex/pdf-viewer": "^1.1.1",
39-
"@e2b/code-interpreter": "^0.0.5",
42+
"tiktoken": "^1.0.15",
4043
"uuid": "^9.0.1",
41-
"got": "^14.4.1",
42-
"@apidevtools/swagger-parser": "^10.1.0",
43-
"formdata-node": "^6.0.3"
44+
"vaul": "^0.9.1"
4445
},
4546
"devDependencies": {
4647
"@types/node": "^20.10.3",
4748
"@types/react": "^18.2.42",
4849
"@types/react-dom": "^18.2.17",
4950
"@types/react-syntax-highlighter": "^15.5.11",
51+
"@types/uuid": "^9.0.8",
5052
"autoprefixer": "^10.4.16",
5153
"cross-env": "^7.0.3",
5254
"eslint": "^8.55.0",
53-
"eslint-config-next": "^14.0.3",
55+
"eslint-config-next": "^14.2.4",
5456
"eslint-config-prettier": "^8.10.0",
5557
"postcss": "^8.4.32",
5658
"prettier": "^3.2.5",
5759
"prettier-plugin-organize-imports": "^3.2.4",
5860
"tailwindcss": "^3.3.6",
5961
"tsx": "^4.7.2",
60-
"typescript": "^5.3.2",
61-
"@types/uuid": "^9.0.8"
62+
"typescript": "^5.3.2"
6263
}
6364
}

0 commit comments

Comments
 (0)