Compare commits

..

2 Commits

Author SHA1 Message Date
Logan Markewich bc759388f2 changeset 2025-07-07 11:44:17 -06:00
Logan Markewich 2c997f76f2 add title 2025-07-07 11:36:28 -06:00
33 changed files with 963 additions and 836 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@llamaindex/doc": patch
---
Add title to homepage header
-5
View File
@@ -1,5 +0,0 @@
---
"@llamaindex/core": patch
---
Fix createMemory factory when parsing options
-5
View File
@@ -1,5 +0,0 @@
---
"@llamaindex/examples": patch
---
Fix xai dependency in the examples
+1 -54
View File
@@ -38,7 +38,6 @@ npm install -g pnpm
```shell
pnpm install
pnpm install -g tsx
```
### Build the packages
@@ -49,56 +48,6 @@ To build all packages, run:
pnpm build
```
### Start Developing
You can launch the package in dev-mode by running:
```shell
pnpm dev
```
This will use turbo to run all packages in watch-mode. This means you can make changes and have them automatically built.
If you want to customize what packages are built/watched, you can run turbo directly and adjust the filter:
```shell
pnpm turbo run dev --filter="./packages/core" --concurrency=100
```
In another terminal, you can write and run any script needed to quickly test your changes. For example:
```typescript
import { createMemory, staticBlock } from "@llamaindex/core/memory";
// Create memory with predefined context
const memory = createMemory({
memoryBlocks: [
staticBlock({
content:
"The user is a software engineer who loves TypeScript and LlamaIndex.",
messageRole: "system",
}),
],
});
async function main() {
const result = await memory.getLLM();
console.log(result);
}
void main().catch(console.error);
```
And run it with:
```shell
pnpm exec tsx my_script.ts
```
This flow allows you to easily test your changes without having to build the entire project.
Once you are happy with your changes, be sure to add tests (and confirm existing tests are passing!).
### Run tests
#### Unit tests
@@ -143,7 +92,7 @@ Before sending a PR, make sure of the following:
3. If you have a new feature, add a new example in the `examples` folder.
4. You have a descriptive changeset for each PR:
### Bumping the versions of packages you've modified
### Changesets
We use [changesets](https://github.com/changesets/changesets) for managing versions and changelogs. To create a new
changeset, run in the root folder:
@@ -152,8 +101,6 @@ changeset, run in the root folder:
pnpm changeset
```
You will be prompted to choose what packages need their versions bumped, and what kind of bump (major, minor or patch) is needed. Once you carry out this operation, the bumping will be automatic after the PR is merged.
## Publishing (maintainers only)
The [Release Github Action](.github/workflows/release.yml) is automatically generating and updating a
-6
View File
@@ -1,11 +1,5 @@
# @llamaindex/doc
## 0.2.34
### Patch Changes
- 39758ab: Add title to homepage header
## 0.2.33
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/doc",
"version": "0.2.34",
"version": "0.2.33",
"private": true,
"scripts": {
"postinstall": "fumadocs-mdx",
@@ -35,7 +35,7 @@
"@radix-ui/react-tooltip": "^1.1.4",
"@scalar/api-client-react": "^1.1.25",
"@vercel/functions": "^1.5.0",
"ai": "^4.3.17",
"ai": "^3.4.33",
"class-variance-authority": "^0.7.0",
"clsx": "2.1.1",
"foxact": "^0.2.41",
@@ -70,7 +70,7 @@
"twoslash": "^0.3.1",
"use-stick-to-bottom": "^1.0.42",
"web-tree-sitter": "^0.24.4",
"zod": "^3.25.76"
"zod": "^3.25.67"
},
"devDependencies": {
"@next/env": "^15.3.0",
@@ -94,6 +94,6 @@
"typedoc": "0.28.3",
"typedoc-plugin-markdown": "^4.6.2",
"typedoc-plugin-merge-modules": " ^7.0.0",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
}
}
+1 -1
View File
@@ -11,7 +11,7 @@
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20241112.0",
"typescript": "^5.8.3",
"typescript": "^5.7.3",
"wrangler": "^3.89.0"
},
"dependencies": {
@@ -16,7 +16,7 @@
"@cloudflare/workers-types": "^4.20241112.0",
"@vitest/runner": "2.1.5",
"@vitest/snapshot": "2.1.5",
"typescript": "^5.8.3",
"typescript": "^5.7.3",
"vitest": "2.1.5",
"wrangler": "^3.87.0"
},
@@ -9,7 +9,7 @@
"preview": "vite preview"
},
"devDependencies": {
"typescript": "^5.8.3",
"typescript": "^5.7.3",
"vite": "^6.3.3",
"vite-plugin-wasm": "^3.4.1"
},
+2 -2
View File
@@ -8,7 +8,7 @@
"start": "next start"
},
"dependencies": {
"ai": "^4.3.17",
"ai": "^4.0.0",
"llamaindex": "workspace:*",
"next": "^15.3.3",
"react": "19.0.0",
@@ -20,6 +20,6 @@
"@types/react-dom": "^19.0.4",
"eslint": "9.16.0",
"eslint-config-next": "15.1.0",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
}
}
@@ -17,6 +17,6 @@
"@types/node": "^22.9.0",
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
}
}
@@ -21,6 +21,6 @@
"@types/react-dom": "^19.0.4",
"eslint": "9.16.0",
"eslint-config-next": "15.1.0",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
}
}
@@ -15,7 +15,7 @@
"devDependencies": {
"@size-limit/preset-big-lib": "^11.1.6",
"size-limit": "^11.1.6",
"typescript": "^5.8.3",
"typescript": "^5.7.3",
"vite": "^6.3.3"
},
"dependencies": {
+1 -1
View File
@@ -22,6 +22,6 @@
"@types/react-dom": "19.0.4",
"rollup": "4.38.0",
"tailwindcss": "^4.1.4",
"typescript": "5.8.3"
"typescript": "5.7.3"
}
}
+1 -1
View File
@@ -27,6 +27,6 @@
"pg": "^8.12.0",
"pgvector": "0.2.0",
"tsx": "^4.19.3",
"zod": "^3.25.76"
"zod": "^3.25.67"
}
}
+7 -31
View File
@@ -1,10 +1,9 @@
# LlamaIndexTS Examples
This package contains several examples of how to use LlamaIndexTS.
Before running any of the code examples,
make sure you have basic knowledge of the [LlamaIndexTS](https://ts.llamaindex.ai/).
Most examples will use OpenAI by default, so be sure to set your API key.
## Running Examples
## Usage
```shell
# export your API key
@@ -13,31 +12,8 @@ export OPENAI_API_KEY="sk-..."
npx tsx ./rag/chatEngine.ts
```
## Recommended Starter Examples
## Build your own RAG app
Agents:
- [Basic OpenAI Agent with Tools](./agents/agent/openai.ts)
- [Agent with MCP Tools](./agents/agent/mcp-tools.ts)
- [Customizing Memory](./agents/memory/agent-memory.ts)
Workflows:
- [Workflow basics](./agents/workflow/joke.ts)
- [Find more workflow examples in the `workflows-ts` repo!](https://github.com/run-llama/workflows-ts)
Indexing, Retrieval, and Querying:
- [Basic Vector Indexing + Query Engine](./index/vectorIndex.ts)
- [Agent + Query Engine Tool](./agents/agent/query-tool.ts)
Multimodal:
- [Multimodal RAG](./multimodal/rag.ts)
- [Multimodal Chat](./multimodal/context.ts)
Some more general folders that might be useful to explore:
- [storage](./storage/): Examples with various vector stores
- [readers](./readers/): Examples of how to use the various readers
- [models](./models/): Examples of how to use the various LLMs and embedding models from many providers
```shell
npx create llama
```
+5 -2
View File
@@ -1,6 +1,9 @@
import { openai } from "@llamaindex/openai";
import { createWorkflow, workflowEvent } from "@llamaindex/workflow-core";
import { createStatefulMiddleware } from "@llamaindex/workflow-core/middleware/state";
import {
createStatefulMiddleware,
createWorkflow,
workflowEvent,
} from "@llamaindex/workflow";
// Create LLM instance
const llm = openai({ model: "gpt-4.1-mini" });
+4 -5
View File
@@ -56,12 +56,11 @@
"@llamaindex/voyage-ai": "^1.0.19",
"@llamaindex/weaviate": "^0.0.28",
"@llamaindex/workflow": "^1.1.13",
"@llamaindex/workflow-core": "^1.0.0",
"@llamaindex/xai": "^0.0.10",
"@llamaindex/xai": "workspace:^0.0.10",
"@notionhq/client": "^2.2.15",
"@pinecone-database/pinecone": "^4.0.0",
"@vercel/postgres": "^0.10.0",
"ai": "^4.3.17",
"ai": "^4.0.0",
"ajv": "^8.17.1",
"commander": "^12.1.0",
"dotenv": "^16.4.5",
@@ -70,12 +69,12 @@
"mongodb": "6.7.0",
"postgres": "^3.4.4",
"wikipedia": "^2.1.2",
"zod": "^3.25.76"
"zod": "^3.25.67"
},
"devDependencies": {
"@types/node": "^22.9.0",
"tsx": "^4.19.3",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
},
"stackblitz": {
"startCommand": "npm start"
+2 -2
View File
@@ -21,13 +21,13 @@
},
"dependencies": {
"@llamaindex/cloud": "workspace:* || ^2.0.24",
"@llamaindex/excel": "workspace:*",
"@llamaindex/readers": "workspace:* || ^1.0.25",
"@llamaindex/excel": "workspace:*",
"llamaindex": "workspace:* || ^0.8.37"
},
"devDependencies": {
"@types/node": "^22.9.0",
"tsx": "^4.19.3",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
}
}
+2 -2
View File
@@ -4,7 +4,7 @@
"scripts": {
"clean": "find . -type d \\( -name .turbo -o -name node_modules -o -name dist -o -name .next -o -name lib \\) -exec rm -rf {} +",
"build": "turbo run build --filter=\"./packages/*\" --filter=\"./packages/providers/**\"",
"dev": "turbo run dev --filter=\"./packages/*\" --filter=\"./packages/providers/**\" --concurrency=100",
"dev": "turbo run dev --filter=\"./packages/*\" --filter=\"./packages/providers/**\"",
"format": "prettier --ignore-unknown --cache --check .",
"format:write": "prettier --ignore-unknown --write .",
"lint": "turbo run lint",
@@ -37,7 +37,7 @@
"prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-tailwindcss": "^0.6.11",
"turbo": "^2.4.4",
"typescript": "^5.8.3",
"typescript": "^5.7.3",
"typescript-eslint": "^8.18.0",
"vitest": "^3.1.1"
},
+1 -1
View File
@@ -79,7 +79,7 @@
"next": "^15.3.3",
"rollup": "^4.28.1",
"tsx": "^4.19.3",
"typescript": "^5.8.3",
"typescript": "^5.7.3",
"vitest": "^2.1.5",
"webpack": "^5.97.1"
}
+1 -1
View File
@@ -79,6 +79,6 @@
},
"dependencies": {
"p-retry": "^6.2.1",
"zod": "^3.25.76"
"zod": "^3.25.67"
}
}
+1 -1
View File
@@ -312,7 +312,7 @@
"@llamaindex/env": "workspace:*",
"@types/node": "^22.9.0",
"magic-bytes.js": "^1.10.0",
"zod": "^3.25.76",
"zod": "^3.25.67",
"zod-to-json-schema": "^3.24.6"
}
}
+1 -12
View File
@@ -79,18 +79,7 @@ export function createMemory<TMessageOptions extends object = object>(
}
}
}
// Determine the correct options to pass to Memory
const resolvedOptions: MemoryOptions<TMessageOptions> = Array.isArray(
messagesOrOptions,
)
? options
: (messagesOrOptions as MemoryOptions<TMessageOptions>);
return new Memory<Record<string, never>, TMessageOptions>(
messages,
resolvedOptions,
);
return new Memory<Record<string, never>, TMessageOptions>(messages, options);
}
/**
+1 -44
View File
@@ -1,6 +1,6 @@
import { Settings } from "@llamaindex/core/global";
import type { ChatMessage, LLM } from "@llamaindex/core/llms";
import { createMemory, Memory, staticBlock } from "@llamaindex/core/memory";
import { createMemory, Memory } from "@llamaindex/core/memory";
import { MockLLM } from "@llamaindex/core/utils";
import type { Tokenizer } from "@llamaindex/env/tokenizers";
import {
@@ -392,47 +392,4 @@ describe("Memory", () => {
expect(messages[0]?.role).toBe("user"); // data role should be mapped to user
});
});
describe("memoryBlocks initialization", () => {
test("should include static block content in getLLM result", async () => {
const STATIC_CONTENT = "You are speaking with a helpful assistant.";
const block = staticBlock({
content: STATIC_CONTENT,
messageRole: "system",
});
const memoryWithBlock = createMemory({ memoryBlocks: [block] });
// Fetch messages via getLLM static block (priority 0) should always be present
const messages = await memoryWithBlock.getLLM();
// There should be exactly one message (the static block) when no other messages are added
expect(messages).toHaveLength(1);
expect(messages[0]?.content).toBe(STATIC_CONTENT);
expect(messages[0]?.role).toBe("system");
});
test("should retain static block alongside dynamic messages", async () => {
const STATIC_CONTENT = "Always respond in pirate speak.";
const block = staticBlock({
content: STATIC_CONTENT,
messageRole: "system",
});
const memoryWithBlock = createMemory({ memoryBlocks: [block] });
// Add a regular user message
await memoryWithBlock.add({ role: "user", content: "Hello there!" });
const messages = await memoryWithBlock.getLLM();
// Static block + user message
expect(messages).toHaveLength(2);
const contents = messages.map((m) => m.content);
expect(contents).toEqual(
expect.arrayContaining([STATIC_CONTENT, "Hello there!"]),
);
});
});
});
+1 -1
View File
@@ -33,7 +33,7 @@
"devDependencies": {
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*",
"zod": "^3.25.76"
"zod": "^3.25.67"
},
"peerDependencies": {
"@llamaindex/core": "workspace:*",
+3 -4
View File
@@ -39,12 +39,11 @@
"test": "vitest run"
},
"devDependencies": {
"@llamaindex/core": "workspace:*",
"ai": "^4.3.17",
"vitest": "^2.1.5"
"vitest": "^2.1.5",
"@llamaindex/core": "workspace:*"
},
"dependencies": {
"zod": "^3.25.76"
"zod": "^3.25.67"
},
"peerDependencies": {
"@llamaindex/core": "workspace:*",
+3 -3
View File
@@ -1,7 +1,7 @@
import { Settings } from "@llamaindex/core/global";
import type { BaseQueryEngine } from "@llamaindex/core/query-engine";
import { EngineResponse } from "@llamaindex/core/schema";
import { type LanguageModelV1, type Tool, tool } from "ai";
import { type CoreTool, type LanguageModelV1, tool } from "ai";
import { z } from "zod";
import { VercelLLM } from "./llm";
@@ -23,9 +23,9 @@ export function llamaindex({
options?: {
fields?: ResponseField[];
};
}): Tool {
}): CoreTool {
const llm = new VercelLLM({ model });
return Settings.withLLM<Tool>(llm, () => {
return Settings.withLLM<CoreTool>(llm, () => {
const queryEngine = index.asQueryEngine();
return tool({
description: description ?? "Get information about your documents.",
+5 -5
View File
@@ -32,13 +32,13 @@
"test:watch": "vitest watch"
},
"devDependencies": {
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*",
"@modelcontextprotocol/server-filesystem": "^2025.7.1",
"@types/node": "^22.9.0",
"@types/papaparse": "^5.3.15",
"ajv": "^8.12.0",
"vitest": "^2.1.5"
"vitest": "^2.1.5",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*",
"ajv": "^8.12.0"
},
"peerDependencies": {
"@llamaindex/core": "workspace:*",
@@ -54,6 +54,6 @@
"marked": "^14.1.2",
"papaparse": "^5.4.1",
"wikipedia": "^2.1.2",
"zod": "^3.25.76"
"zod": "^3.25.67"
}
}
+1 -1
View File
@@ -11,7 +11,7 @@
"@swc/cli": "^0.5.0",
"@swc/core": "^1.9.2",
"assemblyscript": "^0.27.31",
"typescript": "^5.8.3"
"typescript": "^5.7.3"
},
"engines": {
"node": ">=20.0.0"
+901 -633
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -16,10 +16,10 @@
"test:node": "pnpm run build:node && node --test dist/node/index.e2e.js"
},
"devDependencies": {
"@llamaindex/openai": "workspace:*",
"@llamaindex/workflow": "workspace:*",
"@types/node": "^22.9.0",
"llamaindex": "workspace:*",
"zod": "^3.25.76"
"@llamaindex/workflow": "workspace:*",
"@llamaindex/openai": "workspace:*",
"zod": "^3.25.67"
}
}
+1 -1
View File
@@ -27,6 +27,6 @@
"tree-sitter": "^0.22.1",
"tree-sitter-javascript": "^0.23.1",
"tree-sitter-typescript": "^0.23.2",
"zod": "^3.25.76"
"zod": "^3.25.67"
}
}