mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-01 22:14:03 -04:00
Compare commits
82 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5b4a53177e | |||
| 5da1cda939 | |||
| 1285e381bd | |||
| 5d5cd44276 | |||
| ed37c645af | |||
| c40adafecc | |||
| 995b465205 | |||
| 8929dcf1dd | |||
| af0b79f1cd | |||
| 1995b38660 | |||
| 001a5159cf | |||
| 9d7d2052e7 | |||
| fd90e25f0e | |||
| 97c00d67c3 | |||
| 6ebd7c2f13 | |||
| 0267bb0e8e | |||
| 7875ee91e6 | |||
| e3405fca44 | |||
| f3bc2b61e7 | |||
| 4c703767b7 | |||
| a27648200d | |||
| c93bb02002 | |||
| e9ded4e65f | |||
| 47a6f5fe5a | |||
| b80f33e264 | |||
| b6409b6823 | |||
| db3f556cb4 | |||
| 4b5179169b | |||
| 971d37ceba | |||
| 3e0ffdc688 | |||
| 049471bade | |||
| 1e296ebe72 | |||
| f9f1de9516 | |||
| f576812e7a | |||
| c3bf3c7178 | |||
| 38487da65d | |||
| f29799e385 | |||
| 9bca30620b | |||
| 7224c06409 | |||
| 29c7cf0989 | |||
| c65a2dc4a7 | |||
| f1c5079290 | |||
| 9ed31958a7 | |||
| e4c7113614 | |||
| 38da40bc98 | |||
| 4d50ca4d84 | |||
| 8b5253a297 | |||
| ea15e75c89 | |||
| 3be87d4670 | |||
| 94da13db0d | |||
| acd50ea99f | |||
| 2967d57ac0 | |||
| a8ec08c682 | |||
| 678b327051 | |||
| 650eeb1df3 | |||
| 50f6747758 | |||
| 12414a6836 | |||
| 856dd8cca8 | |||
| d8f4f6a859 | |||
| f594d7034f | |||
| c1c58feed2 | |||
| 7ad3411766 | |||
| a1fdb07b96 | |||
| 5da5b3c89c | |||
| ddc0eafbaa | |||
| 1782554488 | |||
| a1b1598bc6 | |||
| b02847ae91 | |||
| 50acb4821e | |||
| 47a5b94b0c | |||
| d2be868b93 | |||
| 50d42c4129 | |||
| 848b97d4d0 | |||
| c5796b8d2d | |||
| 579ca0cf60 | |||
| f7e670c8d9 | |||
| 9ff971435c | |||
| 7c9d0e24c4 | |||
| af3f86694b | |||
| 5cce681f62 | |||
| 48b0d88941 | |||
| f18577263a |
@@ -105,6 +105,7 @@ jobs:
|
||||
run: |
|
||||
pnpm pack --pack-destination ${{ runner.temp }} -C packages/llamaindex
|
||||
pnpm pack --pack-destination ${{ runner.temp }} -C packages/workflow
|
||||
pnpm pack --pack-destination ${{ runner.temp }} -C packages/core
|
||||
- name: Install packed packages
|
||||
run: npm add ${{ runner.temp }}/*.tgz
|
||||
working-directory: e2e/npm
|
||||
@@ -162,7 +163,7 @@ jobs:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
directory: e2e/examples/vite-import-llamaindex
|
||||
skip_step: "install"
|
||||
build_script: build
|
||||
build_script: ci-build
|
||||
package_manager: pnpm
|
||||
|
||||
typecheck-examples:
|
||||
@@ -203,7 +204,7 @@ jobs:
|
||||
fi
|
||||
done
|
||||
- name: Install
|
||||
run: npm add ${{ runner.temp }}/*.tgz
|
||||
run: npm add ${{ runner.temp }}/*.tgz --legacy-peer-deps
|
||||
working-directory: ${{ runner.temp }}/examples
|
||||
- name: Run Type Check
|
||||
run: npx tsc --project ./tsconfig.json
|
||||
|
||||
@@ -1,5 +1,201 @@
|
||||
# @llamaindex/doc
|
||||
|
||||
## 0.2.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ed37c64: Addition of APAC_ANTHROPIC_CLAUDE_4_SONNET type/record in @llamaindex/aws for APAC support for claude 4 sonnet per issue 2184.
|
||||
- Updated dependencies [8929dcf]
|
||||
- Updated dependencies [5da1cda]
|
||||
- llamaindex@0.11.29
|
||||
- @llamaindex/core@0.6.21
|
||||
- @llamaindex/workflow@1.1.23
|
||||
- @llamaindex/openai@0.4.19
|
||||
- @llamaindex/cloud@4.1.3
|
||||
- @llamaindex/node-parser@2.0.21
|
||||
- @llamaindex/readers@3.1.20
|
||||
|
||||
## 0.2.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [1995b38]
|
||||
- Updated dependencies [001a515]
|
||||
- Updated dependencies [9d7d205]
|
||||
- @llamaindex/workflow@1.1.22
|
||||
- @llamaindex/openai@0.4.18
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 0.2.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [0267bb0]
|
||||
- @llamaindex/core@0.6.20
|
||||
- @llamaindex/cloud@4.1.2
|
||||
- llamaindex@0.11.27
|
||||
- @llamaindex/node-parser@2.0.20
|
||||
- @llamaindex/openai@0.4.17
|
||||
- @llamaindex/readers@3.1.19
|
||||
- @llamaindex/workflow@1.1.21
|
||||
|
||||
## 0.2.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4c70376]
|
||||
- @llamaindex/openai@0.4.16
|
||||
|
||||
## 0.2.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b6409b6]
|
||||
- @llamaindex/openai@0.4.15
|
||||
|
||||
## 0.2.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4b51791]
|
||||
- @llamaindex/cloud@4.1.1
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.2.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- Updated dependencies [049471b]
|
||||
- @llamaindex/cloud@4.1.0
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.2.47
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [c3bf3c7]
|
||||
- Updated dependencies [f9f1de9]
|
||||
- @llamaindex/cloud@4.0.28
|
||||
- @llamaindex/core@0.6.19
|
||||
- llamaindex@0.11.24
|
||||
- @llamaindex/node-parser@2.0.19
|
||||
- @llamaindex/openai@0.4.14
|
||||
- @llamaindex/readers@3.1.18
|
||||
- @llamaindex/workflow@1.1.20
|
||||
|
||||
## 0.2.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [f29799e]
|
||||
- Updated dependencies [7224c06]
|
||||
- @llamaindex/workflow@1.1.19
|
||||
- @llamaindex/core@0.6.18
|
||||
- llamaindex@0.11.23
|
||||
- @llamaindex/cloud@4.0.27
|
||||
- @llamaindex/node-parser@2.0.18
|
||||
- @llamaindex/openai@0.4.13
|
||||
- @llamaindex/readers@3.1.17
|
||||
|
||||
## 0.2.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [9ed3195]
|
||||
- @llamaindex/workflow@1.1.18
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.2.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 38da40b: feat: VectoryMemoryBlock
|
||||
- Updated dependencies [38da40b]
|
||||
- @llamaindex/core@0.6.17
|
||||
- @llamaindex/cloud@4.0.26
|
||||
- llamaindex@0.11.21
|
||||
- @llamaindex/node-parser@2.0.17
|
||||
- @llamaindex/openai@0.4.12
|
||||
- @llamaindex/readers@3.1.16
|
||||
- @llamaindex/workflow@1.1.17
|
||||
|
||||
## 0.2.43
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ea15e75: Minor updates in deployment docs
|
||||
|
||||
## 0.2.42
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a8ec08c: fix: ensure correct message content in agent workflow
|
||||
- Updated dependencies [a8ec08c]
|
||||
- Updated dependencies [2967d57]
|
||||
- @llamaindex/core@0.6.16
|
||||
- @llamaindex/workflow@1.1.16
|
||||
- @llamaindex/cloud@4.0.25
|
||||
- llamaindex@0.11.20
|
||||
- @llamaindex/node-parser@2.0.16
|
||||
- @llamaindex/openai@0.4.11
|
||||
- @llamaindex/readers@3.1.15
|
||||
|
||||
## 0.2.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [856dd8c]
|
||||
- @llamaindex/openai@0.4.10
|
||||
|
||||
## 0.2.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7ad3411]
|
||||
- Updated dependencies [5da5b3c]
|
||||
- Updated dependencies [a1fdb07]
|
||||
- @llamaindex/core@0.6.15
|
||||
- @llamaindex/workflow@1.1.15
|
||||
- @llamaindex/openai@0.4.9
|
||||
- @llamaindex/cloud@4.0.24
|
||||
- llamaindex@0.11.19
|
||||
- @llamaindex/node-parser@2.0.15
|
||||
- @llamaindex/readers@3.1.14
|
||||
|
||||
## 0.2.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1b1598]
|
||||
- @llamaindex/cloud@4.0.23
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.2.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2be868]
|
||||
- @llamaindex/cloud@4.0.22
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.2.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [579ca0c]
|
||||
- @llamaindex/cloud@4.0.21
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.2.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [48b0d88]
|
||||
- Updated dependencies [f185772]
|
||||
- @llamaindex/cloud@4.0.20
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.2.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -27,6 +27,33 @@ const config = {
|
||||
destination: "/docs/workflows/:path*",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/docs/llamaindex/getting_started/installation/node.mdx",
|
||||
destination:
|
||||
"/docs/llamaindex/getting_started/installation/server-apis.mdx",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/docs/llamaindex/getting_started/installation/typescript.mdx",
|
||||
destination: "/docs/llamaindex/getting_started/installation/index.mdx",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/docs/llamaindex/getting_started/installation/next.mdx",
|
||||
destination: "/docs/llamaindex/getting_started/installation/nextjs.mdx",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/docs/llamaindex/getting_started/installation/vite.mdx",
|
||||
destination: "/docs/llamaindex/getting_started/installation/index.mdx",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/docs/llamaindex/getting_started/installation/cloudflare.mdx",
|
||||
destination:
|
||||
"/docs/llamaindex/getting_started/installation/serverless.mdx",
|
||||
permanent: true,
|
||||
},
|
||||
];
|
||||
},
|
||||
turbopack: {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/doc",
|
||||
"version": "0.2.35",
|
||||
"version": "0.2.54",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"postinstall": "fumadocs-mdx",
|
||||
@@ -15,7 +15,7 @@
|
||||
"dependencies": {
|
||||
"@huggingface/transformers": "^3.5.0",
|
||||
"@icons-pack/react-simple-icons": "^10.1.0",
|
||||
"@llamaindex/chat-ui-docs": "^0.0.5",
|
||||
"@llamaindex/chat-ui-docs": "^0.1.0",
|
||||
"@llamaindex/cloud": "workspace:*",
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"@llamaindex/node-parser": "workspace:*",
|
||||
@@ -76,21 +76,21 @@
|
||||
"@next/env": "^15.3.0",
|
||||
"@tailwindcss/postcss": "^4.0.9",
|
||||
"@types/mdx": "^2.0.13",
|
||||
"@types/node": "22.9.0",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@types/node": "24.0.13",
|
||||
"@types/react": "^19.1.8",
|
||||
"@types/react-dom": "^19.1.6",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"cross-env": "^7.0.3",
|
||||
"fast-glob": "^3.3.2",
|
||||
"gray-matter": "^4.0.3",
|
||||
"postcss": "^8.5.3",
|
||||
"postcss": "^8.5.6",
|
||||
"raw-loader": "^4.0.2",
|
||||
"remark": "^15.0.1",
|
||||
"remark-gfm": "^4.0.0",
|
||||
"remark-mdx": "^3.1.0",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"tailwindcss": "^4.0.9",
|
||||
"tsx": "^4.19.3",
|
||||
"tailwindcss": "^4.1.11",
|
||||
"tsx": "^4.20.3",
|
||||
"typedoc": "0.28.3",
|
||||
"typedoc-plugin-markdown": "^4.6.2",
|
||||
"typedoc-plugin-merge-modules": " ^7.0.0",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 540 KiB After Width: | Height: | Size: 206 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 154 KiB |
@@ -1,4 +1,4 @@
|
||||
import { MockLLM } from "@llamaindex/core/utils";
|
||||
import { MockLLM } from "@llamaindex/core/llms/mock";
|
||||
import { LlamaIndexAdapter, type Message } from "ai";
|
||||
import { Settings, SimpleChatEngine, type ChatMessage } from "llamaindex";
|
||||
import { NextResponse, type NextRequest } from "next/server";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { AIProvider } from "@/actions";
|
||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||
import { GoogleAnalytics } from "@next/third-parties/google";
|
||||
import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google";
|
||||
import { RootProvider } from "fumadocs-ui/provider";
|
||||
import { Inter } from "next/font/google";
|
||||
import type { ReactNode } from "react";
|
||||
@@ -36,6 +36,7 @@ export default function Layout({ children }: { children: ReactNode }) {
|
||||
LlamaIndex.TS - Build LLM-powered document agents and workflows
|
||||
</title>
|
||||
</head>
|
||||
<GoogleTagManager gtmId="GTM-WWRFB36R" />
|
||||
<body className="flex min-h-screen flex-col">
|
||||
<TooltipProvider>
|
||||
<AIProvider>
|
||||
|
||||
@@ -19,3 +19,8 @@ npm run dev
|
||||
to start the development server. You can then visit [http://localhost:3000](http://localhost:3000) to see your app, which should look something like this:
|
||||
|
||||

|
||||
|
||||
## Learn more
|
||||
|
||||
- [Learn more about `create-llama`](https://github.com/run-llama/create-llama)
|
||||
- [Want to use the same UI components? You can use our React components](https://ui.llamaindex.ai/)
|
||||
|
||||
@@ -17,7 +17,8 @@ npm i
|
||||
Then you can run any example in the folder with `tsx`, e.g.:
|
||||
|
||||
```bash npm2yarn
|
||||
npx tsx ./vectorIndex.ts
|
||||
export OPENAI_API_KEY=your-api-key
|
||||
npx tsx ./agents/agent/openai.ts
|
||||
```
|
||||
|
||||
## Try examples online
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: With Cloudflare Worker
|
||||
description: In this guide, you'll learn how to use LlamaIndex with CloudFlare Worker
|
||||
---
|
||||
|
||||
Before you start, make sure you have try LlamaIndex.TS in Node.js to make sure you understand the basics.
|
||||
|
||||
<Card
|
||||
title="Getting Started with LlamaIndex.TS in Node.js"
|
||||
href="/docs/llamaindex/getting_started/installation/node"
|
||||
/>
|
||||
|
||||
Also, you need have the basic understanding of <a href='https://developers.cloudflare.com/workers/'><SiCloudflareworkers className="inline mr-2" color="#F38020" />Cloudflare Worker</a>.
|
||||
|
||||
## Adding environment variables
|
||||
|
||||
```ts
|
||||
export default {
|
||||
async fetch(request: Request, env: Env): Promise<Response> {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(env);
|
||||
const { OpenAIAgent } = await import("@llamaindex/openai");
|
||||
// Start your code here
|
||||
return new Response("Hello, world!");
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
Then, you need create `.dev.vars` and add LLM api keys for the local development, such as `OPENAI_API_KEY` for OpenAI API key.
|
||||
|
||||
<Callout type="warn">Do not commit the api key to git repository.</Callout>
|
||||
|
||||
## Integrating with Hono
|
||||
|
||||
```ts
|
||||
import { Hono } from "hono";
|
||||
|
||||
type Bindings = {
|
||||
OPENAI_API_KEY: string;
|
||||
};
|
||||
|
||||
const app = new Hono<{
|
||||
Bindings: Bindings;
|
||||
}>();
|
||||
|
||||
app.post("/llm", async (c) => {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(c.env);
|
||||
|
||||
// ...
|
||||
|
||||
return new Response('Hello, world!');
|
||||
})
|
||||
|
||||
export default {
|
||||
fetch: app.fetch,
|
||||
};
|
||||
```
|
||||
|
||||
## Difference between Node.js and Cloudflare Worker
|
||||
|
||||
In Cloudflare Worker and similar serverless JS environment, you need to be aware of the following differences:
|
||||
|
||||
- Some Node.js modules are not available in Cloudflare Worker, such as `node:fs`, `node:child_process`, `node:cluster`...
|
||||
- You are recommend to design your code using network request, such as use `fetch` API to communicate with database, instead of a long-running process in Node.js.
|
||||
- Some of LlamaIndex.TS packages are not available in Cloudflare Worker, for example `@llamaindex/readers` and `@llamaindex/huggingface`.
|
||||
- The main `llamaindex` is designed to work in all JavaScript environment, including Cloudflare Worker. If you find any issue, please report to us.
|
||||
- `@llamaindex/env` is a JS environment binding module, which polyfill some Node.js/Modern Web API (for example, we have a memory based `fs` module, and Crypto API polyfill). It is designed to work in all JavaScript environment, including Cloudflare Worker.
|
||||
|
||||
|
||||
@@ -1,69 +1,177 @@
|
||||
---
|
||||
title: Installation
|
||||
description: How to install llamaindex packages.
|
||||
description: How to install and set up LlamaIndex.TS for your project.
|
||||
---
|
||||
|
||||
To install llamaindex, run the following command:
|
||||
## Quick Start
|
||||
|
||||
Install the core package:
|
||||
|
||||
```package-install
|
||||
npm i llamaindex
|
||||
```
|
||||
|
||||
In most cases, you'll also need an LLM package and the Workflow package to use LlamaIndex. For example, to use the OpenAI LLM with agents, you would install the following:
|
||||
In most cases, you'll also need an LLM provider and the Workflow package:
|
||||
|
||||
```package-install
|
||||
npm i @llamaindex/openai @llamaindex/workflow
|
||||
```
|
||||
|
||||
Go to [LLM APIs](/docs/llamaindex/modules/models/llms) to find out how to use other LLMs.
|
||||
## Environment Setup
|
||||
|
||||
### API Keys
|
||||
|
||||
## Frameworks
|
||||
Most LLM providers require API keys. Set your OpenAI key (or other provider):
|
||||
|
||||
LlamaIndex supports a wide range of frameworks and runtimes. Click on the card below to learn more.
|
||||
```bash
|
||||
export OPENAI_API_KEY=your-api-key
|
||||
```
|
||||
|
||||
Or use a `.env` file:
|
||||
|
||||
```bash
|
||||
echo "OPENAI_API_KEY=your-api-key" > .env
|
||||
```
|
||||
|
||||
<Callout type="warn">Never commit API keys to your repository.</Callout>
|
||||
|
||||
### Loading Environment Variables
|
||||
|
||||
For Node.js applications:
|
||||
|
||||
```bash
|
||||
node --env-file .env your-script.js
|
||||
```
|
||||
|
||||
For other environments, see the deployment-specific guides below.
|
||||
|
||||
## TypeScript Configuration
|
||||
|
||||
LlamaIndex.TS is built with TypeScript and provides excellent type safety. Add these settings to your `tsconfig.json`:
|
||||
|
||||
```json5
|
||||
{
|
||||
"compilerOptions": {
|
||||
// Essential for module resolution
|
||||
"moduleResolution": "bundler", // or "nodenext" | "node16" | "node"
|
||||
|
||||
// Required for Web Stream API support
|
||||
"lib": ["DOM.AsyncIterable"],
|
||||
|
||||
// Recommended for better compatibility
|
||||
"target": "es2020",
|
||||
"module": "esnext"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Running your first agent
|
||||
|
||||
### Set up
|
||||
|
||||
If you don't already have a project, you can create a new one in a new folder:
|
||||
|
||||
```package-install
|
||||
npm init
|
||||
npm i -D typescript @types/node
|
||||
npm i @llamaindex/openai @llamaindex/workflow llamaindex zod
|
||||
```
|
||||
|
||||
### Run the agent
|
||||
|
||||
Create the file `example.ts`. This code will:
|
||||
|
||||
- Create two tools for use by the agent:
|
||||
- A `sumNumbers` tool that adds two numbers
|
||||
- A `divideNumbers` tool that divides numbers
|
||||
- Give an example of the data structure we wish to generate
|
||||
- Prompt the LLM with instructions and the example, plus a sample transcript
|
||||
|
||||
<include cwd>../../examples/agents/agent/openai.ts</include>
|
||||
|
||||
To run the code:
|
||||
|
||||
```package-install
|
||||
npx tsx example.ts
|
||||
```
|
||||
|
||||
You should expect output something like:
|
||||
|
||||
```
|
||||
{
|
||||
result: '5 + 5 is 10. Then, 10 divided by 2 is 5.',
|
||||
state: {
|
||||
memory: Memory {
|
||||
messages: [Array],
|
||||
tokenLimit: 30000,
|
||||
shortTermTokenLimitRatio: 0.7,
|
||||
memoryBlocks: [],
|
||||
memoryCursor: 0,
|
||||
adapters: [Object]
|
||||
},
|
||||
scratchpad: [],
|
||||
currentAgentName: 'Agent',
|
||||
agents: [ 'Agent' ],
|
||||
nextAgentName: null
|
||||
}
|
||||
}
|
||||
Done
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Tokenization Speed
|
||||
|
||||
Install `gpt-tokenizer` for 60x faster tokenization (Node.js environments only):
|
||||
|
||||
```package-install
|
||||
npm i gpt-tokenizer
|
||||
```
|
||||
|
||||
LlamaIndex will automatically use this when available.
|
||||
|
||||
## Deployment Guides
|
||||
|
||||
Choose your deployment target:
|
||||
|
||||
<Cards>
|
||||
<Card title={
|
||||
<>
|
||||
<SiNodedotjs className="inline" color="#5FA04E" /> Node.js
|
||||
</>
|
||||
} href="/docs/llamaindex/getting_started/installation/node" />
|
||||
<Card title={
|
||||
<>
|
||||
<SiTypescript className="inline" color="#3178C6" /> TypeScript
|
||||
</>
|
||||
} href="/docs/llamaindex/getting_started/installation/typescript" />
|
||||
<Card title={
|
||||
<>
|
||||
<SiVite className='inline' color='#646CFF' /> Vite
|
||||
</>
|
||||
} href="/docs/llamaindex/getting_started/installation/vite" />
|
||||
<Card
|
||||
title={
|
||||
<>
|
||||
<SiNextdotjs className='inline' /> Next.js (React Server Component)
|
||||
</>
|
||||
}
|
||||
href="/docs/llamaindex/getting_started/installation/next"
|
||||
/>
|
||||
<Card title={
|
||||
<>
|
||||
<SiCloudflareworkers className='inline' color='#F38020' /> Cloudflare Workers
|
||||
</>
|
||||
} href="/docs/llamaindex/getting_started/installation/cloudflare" />
|
||||
<Card
|
||||
title="Server APIs & Backends"
|
||||
description="Express, Fastify, Koa, standalone Node.js servers"
|
||||
href="/docs/llamaindex/getting_started/installation/server-apis"
|
||||
/>
|
||||
<Card
|
||||
title="Serverless Functions"
|
||||
description="Vercel, Netlify, AWS Lambda, Cloudflare Workers"
|
||||
href="/docs/llamaindex/getting_started/installation/serverless"
|
||||
/>
|
||||
<Card
|
||||
title="Next.js Applications"
|
||||
description="API routes, server components, edge runtime"
|
||||
href="/docs/llamaindex/getting_started/installation/nextjs"
|
||||
/>
|
||||
<Card
|
||||
title="Troubleshooting"
|
||||
description="Common issues, bundle optimization, compatibility"
|
||||
href="/docs/llamaindex/getting_started/installation/troubleshooting"
|
||||
/>
|
||||
</Cards>
|
||||
|
||||
## What's next?
|
||||
## LLM/Embedding Providers
|
||||
|
||||
Go to [LLM APIs](/docs/llamaindex/modules/models/llms) and [Embedding APIs](/docs/llamaindex/modules/models/embeddings) to find out how to use different LLM and embedding providers beyond OpenAI.
|
||||
|
||||
## What's Next?
|
||||
|
||||
<Cards>
|
||||
<Card
|
||||
title="Learn LlamaIndex.TS"
|
||||
description="Learn how to use LlamaIndex.TS by starting with one of our tutorials."
|
||||
href="/docs/llamaindex/tutorials/rag"
|
||||
/>
|
||||
<Card
|
||||
title="Show me code examples"
|
||||
description="Explore code examples using LlamaIndex.TS."
|
||||
href="/docs/llamaindex/getting_started/examples"
|
||||
/>
|
||||
<Card
|
||||
title="Learn LlamaIndex.TS"
|
||||
description="Learn how to use LlamaIndex.TS by starting with one of our tutorials."
|
||||
href="/docs/llamaindex/tutorials/basic_agent"
|
||||
/>
|
||||
<Card
|
||||
title="Show me code examples"
|
||||
description="Explore code examples using LlamaIndex.TS."
|
||||
href="/docs/llamaindex/getting_started/examples"
|
||||
/>
|
||||
</Cards>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"title": "Installation",
|
||||
"pages": ["node", "typescript", "next", "vite", "cloudflare"]
|
||||
"pages": ["server-apis", "serverless", "nextjs", "troubleshooting"]
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: With Next.js
|
||||
description: In this guide, you'll learn how to use LlamaIndex with Next.js.
|
||||
---
|
||||
|
||||
Before you start, make sure you have try LlamaIndex.TS in Node.js to make sure you understand the basics.
|
||||
|
||||
<Card
|
||||
title="Getting Started with LlamaIndex.TS in Node.js"
|
||||
href="/docs/llamaindex/getting_started/installation/node"
|
||||
/>
|
||||
|
||||
## Differences between Node.js and Next.js
|
||||
|
||||
Next.js is a React framework that has both server side compatibility and client side compatibility.
|
||||
This means that you need to be careful when using LlamaIndex.TS in Next.js.
|
||||
Don't leak the import data like API keys to the client side.
|
||||
|
||||
Also, in Next.js, there is build time and runtime. Some computations can be done at build time like Document embedding could be done at build time for better performance.
|
||||
Where as the `llamaindex` package is working with Next.js, some provider packages like `@llamaindex/huggingface` are not working well with Next.js. This is due to the upstream dependencies used by the provider package.
|
||||
|
||||
Make sure to use `withLlamaIndex` to make sure that LlamaIndex.TS works well with Next.js.
|
||||
|
||||
```js
|
||||
// next.config.mjs / next.config.ts
|
||||
import withLlamaIndex from "llamaindex/next";
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {};
|
||||
|
||||
export default withLlamaIndex(nextConfig);
|
||||
```
|
||||
|
||||
If you see any dependency issues, you are welcome to open an issue on the GitHub.
|
||||
|
||||
## Edge Runtime
|
||||
|
||||
[Vercel Edge Runtime](https://edge-runtime.vercel.app/) is a subset of Node.js APIs. Similar to [Cloudflare Workers](/docs/llamaindex/getting_started/installation/cloudflare#difference-between-nodejs-and-cloudflare-worker),
|
||||
it is a serverless platform that runs your code on the edge.
|
||||
|
||||
Not all features of Node.js are supported in Vercel Edge Runtime, so does LlamaIndex.TS, we are working on more compatibility with all JavaScript runtimes.
|
||||
@@ -0,0 +1,405 @@
|
||||
---
|
||||
title: Next.js Applications
|
||||
description: Deploy LlamaIndex.TS in Next.js applications with API routes, server components, and edge runtime.
|
||||
---
|
||||
|
||||
This guide covers integrating LlamaIndex.TS agents with Next.js applications.
|
||||
|
||||
## Essential Configuration
|
||||
|
||||
### Next.js Config
|
||||
|
||||
Use `withLlamaIndex` to ensure compatibility:
|
||||
|
||||
```javascript
|
||||
// next.config.mjs
|
||||
import withLlamaIndex from "llamaindex/next";
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
// Your existing config
|
||||
};
|
||||
|
||||
export default withLlamaIndex(nextConfig);
|
||||
```
|
||||
|
||||
## API Routes
|
||||
|
||||
### App Router (Recommended)
|
||||
|
||||
```typescript
|
||||
// app/api/chat/route.ts
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
// Initialize agent once (consider using a singleton pattern)
|
||||
let myAgent: any = null;
|
||||
|
||||
async function initializeAgent() {
|
||||
if (myAgent) return myAgent;
|
||||
|
||||
try {
|
||||
const greetTool = tool({
|
||||
name: "greet",
|
||||
description: "Greets a user with their name",
|
||||
parameters: z.object({
|
||||
name: z.string(),
|
||||
}),
|
||||
execute: ({ name }) => `Hello, ${name}! How can I help you today?`,
|
||||
});
|
||||
|
||||
myAgent = agent({
|
||||
tools: [greetTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
return myAgent;
|
||||
} catch (error) {
|
||||
console.error("Failed to initialize agent:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const { message } = await request.json();
|
||||
|
||||
if (!message || typeof message !== 'string') {
|
||||
return NextResponse.json(
|
||||
{ error: "Message is required and must be a string" },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
const agent = await initializeAgent();
|
||||
const result = await agent.run(message);
|
||||
|
||||
return NextResponse.json({ response: result.data });
|
||||
} catch (error) {
|
||||
console.error("Chat error:", error);
|
||||
return NextResponse.json(
|
||||
{ error: "Internal server error" },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Pages Router (Legacy)
|
||||
|
||||
```typescript
|
||||
// pages/api/chat.ts
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
|
||||
let myAgent: any = null;
|
||||
|
||||
async function initializeAgent() {
|
||||
if (myAgent) return myAgent;
|
||||
|
||||
const timeTool = tool({
|
||||
name: "getCurrentTime",
|
||||
description: "Gets the current time",
|
||||
parameters: z.object({}),
|
||||
execute: () => new Date().toISOString(),
|
||||
});
|
||||
|
||||
myAgent = agent({
|
||||
tools: [timeTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
return myAgent;
|
||||
}
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
if (req.method !== "POST") {
|
||||
return res.status(405).json({ error: "Method not allowed" });
|
||||
}
|
||||
|
||||
try {
|
||||
const { message } = req.body;
|
||||
|
||||
const agent = await initializeAgent();
|
||||
const result = await agent.run(message);
|
||||
|
||||
res.json({ response: result.data });
|
||||
} catch (error) {
|
||||
console.error("Chat error:", error);
|
||||
res.status(500).json({ error: "Internal server error" });
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Server Components
|
||||
|
||||
Initialize agents in server components:
|
||||
|
||||
```typescript
|
||||
// app/chat/page.tsx
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
|
||||
async function initializeAgent() {
|
||||
const helpTool = tool({
|
||||
name: "getHelp",
|
||||
description: "Provides help information",
|
||||
parameters: z.object({
|
||||
topic: z.string().optional(),
|
||||
}),
|
||||
execute: ({ topic }) => {
|
||||
if (topic) {
|
||||
return `Here's help for ${topic}: This is a helpful resource about ${topic}.`;
|
||||
}
|
||||
return "Available topics: general, troubleshooting, api, deployment";
|
||||
},
|
||||
});
|
||||
|
||||
return agent({
|
||||
tools: [helpTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
}
|
||||
|
||||
export default async function ChatPage() {
|
||||
const chatAgent = await initializeAgent();
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>Chat Interface</h1>
|
||||
<p>Agent initialized and ready to help!</p>
|
||||
{/* Your chat UI components */}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## Edge Runtime
|
||||
|
||||
The Edge Runtime has limited Node.js API access:
|
||||
|
||||
```typescript
|
||||
// app/api/chat-edge/route.ts
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
export const runtime = "edge";
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(process.env);
|
||||
|
||||
try {
|
||||
const { message } = await request.json();
|
||||
|
||||
const { agent } = await import("@llamaindex/workflow");
|
||||
const { tool } = await import("llamaindex");
|
||||
const { openai } = await import("@llamaindex/openai");
|
||||
const { z } = await import("zod");
|
||||
|
||||
const timeTool = tool({
|
||||
name: "time",
|
||||
description: "Gets current time",
|
||||
parameters: z.object({}),
|
||||
execute: () => new Date().toISOString(),
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [timeTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
const result = await myAgent.run(message);
|
||||
return NextResponse.json({ response: result.data });
|
||||
} catch (error) {
|
||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Streaming Responses
|
||||
|
||||
Implement streaming for better user experience:
|
||||
|
||||
```typescript
|
||||
// app/api/chat-stream/route.ts
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { agentStreamEvent } from "@llamaindex/workflow";
|
||||
import { NextRequest } from "next/server";
|
||||
import { z } from "zod";
|
||||
|
||||
// Initialize agent once (consider using a singleton pattern)
|
||||
let myAgent: any = null;
|
||||
|
||||
async function initializeAgent() {
|
||||
if (myAgent) return myAgent;
|
||||
|
||||
try {
|
||||
const greetTool = tool({
|
||||
name: "greet",
|
||||
description: "Greets a user with their name",
|
||||
parameters: z.object({
|
||||
name: z.string(),
|
||||
}),
|
||||
execute: ({ name }) => `Hello, ${name}! How can I help you today?`,
|
||||
});
|
||||
|
||||
myAgent = agent({
|
||||
tools: [greetTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
return myAgent;
|
||||
} catch (error) {
|
||||
console.error("Failed to initialize agent:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
const { message } = await request.json();
|
||||
|
||||
const stream = new ReadableStream({
|
||||
async start(controller) {
|
||||
try {
|
||||
const agent = await initializeAgent();
|
||||
const events = agent.runStream(message);
|
||||
|
||||
for await (const event of events) {
|
||||
if (agentStreamEvent.include(event)) {
|
||||
controller.enqueue(new TextEncoder().encode(event.data.delta));
|
||||
}
|
||||
}
|
||||
|
||||
controller.close();
|
||||
} catch (error) {
|
||||
controller.error(error);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return new Response(stream, {
|
||||
headers: {
|
||||
"Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked",
|
||||
},
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
## Client-side Integration
|
||||
|
||||
### React Hook for API Calls
|
||||
|
||||
```typescript
|
||||
// hooks/useAgentChat.ts
|
||||
import { useState } from "react";
|
||||
|
||||
export function useAgentChat() {
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [response, setResponse] = useState<string | null>(null);
|
||||
|
||||
const chat = async (message: string) => {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
|
||||
try {
|
||||
const res = await fetch("/api/chat", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ message }),
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(`HTTP error! status: ${res.status}`);
|
||||
}
|
||||
|
||||
const data = await res.json();
|
||||
setResponse(data.response);
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : "An error occurred");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
return { chat, loading, error, response };
|
||||
}
|
||||
```
|
||||
|
||||
### Chat Component
|
||||
|
||||
```typescript
|
||||
// components/ChatInterface.tsx
|
||||
"use client";
|
||||
|
||||
import { useState } from "react";
|
||||
import { useAgentChat } from "@/hooks/useAgentChat";
|
||||
|
||||
export default function ChatInterface() {
|
||||
const [message, setMessage] = useState("");
|
||||
const { chat, loading, error, response } = useAgentChat();
|
||||
|
||||
const handleSubmit = async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
if (!message.trim()) return;
|
||||
|
||||
await chat(message);
|
||||
setMessage("");
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="max-w-2xl mx-auto p-4">
|
||||
<form onSubmit={handleSubmit} className="mb-4">
|
||||
<input
|
||||
type="text"
|
||||
value={message}
|
||||
onChange={(e) => setMessage(e.target.value)}
|
||||
placeholder="Send a message..."
|
||||
className="w-full p-2 border rounded"
|
||||
disabled={loading}
|
||||
/>
|
||||
<button
|
||||
type="submit"
|
||||
disabled={loading || !message.trim()}
|
||||
className="mt-2 px-4 py-2 bg-blue-500 text-white rounded disabled:opacity-50"
|
||||
>
|
||||
{loading ? "Thinking..." : "Send"}
|
||||
</button>
|
||||
</form>
|
||||
|
||||
{error && (
|
||||
<div className="p-3 mb-4 bg-red-100 border border-red-400 text-red-700 rounded">
|
||||
Error: {error}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{response && (
|
||||
<div className="p-3 bg-gray-100 border rounded">
|
||||
<strong>Agent:</strong>
|
||||
<p>{response}</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Learn about [serverless deployment](/docs/llamaindex/getting_started/installation/serverless)
|
||||
- Explore [server APIs](/docs/llamaindex/getting_started/installation/server-apis)
|
||||
- Check [troubleshooting guide](/docs/llamaindex/getting_started/installation/troubleshooting) for common issues
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: With Node.js/Bun/Deno
|
||||
description: In this guide, you'll learn how to use LlamaIndex with Node.js, Bun, and Deno.
|
||||
---
|
||||
|
||||
## Adding environment variables
|
||||
|
||||
By default, LlamaIndex uses OpenAI provider, which requires an API key. You can set the `OPENAI_API_KEY` environment variable to authenticate with OpenAI.
|
||||
|
||||
```shell
|
||||
export OPENAI_API_KEY=your-api-key
|
||||
```
|
||||
|
||||
Or you can use a `.env` file:
|
||||
|
||||
```shell
|
||||
echo "OPENAI_API_KEY=your-api-key" > .env
|
||||
node --env-file .env your-script.js
|
||||
```
|
||||
|
||||
<Callout type="warn">Do not commit the api key to git repository.</Callout>
|
||||
|
||||
For more information, see the [How to read environment variables from Node.js](https://nodejs.org/en/learn/command-line/how-to-read-environment-variables-from-nodejs).
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
By the default, we are using `js-tiktoken` for tokenization. You can install `gpt-tokenizer` which is then automatically used by LlamaIndex to get a 60x speedup for tokenization:
|
||||
|
||||
```package-install
|
||||
npm i gpt-tokenizer
|
||||
```
|
||||
|
||||
**Note**: This only works for Node.js
|
||||
|
||||
## TypeScript support
|
||||
|
||||
<Card
|
||||
title="Getting Started with LlamaIndex.TS in TypeScript"
|
||||
href="/docs/llamaindex/getting_started/installation/typescript"
|
||||
/>
|
||||
@@ -0,0 +1,211 @@
|
||||
---
|
||||
title: Server APIs & Backends
|
||||
description: Deploy LlamaIndex.TS in server environments like Express, Fastify, and standalone Node.js applications.
|
||||
---
|
||||
|
||||
This guide covers adding LlamaIndex.TS agents to traditional server environments where you have full Node.js runtime access.
|
||||
|
||||
## Supported Runtimes
|
||||
|
||||
LlamaIndex.TS works seamlessly with:
|
||||
|
||||
- **Node.js** (v18+)
|
||||
- **Bun** (v1.0+)
|
||||
- **Deno** (v1.30+)
|
||||
|
||||
## Common Server Frameworks
|
||||
|
||||
### Express.js
|
||||
|
||||
```typescript
|
||||
import express from 'express';
|
||||
import { agent } from '@llamaindex/workflow';
|
||||
import { tool } from 'llamaindex';
|
||||
import { openai } from '@llamaindex/openai';
|
||||
import { z } from 'zod';
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
// Initialize agent once at startup
|
||||
let myAgent: any;
|
||||
|
||||
async function initializeAgent() {
|
||||
// Create tools for the agent
|
||||
const sumTool = tool({
|
||||
name: "sum",
|
||||
description: "Adds two numbers",
|
||||
parameters: z.object({
|
||||
a: z.number(),
|
||||
b: z.number(),
|
||||
}),
|
||||
execute: ({ a, b }) => a + b,
|
||||
});
|
||||
|
||||
const multiplyTool = tool({
|
||||
name: "multiply",
|
||||
description: "Multiplies two numbers",
|
||||
parameters: z.object({
|
||||
a: z.number(),
|
||||
b: z.number(),
|
||||
}),
|
||||
execute: ({ a, b }) => a * b,
|
||||
});
|
||||
|
||||
// Create the agent
|
||||
myAgent = agent({
|
||||
tools: [sumTool, multiplyTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
}
|
||||
|
||||
app.post('/api/chat', async (req, res) => {
|
||||
try {
|
||||
const { message } = req.body;
|
||||
const result = await myAgent.run(message);
|
||||
res.json({ response: result.data });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: 'Chat failed' });
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize and start server
|
||||
initializeAgent().then(() => {
|
||||
app.listen(3000, () => {
|
||||
console.log('Server running on port 3000');
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### Fastify
|
||||
|
||||
```typescript
|
||||
import Fastify from 'fastify';
|
||||
import { agent } from '@llamaindex/workflow';
|
||||
import { tool } from 'llamaindex';
|
||||
import { openai } from '@llamaindex/openai';
|
||||
import { z } from 'zod';
|
||||
|
||||
const fastify = Fastify();
|
||||
let myAgent: any;
|
||||
|
||||
async function initializeAgent() {
|
||||
const sumTool = tool({
|
||||
name: "sum",
|
||||
description: "Adds two numbers",
|
||||
parameters: z.object({
|
||||
a: z.number(),
|
||||
b: z.number(),
|
||||
}),
|
||||
execute: ({ a, b }) => a + b,
|
||||
});
|
||||
|
||||
myAgent = agent({
|
||||
tools: [sumTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
}
|
||||
|
||||
fastify.post('/api/chat', async (request, reply) => {
|
||||
try {
|
||||
const { message } = request.body as { message: string };
|
||||
const result = await myAgent.run(message);
|
||||
return { response: result.data };
|
||||
} catch (error) {
|
||||
reply.status(500).send({ error: 'Chat failed' });
|
||||
}
|
||||
});
|
||||
|
||||
const start = async () => {
|
||||
await initializeAgent();
|
||||
await fastify.listen({ port: 3000 });
|
||||
console.log('Server running on port 3000');
|
||||
};
|
||||
|
||||
start();
|
||||
```
|
||||
|
||||
### Hono
|
||||
|
||||
```typescript
|
||||
import { Hono } from "hono";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
|
||||
type Bindings = {
|
||||
OPENAI_API_KEY: string;
|
||||
};
|
||||
|
||||
const app = new Hono<{ Bindings: Bindings }>();
|
||||
|
||||
app.post("/api/chat", async (c) => {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(c.env);
|
||||
|
||||
const { message } = await c.req.json();
|
||||
|
||||
const greetTool = tool({
|
||||
name: "greet",
|
||||
description: "Greets a user",
|
||||
parameters: z.object({
|
||||
name: z.string(),
|
||||
}),
|
||||
execute: ({ name }) => `Hello, ${name}!`,
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [greetTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
try {
|
||||
const result = await myAgent.run(message);
|
||||
return c.json({ response: result.data });
|
||||
} catch (error) {
|
||||
return c.json({ error: error.message }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
export default app;
|
||||
```
|
||||
|
||||
## Streaming Responses
|
||||
|
||||
For real-time agent responses:
|
||||
|
||||
```typescript
|
||||
import { agentStreamEvent } from "@llamaindex/workflow";
|
||||
|
||||
app.post('/api/chat-stream', async (req, res) => {
|
||||
const { message } = req.body;
|
||||
|
||||
res.writeHead(200, {
|
||||
'Content-Type': 'text/plain',
|
||||
'Transfer-Encoding': 'chunked',
|
||||
});
|
||||
|
||||
try {
|
||||
const events = myAgent.runStream(message);
|
||||
|
||||
for await (const event of events) {
|
||||
if (agentStreamEvent.include(event)) {
|
||||
res.write(event.data.delta);
|
||||
}
|
||||
}
|
||||
|
||||
res.end();
|
||||
} catch (error) {
|
||||
res.write('Error: ' + error.message);
|
||||
res.end();
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Learn about [serverless deployment](/docs/llamaindex/getting_started/installation/serverless)
|
||||
- Explore [Next.js integration](/docs/llamaindex/getting_started/installation/nextjs)
|
||||
- Check [troubleshooting guide](/docs/llamaindex/getting_started/installation/troubleshooting) for common issues
|
||||
@@ -0,0 +1,240 @@
|
||||
---
|
||||
title: Serverless Functions
|
||||
description: Deploy LlamaIndex.TS in serverless environments like Vercel, Netlify, AWS Lambda, and Cloudflare Workers.
|
||||
---
|
||||
|
||||
This guide covers adding LlamaIndex.TS agents to serverless environments where you have execution time and memory constraints.
|
||||
|
||||
## Cloudflare Workers
|
||||
|
||||
```typescript
|
||||
export default {
|
||||
async fetch(request: Request, env: Env): Promise<Response> {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(env);
|
||||
|
||||
const { agent } = await import("@llamaindex/workflow");
|
||||
const { openai } = await import("@llamaindex/openai");
|
||||
const { tool } = await import("llamaindex");
|
||||
const { z } = await import("zod");
|
||||
|
||||
const timeTool = tool({
|
||||
name: "getCurrentTime",
|
||||
description: "Gets the current time",
|
||||
parameters: z.object({}),
|
||||
execute: () => new Date().toISOString(),
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [timeTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
try {
|
||||
const { message } = await request.json();
|
||||
const result = await myAgent.run(message);
|
||||
|
||||
return new Response(JSON.stringify({ response: result.data }), {
|
||||
headers: { "Content-Type": "application/json" },
|
||||
});
|
||||
} catch (error) {
|
||||
return new Response(JSON.stringify({ error: error.message }), {
|
||||
status: 500,
|
||||
headers: { "Content-Type": "application/json" },
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Vercel Functions
|
||||
|
||||
### Node.js Runtime
|
||||
|
||||
```typescript
|
||||
// pages/api/chat.ts or app/api/chat/route.ts
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
|
||||
export default async function handler(req, res) {
|
||||
if (req.method !== 'POST') {
|
||||
return res.status(405).json({ error: 'Method not allowed' });
|
||||
}
|
||||
|
||||
const { message } = req.body;
|
||||
|
||||
const weatherTool = tool({
|
||||
name: "getWeather",
|
||||
description: "Get weather information",
|
||||
parameters: z.object({
|
||||
city: z.string(),
|
||||
}),
|
||||
execute: ({ city }) => `Weather in ${city}: 72°F, sunny`,
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [weatherTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
try {
|
||||
const result = await myAgent.run(message);
|
||||
res.json({ response: result.data });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Edge Runtime
|
||||
|
||||
```typescript
|
||||
// app/api/chat/route.ts
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
export const runtime = "edge";
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(process.env);
|
||||
|
||||
const { message } = await request.json();
|
||||
|
||||
try {
|
||||
// Use simpler tools for edge runtime
|
||||
const { agent } = await import("@llamaindex/workflow");
|
||||
const { tool } = await import("llamaindex");
|
||||
const { openai } = await import("@llamaindex/openai");
|
||||
const { z } = await import("zod");
|
||||
|
||||
const timeTool = tool({
|
||||
name: "time",
|
||||
description: "Gets current time",
|
||||
parameters: z.object({}),
|
||||
execute: () => new Date().toISOString(),
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [timeTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
const result = await myAgent.run(message);
|
||||
return NextResponse.json({ response: result.data });
|
||||
} catch (error) {
|
||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## AWS Lambda
|
||||
|
||||
```typescript
|
||||
import { APIGatewayProxyHandler } from "aws-lambda";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
|
||||
export const handler: APIGatewayProxyHandler = async (event, context) => {
|
||||
const { message } = JSON.parse(event.body || "{}");
|
||||
|
||||
const calculatorTool = tool({
|
||||
name: "calculate",
|
||||
description: "Performs basic math",
|
||||
parameters: z.object({
|
||||
expression: z.string(),
|
||||
}),
|
||||
execute: ({ expression }) => {
|
||||
// Simple calculator implementation
|
||||
try {
|
||||
return `Result: ${eval(expression)}`;
|
||||
} catch {
|
||||
return "Invalid expression";
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [calculatorTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
try {
|
||||
const result = await myAgent.run(message);
|
||||
|
||||
return {
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
},
|
||||
body: JSON.stringify({ response: result.data }),
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: JSON.stringify({ error: error.message }),
|
||||
};
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## Netlify Functions
|
||||
|
||||
```typescript
|
||||
// netlify/functions/chat.ts
|
||||
import { Handler } from "@netlify/functions";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { z } from "zod";
|
||||
|
||||
export const handler: Handler = async (event, context) => {
|
||||
if (event.httpMethod !== "POST") {
|
||||
return { statusCode: 405, body: "Method Not Allowed" };
|
||||
}
|
||||
|
||||
const { message } = JSON.parse(event.body || "{}");
|
||||
|
||||
const helpTool = tool({
|
||||
name: "help",
|
||||
description: "Provides help information",
|
||||
parameters: z.object({
|
||||
topic: z.string().optional(),
|
||||
}),
|
||||
execute: ({ topic }) => {
|
||||
return topic ? `Help for ${topic}` : "Available help topics";
|
||||
},
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [helpTool],
|
||||
llm: openai({ model: "gpt-4o-mini" }),
|
||||
});
|
||||
|
||||
try {
|
||||
const result = await myAgent.run(message);
|
||||
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify({ response: result.data }),
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: JSON.stringify({ error: error.message }),
|
||||
};
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Learn about [Next.js integration](/docs/llamaindex/getting_started/installation/nextjs)
|
||||
- Explore [server deployment](/docs/llamaindex/getting_started/installation/server-apis)
|
||||
- Check [troubleshooting guide](/docs/llamaindex/getting_started/installation/troubleshooting) for common issues
|
||||
+501
@@ -0,0 +1,501 @@
|
||||
---
|
||||
title: Troubleshooting
|
||||
description: Common issues and solutions when installing and deploying LlamaIndex.TS applications.
|
||||
---
|
||||
|
||||
This guide addresses common issues you might encounter when installing and deploying LlamaIndex.TS applications across different environments.
|
||||
|
||||
## Installation Issues
|
||||
|
||||
### Module Resolution Errors
|
||||
|
||||
**Problem:** Import errors or module not found errors
|
||||
|
||||
**Solution:** Ensure your `tsconfig.json` is properly configured:
|
||||
|
||||
```json5
|
||||
{
|
||||
"compilerOptions": {
|
||||
"moduleResolution": "bundler", // or "nodenext" | "node16" | "node"
|
||||
"lib": ["DOM.AsyncIterable"],
|
||||
"target": "es2020",
|
||||
"module": "esnext"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Alternative solution:** Try different module resolution strategies:
|
||||
|
||||
```bash
|
||||
# Clear node_modules and reinstall
|
||||
rm -rf node_modules package-lock.json
|
||||
npm install
|
||||
|
||||
# Or try with different package manager
|
||||
pnpm install
|
||||
# or
|
||||
yarn install
|
||||
```
|
||||
|
||||
### TypeScript Errors
|
||||
|
||||
**Problem:** TypeScript compilation errors with LlamaIndex imports
|
||||
|
||||
**Solution:** Ensure you have the correct TypeScript configuration:
|
||||
|
||||
```json5
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"skipLibCheck": true, // Skip type checking of node_modules
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"esModuleInterop": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Package Compatibility Issues
|
||||
|
||||
**Problem:** Some packages don't work in certain environments
|
||||
|
||||
**Common incompatibilities:**
|
||||
- `@llamaindex/readers` - May not work in serverless environments
|
||||
- `@llamaindex/huggingface` - Limited browser/edge compatibility
|
||||
- File system readers - Don't work in browser/edge environments
|
||||
|
||||
**Solution:** Use environment-specific alternatives:
|
||||
|
||||
```typescript
|
||||
// Instead of file system readers in serverless
|
||||
// Use remote data sources
|
||||
async function loadDocumentsFromAPI() {
|
||||
const response = await fetch('https://api.example.com/documents');
|
||||
const data = await response.json();
|
||||
return data.map(doc => new Document(doc.content));
|
||||
}
|
||||
```
|
||||
|
||||
## Runtime Issues
|
||||
|
||||
### Memory Errors
|
||||
|
||||
**Problem:** Out of memory errors during index creation or querying
|
||||
|
||||
**Solution:** Optimize memory usage:
|
||||
|
||||
```typescript
|
||||
// Batch process large document sets
|
||||
async function batchProcessDocuments(documents: Document[], batchSize = 10) {
|
||||
const results = [];
|
||||
|
||||
for (let i = 0; i < documents.length; i += batchSize) {
|
||||
const batch = documents.slice(i, i + batchSize);
|
||||
const batchIndex = await VectorStoreIndex.fromDocuments(batch);
|
||||
results.push(batchIndex);
|
||||
|
||||
// Optional: Add delay between batches
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
```
|
||||
|
||||
**For serverless environments:**
|
||||
|
||||
```typescript
|
||||
// Use external vector stores instead of in-memory
|
||||
// TODO: Example with Pinecone, Weaviate, etc.
|
||||
// const vectorStore = new PineconeVectorStore(/* config */);
|
||||
// const index = await VectorStoreIndex.fromVectorStore(vectorStore);
|
||||
```
|
||||
|
||||
### API Rate Limiting
|
||||
|
||||
**Problem:** Rate limiting errors from LLM providers
|
||||
|
||||
**Solution:** Implement retry logic with exponential backoff:
|
||||
|
||||
```typescript
|
||||
async function queryWithRetry(queryEngine: any, question: string, maxRetries = 3) {
|
||||
for (let i = 0; i < maxRetries; i++) {
|
||||
try {
|
||||
return await queryEngine.query(question);
|
||||
} catch (error) {
|
||||
if (error.message.includes('rate limit') && i < maxRetries - 1) {
|
||||
const delay = Math.pow(2, i) * 1000; // Exponential backoff
|
||||
await new Promise(resolve => setTimeout(resolve, delay));
|
||||
continue;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Tokenization Performance
|
||||
|
||||
**Problem:** Slow tokenization affecting performance
|
||||
|
||||
**Solution:** Install faster tokenizer (Node.js only):
|
||||
|
||||
```bash
|
||||
npm install gpt-tokenizer
|
||||
```
|
||||
|
||||
LlamaIndex will automatically use this for 60x faster tokenization.
|
||||
|
||||
## Bundling Issues
|
||||
|
||||
### Bundle Size Too Large
|
||||
|
||||
**Problem:** Large bundle sizes affecting performance
|
||||
|
||||
**Solution:** Use dynamic imports and code splitting:
|
||||
|
||||
```typescript
|
||||
// Lazy load LlamaIndex components
|
||||
const initializeLlamaIndex = async () => {
|
||||
const { VectorStoreIndex, SimpleDirectoryReader } = await import("llamaindex");
|
||||
return { VectorStoreIndex, SimpleDirectoryReader };
|
||||
};
|
||||
|
||||
// In your API route
|
||||
export async function POST(request: NextRequest) {
|
||||
const { VectorStoreIndex, SimpleDirectoryReader } = await initializeLlamaIndex();
|
||||
// Use the imported modules
|
||||
}
|
||||
```
|
||||
|
||||
### Webpack/Vite Bundling Issues
|
||||
|
||||
**Problem:** Bundler compatibility issues
|
||||
|
||||
**Solution for Next.js:**
|
||||
|
||||
```javascript
|
||||
// next.config.mjs
|
||||
import withLlamaIndex from "llamaindex/next";
|
||||
|
||||
const nextConfig = {
|
||||
webpack: (config, { isServer }) => {
|
||||
// Custom webpack configuration if needed
|
||||
if (!isServer) {
|
||||
config.resolve.fallback = {
|
||||
...config.resolve.fallback,
|
||||
fs: false,
|
||||
net: false,
|
||||
tls: false,
|
||||
};
|
||||
}
|
||||
return config;
|
||||
},
|
||||
};
|
||||
|
||||
export default withLlamaIndex(nextConfig);
|
||||
```
|
||||
|
||||
**Solution for Vite:**
|
||||
|
||||
```typescript
|
||||
// vite.config.ts
|
||||
import { defineConfig } from 'vite';
|
||||
|
||||
export default defineConfig({
|
||||
define: {
|
||||
global: 'globalThis',
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
// Add aliases for problematic modules
|
||||
},
|
||||
},
|
||||
optimizeDeps: {
|
||||
include: ['llamaindex'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
## Environment-Specific Issues
|
||||
|
||||
### Node.js Version Compatibility
|
||||
|
||||
**Problem:** Node.js version compatibility issues
|
||||
|
||||
**Solution:** Use supported Node.js versions:
|
||||
|
||||
```json
|
||||
{
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Check your Node.js version:**
|
||||
|
||||
```bash
|
||||
node --version
|
||||
```
|
||||
|
||||
### Cloudflare Workers Issues
|
||||
|
||||
**Problem:** Module not available in Cloudflare Workers
|
||||
|
||||
**Solution:** Use `@llamaindex/env` for environment compatibility:
|
||||
|
||||
```typescript
|
||||
export default {
|
||||
async fetch(request: Request, env: Env): Promise<Response> {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(env);
|
||||
|
||||
// Your LlamaIndex code here
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
### Vercel Edge Runtime Issues
|
||||
|
||||
**Problem:** Limited Node.js API access in Edge Runtime
|
||||
|
||||
**Solution:** Use standard runtime or adapt code:
|
||||
|
||||
```typescript
|
||||
// Force standard runtime
|
||||
export const runtime = "nodejs";
|
||||
|
||||
// Or adapt for edge
|
||||
export const runtime = "edge";
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
// Use edge-compatible code only
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(process.env);
|
||||
|
||||
// Avoid file system operations
|
||||
// Use remote data sources
|
||||
}
|
||||
```
|
||||
|
||||
## Performance Issues
|
||||
|
||||
### Slow Query Responses
|
||||
|
||||
**Problem:** Slow query performance
|
||||
|
||||
**Solution:** Implement caching and optimization:
|
||||
|
||||
```typescript
|
||||
import { LRUCache } from 'lru-cache';
|
||||
|
||||
const queryCache = new LRUCache<string, string>({
|
||||
max: 100,
|
||||
ttl: 1000 * 60 * 10, // 10 minutes
|
||||
});
|
||||
|
||||
export async function optimizedQuery(question: string, queryEngine: any) {
|
||||
// Check cache first
|
||||
const cached = queryCache.get(question);
|
||||
if (cached) return cached;
|
||||
|
||||
// Query and cache result
|
||||
const result = await queryEngine.query(question);
|
||||
queryCache.set(question, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
### Cold Start Issues
|
||||
|
||||
**Problem:** Slow cold starts in serverless environments
|
||||
|
||||
**Solution:** Pre-warm your functions:
|
||||
|
||||
```typescript
|
||||
// Pre-initialize outside handler
|
||||
let cachedQueryEngine: any = null;
|
||||
|
||||
export async function handler(event: any) {
|
||||
if (!cachedQueryEngine) {
|
||||
cachedQueryEngine = await initializeQueryEngine();
|
||||
}
|
||||
|
||||
// Use cached engine
|
||||
return await cachedQueryEngine.query(question);
|
||||
}
|
||||
```
|
||||
|
||||
## Environment Variable Issues
|
||||
|
||||
### Missing API Keys
|
||||
|
||||
**Problem:** API key not found or invalid
|
||||
|
||||
**Solution:** Verify environment variable setup:
|
||||
|
||||
```typescript
|
||||
// Check if API key is available
|
||||
if (!process.env.OPENAI_API_KEY) {
|
||||
throw new Error('OPENAI_API_KEY environment variable is required');
|
||||
}
|
||||
|
||||
// For debugging (remove in production)
|
||||
console.log('API Key present:', !!process.env.OPENAI_API_KEY);
|
||||
```
|
||||
|
||||
### Environment Variable Loading
|
||||
|
||||
**Problem:** Environment variables not loading correctly
|
||||
|
||||
**Solution:** Use proper loading mechanisms:
|
||||
|
||||
```typescript
|
||||
// For Node.js
|
||||
import 'dotenv/config';
|
||||
|
||||
// For Next.js - use .env.local
|
||||
// Variables are automatically loaded
|
||||
|
||||
// For Cloudflare Workers
|
||||
export default {
|
||||
async fetch(request: Request, env: Env): Promise<Response> {
|
||||
// Use env parameter, not process.env
|
||||
const apiKey = env.OPENAI_API_KEY;
|
||||
// ...
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Common Error Messages
|
||||
|
||||
### "Cannot find module 'llamaindex'"
|
||||
|
||||
**Cause:** Package not installed or module resolution issue
|
||||
|
||||
**Solution:**
|
||||
```bash
|
||||
npm install llamaindex
|
||||
```
|
||||
|
||||
### "Module not found: Can't resolve 'fs'"
|
||||
|
||||
**Cause:** File system modules used in browser/edge environment
|
||||
|
||||
**Solution:**
|
||||
```typescript
|
||||
// Use dynamic imports with fallbacks
|
||||
const loadDocuments = async () => {
|
||||
if (typeof window !== 'undefined') {
|
||||
// Browser environment - use alternative
|
||||
return await loadDocumentsFromAPI();
|
||||
} else {
|
||||
// Node.js environment - use file system
|
||||
const { SimpleDirectoryReader } = await import('llamaindex');
|
||||
return await new SimpleDirectoryReader('data').loadData();
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### "ReferenceError: global is not defined"
|
||||
|
||||
**Cause:** Global polyfill missing in browser environments
|
||||
|
||||
**Solution:**
|
||||
```typescript
|
||||
// Add to your app entry point
|
||||
if (typeof global === 'undefined') {
|
||||
global = globalThis;
|
||||
}
|
||||
```
|
||||
|
||||
### "Cannot read properties of undefined (reading 'query')"
|
||||
|
||||
**Cause:** Query engine not properly initialized
|
||||
|
||||
**Solution:**
|
||||
```typescript
|
||||
// Always check initialization
|
||||
if (!queryEngine) {
|
||||
throw new Error('Query engine not initialized');
|
||||
}
|
||||
|
||||
// Or use optional chaining
|
||||
const response = await queryEngine?.query(question);
|
||||
```
|
||||
|
||||
## Debugging Tips
|
||||
|
||||
### Enable Debug Logging
|
||||
|
||||
```typescript
|
||||
// Enable debug logging
|
||||
process.env.DEBUG = "llamaindex:*";
|
||||
|
||||
// Or specific modules
|
||||
process.env.DEBUG = "llamaindex:vector-store";
|
||||
```
|
||||
|
||||
### Check Package Versions
|
||||
|
||||
```bash
|
||||
npm list llamaindex
|
||||
npm list @llamaindex/openai
|
||||
```
|
||||
|
||||
### Test in Isolation
|
||||
|
||||
```typescript
|
||||
// Create minimal test case
|
||||
import { VectorStoreIndex } from 'llamaindex';
|
||||
|
||||
async function testBasic() {
|
||||
try {
|
||||
console.log('Testing basic import...');
|
||||
const index = new VectorStoreIndex();
|
||||
console.log('Success!');
|
||||
} catch (error) {
|
||||
console.error('Error:', error);
|
||||
}
|
||||
}
|
||||
|
||||
testBasic();
|
||||
```
|
||||
|
||||
## Getting Help
|
||||
|
||||
### Before Asking for Help
|
||||
|
||||
1. **Check this troubleshooting guide**
|
||||
2. **Search existing GitHub issues**
|
||||
3. **Try minimal reproduction**
|
||||
4. **Check your environment configuration**
|
||||
|
||||
### When Reporting Issues
|
||||
|
||||
Include:
|
||||
- Node.js version (`node --version`)
|
||||
- Package versions (`npm list llamaindex`)
|
||||
- Environment (Node.js, Cloudflare Workers, Vercel, etc.)
|
||||
- Minimal code reproduction
|
||||
- Full error message and stack trace
|
||||
|
||||
### Useful Resources
|
||||
|
||||
- [GitHub Issues](https://github.com/run-llama/LlamaIndexTS/issues)
|
||||
- [Discord Community](https://discord.gg/dGcwcsnxhU)
|
||||
- [Documentation](https://docs.llamaindex.ai/)
|
||||
|
||||
## Next Steps
|
||||
|
||||
If you're still experiencing issues:
|
||||
|
||||
1. **Check specific deployment guides:**
|
||||
- [Server APIs](/docs/llamaindex/getting_started/installation/server-apis)
|
||||
- [Serverless Functions](/docs/llamaindex/getting_started/installation/serverless)
|
||||
- [Next.js Applications](/docs/llamaindex/getting_started/installation/nextjs)
|
||||
|
||||
2. **Open an issue** on GitHub with a minimal reproduction
|
||||
|
||||
3. **Join our Discord** for community support
|
||||
@@ -1,99 +0,0 @@
|
||||
---
|
||||
title: With TypeScript
|
||||
description: In this guide, you'll learn how to use LlamaIndex with TypeScript
|
||||
---
|
||||
|
||||
LlamaIndex.TS is written in TypeScript and designed to be used in TypeScript projects.
|
||||
|
||||
We put a lot of work on strong typing to make sure you have a great typing experience with code completion such as:
|
||||
|
||||
```ts twoslash
|
||||
import { PromptTemplate } from 'llamaindex'
|
||||
const promptTemplate = new PromptTemplate({
|
||||
template: `Context information from multiple sources is below.
|
||||
---------------------
|
||||
{context}
|
||||
---------------------
|
||||
Given the information from multiple sources and not prior knowledge.
|
||||
Answer the query in the style of a Shakespeare play"
|
||||
Query: {query}
|
||||
Answer:`,
|
||||
templateVars: ["context", "query"],
|
||||
});
|
||||
// @noErrors
|
||||
promptTemplate.format({
|
||||
c
|
||||
//^|
|
||||
})
|
||||
```
|
||||
|
||||
## Enable TypeScript
|
||||
|
||||
Make sure to set [moduleResolution](https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution) in your `tsconfig.json` file:
|
||||
|
||||
```json5
|
||||
{
|
||||
compilerOptions: {
|
||||
// ⬇️ add this line to your tsconfig.json
|
||||
moduleResolution: "bundler", // or "nodenext" | "node16" | "node"
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
We recommend using `bundler` or `nodenext`, but due to popularity of `node`, we still added support for it.
|
||||
|
||||
## Enable AsyncIterable for `Web Stream` API
|
||||
|
||||
Some modules uses `Web Stream` API like `ReadableStream` and `WritableStream`, you need to enable `DOM.AsyncIterable` in your `tsconfig.json`.
|
||||
|
||||
```json5
|
||||
{
|
||||
compilerOptions: {
|
||||
// ⬇️ add this lib to your tsconfig.json
|
||||
lib: ["DOM.AsyncIterable"],
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
```typescript
|
||||
import { tool } from 'llamaindex'
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
|
||||
Settings.llm = openai({
|
||||
model: "gpt-4o-mini",
|
||||
});
|
||||
|
||||
const addTool = tool({
|
||||
name: "add",
|
||||
description: "Adds two numbers",
|
||||
parameters: z.object({x: z.number(), y: z.number()}),
|
||||
execute: ({ x, y }) => x + y,
|
||||
});
|
||||
|
||||
const myAgent = agent({
|
||||
tools: [addTool],
|
||||
});
|
||||
|
||||
// Chat with the agent
|
||||
const context = myAgent.run("Hello, how are you?");
|
||||
|
||||
for await (const event of context) {
|
||||
if (event instanceof AgentStream) {
|
||||
for (const chunk of event.data.delta) {
|
||||
process.stdout.write(chunk); // stream response
|
||||
}
|
||||
} else {
|
||||
console.log(event); // other events
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Run TypeScript Script in Node.js
|
||||
|
||||
We recommend to use [tsx](https://www.npmjs.com/package/tsx) to run TypeScript script in Node.js.
|
||||
|
||||
```shell
|
||||
node --import tsx ./my-script.ts
|
||||
```
|
||||
@@ -1,23 +0,0 @@
|
||||
---
|
||||
title: With Vite
|
||||
description: In this guide, you'll learn how to use LlamaIndex with Vite
|
||||
---
|
||||
|
||||
Before you start, make sure you have try LlamaIndex.TS in Node.js to make sure you understand the basics.
|
||||
|
||||
<Card
|
||||
title="Getting Started with LlamaIndex.TS in Node.js"
|
||||
href="/docs/llamaindex/getting_started/installation/node"
|
||||
/>
|
||||
|
||||
Also, make sure you have a basic understanding of [Vite](https://vitejs.dev/).
|
||||
|
||||
## Why mention Vite?
|
||||
|
||||
Vite.js is widely used in building many web applications, like React.js, even for some native app like [Electron](https://www.electronjs.org/).
|
||||
|
||||
However, it's not a ready-to-use solution for a Node.js-like application using Vite, as Vite is designed for web applications(run in browser).
|
||||
|
||||
There's some plugin/framework based on Vite, like [Waku.gg](https://github.com/dai-shi/waku), or [Electron Vite](https://electron-vite.org/)
|
||||
|
||||
For now, we have no clear solution for bundling LlamaIndex.TS with Vite, if you have any idea/solution, please let us know.
|
||||
@@ -1,21 +1,118 @@
|
||||
---
|
||||
title: What is LlamaIndex.TS
|
||||
description: LlamaIndex is the leading data framework for building LLM applications
|
||||
title: Welcome to LlamaIndex.TS
|
||||
description: LlamaIndex.TS is the leading framework for utilizing context engineering to build LLM applications in JavaScript and TypeScript.
|
||||
---
|
||||
|
||||
LlamaIndex is a framework for building context-augmented generative AI applications with LLMs including agents and workflows.
|
||||
LlamaIndex.TS is a **framework for utilizing context engineering to build generative AI applications** with large language models. From rapid-prototyping RAG chatbots to deploying multi-agent workflows in production, LlamaIndex gives you everything you need — all in idiomatic TypeScript.
|
||||
|
||||
The TypeScript implementation is designed for JavaScript server side applications using <SiNodedotjs className="inline" color="#5FA04E" /> Node.js, <SiDeno className="inline" color="#70FFAF" /> Deno, <SiBun className="inline" /> Bun, <SiCloudflareworkers className="inline" color="#F38020" /> Cloudflare Workers, and more.
|
||||
Built for modern JavaScript runtimes like <SiNodedotjs className="inline" color="#5FA04E" /> **Node.js**, <SiDeno className="inline" color="#70FFAF" /> **Deno**, <SiBun className="inline" /> **Bun**, <SiCloudflareworkers className="inline" color="#F38020" /> **Cloudflare Workers**, and more.
|
||||
|
||||
LlamaIndex.TS provides tools for beginners, advanced users, and everyone in between.
|
||||
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 my-6">
|
||||
<a href="#introduction" className="block rounded-lg border border-gray-600/40 p-4 hover:border-gray-400 hover:bg-gray-700/20 no-underline">
|
||||
<h3 className="mb-1 text-lg font-semibold underline">Introduction</h3>
|
||||
<p className="text-sm text-gray-400 no-underline">Context engineering, agents & workflows — what do they mean?</p>
|
||||
</a>
|
||||
|
||||
Try it out with a starter example using StackBlitz:
|
||||
<a href="#use-cases" className="block rounded-lg border border-gray-600/40 p-4 hover:border-gray-400 hover:bg-gray-700/20 no-underline">
|
||||
<h3 className="mb-1 text-lg font-semibold underline">Use cases</h3>
|
||||
<p className="text-sm text-gray-400 no-underline">See what you can build with LlamaIndex.TS.</p>
|
||||
</a>
|
||||
|
||||
<a href="#getting-started" className="block rounded-lg border border-gray-600/40 p-4 hover:border-gray-400 hover:bg-gray-700/20 no-underline">
|
||||
<h3 className="mb-1 text-lg font-semibold underline">Getting started</h3>
|
||||
<p className="text-sm text-gray-400 no-underline">Your first app in 5 lines of code.</p>
|
||||
</a>
|
||||
|
||||
<a href="https://docs.cloud.llamaindex.ai/" className="block rounded-lg border border-gray-600/40 p-4 hover:border-gray-400 hover:bg-gray-700/20 no-underline" target="_blank" rel="noopener noreferrer">
|
||||
<h3 className="mb-1 text-lg font-semibold underline">LlamaCloud</h3>
|
||||
<p className="text-sm text-gray-400 no-underline">Managed parsing, extraction & retrieval pipelines.</p>
|
||||
</a>
|
||||
|
||||
<a href="#community" className="block rounded-lg border border-gray-600/40 p-4 hover:border-gray-400 hover:bg-gray-700/20 no-underline">
|
||||
<h3 className="mb-1 text-lg font-semibold underline">Community</h3>
|
||||
<p className="text-sm text-gray-400 no-underline">Join thousands of builders on Discord, Twitter, and more.</p>
|
||||
</a>
|
||||
|
||||
<a href="#related-projects" className="block rounded-lg border border-gray-600/40 p-4 hover:border-gray-400 hover:bg-gray-700/20 no-underline">
|
||||
<h3 className="mb-1 text-lg font-semibold underline">Related projects</h3>
|
||||
<p className="text-sm text-gray-400 no-underline">Connectors, demos & starter kits.</p>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Introduction
|
||||
|
||||
### What are agents?
|
||||
|
||||
[Agents](/docs/llamaindex/tutorials/agents/1_setup) are LLM-powered assistants that can reason, use external tools, and take actions to accomplish tasks such as research, data extraction, and automation.
|
||||
LlamaIndex.TS provides foundational building blocks for creating and orchestrating these agents.
|
||||
|
||||
### What are workflows?
|
||||
|
||||
[Workflows](/docs/llamaindex/tutorials/workflows) are multi-step, event-driven processes that combine agents, data connectors, and other tools to solve complex problems.
|
||||
With LlamaIndex.TS you can chain together retrieval, generation, and tool-calling steps and then deploy the entire pipeline as a microservice.
|
||||
|
||||
### What is context engineering?
|
||||
|
||||
LLMs come pre-trained on vast public corpora, but not on **your** private or domain-specific data.
|
||||
Context engineering bridges that gap by injecting the right pieces of your data into the LLM prompt at the right time.
|
||||
The most popular example is [Retrieval-Augmented Generation (RAG)](/docs/llamaindex/getting_started/concepts), but the same idea powers agent memory, evaluation, extraction, summarisation, and more.
|
||||
|
||||
LlamaIndex.TS gives you:
|
||||
|
||||
- **Data connectors** to ingest from APIs, files, SQL, and dozens more sources.
|
||||
- **Indexes & retrievers** to store and retrieve your data for LLM consumption.
|
||||
- **Agents and Engines** to query and use chat+reasoning interfaces over your data.
|
||||
- **Workflows** for fine-grained orchestration of your data and LLM-powered agents.
|
||||
- **Observability** integrations so you can iterate with confidence.
|
||||
|
||||
You can learn more about these concepts in our [concepts guide](/docs/llamaindex/getting_started/concepts).
|
||||
|
||||
## Use cases
|
||||
|
||||
Popular scenarios include:
|
||||
|
||||
- [LLM-Powered Agents](/docs/llamaindex/tutorials/agents/1_setup)
|
||||
- [Indexing and Retrieval](/docs/llamaindex/tutorials/rag)
|
||||
- [Extracting Structured Data](/docs/llamaindex/tutorials/structured_data_extraction)
|
||||
- [Custom Orchestration with Workflows](/docs/llamaindex/tutorials/workflows)
|
||||
|
||||
## Getting started
|
||||
|
||||
The fastest way to get started is in StackBlitz below — no local setup required:
|
||||
|
||||
<iframe
|
||||
className="w-full h-[440px]"
|
||||
aria-label="LlamaIndex.TS Starter"
|
||||
aria-description="This is a starter example for LlamaIndex.TS, it shows the basic usage of the library."
|
||||
aria-description="Interactive starter for LlamaIndex.TS"
|
||||
src="https://stackblitz.com/github/run-llama/LlamaIndexTS/tree/main/examples?embed=1&file=starter.ts"
|
||||
/>
|
||||
|
||||
You'll need an OpenAI API key to run this example. You can retrieve it from [OpenAI](https://platform.openai.com/api-keys).
|
||||
Want to learn more? We have several tutorials to get you started:
|
||||
|
||||
- [Installation + Runtime Guide](/docs/llamaindex/getting_started/installation)
|
||||
- [Create your first agent](/docs/llamaindex/tutorials/agents/1_setup)
|
||||
- [Learn how to index data and chat with it](/docs/llamaindex/tutorials/rag)
|
||||
- [Learn how to write your own workflows and agents](/docs/llamaindex/tutorials/workflows)
|
||||
|
||||
---
|
||||
|
||||
## LlamaCloud
|
||||
|
||||
Need an end-to-end managed pipeline? Check out **[LlamaCloud](https://cloud.llamaindex.ai/)**: best-in-class document parsing (LlamaParse), extraction (LlamaExtract), and indexing services with generous free tiers.
|
||||
|
||||
---
|
||||
|
||||
## Community
|
||||
|
||||
- [Twitter](https://twitter.com/llama_index)
|
||||
- [Discord](https://discord.gg/dGcwcsnxhU)
|
||||
- [LinkedIn](https://www.linkedin.com/company/llamaindex/)
|
||||
|
||||
We 💜 contributors! View our [contributing guide](https://github.com/run-llama/LlamaIndexTS/blob/main/CONTRIBUTING.md) to get started.
|
||||
|
||||
## Related projects
|
||||
|
||||
- [Python framework GitHub](https://github.com/run-llama/llama_index)
|
||||
- [Python docs](https://docs.llamaindex.ai/)
|
||||
- [create-llama](https://www.npmjs.com/package/create-llama) — scaffold a new project in seconds!
|
||||
- [UI Components](https://ui.llamaindex.ai/) — build chat applications with our Next.js components.
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
title: MCP Toolbox For Databases
|
||||
description: MCP Toolbox for Databases is an open source MCP server for databases.
|
||||
---
|
||||
|
||||
# MCP Toolbox for Databases
|
||||
|
||||
[MCP Toolbox for Databases](https://github.com/googleapis/genai-toolbox) is an open source MCP server for databases. It was designed with enterprise-grade and production-quality in mind. It enables you to develop tools easier, faster, and more securely by handling the complexities such as connection pooling, authentication, and more.
|
||||
|
||||
Toolbox Tools can be seemlessly integrated with LlamaIndex applications. For more
|
||||
information on [getting
|
||||
started](https://googleapis.github.io/genai-toolbox/getting-started/local_quickstart_js/) or
|
||||
[configuring](https://googleapis.github.io/genai-toolbox/getting-started/configure/)
|
||||
Toolbox, see the
|
||||
[documentation](https://googleapis.github.io/genai-toolbox/getting-started/introduction/).
|
||||
|
||||

|
||||
|
||||
### Configure and deploy
|
||||
|
||||
Toolbox is an open source server that you deploy and manage yourself. For more
|
||||
instructions on deploying and configuring, see the official Toolbox
|
||||
documentation:
|
||||
|
||||
* [Installing the Server](https://googleapis.github.io/genai-toolbox/getting-started/introduction/#installing-the-server)
|
||||
* [Configuring Toolbox](https://googleapis.github.io/genai-toolbox/getting-started/configure/)
|
||||
|
||||
### Install client SDK
|
||||
|
||||
LlamaIndex relies on the `@toolbox-sdk/core` node package to use Toolbox. Install the
|
||||
package before getting started:
|
||||
|
||||
```shell
|
||||
npm install @toolbox-sdk/core
|
||||
```
|
||||
|
||||
### Loading Toolbox Tools
|
||||
|
||||
Once your Toolbox server is configured and up and running, you can load tools
|
||||
from your server using the SDK:
|
||||
|
||||
```javascript
|
||||
import { gemini, GEMINI_MODEL } from "@llamaindex/google";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { tool } from "llamaindex";
|
||||
import { ToolboxClient } from "@toolbox-sdk/core";
|
||||
|
||||
// Initialize LLM
|
||||
const llm = gemini({
|
||||
model: GEMINI_MODEL.GEMINI_2_0_FLASH,
|
||||
apiKey: process.env.GOOGLE_API_KEY,
|
||||
});
|
||||
|
||||
// Replace with your Toolbox Server URL
|
||||
const URL = 'https://127.0.0.1:5000';
|
||||
|
||||
const client = new ToolboxClient("http://127.0.0.1:5000");
|
||||
const toolboxTools = await client.loadToolset("my-toolset");
|
||||
|
||||
const getTool = (toolboxTool) => tool({
|
||||
name: toolboxTool.getName(),
|
||||
description: toolboxTool.getDescription(),
|
||||
parameters: toolboxTool.getParamSchema(),
|
||||
execute: toolboxTool
|
||||
});
|
||||
const tools = toolboxTools.map(getTool);
|
||||
|
||||
const myAgent = agent({
|
||||
tools: tools,
|
||||
llm,
|
||||
memory,
|
||||
systemPrompt: prompt,
|
||||
});
|
||||
const result = await myAgent.run(query);
|
||||
console.log(result);
|
||||
```
|
||||
|
||||
### Advanced Toolbox Features
|
||||
|
||||
Toolbox has a variety of features to make developing Gen AI tools for databases seamless.
|
||||
For more information, read more about the following:
|
||||
|
||||
- [Authenticated Parameters](https://googleapis.github.io/genai-toolbox/resources/tools/#authenticated-parameters): bind tool inputs to values from OIDC tokens automatically, making it easy to run sensitive queries without potentially leaking data
|
||||
- [Authorized Invocations](https://googleapis.github.io/genai-toolbox/resources/tools/#authorized-invocations): restrict access to use a tool based on the users Auth token
|
||||
- [OpenTelemetry](https://googleapis.github.io/genai-toolbox/how-to/export_telemetry/): get metrics and tracing from Toolbox with [OpenTelemetry](https://opentelemetry.io/docs/)
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "Integration",
|
||||
"description": "See our integrations",
|
||||
"pages": ["open-llm-metry", "lang-trace", "vercel"]
|
||||
"pages": ["open-llm-metry", "lang-trace", "mcp-toolbox", "vercel"]
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ const jokeAgent = agent({
|
||||
// Run the workflow
|
||||
const result = await jokeAgent.run("Tell me something funny");
|
||||
console.log(result.data.result); // Baby Llama is called cria
|
||||
console.log(result.data.message); // { role: 'assistant', content: 'Baby Llama is called cria' }
|
||||
```
|
||||
|
||||
### Event Streaming
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
---
|
||||
title: Low-Level LLM Execution
|
||||
---
|
||||
|
||||
Sometimes your need more control over LLM interactions than what high-level agents provide. The `llm.exec` method makes it simple for you to make a single LLM call with tools but hides the complexity of executing the tools and generating the tool messages.
|
||||
|
||||
## When to Use `llm.exec`
|
||||
|
||||
Use `llm.exec` when you need to:
|
||||
- Build custom agent logic in [workflow](/docs/llamaindex/modules/agents/workflows) steps
|
||||
- Have precise control over message handling and tool execution
|
||||
|
||||
## Basic Usage
|
||||
|
||||
The `llm.exec` method takes messages and tools as parameter and executes one LLM call.
|
||||
The LLM might either request to call one or more of the tools or generate an assistant message as result.
|
||||
For each tool call that is requested, `llm.exec` executes it and generates the two tool call messages (call and result). If no tool call is requested, just the assistant message is returned.
|
||||
|
||||
```ts
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { ChatMessage, tool } from "llamaindex";
|
||||
import z from "zod";
|
||||
|
||||
const llm = openai({ model: "gpt-4.1-mini" });
|
||||
const messages = [
|
||||
{
|
||||
content: "What's the weather like in San Francisco?",
|
||||
role: "user",
|
||||
} as ChatMessage,
|
||||
];
|
||||
|
||||
const { newMessages, toolCalls } = await llm.exec({
|
||||
messages,
|
||||
tools: [
|
||||
tool({
|
||||
name: "get_weather",
|
||||
description: "Get the current weather for a location",
|
||||
parameters: z.object({
|
||||
address: z.string().describe("The address"),
|
||||
}),
|
||||
execute: ({ address }) => {
|
||||
return `It's sunny in ${address}!`;
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
// Add the new messages (including tool calls and responses) to your conversation
|
||||
messages.push(...newMessages);
|
||||
```
|
||||
|
||||
> `newMessages` is an array as each tool call generates two messages: a tool call message and the tool call result message.
|
||||
|
||||
## Agent Loop Pattern
|
||||
|
||||
A common pattern is to use `llm.exec` in a loop until the LLM stops making tool calls:
|
||||
|
||||
```ts
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { ChatMessage, tool } from "llamaindex";
|
||||
import z from "zod";
|
||||
|
||||
async function runAgentLoop() {
|
||||
const llm = openai({ model: "gpt-4.1-mini" });
|
||||
const messages = [
|
||||
{
|
||||
content: "What's the weather like in San Francisco?",
|
||||
role: "user",
|
||||
} as ChatMessage,
|
||||
];
|
||||
|
||||
let exit = false;
|
||||
do {
|
||||
const { newMessages, toolCalls } = await llm.exec({
|
||||
messages,
|
||||
tools: [
|
||||
tool({
|
||||
name: "get_weather",
|
||||
description: "Get the current weather for a location",
|
||||
parameters: z.object({
|
||||
address: z.string().describe("The address"),
|
||||
}),
|
||||
execute: ({ address }) => {
|
||||
return `It's sunny in ${address}!`;
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
console.log(newMessages);
|
||||
messages.push(...newMessages);
|
||||
|
||||
// Exit when no more tool calls are made
|
||||
exit = toolCalls.length === 0;
|
||||
} while (!exit);
|
||||
}
|
||||
```
|
||||
|
||||
## Streaming Support
|
||||
|
||||
For real-time responses, use the `stream` option to get the assistant's response as streamed tokens:
|
||||
|
||||
```ts
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { tool } from "llamaindex";
|
||||
import z from "zod";
|
||||
|
||||
async function streamingAgentLoop() {
|
||||
const llm = openai({ model: "gpt-4o-mini" });
|
||||
const messages = [
|
||||
{
|
||||
content: "What's the weather like in San Francisco?",
|
||||
role: "user",
|
||||
} as ChatMessage,
|
||||
];
|
||||
|
||||
let exit = false;
|
||||
do {
|
||||
const { stream, newMessages, toolCalls } = await llm.exec({
|
||||
messages,
|
||||
tools: [
|
||||
tool({
|
||||
name: "get_weather",
|
||||
description: "Get the current weather for a location",
|
||||
parameters: z.object({
|
||||
address: z.string().describe("The address"),
|
||||
}),
|
||||
execute: ({ address }) => {
|
||||
return `It's sunny in ${address}!`;
|
||||
},
|
||||
}),
|
||||
],
|
||||
stream: true,
|
||||
});
|
||||
|
||||
// Stream the response token by token
|
||||
for await (const chunk of stream) {
|
||||
process.stdout.write(chunk.delta);
|
||||
}
|
||||
|
||||
messages.push(...newMessages());
|
||||
|
||||
exit = toolCalls.length === 0;
|
||||
} while (!exit);
|
||||
}
|
||||
```
|
||||
|
||||
> `newMessages` is a function when streaming. The reason is that the result only is available after streaming. Calling it before, will throw an error.
|
||||
|
||||
## Return Values
|
||||
|
||||
`llm.exec` returns an object with:
|
||||
|
||||
- **`newMessages`**: Array of new chat messages including the LLM response and any tool call messages (call or result). This is a function return the array when streaming.
|
||||
- **`toolCalls`**: Array of tool calls made by the LLM
|
||||
- **`stream`**: Async iterable for streaming responses (only when `stream: true`)
|
||||
|
||||
## Best Practices
|
||||
|
||||
For using `llm.exec` in an agent loop, take care to:
|
||||
|
||||
1. **Maintain message history**: Always add `newMessages` to your conversation history
|
||||
2. **Set exit conditions**: Implement proper logic to avoid infinite loops
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"title": "Agents",
|
||||
"pages": ["tool", "agent_workflow", "workflows", "natural_language_workflow"]
|
||||
"pages": [
|
||||
"tool",
|
||||
"agent_workflow",
|
||||
"workflows",
|
||||
"low-level",
|
||||
"natural_language_workflow"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -101,6 +101,9 @@ const agent = agent({
|
||||
});
|
||||
```
|
||||
|
||||
You can also use [MCP Toolbox for
|
||||
Databases](/docs/llamaindex/integration/mcp-toolbox) to interact with MCP tools.
|
||||
|
||||
|
||||
## Function tool
|
||||
|
||||
|
||||
@@ -106,34 +106,40 @@ const memory = createMemory({
|
||||
|
||||
Long-term memory is represented as `Memory Block` objects. These objects contain information that are from previous user sessions or from the beginning of the current conversation. When memory is retrieved (by calling `getLLM`), the short-term and long-term memories are merged together within the given `tokenLimit`.
|
||||
|
||||
Currently, there are two predefined memory blocks:
|
||||
Currently, there are three predefined memory blocks:
|
||||
|
||||
- `staticBlock`: A memory block that stores a static piece of information.
|
||||
- `factExtractionBlock`: A memory block that extracts facts from the chat history.
|
||||
- `vectorBlock`: A memory block that stores and retrieves chat messages from a vector database using semantic similarity search. Messages are stored individually and retrieved based on their relevance to recent conversation context. Here we've passed in the `vectorStore` to use to store and retrieve the chat messages.
|
||||
|
||||
This sounds a bit complicated, but it's actually quite simple. Let's look at an example:
|
||||
|
||||
```ts
|
||||
import { createMemory, factExtractionBlock, staticBlock } from "llamaindex";
|
||||
import { createMemory, factExtractionBlock, staticBlock, vectorBlock } from "llamaindex";
|
||||
import { QdrantVectorStore } from "@llamaindex/qdrant";
|
||||
import { OpenAIEmbedding } from "@llamaindex/openai";
|
||||
|
||||
const memoryBlocks= [
|
||||
staticBlock({
|
||||
id: "core_info",
|
||||
content: "My name is Logan, and I live in Saskatoon. I work at LlamaIndex.",
|
||||
}),
|
||||
factExtractionBlock({
|
||||
id: "user-extracted_info",
|
||||
priority: 1,
|
||||
llm: llm,
|
||||
maxFacts: 50,
|
||||
}),
|
||||
vectorBlock({
|
||||
vectorStore: new QdrantVectorStore({ url: "http://localhost:6333" }),
|
||||
priority: 2,
|
||||
}),
|
||||
];
|
||||
```
|
||||
|
||||
Here, we've setup two memory blocks:
|
||||
Here, we've setup three memory blocks:
|
||||
|
||||
- `core_info`: A static memory block that stores some core information about the user. This information will always be inserted into the memory. The type used is `MessageContent` to support multi-modal content.
|
||||
- `extracted_info`: An extracted memory block that will extract information from the chat history. Here we've passed in the `llm` to use to extract facts from the chat history, and set the `maxFacts` to 50. If the number of extracted facts exceeds this limit, the `maxFacts` will be automatically summarized and reduced to leave room for new information.
|
||||
- `staticBlock`: A static memory block that stores some core information about the user. This information will always be inserted into the memory. The type used is `MessageContent` to support multi-modal content.
|
||||
- `factExtractionBlock`: An extracted memory block that will extract information from the chat history. Here we've passed in the `llm` to use to extract facts from the chat history, and set the `maxFacts` to 50. If the number of extracted facts exceeds this limit, the `maxFacts` will be automatically summarized and reduced to leave room for new information.
|
||||
- `vectorBlock`: A vector memory block that will store in a vector database and retrieve them from there. Messages are stored individually and retrieved based on their relevance to recent conversation context. Here we've passed in the `vectorStore` to use to store and retrieve the chat messages.
|
||||
|
||||
You'll also notice that we've set the `priority` for the `factExtractionBlock` block. This is used to determine the handling when the memory blocks content (i.e. long-term memory) + short-term memory exceeds the token limit on the `Memory` object.
|
||||
|
||||
@@ -158,6 +164,46 @@ When memory is retrieved (using `getLLM`), the short-term and long-term memories
|
||||
|
||||
The amount of short-term memory included is specified by the `shortTermTokenLimitRatio`. If it's set to `0.7`, 70% of the `tokenLimit` is used for short-term memory (not including the static memory block).
|
||||
|
||||
|
||||
#### VectorBlock Configuration Options
|
||||
|
||||
The `vectorBlock` offers several configuration options to customize its behavior:
|
||||
|
||||
```ts
|
||||
vectorBlock({
|
||||
vectorStore: new QdrantVectorStore({ url: "http://localhost:6333" }),
|
||||
priority: 2,
|
||||
retrievalContextWindow: 5, // Number of recent messages to use for context when retrieving
|
||||
formatTemplate: new PromptTemplate({ template: "Context: {{ context }}" }), // Custom formatting template
|
||||
nodePostprocessors: [/* custom postprocessors */], // Apply processing to retrieved nodes
|
||||
queryOptions: {
|
||||
similarityTopK: 3, // Number of top similar results to return (default: 2)
|
||||
mode: VectorStoreQueryMode.DEFAULT, // Query mode for the vector store
|
||||
sessionFilterKey: "session_id", // Metadata key for session filtering (default: "session_id")
|
||||
// Custom filters can be added here - session filter is automatically included
|
||||
filters: {
|
||||
filters: [
|
||||
{ key: "custom_field", value: "custom_value", operator: "==" }
|
||||
],
|
||||
condition: "and"
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
**Key Configuration Options:**
|
||||
|
||||
- **`retrievalContextWindow`**: Number of recent messages to consider when creating the retrieval query (default: 5). A larger window provides more context but may be less precise.
|
||||
- **`formatTemplate`**: Template for formatting retrieved information before adding to memory. Defaults to a simple context template.
|
||||
- **`nodePostprocessors`**: Array of postprocessors to apply to retrieved nodes, useful for filtering or transforming results.
|
||||
- **`queryOptions.similarityTopK`**: Number of most similar messages to retrieve from the vector store (default: 2).
|
||||
- **`queryOptions.sessionFilterKey`**: Metadata key used to isolate memory between different sessions (default: "session_id").
|
||||
- **`queryOptions.filters`**: Additional metadata filters for retrieval. The session filter is automatically added to ensure memory isolation.
|
||||
|
||||
**Session Isolation:**
|
||||
|
||||
The vectorBlock automatically adds a session filter using the block's ID to ensure that memories from different sessions don't interfere with each other. This filter uses the `sessionFilterKey` (default: "session_id") and can be customized if needed.
|
||||
|
||||
## Persistence with Snapshots
|
||||
|
||||
Save and restore memory state:
|
||||
|
||||
@@ -5,13 +5,13 @@ title: Bedrock
|
||||
## Installation
|
||||
|
||||
```package-install
|
||||
npm i llamaindex @llamaindex/community
|
||||
npm i llamaindex @llamaindex/aws
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```ts
|
||||
import { BEDROCK_MODELS, Bedrock } from "@llamaindex/community";
|
||||
import { BEDROCK_MODELS, Bedrock } from "@llamaindex/aws";
|
||||
|
||||
Settings.llm = new Bedrock({
|
||||
model: BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_HAIKU,
|
||||
@@ -23,9 +23,19 @@ Settings.llm = new Bedrock({
|
||||
});
|
||||
```
|
||||
|
||||
Currently only supports Anthropic and Meta models:
|
||||
Supported models are listed below (accessible by BEDROCK_MODELS).
|
||||
|
||||
```ts
|
||||
AMAZON_TITAN_TG1_LARGE = "amazon.titan-tg1-large";
|
||||
AMAZON_TITAN_TEXT_EXPRESS_V1 = "amazon.titan-text-express-v1";
|
||||
AI21_J2_GRANDE_INSTRUCT = "ai21.j2-grande-instruct";
|
||||
AI21_J2_JUMBO_INSTRUCT = "ai21.j2-jumbo-instruct";
|
||||
AI21_J2_MID = "ai21.j2-mid";
|
||||
AI21_J2_MID_V1 = "ai21.j2-mid-v1";
|
||||
AI21_J2_ULTRA = "ai21.j2-ultra";
|
||||
AI21_J2_ULTRA_V1 = "ai21.j2-ultra-v1";
|
||||
COHERE_COMMAND_TEXT_V14 = "cohere.command-text-v14";
|
||||
|
||||
ANTHROPIC_CLAUDE_INSTANT_1 = "anthropic.claude-instant-v1";
|
||||
ANTHROPIC_CLAUDE_2 = "anthropic.claude-v2";
|
||||
ANTHROPIC_CLAUDE_2_1 = "anthropic.claude-v2:1";
|
||||
@@ -33,7 +43,12 @@ ANTHROPIC_CLAUDE_3_SONNET = "anthropic.claude-3-sonnet-20240229-v1:0";
|
||||
ANTHROPIC_CLAUDE_3_HAIKU = "anthropic.claude-3-haiku-20240307-v1:0";
|
||||
ANTHROPIC_CLAUDE_3_OPUS = "anthropic.claude-3-opus-20240229-v1:0"; // available on us-west-2
|
||||
ANTHROPIC_CLAUDE_3_5_SONNET = "anthropic.claude-3-5-sonnet-20240620-v1:0";
|
||||
ANTHROPIC_CLAUDE_3_5_SONNET_V2 = "anthropic.claude-3-5-sonnet-20241022-v2:0";
|
||||
ANTHROPIC_CLAUDE_3_5_HAIKU = "anthropic.claude-3-5-haiku-20241022-v1:0";
|
||||
ANTHROPIC_CLAUDE_3_7_SONNET = "anthropic.claude-3-7-sonnet-20250219-v1:0";
|
||||
ANTHROPIC_CLAUDE_4_SONNET = "anthropic.claude-sonnet-4-20250514-v1:0";
|
||||
ANTHROPIC_CLAUDE_4_OPUS = "anthropic.claude-opus-4-20250514-v1:0";
|
||||
|
||||
META_LLAMA2_13B_CHAT = "meta.llama2-13b-chat-v1";
|
||||
META_LLAMA2_70B_CHAT = "meta.llama2-70b-chat-v1";
|
||||
META_LLAMA3_8B_INSTRUCT = "meta.llama3-8b-instruct-v1:0";
|
||||
@@ -45,41 +60,67 @@ META_LLAMA3_2_1B_INSTRUCT = "meta.llama3-2-1b-instruct-v1:0"; // only available
|
||||
META_LLAMA3_2_3B_INSTRUCT = "meta.llama3-2-3b-instruct-v1:0"; // only available via inference endpoints (see below)
|
||||
META_LLAMA3_2_11B_INSTRUCT = "meta.llama3-2-11b-instruct-v1:0"; // only available via inference endpoints (see below), multimodal and function call supported
|
||||
META_LLAMA3_2_90B_INSTRUCT = "meta.llama3-2-90b-instruct-v1:0"; // only available via inference endpoints (see below), multimodal and function call supported
|
||||
META_LLAMA3_3_70B_INSTRUCT = "meta.llama3-3-70b-instruct-v1:0";
|
||||
|
||||
MISTRAL_7B_INSTRUCT = "mistral.mistral-7b-instruct-v0:2";
|
||||
MISTRAL_MIXTRAL_7B_INSTRUCT = "mistral.mixtral-8x7b-instruct-v0:1";
|
||||
MISTRAL_MIXTRAL_LARGE_2402 = "mistral.mistral-large-2402-v1:0";
|
||||
|
||||
AMAZON_NOVA_PREMIER_1 = "amazon.nova-premier-v1:0";
|
||||
AMAZON_NOVA_PRO_1 = "amazon.nova-pro-v1:0";
|
||||
AMAZON_NOVA_LITE_1 = "amazon.nova-lite-v1:0";
|
||||
AMAZON_NOVA_MICRO_1 = "amazon.nova-micro-v1:0";
|
||||
```
|
||||
|
||||
You can also use Bedrock's Inference endpoints by using the model names:
|
||||
You can also use Bedrock's Inference endpoints by using the model names (accessible by INFERENCE_BEDROCK_MODELS).
|
||||
Note that the region must be set correctly.
|
||||
|
||||
```ts
|
||||
// US
|
||||
//US
|
||||
US_ANTHROPIC_CLAUDE_3_HAIKU = "us.anthropic.claude-3-haiku-20240307-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_3_5_HAIKU = "us.anthropic.claude-3-5-haiku-20241022-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_3_OPUS = "us.anthropic.claude-3-opus-20240229-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_3_SONNET = "us.anthropic.claude-3-sonnet-20240229-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_3_5_SONNET = "us.anthropic.claude-3-5-sonnet-20240620-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_3_5_SONNET_V2 =
|
||||
"us.anthropic.claude-3-5-sonnet-20241022-v2:0";
|
||||
US_ANTHROPIC_CLAUDE_3_5_SONNET_V2 = "us.anthropic.claude-3-5-sonnet-20241022-v2:0";
|
||||
US_ANTHROPIC_CLAUDE_3_7_SONNET = "us.anthropic.claude-3-7-sonnet-20250219-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_4_SONNET = "us.anthropic.claude-sonnet-4-20250514-v1:0";
|
||||
US_ANTHROPIC_CLAUDE_4_OPUS = "us.anthropic.claude-opus-4-20250514-v1:0";
|
||||
US_META_LLAMA_3_2_1B_INSTRUCT = "us.meta.llama3-2-1b-instruct-v1:0";
|
||||
US_META_LLAMA_3_2_3B_INSTRUCT = "us.meta.llama3-2-3b-instruct-v1:0";
|
||||
US_META_LLAMA_3_2_11B_INSTRUCT = "us.meta.llama3-2-11b-instruct-v1:0";
|
||||
US_META_LLAMA_3_2_90B_INSTRUCT = "us.meta.llama3-2-90b-instruct-v1:0";
|
||||
US_AMAZON_NOVA_PRO_1 = "us.amazon.nova-premier-v1:0";
|
||||
US_META_LLAMA_3_3_70B_INSTRUCT = "us.meta.llama3-3-70b-instruct-v1:0";
|
||||
US_AMAZON_NOVA_PREMIER_1 = "us.amazon.nova-premier-v1:0";
|
||||
US_AMAZON_NOVA_PRO_1 = "us.amazon.nova-pro-v1:0";
|
||||
US_AMAZON_NOVA_LITE_1 = "us.amazon.nova-lite-v1:0";
|
||||
US_AMAZON_NOVA_MICRO_1 = "us.amazon.nova-micro-v1:0";
|
||||
|
||||
// EU
|
||||
//EU
|
||||
EU_ANTHROPIC_CLAUDE_3_HAIKU = "eu.anthropic.claude-3-haiku-20240307-v1:0";
|
||||
EU_ANTHROPIC_CLAUDE_3_5_HAIKU = "eu.anthropic.claude-3-5-haiku-20240307-v1:0";
|
||||
EU_ANTHROPIC_CLAUDE_3_SONNET = "eu.anthropic.claude-3-sonnet-20240229-v1:0";
|
||||
EU_ANTHROPIC_CLAUDE_3_5_SONNET = "eu.anthropic.claude-3-5-sonnet-20240620-v1:0";
|
||||
EU_ANTHROPIC_CLAUDE_3_7_SONNET = "eu.anthropic.claude-3-7-sonnet-20250219-v1:0";
|
||||
EU_ANTHROPIC_CLAUDE_4_SONNET = "eu.anthropic.claude-sonnet-4-20250514-v1:0";
|
||||
EU_ANTHROPIC_CLAUDE_4_OPUS = "eu.anthropic.claude-opus-4-20250514-v1:0";
|
||||
EU_META_LLAMA_3_2_1B_INSTRUCT = "eu.meta.llama3-2-1b-instruct-v1:0";
|
||||
EU_META_LLAMA_3_2_3B_INSTRUCT = "eu.meta.llama3-2-3b-instruct-v1:0";
|
||||
EU_AMAZON_NOVA_PRO_1 = "eu.amazon.nova-premier-v1:0";
|
||||
EU_AMAZON_NOVA_PREMIER_1 = "eu.amazon.nova-premier-v1:0";
|
||||
EU_AMAZON_NOVA_PRO_1 = "eu.amazon.nova-pro-v1:0";
|
||||
EU_AMAZON_NOVA_LITE_1 = "eu.amazon.nova-lite-v1:0";
|
||||
EU_AMAZON_NOVA_MICRO_1 = "eu.amazon.nova-micro-v1:0";
|
||||
|
||||
//APAC
|
||||
APAC_ANTHROPIC_CLAUDE_3_5_SONNET = "apac.anthropic.claude-3-5-sonnet-20240620-v1:0";
|
||||
APAC_ANTHROPIC_CLAUDE_3_5_SONNET_V2 = "apac.anthropic.claude-3-5-sonnet-20241022-v2:0";
|
||||
APAC_ANTHROPIC_CLAUDE_3_7_SONNET = "apac.anthropic.claude-3-7-sonnet-20250219-v1:0";
|
||||
APAC_ANTHROPIC_CLAUDE_4_SONNET = "apac.anthropic.claude-sonnet-4-20250514-v1:0";
|
||||
APAC_ANTHROPIC_CLAUDE_3_HAIKU = "apac.anthropic.claude-3-haiku-20240307-v1:0";
|
||||
APAC_ANTHROPIC_CLAUDE_3_SONNET = "apac.anthropic.claude-3-sonnet-20240229-v1:0";
|
||||
APAC_AMAZON_NOVA_PRO_1 = "apac.amazon.nova-pro-v1:0";
|
||||
APAC_AMAZON_NOVA_LITE_1 = "apac.amazon.nova-lite-v1:0";
|
||||
APAC_AMAZON_NOVA_MICRO_1 = "apac.amazon.nova-micro-v1:0";
|
||||
```
|
||||
|
||||
Sonnet, Haiku and Opus are multimodal, image_url only supports base64 data url format, e.g. `data:image/jpeg;base64,SGVsbG8sIFdvcmxkIQ==`
|
||||
@@ -87,10 +128,11 @@ Sonnet, Haiku and Opus are multimodal, image_url only supports base64 data url f
|
||||
## Full Example
|
||||
|
||||
```ts
|
||||
import { BEDROCK_MODELS, Bedrock } from "llamaindex";
|
||||
import { INFERENCE_BEDROCK_MODELS, Bedrock } from "@llamaindex/aws";
|
||||
|
||||
Settings.llm = new Bedrock({
|
||||
model: BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_HAIKU,
|
||||
model: INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_SONNET,
|
||||
region: "us-east-1",
|
||||
});
|
||||
|
||||
async function main() {
|
||||
@@ -119,7 +161,7 @@ async function main() {
|
||||
## Agent Example
|
||||
|
||||
```ts
|
||||
import { BEDROCK_MODELS, Bedrock } from "@llamaindex/community";
|
||||
import { BEDROCK_MODELS, Bedrock } from "@llamaindex/aws";
|
||||
import { tool } from "llamaindex";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { z } from "zod";
|
||||
|
||||
@@ -38,10 +38,13 @@ You should expect output something like:
|
||||
{
|
||||
result: '5 + 5 is 10. Then, 10 divided by 2 is 5.',
|
||||
state: {
|
||||
memory: ChatMemoryBuffer {
|
||||
chatStore: SimpleChatStore {},
|
||||
chatStoreKey: 'chat_history',
|
||||
tokenLimit: 750000
|
||||
memory: Memory {
|
||||
messages: [Array],
|
||||
tokenLimit: 30000,
|
||||
shortTermTokenLimitRatio: 0.7,
|
||||
memoryBlocks: [],
|
||||
memoryCursor: 0,
|
||||
adapters: [Object]
|
||||
},
|
||||
scratchpad: [],
|
||||
currentAgentName: 'Agent',
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: Custom Model Per Request
|
||||
---
|
||||
|
||||
There are scenarios, such as the case of a multi-tenant backend API, where it may be required to handle each request with a custom model.
|
||||
|
||||
In such a scenario, modifying the `Settings` object directly as follows is not recommended:
|
||||
|
||||
```typescript
|
||||
import { Settings } from 'llamaindex';
|
||||
import { OpenAIEmbedding } from '@llamaindex/embeddings-openai';
|
||||
|
||||
Settings.embedModel = new OpenAIEmbedding({ apiKey: 'CLIENT_API_KEY' });
|
||||
Settings.llm = openai({ apiKey: key, model: 'gpt-4o' })
|
||||
```
|
||||
|
||||
Setting `llm` and `embedModel` directly will lead to unpredictable responses, since `Settings` is global and mutable.
|
||||
This can lead to race conditions, as each request modifies `Settings.embedModel` or `Settings.llm`.
|
||||
|
||||
The recommended approach is to use `Settings.withEmbedModel` or `Settings.withLLM` as follows:
|
||||
|
||||
```typescript
|
||||
const embedModel = new OpenAIEmbedding({
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
});
|
||||
const llm = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
||||
|
||||
const llmResponse = await Settings.withEmbedModel(embedModel, async () => {
|
||||
return Settings.withLLM(llm, async () => {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
// Create Document object with essay
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
// Split text and create embeddings. Store them in a VectorStoreIndex
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
// Query the index
|
||||
const queryEngine = index.asQueryEngine();
|
||||
const { message, sourceNodes } = await queryEngine.query({
|
||||
query: "What did the author do in college?",
|
||||
});
|
||||
// Return response with sources
|
||||
return message.content;
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
The full example can be found [here](https://github.com/run-llama/LlamaIndexTS/tree/main/examples/local-settings).
|
||||
@@ -93,4 +93,4 @@ async function main() {
|
||||
main().catch(console.error);
|
||||
```
|
||||
|
||||
You can see the [full example file](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndexLocal.ts).
|
||||
You can see the [full example file](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/index/vectorIndexLocal.ts).
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"workflows",
|
||||
"local_llm",
|
||||
"chatbot",
|
||||
"structured_data_extraction"
|
||||
"structured_data_extraction",
|
||||
"custom_model_per_request"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -46,3 +46,31 @@ You should expect output something like:
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Using the `exec` method
|
||||
|
||||
Many LLMs do not natively support structured output, and often rely exclusively on prompt or context engineering.
|
||||
|
||||
In this sense, we proved you with an alternative for structured data extraction, using the `exec` method with `responseFormat`.
|
||||
|
||||
For example, you can, in a new folder, install our Anthropic integration and `zod` v3:
|
||||
|
||||
```package-install
|
||||
npm init
|
||||
npm i -D typescript @types/node
|
||||
npm i @llamaindex/anthropic zod@3.25.76
|
||||
```
|
||||
|
||||
And then try extracting data with this code:
|
||||
|
||||
<include cwd>../../examples/agents/tools/response-format-exec.ts</include>
|
||||
|
||||
The output should look like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "La Divina Commedia",
|
||||
"author": "Dante Alighieri",
|
||||
"year": 1321
|
||||
}
|
||||
```
|
||||
@@ -1,5 +1,97 @@
|
||||
# @llamaindex/cloudflare-worker-agent-test
|
||||
|
||||
## 0.0.190
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
|
||||
## 0.0.189
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 0.0.188
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
|
||||
## 0.0.187
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.0.186
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.0.185
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
|
||||
## 0.0.184
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
|
||||
## 0.0.183
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.0.182
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
|
||||
## 0.0.181
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
|
||||
## 0.0.180
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
|
||||
## 0.0.179
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.0.178
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.0.177
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.0.176
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.0.175
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||
"version": "0.0.175",
|
||||
"version": "0.0.190",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,92 @@
|
||||
# @llamaindex/llama-parse-browser-test
|
||||
|
||||
## 0.0.87
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@4.1.3
|
||||
|
||||
## 0.0.86
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@4.1.2
|
||||
|
||||
## 0.0.85
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4b51791]
|
||||
- @llamaindex/cloud@4.1.1
|
||||
|
||||
## 0.0.84
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- @llamaindex/cloud@4.1.0
|
||||
|
||||
## 0.0.83
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [c3bf3c7]
|
||||
- @llamaindex/cloud@4.0.28
|
||||
|
||||
## 0.0.82
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@4.0.27
|
||||
|
||||
## 0.0.81
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@4.0.26
|
||||
|
||||
## 0.0.80
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [2967d57]
|
||||
- @llamaindex/cloud@4.0.25
|
||||
|
||||
## 0.0.79
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@4.0.24
|
||||
|
||||
## 0.0.78
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a1b1598]
|
||||
- @llamaindex/cloud@4.0.23
|
||||
|
||||
## 0.0.77
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2be868]
|
||||
- @llamaindex/cloud@4.0.22
|
||||
|
||||
## 0.0.76
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [579ca0c]
|
||||
- @llamaindex/cloud@4.0.21
|
||||
|
||||
## 0.0.75
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [48b0d88]
|
||||
- Updated dependencies [f185772]
|
||||
- @llamaindex/cloud@4.0.20
|
||||
|
||||
## 0.0.74
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/llama-parse-browser-test",
|
||||
"private": true,
|
||||
"version": "0.0.74",
|
||||
"version": "0.0.87",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "^6.3.3",
|
||||
"vite": "^6.3.6",
|
||||
"vite-plugin-wasm": "^3.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,5 +1,97 @@
|
||||
# @llamaindex/next-agent-test
|
||||
|
||||
## 0.1.190
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
|
||||
## 0.1.189
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 0.1.188
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
|
||||
## 0.1.187
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.1.186
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.1.185
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
|
||||
## 0.1.184
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
|
||||
## 0.1.183
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.1.182
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
|
||||
## 0.1.181
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
|
||||
## 0.1.180
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
|
||||
## 0.1.179
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.1.178
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.1.177
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.1.176
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.1.175
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-agent-test",
|
||||
"version": "0.1.175",
|
||||
"version": "0.1.190",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
@@ -15,11 +15,11 @@
|
||||
"react-dom": "19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"eslint": "9.16.0",
|
||||
"eslint-config-next": "15.1.0",
|
||||
"@types/node": "^24.0.13",
|
||||
"@types/react": "^19.1.8",
|
||||
"@types/react-dom": "^19.1.6",
|
||||
"eslint": "9.30.1",
|
||||
"eslint-config-next": "15.3.5",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,97 @@
|
||||
# test-edge-runtime
|
||||
|
||||
## 0.1.189
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
|
||||
## 0.1.188
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 0.1.187
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
|
||||
## 0.1.186
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.1.185
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.1.184
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
|
||||
## 0.1.183
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
|
||||
## 0.1.182
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.1.181
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
|
||||
## 0.1.180
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
|
||||
## 0.1.179
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
|
||||
## 0.1.178
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.1.177
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.1.176
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.1.175
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.1.174
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||
"version": "0.1.174",
|
||||
"version": "0.1.189",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
@@ -14,9 +14,9 @@
|
||||
"react-dom": "^19.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@types/node": "^24.0.13",
|
||||
"@types/react": "^19.1.8",
|
||||
"@types/react-dom": "^19.1.6",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,130 @@
|
||||
# @llamaindex/next-node-runtime
|
||||
|
||||
## 0.1.61
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
- @llamaindex/huggingface@0.1.29
|
||||
- @llamaindex/readers@3.1.20
|
||||
|
||||
## 0.1.60
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
- @llamaindex/huggingface@0.1.28
|
||||
|
||||
## 0.1.59
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
- @llamaindex/huggingface@0.1.27
|
||||
- @llamaindex/readers@3.1.19
|
||||
|
||||
## 0.1.58
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/huggingface@0.1.26
|
||||
|
||||
## 0.1.57
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/huggingface@0.1.25
|
||||
|
||||
## 0.1.56
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.1.55
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.1.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
- @llamaindex/huggingface@0.1.24
|
||||
- @llamaindex/readers@3.1.18
|
||||
|
||||
## 0.1.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
- @llamaindex/huggingface@0.1.23
|
||||
- @llamaindex/readers@3.1.17
|
||||
|
||||
## 0.1.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.1.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
- @llamaindex/huggingface@0.1.22
|
||||
- @llamaindex/readers@3.1.16
|
||||
|
||||
## 0.1.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
- @llamaindex/huggingface@0.1.21
|
||||
- @llamaindex/readers@3.1.15
|
||||
|
||||
## 0.1.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/huggingface@0.1.20
|
||||
|
||||
## 0.1.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
- @llamaindex/huggingface@0.1.19
|
||||
- @llamaindex/readers@3.1.14
|
||||
|
||||
## 0.1.47
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.1.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.1.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.1.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.1.43
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-node-runtime-test",
|
||||
"version": "0.1.43",
|
||||
"version": "0.1.61",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
@@ -16,11 +16,11 @@
|
||||
"react-dom": "19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"eslint": "9.16.0",
|
||||
"eslint-config-next": "15.1.0",
|
||||
"@types/node": "^24.0.13",
|
||||
"@types/react": "^19.1.8",
|
||||
"@types/react-dom": "^19.1.6",
|
||||
"eslint": "9.30.1",
|
||||
"eslint-config-next": "15.3.5",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,97 @@
|
||||
# vite-import-llamaindex
|
||||
|
||||
## 0.0.56
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
|
||||
## 0.0.55
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 0.0.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
|
||||
## 0.0.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.0.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.0.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
|
||||
## 0.0.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
|
||||
## 0.0.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.0.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
|
||||
## 0.0.47
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
|
||||
## 0.0.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
|
||||
## 0.0.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.0.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.0.43
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.0.42
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.0.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "vite-import-llamaindex",
|
||||
"private": true,
|
||||
"version": "0.0.41",
|
||||
"version": "0.0.56",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
"size-limit": "size-limit"
|
||||
"size-limit": "size-limit",
|
||||
"ci-build": "pnpm -C ../../../ build && vite build"
|
||||
},
|
||||
"size-limit": [
|
||||
{
|
||||
@@ -16,7 +17,7 @@
|
||||
"@size-limit/preset-big-lib": "^11.1.6",
|
||||
"size-limit": "^11.1.6",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "^6.3.3"
|
||||
"vite": "^6.3.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"llamaindex": "workspace:*"
|
||||
|
||||
@@ -1,5 +1,97 @@
|
||||
# @llamaindex/waku-query-engine-test
|
||||
|
||||
## 0.0.190
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
|
||||
## 0.0.189
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 0.0.188
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
|
||||
## 0.0.187
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.0.186
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 0.0.185
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
|
||||
## 0.0.184
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
|
||||
## 0.0.183
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 0.0.182
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
|
||||
## 0.0.181
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
|
||||
## 0.0.180
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
|
||||
## 0.0.179
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 0.0.178
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 0.0.177
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 0.0.176
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 0.0.175
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/waku-query-engine-test",
|
||||
"version": "0.0.175",
|
||||
"version": "0.0.190",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@@ -18,10 +18,10 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4.1.4",
|
||||
"@types/react": "19.0.10",
|
||||
"@types/react-dom": "19.0.4",
|
||||
"@types/react": "19.1.8",
|
||||
"@types/react-dom": "19.1.6",
|
||||
"rollup": "4.38.0",
|
||||
"tailwindcss": "^4.1.4",
|
||||
"tailwindcss": "^4.1.11",
|
||||
"typescript": "5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,9 +44,7 @@ export const getWeatherTool = FunctionTool.from(
|
||||
name: "getWeather",
|
||||
description: "Get the weather for a city",
|
||||
parameters: z.object({
|
||||
city: z.string({
|
||||
description: "The city to get the weather for",
|
||||
}),
|
||||
city: z.string().describe("The city to get the weather for"),
|
||||
}),
|
||||
},
|
||||
);
|
||||
|
||||
@@ -23,7 +23,7 @@ await test("pinecone", async (t) => {
|
||||
});
|
||||
|
||||
const vectorStore = new PineconeVectorStore({
|
||||
embeddingModel: openaiEmbedding,
|
||||
embedModel: openaiEmbedding,
|
||||
});
|
||||
|
||||
t.after(async () => {
|
||||
|
||||
+3
-3
@@ -19,14 +19,14 @@
|
||||
"@llamaindex/openai": "workspace:*",
|
||||
"@llamaindex/pinecone": "workspace:*",
|
||||
"@llamaindex/postgres": "workspace:*",
|
||||
"@types/node": "^22.9.0",
|
||||
"@types/node": "^24.0.13",
|
||||
"@types/pg": "^8.11.8",
|
||||
"consola": "^3.2.3",
|
||||
"dotenv": "^16.4.5",
|
||||
"dotenv": "^17.2.0",
|
||||
"llamaindex": "workspace:*",
|
||||
"pg": "^8.12.0",
|
||||
"pgvector": "0.2.0",
|
||||
"tsx": "^4.19.3",
|
||||
"tsx": "^4.20.3",
|
||||
"zod": "^3.25.76"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,483 @@
|
||||
# examples
|
||||
|
||||
## 0.3.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- Updated dependencies [5da1cda]
|
||||
- Updated dependencies [5d5cd44]
|
||||
- Updated dependencies [c40adaf]
|
||||
- llamaindex@0.11.29
|
||||
- @llamaindex/core@0.6.21
|
||||
- @llamaindex/tools@0.1.11
|
||||
- @llamaindex/workflow@1.1.23
|
||||
- @llamaindex/ollama@0.1.22
|
||||
- @llamaindex/openai@0.4.19
|
||||
- @llamaindex/vercel@0.1.21
|
||||
- @llamaindex/anthropic@0.3.24
|
||||
- @llamaindex/google@0.3.21
|
||||
- @llamaindex/cloud@4.1.3
|
||||
- @llamaindex/node-parser@2.0.21
|
||||
- @llamaindex/assemblyai@0.1.20
|
||||
- @llamaindex/clip@0.0.75
|
||||
- @llamaindex/cohere@0.0.35
|
||||
- @llamaindex/deepinfra@0.0.75
|
||||
- @llamaindex/discord@0.1.20
|
||||
- @llamaindex/huggingface@0.1.29
|
||||
- @llamaindex/jinaai@0.0.35
|
||||
- @llamaindex/mistral@0.1.21
|
||||
- @llamaindex/mixedbread@0.0.35
|
||||
- @llamaindex/notion@0.1.20
|
||||
- @llamaindex/perplexity@0.0.32
|
||||
- @llamaindex/portkey-ai@0.0.63
|
||||
- @llamaindex/replicate@0.0.63
|
||||
- @llamaindex/bm25-retriever@0.0.10
|
||||
- @llamaindex/astra@0.0.35
|
||||
- @llamaindex/azure@0.1.36
|
||||
- @llamaindex/chroma@0.0.35
|
||||
- @llamaindex/elastic-search@0.1.21
|
||||
- @llamaindex/firestore@1.0.28
|
||||
- @llamaindex/milvus@0.1.30
|
||||
- @llamaindex/mongodb@0.0.36
|
||||
- @llamaindex/pinecone@0.1.21
|
||||
- @llamaindex/postgres@0.0.64
|
||||
- @llamaindex/qdrant@0.1.31
|
||||
- @llamaindex/supabase@0.1.22
|
||||
- @llamaindex/upstash@0.0.35
|
||||
- @llamaindex/weaviate@0.0.36
|
||||
- @llamaindex/voyage-ai@1.0.27
|
||||
- @llamaindex/readers@3.1.20
|
||||
- @llamaindex/deepseek@0.0.37
|
||||
- @llamaindex/fireworks@0.0.35
|
||||
- @llamaindex/groq@0.0.91
|
||||
- @llamaindex/together@0.0.35
|
||||
- @llamaindex/vllm@0.0.61
|
||||
- @llamaindex/xai@0.0.22
|
||||
|
||||
## 0.3.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [1995b38]
|
||||
- Updated dependencies [001a515]
|
||||
- Updated dependencies [9d7d205]
|
||||
- @llamaindex/workflow@1.1.22
|
||||
- @llamaindex/openai@0.4.18
|
||||
- llamaindex@0.11.28
|
||||
- @llamaindex/clip@0.0.74
|
||||
- @llamaindex/deepinfra@0.0.74
|
||||
- @llamaindex/deepseek@0.0.36
|
||||
- @llamaindex/fireworks@0.0.34
|
||||
- @llamaindex/groq@0.0.90
|
||||
- @llamaindex/huggingface@0.1.28
|
||||
- @llamaindex/jinaai@0.0.34
|
||||
- @llamaindex/perplexity@0.0.31
|
||||
- @llamaindex/azure@0.1.35
|
||||
- @llamaindex/together@0.0.34
|
||||
- @llamaindex/vllm@0.0.60
|
||||
- @llamaindex/xai@0.0.21
|
||||
|
||||
## 0.3.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [0267bb0]
|
||||
- @llamaindex/core@0.6.20
|
||||
- @llamaindex/cloud@4.1.2
|
||||
- llamaindex@0.11.27
|
||||
- @llamaindex/node-parser@2.0.20
|
||||
- @llamaindex/anthropic@0.3.23
|
||||
- @llamaindex/assemblyai@0.1.19
|
||||
- @llamaindex/clip@0.0.73
|
||||
- @llamaindex/cohere@0.0.34
|
||||
- @llamaindex/deepinfra@0.0.73
|
||||
- @llamaindex/discord@0.1.19
|
||||
- @llamaindex/google@0.3.20
|
||||
- @llamaindex/huggingface@0.1.27
|
||||
- @llamaindex/jinaai@0.0.33
|
||||
- @llamaindex/mistral@0.1.20
|
||||
- @llamaindex/mixedbread@0.0.34
|
||||
- @llamaindex/notion@0.1.19
|
||||
- @llamaindex/ollama@0.1.21
|
||||
- @llamaindex/openai@0.4.17
|
||||
- @llamaindex/perplexity@0.0.30
|
||||
- @llamaindex/portkey-ai@0.0.62
|
||||
- @llamaindex/replicate@0.0.62
|
||||
- @llamaindex/bm25-retriever@0.0.9
|
||||
- @llamaindex/astra@0.0.34
|
||||
- @llamaindex/azure@0.1.34
|
||||
- @llamaindex/chroma@0.0.34
|
||||
- @llamaindex/elastic-search@0.1.20
|
||||
- @llamaindex/firestore@1.0.27
|
||||
- @llamaindex/milvus@0.1.29
|
||||
- @llamaindex/mongodb@0.0.35
|
||||
- @llamaindex/pinecone@0.1.20
|
||||
- @llamaindex/postgres@0.0.63
|
||||
- @llamaindex/qdrant@0.1.30
|
||||
- @llamaindex/supabase@0.1.21
|
||||
- @llamaindex/upstash@0.0.34
|
||||
- @llamaindex/weaviate@0.0.35
|
||||
- @llamaindex/vercel@0.1.20
|
||||
- @llamaindex/voyage-ai@1.0.26
|
||||
- @llamaindex/readers@3.1.19
|
||||
- @llamaindex/tools@0.1.10
|
||||
- @llamaindex/workflow@1.1.21
|
||||
- @llamaindex/deepseek@0.0.35
|
||||
- @llamaindex/fireworks@0.0.33
|
||||
- @llamaindex/groq@0.0.89
|
||||
- @llamaindex/together@0.0.33
|
||||
- @llamaindex/vllm@0.0.59
|
||||
- @llamaindex/xai@0.0.20
|
||||
|
||||
## 0.3.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4c70376]
|
||||
- @llamaindex/openai@0.4.16
|
||||
- @llamaindex/clip@0.0.72
|
||||
- @llamaindex/deepinfra@0.0.72
|
||||
- @llamaindex/deepseek@0.0.34
|
||||
- @llamaindex/fireworks@0.0.32
|
||||
- @llamaindex/groq@0.0.88
|
||||
- @llamaindex/huggingface@0.1.26
|
||||
- @llamaindex/jinaai@0.0.32
|
||||
- @llamaindex/perplexity@0.0.29
|
||||
- @llamaindex/azure@0.1.33
|
||||
- @llamaindex/together@0.0.32
|
||||
- @llamaindex/vllm@0.0.58
|
||||
- @llamaindex/xai@0.0.19
|
||||
|
||||
## 0.3.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [47a6f5f]
|
||||
- Updated dependencies [b80f33e]
|
||||
- Updated dependencies [b6409b6]
|
||||
- Updated dependencies [b80f33e]
|
||||
- @llamaindex/ollama@0.1.20
|
||||
- @llamaindex/anthropic@0.3.22
|
||||
- @llamaindex/openai@0.4.15
|
||||
- @llamaindex/clip@0.0.71
|
||||
- @llamaindex/deepinfra@0.0.71
|
||||
- @llamaindex/deepseek@0.0.33
|
||||
- @llamaindex/fireworks@0.0.31
|
||||
- @llamaindex/groq@0.0.87
|
||||
- @llamaindex/huggingface@0.1.25
|
||||
- @llamaindex/jinaai@0.0.31
|
||||
- @llamaindex/perplexity@0.0.28
|
||||
- @llamaindex/azure@0.1.32
|
||||
- @llamaindex/together@0.0.31
|
||||
- @llamaindex/vllm@0.0.57
|
||||
- @llamaindex/xai@0.0.18
|
||||
|
||||
## 0.3.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4b51791]
|
||||
- Updated dependencies [971d37c]
|
||||
- @llamaindex/cloud@4.1.1
|
||||
- @llamaindex/deepseek@0.0.32
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 0.3.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [c3bf3c7]
|
||||
- Updated dependencies [f9f1de9]
|
||||
- @llamaindex/cloud@4.0.28
|
||||
- @llamaindex/core@0.6.19
|
||||
- llamaindex@0.11.24
|
||||
- @llamaindex/node-parser@2.0.19
|
||||
- @llamaindex/anthropic@0.3.21
|
||||
- @llamaindex/assemblyai@0.1.18
|
||||
- @llamaindex/clip@0.0.70
|
||||
- @llamaindex/cohere@0.0.33
|
||||
- @llamaindex/deepinfra@0.0.70
|
||||
- @llamaindex/discord@0.1.18
|
||||
- @llamaindex/google@0.3.18
|
||||
- @llamaindex/huggingface@0.1.24
|
||||
- @llamaindex/jinaai@0.0.30
|
||||
- @llamaindex/mistral@0.1.19
|
||||
- @llamaindex/mixedbread@0.0.33
|
||||
- @llamaindex/notion@0.1.18
|
||||
- @llamaindex/ollama@0.1.19
|
||||
- @llamaindex/openai@0.4.14
|
||||
- @llamaindex/perplexity@0.0.27
|
||||
- @llamaindex/portkey-ai@0.0.61
|
||||
- @llamaindex/replicate@0.0.61
|
||||
- @llamaindex/bm25-retriever@0.0.8
|
||||
- @llamaindex/astra@0.0.33
|
||||
- @llamaindex/azure@0.1.31
|
||||
- @llamaindex/chroma@0.0.33
|
||||
- @llamaindex/elastic-search@0.1.19
|
||||
- @llamaindex/firestore@1.0.26
|
||||
- @llamaindex/milvus@0.1.28
|
||||
- @llamaindex/mongodb@0.0.34
|
||||
- @llamaindex/pinecone@0.1.19
|
||||
- @llamaindex/postgres@0.0.62
|
||||
- @llamaindex/qdrant@0.1.29
|
||||
- @llamaindex/supabase@0.1.20
|
||||
- @llamaindex/upstash@0.0.33
|
||||
- @llamaindex/weaviate@0.0.34
|
||||
- @llamaindex/vercel@0.1.19
|
||||
- @llamaindex/voyage-ai@1.0.25
|
||||
- @llamaindex/readers@3.1.18
|
||||
- @llamaindex/tools@0.1.9
|
||||
- @llamaindex/workflow@1.1.20
|
||||
- @llamaindex/deepseek@0.0.31
|
||||
- @llamaindex/fireworks@0.0.30
|
||||
- @llamaindex/groq@0.0.86
|
||||
- @llamaindex/together@0.0.30
|
||||
- @llamaindex/vllm@0.0.56
|
||||
- @llamaindex/xai@0.0.17
|
||||
|
||||
## 0.3.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [f29799e]
|
||||
- Updated dependencies [7224c06]
|
||||
- @llamaindex/workflow@1.1.19
|
||||
- @llamaindex/core@0.6.18
|
||||
- llamaindex@0.11.23
|
||||
- @llamaindex/cloud@4.0.27
|
||||
- @llamaindex/node-parser@2.0.18
|
||||
- @llamaindex/anthropic@0.3.20
|
||||
- @llamaindex/assemblyai@0.1.17
|
||||
- @llamaindex/clip@0.0.69
|
||||
- @llamaindex/cohere@0.0.32
|
||||
- @llamaindex/deepinfra@0.0.69
|
||||
- @llamaindex/discord@0.1.17
|
||||
- @llamaindex/google@0.3.17
|
||||
- @llamaindex/huggingface@0.1.23
|
||||
- @llamaindex/jinaai@0.0.29
|
||||
- @llamaindex/mistral@0.1.18
|
||||
- @llamaindex/mixedbread@0.0.32
|
||||
- @llamaindex/notion@0.1.17
|
||||
- @llamaindex/ollama@0.1.18
|
||||
- @llamaindex/openai@0.4.13
|
||||
- @llamaindex/perplexity@0.0.26
|
||||
- @llamaindex/portkey-ai@0.0.60
|
||||
- @llamaindex/replicate@0.0.60
|
||||
- @llamaindex/bm25-retriever@0.0.7
|
||||
- @llamaindex/astra@0.0.32
|
||||
- @llamaindex/azure@0.1.30
|
||||
- @llamaindex/chroma@0.0.32
|
||||
- @llamaindex/elastic-search@0.1.18
|
||||
- @llamaindex/firestore@1.0.25
|
||||
- @llamaindex/milvus@0.1.27
|
||||
- @llamaindex/mongodb@0.0.33
|
||||
- @llamaindex/pinecone@0.1.18
|
||||
- @llamaindex/postgres@0.0.61
|
||||
- @llamaindex/qdrant@0.1.28
|
||||
- @llamaindex/supabase@0.1.19
|
||||
- @llamaindex/upstash@0.0.32
|
||||
- @llamaindex/weaviate@0.0.33
|
||||
- @llamaindex/vercel@0.1.18
|
||||
- @llamaindex/voyage-ai@1.0.24
|
||||
- @llamaindex/readers@3.1.17
|
||||
- @llamaindex/tools@0.1.8
|
||||
- @llamaindex/deepseek@0.0.30
|
||||
- @llamaindex/fireworks@0.0.29
|
||||
- @llamaindex/groq@0.0.85
|
||||
- @llamaindex/together@0.0.29
|
||||
- @llamaindex/vllm@0.0.55
|
||||
- @llamaindex/xai@0.0.16
|
||||
|
||||
## 0.3.33
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [38da40b]
|
||||
- @llamaindex/core@0.6.17
|
||||
- @llamaindex/cloud@4.0.26
|
||||
- llamaindex@0.11.21
|
||||
- @llamaindex/node-parser@2.0.17
|
||||
- @llamaindex/anthropic@0.3.19
|
||||
- @llamaindex/assemblyai@0.1.16
|
||||
- @llamaindex/clip@0.0.68
|
||||
- @llamaindex/cohere@0.0.31
|
||||
- @llamaindex/deepinfra@0.0.68
|
||||
- @llamaindex/discord@0.1.16
|
||||
- @llamaindex/google@0.3.16
|
||||
- @llamaindex/huggingface@0.1.22
|
||||
- @llamaindex/jinaai@0.0.28
|
||||
- @llamaindex/mistral@0.1.17
|
||||
- @llamaindex/mixedbread@0.0.31
|
||||
- @llamaindex/notion@0.1.16
|
||||
- @llamaindex/ollama@0.1.17
|
||||
- @llamaindex/openai@0.4.12
|
||||
- @llamaindex/perplexity@0.0.25
|
||||
- @llamaindex/portkey-ai@0.0.59
|
||||
- @llamaindex/replicate@0.0.59
|
||||
- @llamaindex/bm25-retriever@0.0.6
|
||||
- @llamaindex/astra@0.0.31
|
||||
- @llamaindex/azure@0.1.29
|
||||
- @llamaindex/chroma@0.0.31
|
||||
- @llamaindex/elastic-search@0.1.17
|
||||
- @llamaindex/firestore@1.0.24
|
||||
- @llamaindex/milvus@0.1.26
|
||||
- @llamaindex/mongodb@0.0.32
|
||||
- @llamaindex/pinecone@0.1.17
|
||||
- @llamaindex/postgres@0.0.60
|
||||
- @llamaindex/qdrant@0.1.27
|
||||
- @llamaindex/supabase@0.1.18
|
||||
- @llamaindex/upstash@0.0.31
|
||||
- @llamaindex/weaviate@0.0.32
|
||||
- @llamaindex/vercel@0.1.17
|
||||
- @llamaindex/voyage-ai@1.0.23
|
||||
- @llamaindex/readers@3.1.16
|
||||
- @llamaindex/tools@0.1.7
|
||||
- @llamaindex/workflow@1.1.17
|
||||
- @llamaindex/deepseek@0.0.29
|
||||
- @llamaindex/fireworks@0.0.28
|
||||
- @llamaindex/groq@0.0.84
|
||||
- @llamaindex/together@0.0.28
|
||||
- @llamaindex/vllm@0.0.54
|
||||
- @llamaindex/xai@0.0.15
|
||||
|
||||
## 0.3.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [650eeb1]
|
||||
- Updated dependencies [a8ec08c]
|
||||
- Updated dependencies [2967d57]
|
||||
- @llamaindex/google@0.3.15
|
||||
- @llamaindex/core@0.6.16
|
||||
- @llamaindex/workflow@1.1.16
|
||||
- @llamaindex/cloud@4.0.25
|
||||
- llamaindex@0.11.20
|
||||
- @llamaindex/node-parser@2.0.16
|
||||
- @llamaindex/anthropic@0.3.18
|
||||
- @llamaindex/assemblyai@0.1.15
|
||||
- @llamaindex/clip@0.0.67
|
||||
- @llamaindex/cohere@0.0.30
|
||||
- @llamaindex/deepinfra@0.0.67
|
||||
- @llamaindex/discord@0.1.15
|
||||
- @llamaindex/huggingface@0.1.21
|
||||
- @llamaindex/jinaai@0.0.27
|
||||
- @llamaindex/mistral@0.1.16
|
||||
- @llamaindex/mixedbread@0.0.30
|
||||
- @llamaindex/notion@0.1.15
|
||||
- @llamaindex/ollama@0.1.16
|
||||
- @llamaindex/openai@0.4.11
|
||||
- @llamaindex/perplexity@0.0.24
|
||||
- @llamaindex/portkey-ai@0.0.58
|
||||
- @llamaindex/replicate@0.0.58
|
||||
- @llamaindex/bm25-retriever@0.0.5
|
||||
- @llamaindex/astra@0.0.30
|
||||
- @llamaindex/azure@0.1.28
|
||||
- @llamaindex/chroma@0.0.30
|
||||
- @llamaindex/elastic-search@0.1.16
|
||||
- @llamaindex/firestore@1.0.23
|
||||
- @llamaindex/milvus@0.1.25
|
||||
- @llamaindex/mongodb@0.0.31
|
||||
- @llamaindex/pinecone@0.1.16
|
||||
- @llamaindex/postgres@0.0.59
|
||||
- @llamaindex/qdrant@0.1.26
|
||||
- @llamaindex/supabase@0.1.17
|
||||
- @llamaindex/upstash@0.0.30
|
||||
- @llamaindex/weaviate@0.0.31
|
||||
- @llamaindex/vercel@0.1.16
|
||||
- @llamaindex/voyage-ai@1.0.22
|
||||
- @llamaindex/readers@3.1.15
|
||||
- @llamaindex/tools@0.1.6
|
||||
- @llamaindex/deepseek@0.0.28
|
||||
- @llamaindex/fireworks@0.0.27
|
||||
- @llamaindex/groq@0.0.83
|
||||
- @llamaindex/together@0.0.27
|
||||
- @llamaindex/vllm@0.0.53
|
||||
- @llamaindex/xai@0.0.14
|
||||
|
||||
## 0.3.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d8f4f6a]
|
||||
- Updated dependencies [856dd8c]
|
||||
- @llamaindex/supabase@0.1.16
|
||||
- @llamaindex/openai@0.4.10
|
||||
- @llamaindex/clip@0.0.66
|
||||
- @llamaindex/deepinfra@0.0.66
|
||||
- @llamaindex/deepseek@0.0.27
|
||||
- @llamaindex/fireworks@0.0.26
|
||||
- @llamaindex/groq@0.0.82
|
||||
- @llamaindex/huggingface@0.1.20
|
||||
- @llamaindex/jinaai@0.0.26
|
||||
- @llamaindex/perplexity@0.0.23
|
||||
- @llamaindex/azure@0.1.27
|
||||
- @llamaindex/together@0.0.26
|
||||
- @llamaindex/vllm@0.0.52
|
||||
- @llamaindex/xai@0.0.13
|
||||
|
||||
## 0.3.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7ad3411]
|
||||
- Updated dependencies [5da5b3c]
|
||||
- Updated dependencies [a1fdb07]
|
||||
- Updated dependencies [ddc0eaf]
|
||||
- @llamaindex/core@0.6.15
|
||||
- @llamaindex/tools@0.1.5
|
||||
- @llamaindex/workflow@1.1.15
|
||||
- @llamaindex/openai@0.4.9
|
||||
- @llamaindex/anthropic@0.3.17
|
||||
- @llamaindex/cloud@4.0.24
|
||||
- llamaindex@0.11.19
|
||||
- @llamaindex/node-parser@2.0.15
|
||||
- @llamaindex/assemblyai@0.1.14
|
||||
- @llamaindex/clip@0.0.65
|
||||
- @llamaindex/cohere@0.0.29
|
||||
- @llamaindex/deepinfra@0.0.65
|
||||
- @llamaindex/discord@0.1.14
|
||||
- @llamaindex/google@0.3.14
|
||||
- @llamaindex/huggingface@0.1.19
|
||||
- @llamaindex/jinaai@0.0.25
|
||||
- @llamaindex/mistral@0.1.15
|
||||
- @llamaindex/mixedbread@0.0.29
|
||||
- @llamaindex/notion@0.1.14
|
||||
- @llamaindex/ollama@0.1.15
|
||||
- @llamaindex/perplexity@0.0.22
|
||||
- @llamaindex/portkey-ai@0.0.57
|
||||
- @llamaindex/replicate@0.0.57
|
||||
- @llamaindex/bm25-retriever@0.0.4
|
||||
- @llamaindex/astra@0.0.29
|
||||
- @llamaindex/azure@0.1.26
|
||||
- @llamaindex/chroma@0.0.29
|
||||
- @llamaindex/elastic-search@0.1.15
|
||||
- @llamaindex/firestore@1.0.22
|
||||
- @llamaindex/milvus@0.1.24
|
||||
- @llamaindex/mongodb@0.0.30
|
||||
- @llamaindex/pinecone@0.1.15
|
||||
- @llamaindex/postgres@0.0.58
|
||||
- @llamaindex/qdrant@0.1.25
|
||||
- @llamaindex/supabase@0.1.15
|
||||
- @llamaindex/upstash@0.0.29
|
||||
- @llamaindex/weaviate@0.0.30
|
||||
- @llamaindex/vercel@0.1.15
|
||||
- @llamaindex/voyage-ai@1.0.21
|
||||
- @llamaindex/readers@3.1.14
|
||||
- @llamaindex/deepseek@0.0.26
|
||||
- @llamaindex/fireworks@0.0.25
|
||||
- @llamaindex/groq@0.0.81
|
||||
- @llamaindex/together@0.0.25
|
||||
- @llamaindex/vllm@0.0.51
|
||||
- @llamaindex/xai@0.0.12
|
||||
|
||||
## 0.3.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [af3f866]
|
||||
- @llamaindex/deepseek@0.0.25
|
||||
|
||||
## 0.3.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -20,9 +20,7 @@ const saveFileTool = tool({
|
||||
description:
|
||||
"Save the written content into a file that can be downloaded by the user",
|
||||
parameters: z.object({
|
||||
content: z.string({
|
||||
description: "The content to save into a file",
|
||||
}),
|
||||
content: z.string().describe("The content to save into a file"),
|
||||
}),
|
||||
execute: ({ content }: { content: string }) => {
|
||||
const filePath = os.tmpdir() + "/report.md";
|
||||
|
||||
@@ -17,9 +17,7 @@ const userQuestion = "which are the best comedies after 2010?";
|
||||
description:
|
||||
"Execute python code in a Jupyter notebook cell and return any result, stdout, stderr, display_data, and error.",
|
||||
parameters: z.object({
|
||||
code: z.string({
|
||||
description: "The python code to execute in a single cell.",
|
||||
}),
|
||||
code: z.string().describe("The python code to execute in a single cell."),
|
||||
}),
|
||||
execute: ({ code }) => {
|
||||
console.log(
|
||||
|
||||
@@ -26,9 +26,7 @@ const temperatureConverterTool = tool({
|
||||
description: "Convert a temperature from Fahrenheit to Celsius",
|
||||
name: "fahrenheitToCelsius",
|
||||
parameters: z.object({
|
||||
temperature: z.number({
|
||||
description: "The temperature in Fahrenheit",
|
||||
}),
|
||||
temperature: z.number().describe("The temperature in Fahrenheit"),
|
||||
}),
|
||||
execute: ({ temperature }) => {
|
||||
return ((temperature - 32) * 5) / 9;
|
||||
@@ -39,9 +37,7 @@ const temperatureFetcherTool = tool({
|
||||
description: "Fetch the temperature (in Fahrenheit) for a city",
|
||||
name: "fetchTemperature",
|
||||
parameters: z.object({
|
||||
city: z.string({
|
||||
description: "The city to fetch the temperature for",
|
||||
}),
|
||||
city: z.string().describe("The city to fetch the temperature for"),
|
||||
}),
|
||||
execute: ({ city }) => {
|
||||
const temperature = Math.floor(Math.random() * 58) + 32;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { getWeatherTool } from "../../deprecated/agents/utils/tools";
|
||||
import { getWeatherTool } from "../tools/tools";
|
||||
|
||||
async function main() {
|
||||
const weatherAgent = agent({
|
||||
@@ -24,6 +24,7 @@ async function main() {
|
||||
state: result.data.state,
|
||||
});
|
||||
console.log(`${JSON.stringify(caResult, null, 2)}`);
|
||||
console.log("assistant message:", result.data.message);
|
||||
}
|
||||
|
||||
main().catch((error) => {
|
||||
|
||||
@@ -14,9 +14,7 @@ const weatherTool = tool({
|
||||
name: "weather",
|
||||
description: "Get the weather",
|
||||
parameters: z.object({
|
||||
location: z.string({
|
||||
description: "The location to get the weather for",
|
||||
}),
|
||||
location: z.string().describe("The location to get the weather for"),
|
||||
}),
|
||||
execute: ({ location }) => {
|
||||
return `The weather in ${location} is sunny`;
|
||||
@@ -27,9 +25,7 @@ const inflationTool = tool({
|
||||
name: "inflation",
|
||||
description: "Get the inflation",
|
||||
parameters: z.object({
|
||||
location: z.string({
|
||||
description: "The location to get the inflation for",
|
||||
}),
|
||||
location: z.string().describe("The location to get the inflation for"),
|
||||
}),
|
||||
execute: ({ location }) => {
|
||||
return `The inflation in ${location} is 2%`;
|
||||
@@ -41,9 +37,7 @@ const saveFileTool = tool({
|
||||
description:
|
||||
"Save the written content into a file that can be downloaded by the user",
|
||||
parameters: z.object({
|
||||
content: z.string({
|
||||
description: "The content to save into a file",
|
||||
}),
|
||||
content: z.string().describe("The content to save into a file"),
|
||||
}),
|
||||
execute: ({ content }) => {
|
||||
const filePath = "./report.md";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ollama } from "@llamaindex/ollama";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
import { getWeatherTool } from "../../deprecated/agents/utils/tools";
|
||||
import { getWeatherTool } from "../tools/tools";
|
||||
|
||||
async function main() {
|
||||
const myAgent = agent({
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* Example: Vector Memory Block
|
||||
*
|
||||
* This example demonstrates how to use the VectorMemoryBlock to store and retrieve
|
||||
* conversation history using vector similarity search. The vector memory block
|
||||
* stores messages in a vector store and can retrieve relevant context based on
|
||||
* semantic similarity to recent messages.
|
||||
*/
|
||||
|
||||
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
|
||||
import { QdrantVectorStore } from "@llamaindex/qdrant";
|
||||
import { createMemory, vectorBlock } from "llamaindex";
|
||||
|
||||
// Set up the LLM and embedding model
|
||||
const llm = new OpenAI({ model: "gpt-4.1-mini" });
|
||||
const embedModel = new OpenAIEmbedding({ model: "text-embedding-3-small" });
|
||||
|
||||
// Simulate a conversation with some context
|
||||
// This conversation has 8 messages, which is more than the token limit of 100 tokens (set below)
|
||||
// The last 4 messages are kept in to short term memory block (as their tokens are in the limit)
|
||||
// Whereas the first 5 messages are added to long term memory block (in here we will use the vector memory block with Qdrant)
|
||||
const CONVERSATION_TURNS = [
|
||||
//// This is the first 5 messages that are added to long term memory block (vector memory block)
|
||||
{
|
||||
role: "user",
|
||||
content: "Hi, I'm Sarah and I work as a data scientist at Google.",
|
||||
},
|
||||
{
|
||||
role: "assistant",
|
||||
content:
|
||||
"Hello Sarah! It's great to meet you. Data science at Google must be exciting!",
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content:
|
||||
"Yes, I specialize in machine learning and natural language processing.",
|
||||
},
|
||||
{
|
||||
role: "assistant",
|
||||
content: "That's impressive! ML and NLP are fascinating fields.",
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content:
|
||||
"I have a PhD in Computer Science from Stanford, and I love hiking on weekends.",
|
||||
},
|
||||
|
||||
//// This is the last 4 messages that are added to short term memory block
|
||||
{
|
||||
role: "assistant",
|
||||
content:
|
||||
"Wow, Stanford PhD! And hiking is a great way to unwind from tech work.",
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content: "I also have two cats named Whiskers and Mittens.",
|
||||
},
|
||||
{
|
||||
role: "assistant",
|
||||
content:
|
||||
"Cats make wonderful companions! Whiskers and Mittens are cute names.",
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content: "Summary information about Sarah and her cats",
|
||||
},
|
||||
];
|
||||
|
||||
async function main() {
|
||||
console.log("=== Vector Memory Block Example ===\n");
|
||||
|
||||
/**
|
||||
* Create a vector store. You can quickly get a local instance of Qdrant running with Docker:
|
||||
* ```bash
|
||||
* docker pull qdrant/qdrant
|
||||
* docker run -p 6333:6333 qdrant/qdrant
|
||||
* ```
|
||||
*
|
||||
* Go to http://localhost:6333/dashboard#/collections to see your data
|
||||
*/
|
||||
const vectorStore = new QdrantVectorStore({
|
||||
url: "http://localhost:6333",
|
||||
embedModel,
|
||||
});
|
||||
|
||||
// Create a vector memory block using the factory function
|
||||
const vectorMemoryBlock = vectorBlock({
|
||||
vectorStore,
|
||||
priority: 5,
|
||||
});
|
||||
|
||||
// Create a memory store with the vector memory block
|
||||
const memory = createMemory([], {
|
||||
llm,
|
||||
memoryBlocks: [vectorMemoryBlock],
|
||||
tokenLimit: 100,
|
||||
shortTermTokenLimitRatio: 0.7,
|
||||
});
|
||||
|
||||
// Store the conversation history in the vector memory
|
||||
console.log(`Adding ${CONVERSATION_TURNS.length} messages to the memory...`);
|
||||
for (const message of CONVERSATION_TURNS) {
|
||||
await memory.add(message);
|
||||
}
|
||||
|
||||
// Retrieve relevant context for the current user request
|
||||
console.log("Retrieving relevant context...");
|
||||
const chatHistory = await memory.getLLM();
|
||||
|
||||
// You will see there's 1 generated context message from vector memory block, and 4 messages from short term memory block
|
||||
console.log("Chat memory:", chatHistory);
|
||||
|
||||
// Now simulate the assistant responding with context
|
||||
console.log("\nAssistant response with context:");
|
||||
const response = await llm.chat({
|
||||
messages: chatHistory,
|
||||
});
|
||||
console.log(response.message.content);
|
||||
|
||||
// Try adding more messages to the memory
|
||||
const newMessages = [
|
||||
{
|
||||
role: "user",
|
||||
content: "Write a long paragraph about weather in Tokyo",
|
||||
},
|
||||
{
|
||||
role: "assistant",
|
||||
content:
|
||||
"The weather in Tokyo is sunny and warm. The temperature is around 20 degrees Celsius. The weather is very nice and the people are friendly.",
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content: "What is the weather in Tokyo?",
|
||||
},
|
||||
];
|
||||
// Add the new messages to the memory
|
||||
for (const message of newMessages) {
|
||||
await memory.add(message);
|
||||
}
|
||||
|
||||
// Try retrieving the new messages
|
||||
const newChatHistory = await memory.getLLM();
|
||||
// You can see now that new chat history will contain the nodes (separated by `\n`) in the
|
||||
// context message that is generated by the vector memory block
|
||||
// The number of retrieved nodes is set by `similarityTopK` in `queryOptions` of `vectorBlock`
|
||||
// (default `similarityTopK` is 2)
|
||||
console.log("New chat history:", newChatHistory);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -14,11 +14,8 @@ const writeJokeSchema = z.object({
|
||||
.describe("The topic to write a joke or describe the joke to improve."),
|
||||
writtenJoke: z.optional(z.string()).describe("The written joke."),
|
||||
retriedTimes: z
|
||||
.number()
|
||||
.default(0)
|
||||
.describe(
|
||||
"The retried times for writing the joke. Always increase this from the input retriedTimes.",
|
||||
),
|
||||
.optional(z.number().default(0))
|
||||
.describe("The retried times for writing the joke."),
|
||||
});
|
||||
|
||||
const critiqueSchema = z.object({
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { OpenAI } from "@llamaindex/openai";
|
||||
import { openai } from "@llamaindex/openai";
|
||||
|
||||
async function main() {
|
||||
const llm = new OpenAI({ model: "gpt-4-turbo" });
|
||||
const llm = openai({ model: "gpt-4.1-mini" });
|
||||
const args: Parameters<typeof llm.chat>[0] = {
|
||||
additionalChatOptions: {
|
||||
tool_choice: "auto",
|
||||
@@ -0,0 +1,46 @@
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { tool } from "llamaindex";
|
||||
import z from "zod";
|
||||
|
||||
import { ChatMessage } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
const llm = openai({ model: "gpt-4.1-mini" });
|
||||
const messages = [
|
||||
{
|
||||
content: `What's the weather like in San Francisco?`,
|
||||
role: "user",
|
||||
} as ChatMessage,
|
||||
];
|
||||
|
||||
let exit = false;
|
||||
do {
|
||||
const { stream, newMessages, toolCalls } = await llm.exec({
|
||||
messages,
|
||||
tools: [
|
||||
tool({
|
||||
name: "get_weather",
|
||||
description: "Get the current weather for a location",
|
||||
parameters: z.object({
|
||||
address: z.string().describe("The address"),
|
||||
}),
|
||||
execute: ({ address }) => {
|
||||
return `It's sunny in ${address}!`;
|
||||
},
|
||||
}),
|
||||
],
|
||||
stream: true,
|
||||
});
|
||||
for await (const chunk of stream) {
|
||||
process.stdout.write(chunk.delta);
|
||||
}
|
||||
messages.push(...newMessages());
|
||||
// exit condition to stop the agent loop
|
||||
// here we can also check for specific tool calls or limit the number of llm.exec calls
|
||||
exit = toolCalls.length === 0;
|
||||
} while (!exit);
|
||||
}
|
||||
|
||||
(async function () {
|
||||
await main();
|
||||
})();
|
||||
@@ -0,0 +1,43 @@
|
||||
import { openai } from "@llamaindex/openai";
|
||||
import { ChatMessage, tool } from "llamaindex";
|
||||
import z from "zod";
|
||||
|
||||
async function main() {
|
||||
const llm = openai({ model: "gpt-4.1-mini" });
|
||||
const messages = [
|
||||
{
|
||||
content: `What's the weather like in San Francisco?`,
|
||||
role: "user",
|
||||
} as ChatMessage,
|
||||
];
|
||||
|
||||
let exit = false;
|
||||
do {
|
||||
const { newMessages, toolCalls } = await llm.exec({
|
||||
messages,
|
||||
tools: [
|
||||
tool({
|
||||
name: "get_weather",
|
||||
description: "Get the current weather for a location",
|
||||
parameters: z.object({
|
||||
address: z.string().describe("The address"),
|
||||
}),
|
||||
execute: ({ address }) => {
|
||||
return `It's sunny in ${address}!`;
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
console.log(newMessages);
|
||||
messages.push(...newMessages);
|
||||
// exit condition to stop the agent loop
|
||||
// here we can also check for specific tool calls or limit the number of llm.exec calls
|
||||
exit = toolCalls.length === 0;
|
||||
} while (!exit);
|
||||
}
|
||||
|
||||
(async function () {
|
||||
console.log("Starting...");
|
||||
await main();
|
||||
console.log("Done");
|
||||
})();
|
||||
@@ -0,0 +1,39 @@
|
||||
import { Anthropic } from "@llamaindex/anthropic";
|
||||
import { ChatMessage, ToolCall } from "llamaindex";
|
||||
import { z } from "zod";
|
||||
|
||||
const llm = new Anthropic({ model: "claude-4-0-sonnet" });
|
||||
|
||||
const responseSchema = z.object({
|
||||
title: z.string().describe("The title of the book"),
|
||||
author: z.string().describe("The author of the book"),
|
||||
year: z.number().describe("The publication year"),
|
||||
});
|
||||
|
||||
async function main() {
|
||||
const messages: ChatMessage[] = [];
|
||||
let toolCalls: ToolCall[] = [];
|
||||
do {
|
||||
const result = await llm.exec({
|
||||
messages: [
|
||||
{
|
||||
role: "system",
|
||||
content: `You are a book expert. Your task is, given a user message, extract the title, author and publication year of the book and output them in JSON format.`,
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content: `I have been reading La Divina Commedia by Dante Alighieri, published in 1321, which tells the story of a guy who goes through Hell, Purgatory and Heaven just to meet his beloved ex-girlfriend.`,
|
||||
},
|
||||
],
|
||||
responseFormat: responseSchema,
|
||||
});
|
||||
console.log(result.newMessages[0].content);
|
||||
messages.push(...result.newMessages);
|
||||
toolCalls = result.toolCalls;
|
||||
} while (toolCalls.length == 0);
|
||||
|
||||
console.log(messages[1].content);
|
||||
console.log(toolCalls);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -22,7 +22,7 @@ const { withState, getContext } = createStatefulMiddleware(() => ({
|
||||
const jokeFlow = withState(createWorkflow());
|
||||
|
||||
// Define handlers for each step
|
||||
jokeFlow.handle([startEvent], async (event) => {
|
||||
jokeFlow.handle([startEvent], async (context, event) => {
|
||||
// Prompt the LLM to write a joke
|
||||
const prompt = `Write your best joke about ${event.data}. Write the joke between <joke> and </joke> tags.`;
|
||||
const response = await llm.complete({ prompt });
|
||||
@@ -34,7 +34,7 @@ jokeFlow.handle([startEvent], async (event) => {
|
||||
return jokeEvent.with({ joke: joke });
|
||||
});
|
||||
|
||||
jokeFlow.handle([jokeEvent], async (event) => {
|
||||
jokeFlow.handle([jokeEvent], async (context, event) => {
|
||||
// Prompt the LLM to critique the joke
|
||||
const prompt = `Give a thorough critique of the following joke. If the joke needs improvement, put "IMPROVE" somewhere in the critique: ${event.data.joke}`;
|
||||
const response = await llm.complete({ prompt });
|
||||
@@ -50,9 +50,9 @@ jokeFlow.handle([jokeEvent], async (event) => {
|
||||
return resultEvent.with({ joke: event.data.joke, critique: response.text });
|
||||
});
|
||||
|
||||
jokeFlow.handle([critiqueEvent], async (event) => {
|
||||
jokeFlow.handle([critiqueEvent], async (context, event) => {
|
||||
// Keep track of the number of iterations
|
||||
const state = getContext().state;
|
||||
const state = context.state;
|
||||
state.numIterations++;
|
||||
|
||||
// Write a new joke based on the previous joke and critique
|
||||
|
||||
@@ -29,9 +29,9 @@ async function callLLM(init: { model: string }) {
|
||||
description:
|
||||
"Execute python code in a Jupyter notebook cell and return any result, stdout, stderr, display_data, and error.",
|
||||
parameters: z.object({
|
||||
code: z.string({
|
||||
description: "The python code to execute in a single cell.",
|
||||
}),
|
||||
code: z
|
||||
.string()
|
||||
.describe("The python code to execute in a single cell."),
|
||||
}),
|
||||
},
|
||||
);
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
getCurrentIDTool,
|
||||
getUserInfoTool,
|
||||
getWeatherTool,
|
||||
} from "./utils/tools";
|
||||
} from "../../agents/tools/tools";
|
||||
|
||||
async function main() {
|
||||
// Create an OpenAIAgent with the function tools
|
||||
|
||||
@@ -3,7 +3,7 @@ import {
|
||||
getCurrentIDTool,
|
||||
getUserInfoTool,
|
||||
getWeatherTool,
|
||||
} from "./utils/tools";
|
||||
} from "../../agents/tools/tools";
|
||||
|
||||
async function main() {
|
||||
// Create an OpenAIAgent with the function tools
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
|
||||
import express, { Request, Response } from "express";
|
||||
import fs from "fs/promises";
|
||||
import { Document, Settings, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
const app = express();
|
||||
const port = 3000;
|
||||
|
||||
app.get("/default", async (req: Request, res: Response) => {
|
||||
const embedModel = new OpenAIEmbedding({
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
});
|
||||
const llm = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
||||
|
||||
const llmResponse = await Settings.withEmbedModel(embedModel, async () => {
|
||||
return Settings.withLLM(llm, async () => {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
// Create Document object with essay
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
// Split text and create embeddings. Store them in a VectorStoreIndex
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
// Query the index
|
||||
const queryEngine = index.asQueryEngine();
|
||||
const { message, sourceNodes } = await queryEngine.query({
|
||||
query: "What did the author do in college?",
|
||||
});
|
||||
// Return response with sources
|
||||
return message.content;
|
||||
});
|
||||
});
|
||||
// res.send(message.content)
|
||||
res.send(llmResponse);
|
||||
});
|
||||
|
||||
app.get("/custom", async (req: Request, res: Response) => {
|
||||
const embedModel = new OpenAIEmbedding({
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
model: "text-embedding-3-small",
|
||||
});
|
||||
const llm = new OpenAI({
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
model: "gpt-3.5-turbo",
|
||||
});
|
||||
|
||||
const llmResponse = await Settings.withEmbedModel(embedModel, async () => {
|
||||
return Settings.withLLM(llm, async () => {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
// Create Document object with essay
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
// Split text and create embeddings. Store them in a VectorStoreIndex
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
// Query the index
|
||||
const queryEngine = index.asQueryEngine();
|
||||
const { message, sourceNodes } = await queryEngine.query({
|
||||
query: "What did the author do in college?",
|
||||
});
|
||||
// Return response with sources
|
||||
return message.content;
|
||||
});
|
||||
});
|
||||
// res.send(message.content)
|
||||
res.send(llmResponse);
|
||||
});
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`Example app listening on port ${port}`);
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "local-settings",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"private": "true",
|
||||
"scripts": {
|
||||
"test": "echo \"No tests for example package\""
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": "",
|
||||
"devDependencies": {
|
||||
"@types/express": "^5.0.3",
|
||||
"typescript": "^5.9.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/openai": "^0.4.16",
|
||||
"express": "^5.1.0",
|
||||
"llamaindex": "^0.11.26"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"moduleResolution": "node",
|
||||
"types": ["node", "express"]
|
||||
},
|
||||
"include": ["*.ts"]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { anthropic } from "@llamaindex/anthropic";
|
||||
import { agent } from "@llamaindex/workflow";
|
||||
|
||||
(async function () {
|
||||
const workflow = agent({
|
||||
llm: anthropic({
|
||||
model: "claude-4-1-opus",
|
||||
}),
|
||||
});
|
||||
const result = await workflow.run(
|
||||
"What are three compounds we should consider investigating to advance research into new antibiotics? Why should we consider them?",
|
||||
);
|
||||
console.log(result.data.result);
|
||||
})();
|
||||
@@ -8,9 +8,7 @@ const weatherTool = tool({
|
||||
name: "weather",
|
||||
description: "Get the weather",
|
||||
parameters: z.object({
|
||||
location: z.string({
|
||||
description: "The location to get the weather for",
|
||||
}),
|
||||
location: z.string().describe("The location to get the weather for"),
|
||||
}),
|
||||
execute: ({ location }) => {
|
||||
return `The weather in ${location} is rainy`;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
import { ollama } from "@llamaindex/ollama";
|
||||
|
||||
(async () => {
|
||||
const llm = ollama({
|
||||
model: "gpt-oss:20b",
|
||||
});
|
||||
const response = await llm.complete({ prompt: "How are you?" });
|
||||
console.log("Response:", response.text);
|
||||
})();
|
||||
@@ -15,15 +15,15 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.25.0",
|
||||
"@types/react": "^19.1.2",
|
||||
"@types/react-dom": "^19.1.2",
|
||||
"@types/react": "^19.1.8",
|
||||
"@types/react-dom": "^19.1.6",
|
||||
"@vitejs/plugin-react": "^4.5.2",
|
||||
"eslint": "^9.25.0",
|
||||
"eslint": "^9.30.1",
|
||||
"eslint-plugin-react-hooks": "^5.2.0",
|
||||
"eslint-plugin-react-refresh": "^0.4.19",
|
||||
"globals": "^16.0.0",
|
||||
"typescript": "~5.8.3",
|
||||
"typescript-eslint": "^8.30.1",
|
||||
"typescript-eslint": "^8.36.0",
|
||||
"vite": "^6.3.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,12 @@ async function main() {
|
||||
);
|
||||
// and print out the text part
|
||||
console.log(textPart?.text);
|
||||
|
||||
const imageId = response.message.options?.image_id;
|
||||
if (imageId) {
|
||||
console.log("Image ID for multi-turn generation:", imageId);
|
||||
console.log("Use this image_id in subsequent requests to modify the image");
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
import { openaiResponses } from "@llamaindex/openai";
|
||||
import fs from "fs";
|
||||
import { MessageContentDetail } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
const llm = openaiResponses({
|
||||
model: "gpt-4.1-mini",
|
||||
builtInTools: [{ type: "image_generation" }],
|
||||
});
|
||||
|
||||
// First turn: Generate initial image
|
||||
console.log("=== First Turn: Generate initial image ===");
|
||||
const firstResponse = await llm.chat({
|
||||
messages: [
|
||||
{
|
||||
role: "user",
|
||||
content:
|
||||
"Generate an image of a cute tiny llama wearing a hat playing with a cat on a meadow",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const firstContent = firstResponse.message.content as MessageContentDetail[];
|
||||
const firstImagePart = firstContent.find((part) => part.type === "image");
|
||||
const firstTextPart = firstContent.find((part) => part.type === "text");
|
||||
|
||||
// Save the first image
|
||||
if (firstImagePart?.data) {
|
||||
fs.writeFileSync(
|
||||
"llama-initial.png",
|
||||
Buffer.from(firstImagePart.data as string, "base64"),
|
||||
);
|
||||
console.log("First image saved as 'llama-initial.png'");
|
||||
}
|
||||
|
||||
if (firstTextPart?.text) {
|
||||
console.log("First response:", firstTextPart.text);
|
||||
}
|
||||
|
||||
// Get the image_id from the response options for multi-turn
|
||||
const imageId = firstResponse.message.options?.image_id;
|
||||
console.log("Image ID for multi-turn:", imageId);
|
||||
|
||||
if (imageId) {
|
||||
// Second turn: Modify the image using the image_id
|
||||
console.log("\n=== Second Turn: Modify the image ===");
|
||||
const secondResponse = await llm.chat({
|
||||
messages: [
|
||||
{
|
||||
role: "user",
|
||||
content:
|
||||
"Generate an image of a cute tiny llama wearing a hat playing with a cat on a meadow",
|
||||
},
|
||||
{
|
||||
role: "assistant",
|
||||
content: firstContent,
|
||||
options: { image_id: imageId },
|
||||
},
|
||||
{
|
||||
role: "user",
|
||||
content:
|
||||
"Now add a rainbow in the background and make the llama's hat blue",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const secondContent = secondResponse.message
|
||||
.content as MessageContentDetail[];
|
||||
const secondImagePart = secondContent.find((part) => part.type === "image");
|
||||
const secondTextPart = secondContent.find((part) => part.type === "text");
|
||||
|
||||
// Save the modified image
|
||||
if (secondImagePart?.data) {
|
||||
fs.writeFileSync(
|
||||
"llama-modified.png",
|
||||
Buffer.from(secondImagePart.data as string, "base64"),
|
||||
);
|
||||
console.log("Modified image saved as 'llama-modified.png'");
|
||||
}
|
||||
|
||||
if (secondTextPart?.text) {
|
||||
console.log("Second response:", secondTextPart.text);
|
||||
}
|
||||
} else {
|
||||
console.log("No image_id received, cannot perform multi-turn generation");
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -7,9 +7,7 @@ async function main() {
|
||||
name: "weather",
|
||||
description: "Get the weather",
|
||||
parameters: z.object({
|
||||
location: z.string({
|
||||
description: "The location to get the weather for",
|
||||
}),
|
||||
location: z.string().describe("The location to get the weather for"),
|
||||
}),
|
||||
execute: ({ location }) => {
|
||||
return `The weather in ${location} is sunny`;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { stepCountIs, streamText } from "ai";
|
||||
import { Document, LlamaCloudIndex } from "llamaindex";
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
@@ -28,7 +28,7 @@ async function main() {
|
||||
"get information from your knowledge base to answer questions.", // optional description
|
||||
}),
|
||||
},
|
||||
maxSteps: 5,
|
||||
stopWhen: stepCountIs(5),
|
||||
});
|
||||
|
||||
for await (const textPart of result.textStream) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { stepCountIs, streamText } from "ai";
|
||||
import { Document, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
import fs from "node:fs/promises";
|
||||
@@ -24,7 +24,7 @@ async function main() {
|
||||
"get information from your knowledge base to answer questions.", // optional description
|
||||
}),
|
||||
},
|
||||
maxSteps: 5,
|
||||
stopWhen: stepCountIs(5),
|
||||
});
|
||||
|
||||
for await (const textPart of result.textStream) {
|
||||
|
||||
+54
-53
@@ -1,79 +1,80 @@
|
||||
{
|
||||
"name": "@llamaindex/examples",
|
||||
"version": "0.3.28",
|
||||
"version": "0.3.41",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"start": "echo 'To get started, run `npx tsx <path to example>`'"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/openai": "^1.0.5",
|
||||
"@ai-sdk/openai": "^2.0.27",
|
||||
"@azure/cosmos": "^4.1.1",
|
||||
"@azure/identity": "^4.4.1",
|
||||
"@azure/search-documents": "^12.1.0",
|
||||
"@llamaindex/anthropic": "^0.3.16",
|
||||
"@llamaindex/assemblyai": "^0.1.13",
|
||||
"@llamaindex/astra": "^0.0.28",
|
||||
"@llamaindex/azure": "^0.1.25",
|
||||
"@llamaindex/bm25-retriever": "^0.0.3",
|
||||
"@llamaindex/chroma": "^0.0.28",
|
||||
"@llamaindex/clip": "^0.0.64",
|
||||
"@llamaindex/cloud": "^4.0.19",
|
||||
"@llamaindex/cohere": "^0.0.28",
|
||||
"@llamaindex/core": "^0.6.14",
|
||||
"@llamaindex/deepinfra": "^0.0.64",
|
||||
"@llamaindex/deepseek": "^0.0.24",
|
||||
"@llamaindex/discord": "^0.1.13",
|
||||
"@llamaindex/elastic-search": "^0.1.14",
|
||||
"@llamaindex/anthropic": "^0.3.24",
|
||||
"@llamaindex/assemblyai": "^0.1.20",
|
||||
"@llamaindex/astra": "^0.0.35",
|
||||
"@llamaindex/azure": "^0.1.36",
|
||||
"@llamaindex/bm25-retriever": "^0.0.10",
|
||||
"@llamaindex/chroma": "^0.0.35",
|
||||
"@llamaindex/clip": "^0.0.75",
|
||||
"@llamaindex/cloud": "^4.1.3",
|
||||
"@llamaindex/cohere": "^0.0.35",
|
||||
"@llamaindex/core": "^0.6.21",
|
||||
"@llamaindex/deepinfra": "^0.0.75",
|
||||
"@llamaindex/deepseek": "^0.0.37",
|
||||
"@llamaindex/discord": "^0.1.20",
|
||||
"@llamaindex/elastic-search": "^0.1.21",
|
||||
"@llamaindex/env": "^0.1.30",
|
||||
"@llamaindex/firestore": "^1.0.21",
|
||||
"@llamaindex/fireworks": "^0.0.24",
|
||||
"@llamaindex/google": "^0.3.13",
|
||||
"@llamaindex/groq": "^0.0.80",
|
||||
"@llamaindex/huggingface": "^0.1.18",
|
||||
"@llamaindex/jinaai": "^0.0.24",
|
||||
"@llamaindex/milvus": "^0.1.23",
|
||||
"@llamaindex/mistral": "^0.1.14",
|
||||
"@llamaindex/mixedbread": "^0.0.28",
|
||||
"@llamaindex/mongodb": "^0.0.29",
|
||||
"@llamaindex/node-parser": "^2.0.14",
|
||||
"@llamaindex/notion": "^0.1.13",
|
||||
"@llamaindex/ollama": "^0.1.14",
|
||||
"@llamaindex/openai": "^0.4.8",
|
||||
"@llamaindex/perplexity": "^0.0.21",
|
||||
"@llamaindex/pinecone": "^0.1.14",
|
||||
"@llamaindex/portkey-ai": "^0.0.56",
|
||||
"@llamaindex/postgres": "^0.0.57",
|
||||
"@llamaindex/qdrant": "^0.1.24",
|
||||
"@llamaindex/readers": "^3.1.13",
|
||||
"@llamaindex/replicate": "^0.0.56",
|
||||
"@llamaindex/supabase": "^0.1.14",
|
||||
"@llamaindex/together": "^0.0.24",
|
||||
"@llamaindex/tools": "^0.1.4",
|
||||
"@llamaindex/upstash": "^0.0.28",
|
||||
"@llamaindex/vercel": "^0.1.14",
|
||||
"@llamaindex/vllm": "^0.0.50",
|
||||
"@llamaindex/voyage-ai": "^1.0.20",
|
||||
"@llamaindex/weaviate": "^0.0.29",
|
||||
"@llamaindex/workflow": "^1.1.14",
|
||||
"@llamaindex/xai": "^0.0.11",
|
||||
"@llamaindex/firestore": "^1.0.28",
|
||||
"@llamaindex/fireworks": "^0.0.35",
|
||||
"@llamaindex/google": "^0.3.21",
|
||||
"@llamaindex/groq": "^0.0.91",
|
||||
"@llamaindex/huggingface": "^0.1.29",
|
||||
"@llamaindex/jinaai": "^0.0.35",
|
||||
"@llamaindex/milvus": "^0.1.30",
|
||||
"@llamaindex/mistral": "^0.1.21",
|
||||
"@llamaindex/mixedbread": "^0.0.35",
|
||||
"@llamaindex/mongodb": "^0.0.36",
|
||||
"@llamaindex/node-parser": "^2.0.21",
|
||||
"@llamaindex/notion": "^0.1.20",
|
||||
"@llamaindex/ollama": "^0.1.22",
|
||||
"@llamaindex/openai": "^0.4.19",
|
||||
"@llamaindex/perplexity": "^0.0.32",
|
||||
"@llamaindex/pinecone": "^0.1.21",
|
||||
"@llamaindex/portkey-ai": "^0.0.63",
|
||||
"@llamaindex/postgres": "^0.0.64",
|
||||
"@llamaindex/qdrant": "^0.1.31",
|
||||
"@llamaindex/readers": "^3.1.20",
|
||||
"@llamaindex/replicate": "^0.0.63",
|
||||
"@llamaindex/supabase": "^0.1.22",
|
||||
"@llamaindex/together": "^0.0.35",
|
||||
"@llamaindex/tools": "^0.1.11",
|
||||
"@llamaindex/upstash": "^0.0.35",
|
||||
"@llamaindex/vercel": "^0.1.21",
|
||||
"@llamaindex/vllm": "^0.0.61",
|
||||
"@llamaindex/voyage-ai": "^1.0.27",
|
||||
"@llamaindex/weaviate": "^0.0.36",
|
||||
"@llamaindex/workflow": "^1.1.23",
|
||||
"@llamaindex/xai": "^0.0.22",
|
||||
"@notionhq/client": "^4.0.0",
|
||||
"@pinecone-database/pinecone": "^4.0.0",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
"ai": "^4.3.17",
|
||||
"ai": "^5.0.39",
|
||||
"ajv": "^8.17.1",
|
||||
"commander": "^12.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"dotenv": "^17.2.0",
|
||||
"js-tiktoken": "^1.0.14",
|
||||
"llamaindex": "^0.11.14",
|
||||
"llamaindex": "^0.11.29",
|
||||
"mongodb": "6.7.0",
|
||||
"postgres": "^3.4.4",
|
||||
"wikipedia": "^2.1.2",
|
||||
"zod": "^3.25.76"
|
||||
"zod": "^4.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"tsx": "^4.19.3",
|
||||
"@types/express": "^5.0.3",
|
||||
"@types/node": "^24.0.13",
|
||||
"tsx": "^4.20.3",
|
||||
"typescript": "^5.8.3"
|
||||
},
|
||||
"stackblitz": {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
packages:
|
||||
- "**"
|
||||
@@ -23,11 +23,12 @@
|
||||
"@llamaindex/cloud": "workspace:* || ^2.0.24",
|
||||
"@llamaindex/excel": "workspace:*",
|
||||
"@llamaindex/readers": "workspace:* || ^1.0.25",
|
||||
"@notionhq/client": "^4.0.0",
|
||||
"llamaindex": "workspace:* || ^0.8.37"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"tsx": "^4.19.3",
|
||||
"@types/node": "^24.0.13",
|
||||
"tsx": "^4.20.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ async function main() {
|
||||
const vectorStore = new QdrantVectorStore({
|
||||
url: process.env.QDRANT_URL,
|
||||
apiKey: process.env.QDRANT_API_KEY,
|
||||
embeddingModel: embedding,
|
||||
embedModel: embedding,
|
||||
collectionName: "gemini_test",
|
||||
});
|
||||
const storageContext = await storageContextFromDefaults({ vectorStore });
|
||||
|
||||
@@ -16,7 +16,7 @@ async function main() {
|
||||
const vectorStore = new QdrantVectorStore({
|
||||
url: process.env.QDRANT_URL,
|
||||
apiKey: process.env.QDRANT_API_KEY,
|
||||
embeddingModel: embedding,
|
||||
embedModel: embedding,
|
||||
collectionName: "jina_test",
|
||||
});
|
||||
const storageContext = await storageContextFromDefaults({ vectorStore });
|
||||
|
||||
Generated
-10114
File diff suppressed because it is too large
Load Diff
+14
-8
@@ -17,18 +17,19 @@
|
||||
"release-snapshot": "pnpm run build && changeset publish --tag snapshot",
|
||||
"new-version": "changeset version && pnpm format:write && pnpm run build",
|
||||
"new-snapshot": "pnpm run build && changeset version --snapshot",
|
||||
"lint-staged": "lint-staged"
|
||||
"lint-staged": "lint-staged",
|
||||
"preinstall": "npx only-allow pnpm"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/cli": "^2.27.5",
|
||||
"@eslint/js": "^9.25.0",
|
||||
"bunchee": "6.4.0",
|
||||
"eslint": "9.22.0",
|
||||
"eslint-config-next": "^15.1.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-config-turbo": "^2.3.3",
|
||||
"eslint-plugin-react": "7.37.2",
|
||||
"eslint-plugin-turbo": "^2.5.0",
|
||||
"eslint": "9.30.1",
|
||||
"eslint-config-next": "^15.3.5",
|
||||
"eslint-config-prettier": "^10.1.5",
|
||||
"eslint-config-turbo": "^2.5.4",
|
||||
"eslint-plugin-react": "7.37.5",
|
||||
"eslint-plugin-turbo": "^2.5.4",
|
||||
"globals": "^15.12.0",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^15.2.11",
|
||||
@@ -38,10 +39,15 @@
|
||||
"prettier-plugin-tailwindcss": "^0.6.11",
|
||||
"turbo": "^2.4.4",
|
||||
"typescript": "^5.8.3",
|
||||
"typescript-eslint": "^8.18.0",
|
||||
"typescript-eslint": "^8.36.0",
|
||||
"vitest": "^3.1.1"
|
||||
},
|
||||
"packageManager": "pnpm@10.8.1",
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"@notionhq/client": "4.0.0"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,ts,tsx}": [
|
||||
"eslint --fix",
|
||||
|
||||
@@ -1,5 +1,97 @@
|
||||
# @llamaindex/autotool
|
||||
|
||||
## 8.0.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
|
||||
## 8.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
|
||||
## 8.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
|
||||
## 8.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
|
||||
## 8.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
|
||||
## 8.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
|
||||
## 8.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
|
||||
## 8.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
|
||||
## 8.0.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
|
||||
## 8.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
|
||||
## 8.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
|
||||
## 8.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
|
||||
## 8.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
|
||||
## 8.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
|
||||
## 8.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
|
||||
## 8.0.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,5 +1,112 @@
|
||||
# @llamaindex/autotool-01-node-example
|
||||
|
||||
## 0.0.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8929dcf]
|
||||
- llamaindex@0.11.29
|
||||
- @llamaindex/autotool@8.0.29
|
||||
|
||||
## 0.0.136
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.28
|
||||
- @llamaindex/autotool@8.0.28
|
||||
|
||||
## 0.0.135
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.27
|
||||
- @llamaindex/autotool@8.0.27
|
||||
|
||||
## 0.0.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.26
|
||||
- @llamaindex/autotool@8.0.26
|
||||
|
||||
## 0.0.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [049471b]
|
||||
- llamaindex@0.11.25
|
||||
- @llamaindex/autotool@8.0.25
|
||||
|
||||
## 0.0.132
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.24
|
||||
- @llamaindex/autotool@8.0.24
|
||||
|
||||
## 0.0.131
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.23
|
||||
- @llamaindex/autotool@8.0.23
|
||||
|
||||
## 0.0.130
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.22
|
||||
- @llamaindex/autotool@8.0.22
|
||||
|
||||
## 0.0.129
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.21
|
||||
- @llamaindex/autotool@8.0.21
|
||||
|
||||
## 0.0.128
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.20
|
||||
- @llamaindex/autotool@8.0.20
|
||||
|
||||
## 0.0.127
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.19
|
||||
- @llamaindex/autotool@8.0.19
|
||||
|
||||
## 0.0.126
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.18
|
||||
- @llamaindex/autotool@8.0.18
|
||||
|
||||
## 0.0.125
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.17
|
||||
- @llamaindex/autotool@8.0.17
|
||||
|
||||
## 0.0.124
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.16
|
||||
- @llamaindex/autotool@8.0.16
|
||||
|
||||
## 0.0.123
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.11.15
|
||||
- @llamaindex/autotool@8.0.15
|
||||
|
||||
## 0.0.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
"openai": "^4.73.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tsx": "^4.19.3"
|
||||
"tsx": "^4.20.3"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
||||
},
|
||||
"version": "0.0.122"
|
||||
"version": "0.0.137"
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/autotool"
|
||||
},
|
||||
"version": "8.0.14",
|
||||
"version": "8.0.29",
|
||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||
"files": [
|
||||
"dist",
|
||||
@@ -74,11 +74,11 @@
|
||||
"devDependencies": {
|
||||
"@swc/types": "^0.1.12",
|
||||
"@types/json-schema": "^7.0.15",
|
||||
"@types/node": "^22.9.0",
|
||||
"@types/node": "^24.0.13",
|
||||
"llamaindex": "workspace:*",
|
||||
"next": "^15.3.3",
|
||||
"rollup": "^4.28.1",
|
||||
"tsx": "^4.19.3",
|
||||
"tsx": "^4.20.3",
|
||||
"typescript": "^5.8.3",
|
||||
"vitest": "^2.1.5",
|
||||
"webpack": "^5.97.1"
|
||||
|
||||
@@ -1,5 +1,95 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
## 4.1.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5da1cda]
|
||||
- @llamaindex/core@0.6.21
|
||||
|
||||
## 4.1.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [0267bb0]
|
||||
- @llamaindex/core@0.6.20
|
||||
|
||||
## 4.1.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4b51791: Add deprecation to README
|
||||
|
||||
## 4.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 049471b: Add deprecation warning
|
||||
|
||||
## 4.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- c3bf3c7: Adding support for citations to beta agent data schema
|
||||
- Updated dependencies [f9f1de9]
|
||||
- @llamaindex/core@0.6.19
|
||||
|
||||
## 4.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [f29799e]
|
||||
- Updated dependencies [7224c06]
|
||||
- @llamaindex/core@0.6.18
|
||||
|
||||
## 4.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [38da40b]
|
||||
- @llamaindex/core@0.6.17
|
||||
|
||||
## 4.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2967d57: Default to \_public agent url id
|
||||
- Updated dependencies [a8ec08c]
|
||||
- @llamaindex/core@0.6.16
|
||||
|
||||
## 4.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7ad3411]
|
||||
- Updated dependencies [5da5b3c]
|
||||
- @llamaindex/core@0.6.15
|
||||
|
||||
## 4.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a1b1598: fix: add generic types into agent data responses
|
||||
|
||||
## 4.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- d2be868: Bug fixes for new beta agent-data cloud API
|
||||
|
||||
## 4.0.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 579ca0c: chore: bump sdk version
|
||||
|
||||
## 4.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 48b0d88: fix: exports in `api` submodule
|
||||
- f185772: fix(cloud): missing file
|
||||
|
||||
## 4.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
> LlamaCloud is a new generation of managed parsing, ingestion, and retrieval services, designed to bring production-grade context-augmentation to your LLM and RAG applications.
|
||||
|
||||
For more information, see the [API documentation](https://docs.cloud.llamaindex.ai/).
|
||||
> [!WARNING]
|
||||
> This package has been deprecated since version 4.1.0.
|
||||
> Please migrate to [llama-cloud-services](https://www.npmjs.com/package/llama-cloud-services).
|
||||
> See the documentation: https://docs.cloud.llamaindex.ai
|
||||
|
||||
## License
|
||||
|
||||
|
||||
+262
-183
@@ -2519,7 +2519,7 @@
|
||||
"get": {
|
||||
"tags": ["Organizations"],
|
||||
"summary": "Get Organization Usage",
|
||||
"description": "Get usage for a project",
|
||||
"description": "Get usage for a specific organization.",
|
||||
"operationId": "get_organization_usage_api_v1_organizations__organization_id__usage_get",
|
||||
"security": [
|
||||
{
|
||||
@@ -2535,15 +2535,8 @@
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"title": "Organization Id"
|
||||
}
|
||||
},
|
||||
@@ -11650,7 +11643,7 @@
|
||||
},
|
||||
"/api/v1/projects/{project_id}/agents": {
|
||||
"get": {
|
||||
"tags": ["Llama Apps"],
|
||||
"tags": ["Agent Deployments"],
|
||||
"summary": "List Deployments",
|
||||
"description": "List all deployments for a project.",
|
||||
"operationId": "list_deployments_api_v1_projects__project_id__agents_get",
|
||||
@@ -11716,7 +11709,7 @@
|
||||
},
|
||||
"/api/v1/projects/{project_id}/agents:sync": {
|
||||
"post": {
|
||||
"tags": ["Llama Apps"],
|
||||
"tags": ["Agent Deployments"],
|
||||
"summary": "Sync Deployments",
|
||||
"description": "Sync deployments for a project.",
|
||||
"operationId": "sync_deployments_api_v1_projects__project_id__agents_sync_post",
|
||||
@@ -11780,12 +11773,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/billing/checkout-session": {
|
||||
"/api/v1/classifier/classify": {
|
||||
"post": {
|
||||
"tags": ["Billing"],
|
||||
"summary": "Create Checkout Session",
|
||||
"description": "Create a new checkout session.",
|
||||
"operationId": "create_checkout_session_api_v1_billing_checkout_session_post",
|
||||
"tags": ["Classifier", "Beta", "Classifier"],
|
||||
"summary": "Classify Documents",
|
||||
"description": "**[BETA]** Classify documents based on provided rules - simplified classification system.\n\n**This is a Beta feature** - API may change based on user feedback.\n\nThis endpoint supports:\n- Classifying new uploaded files\n- Classifying existing files by ID\n- Both new files and existing file IDs in one request\n\n## v0 Features:\n- **Simplified Rules**: Only `type` and `description` fields needed\n- **Matching Threshold**: Confidence-based classification with configurable threshold\n- **Smart Classification**: Filename heuristics + LLM content analysis\n- **Document Type Filtering**: Automatically filters out non-document file types\n- **Fast Processing**: Uses LlamaParse fast mode + GPT-4.1-nano\n- **Optimized Performance**: Parses each file only once for all rules\n\n## Simplified Scoring Logic:\n1. **Evaluate All Rules**: Compare document against all classification rules\n2. **Best Match Selection**: Return the highest scoring rule above matching_threshold\n3. **Unknown Classification**: Return as \"unknown\" if no rules score above threshold\n\nThis ensures optimal classification by:\n- Finding the best possible match among all rules\n- Avoiding false positives with confidence thresholds\n- Maximizing performance with single-pass file parsing\n\n## Rule Format:\n```json\n[\n {\n \"type\": \"invoice\",\n \"description\": \"contains invoice number, line items, and total amount\"\n },\n {\n \"type\": \"receipt\",\n \"description\": \"purchase receipt with transaction details and payment info\"\n }\n]\n```\n\n## Classification Process:\n1. **Metadata Heuristics** (configurable via API):\n - **Document Type Filter**: Only process document file types (PDF, DOC, DOCX, RTF, TXT, ODT, Pages, HTML, XML, Markdown)\n - **Filename Heuristics**: Check if rule type appears in filename\n - **Content Analysis**: Parse document content once and use LLM for semantic matching against all rules\n2. **Result**: Returns type, confidence score, and matched rule information\n\n## API Parameters:\n- `matching_threshold` (0.1-0.99, default: 0.6): Minimum confidence threshold for acceptable matches\n- `enable_metadata_heuristic` (boolean, default: true): Enable metadata-based features\n\n## Supported Document Types:\n**Text Documents**: pdf, doc, docx, rtf, txt, odt, pages\n**Web Documents**: html, htm, xml\n**Markup**: md, markdown\n\n## Limits (Beta):\n- Maximum 100 files per request\n- Maximum 10 rules per request\n- Rule descriptions: 10-500 characters\n- Document types: 1-50 characters (alphanumeric, hyphens, underscores)\n\n**Beta Notice**: This API is subject to change. Please provide feedback!",
|
||||
"operationId": "classify_documents_api_v1_classifier_classify_post",
|
||||
"security": [
|
||||
{
|
||||
"HTTPBearer": []
|
||||
@@ -11795,6 +11788,23 @@
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "project_id",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Project Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "organization_id",
|
||||
"in": "query",
|
||||
@@ -11832,9 +11842,9 @@
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"multipart/form-data": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/CheckoutSessionCreatePayload"
|
||||
"$ref": "#/components/schemas/Body_classify_documents_api_v1_classifier_classify_post"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11845,8 +11855,7 @@
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"title": "Response Create Checkout Session Api V1 Billing Checkout Session Post"
|
||||
"$ref": "#/components/schemas/ClassifyResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11948,55 +11957,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/billing/webhook": {
|
||||
"post": {
|
||||
"tags": ["Billing"],
|
||||
"summary": "Stripe Webhook",
|
||||
"description": "Stripe webhook endpoint.",
|
||||
"operationId": "stripe_webhook_api_v1_billing_webhook_post",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "stripe-signature",
|
||||
"in": "header",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"title": "Stripe-Signature"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Successful Response",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"const": "success",
|
||||
"type": "string"
|
||||
},
|
||||
"propertyNames": {
|
||||
"const": "status"
|
||||
},
|
||||
"title": "Response Stripe Webhook Api V1 Billing Webhook Post"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"422": {
|
||||
"description": "Validation Error",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/HTTPValidationError"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/billing/downgrade-plan": {
|
||||
"post": {
|
||||
"tags": ["Billing"],
|
||||
@@ -12165,64 +12125,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/billing/metronome-webhook": {
|
||||
"post": {
|
||||
"tags": ["Billing"],
|
||||
"summary": "Metronome Webhook",
|
||||
"description": "Metronome webhook endpoint.",
|
||||
"operationId": "metronome_webhook_api_v1_billing_metronome_webhook_post",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "Metronome-Webhook-Signature",
|
||||
"in": "header",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"title": "Metronome-Webhook-Signature"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Date",
|
||||
"in": "header",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"title": "Date"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Successful Response",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"const": "success",
|
||||
"type": "string"
|
||||
},
|
||||
"propertyNames": {
|
||||
"const": "status"
|
||||
},
|
||||
"title": "Response Metronome Webhook Api V1 Billing Metronome Webhook Post"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"422": {
|
||||
"description": "Validation Error",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/HTTPValidationError"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/billing/metronome/dashboard": {
|
||||
"get": {
|
||||
"tags": ["Billing"],
|
||||
@@ -15768,12 +15670,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/beta/agent-data/": {
|
||||
"/api/v1/beta/agent-data": {
|
||||
"post": {
|
||||
"tags": ["Beta", "Agent Data"],
|
||||
"summary": "Create Agent Data",
|
||||
"description": "Create new agent data.",
|
||||
"operationId": "create_agent_data_api_v1_beta_agent_data__post",
|
||||
"operationId": "create_agent_data_api_v1_beta_agent_data_post",
|
||||
"security": [
|
||||
{
|
||||
"HTTPBearer": []
|
||||
@@ -18883,6 +18785,73 @@
|
||||
"required": ["start_date", "end_date"],
|
||||
"title": "BillingPeriod"
|
||||
},
|
||||
"Body_classify_documents_api_v1_classifier_classify_post": {
|
||||
"properties": {
|
||||
"rules_json": {
|
||||
"type": "string",
|
||||
"title": "Rules Json",
|
||||
"description": "JSON string containing classifier rules"
|
||||
},
|
||||
"files": {
|
||||
"anyOf": [
|
||||
{
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "binary"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Files"
|
||||
},
|
||||
"file_ids": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "File Ids",
|
||||
"description": "Comma-separated list of existing file IDs"
|
||||
},
|
||||
"matching_threshold": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "number",
|
||||
"maximum": 0.99,
|
||||
"minimum": 0.1
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Matching Threshold",
|
||||
"description": "Minimum confidence threshold for acceptable matches (0.1-0.99, default: 0.6)",
|
||||
"default": 0.6
|
||||
},
|
||||
"enable_metadata_heuristic": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Enable Metadata Heuristic",
|
||||
"description": "Enable metadata-based features (document filtering + content classification, default: true)",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": ["rules_json"],
|
||||
"title": "Body_classify_documents_api_v1_classifier_classify_post"
|
||||
},
|
||||
"Body_create_report_api_v1_reports__post": {
|
||||
"properties": {
|
||||
"name": {
|
||||
@@ -19376,6 +19345,11 @@
|
||||
],
|
||||
"title": "Max Pages"
|
||||
},
|
||||
"merge_tables_across_pages_in_markdown": {
|
||||
"type": "boolean",
|
||||
"title": "Merge Tables Across Pages In Markdown",
|
||||
"default": false
|
||||
},
|
||||
"outlined_table_extraction": {
|
||||
"type": "boolean",
|
||||
"title": "Outlined Table Extraction",
|
||||
@@ -19857,6 +19831,11 @@
|
||||
],
|
||||
"title": "Max Pages"
|
||||
},
|
||||
"merge_tables_across_pages_in_markdown": {
|
||||
"type": "boolean",
|
||||
"title": "Merge Tables Across Pages In Markdown",
|
||||
"default": false
|
||||
},
|
||||
"outlined_table_extraction": {
|
||||
"type": "boolean",
|
||||
"title": "Outlined Table Extraction",
|
||||
@@ -20430,30 +20409,101 @@
|
||||
"type": "object",
|
||||
"title": "ChatInputParams"
|
||||
},
|
||||
"CheckoutSessionCreatePayload": {
|
||||
"properties": {
|
||||
"success_url": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"format": "uri",
|
||||
"title": "Success Url"
|
||||
},
|
||||
"cancel_url": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"format": "uri",
|
||||
"title": "Cancel Url"
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": ["success_url", "cancel_url"],
|
||||
"title": "CheckoutSessionCreatePayload"
|
||||
},
|
||||
"ChunkMode": {
|
||||
"type": "string",
|
||||
"enum": ["PAGE", "DOCUMENT", "SECTION", "GROUPED_PAGES"],
|
||||
"title": "ChunkMode"
|
||||
},
|
||||
"ClassificationResult": {
|
||||
"properties": {
|
||||
"file_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"title": "File Id",
|
||||
"description": "The ID of the classified file"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"title": "Type",
|
||||
"description": "The assigned document type ('unknown' if no rules matched)",
|
||||
"examples": ["invoice", "receipt", "contract", "unknown"]
|
||||
},
|
||||
"confidence": {
|
||||
"type": "number",
|
||||
"maximum": 1.0,
|
||||
"minimum": 0.0,
|
||||
"title": "Confidence",
|
||||
"description": "Confidence score of the classification (0.0-1.0)"
|
||||
},
|
||||
"matched_rule": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Matched Rule",
|
||||
"description": "Description of the rule that matched, or method used (e.g., 'auto: filename contains invoice')",
|
||||
"examples": [
|
||||
"contains invoice number, line items, and total",
|
||||
"auto: filename contains 'invoice'",
|
||||
null
|
||||
]
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": ["file_id", "type", "confidence", "matched_rule"],
|
||||
"title": "ClassificationResult",
|
||||
"description": "Result of classifying a single file.\n\nContains the classification outcome with confidence score and matched rule info."
|
||||
},
|
||||
"ClassifyResponse": {
|
||||
"properties": {
|
||||
"items": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/ClassificationResult"
|
||||
},
|
||||
"type": "array",
|
||||
"title": "Items",
|
||||
"description": "The list of items."
|
||||
},
|
||||
"next_page_token": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Next Page Token",
|
||||
"description": "A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages."
|
||||
},
|
||||
"total_size": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Total Size",
|
||||
"description": "The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only."
|
||||
},
|
||||
"unknown_count": {
|
||||
"type": "integer",
|
||||
"minimum": 0.0,
|
||||
"title": "Unknown Count",
|
||||
"description": "Number of files that couldn't be classified"
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": ["items", "unknown_count"],
|
||||
"title": "ClassifyResponse",
|
||||
"description": "Response model for the classify endpoint following AIP-132 pagination standard.\n\nContains classification results with pagination support and summary statistics."
|
||||
},
|
||||
"CloudAzStorageBlobDataSource": {
|
||||
"properties": {
|
||||
"supports_access_control": {
|
||||
@@ -21941,6 +21991,7 @@
|
||||
},
|
||||
"query": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"title": "Query",
|
||||
"description": "The query to retrieve against."
|
||||
}
|
||||
@@ -22457,14 +22508,12 @@
|
||||
"version_metadata": {
|
||||
"anyOf": [
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
"$ref": "#/components/schemas/DataSourceReaderVersionMetadata"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Version Metadata",
|
||||
"description": "Version metadata for the data source"
|
||||
},
|
||||
"project_id": {
|
||||
@@ -22570,6 +22619,24 @@
|
||||
"title": "DataSourceCreate",
|
||||
"description": "Schema for creating a data source."
|
||||
},
|
||||
"DataSourceReaderVersionMetadata": {
|
||||
"properties": {
|
||||
"reader_version": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Reader Version",
|
||||
"description": "The version of the reader to use for this data source."
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"title": "DataSourceReaderVersionMetadata"
|
||||
},
|
||||
"DataSourceUpdate": {
|
||||
"properties": {
|
||||
"name": {
|
||||
@@ -22841,6 +22908,7 @@
|
||||
},
|
||||
"query": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"title": "Query",
|
||||
"description": "The query to retrieve against."
|
||||
},
|
||||
@@ -23799,7 +23867,7 @@
|
||||
},
|
||||
"ExtractMode": {
|
||||
"type": "string",
|
||||
"enum": ["FAST", "BALANCED", "PREMIUM", "MULTIMODAL", "ACCURATE"],
|
||||
"enum": ["FAST", "BALANCED", "PREMIUM", "MULTIMODAL"],
|
||||
"title": "ExtractMode"
|
||||
},
|
||||
"ExtractModels": {
|
||||
@@ -26210,6 +26278,19 @@
|
||||
"description": "Whether to try to extract outlined tables",
|
||||
"default": false
|
||||
},
|
||||
"mergeTablesAcrossPagesInMarkdown": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Mergetablesacrosspagesinmarkdown",
|
||||
"description": "Whether to merge tables across pages in markdown",
|
||||
"default": false
|
||||
},
|
||||
"saveImages": {
|
||||
"anyOf": [
|
||||
{
|
||||
@@ -27070,6 +27151,7 @@
|
||||
"disable_image_extraction": false,
|
||||
"invalidate_cache": false,
|
||||
"outlined_table_extraction": false,
|
||||
"merge_tables_across_pages_in_markdown": false,
|
||||
"output_pdf_of_document": false,
|
||||
"do_not_cache": false,
|
||||
"fast_mode": false,
|
||||
@@ -27246,6 +27328,18 @@
|
||||
"title": "Outlined Table Extraction",
|
||||
"default": false
|
||||
},
|
||||
"merge_tables_across_pages_in_markdown": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Merge Tables Across Pages In Markdown",
|
||||
"default": false
|
||||
},
|
||||
"output_pdf_of_document": {
|
||||
"anyOf": [
|
||||
{
|
||||
@@ -29406,6 +29500,18 @@
|
||||
"title": "Outlined Table Extraction",
|
||||
"default": false
|
||||
},
|
||||
"merge_tables_across_pages_in_markdown": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Merge Tables Across Pages In Markdown",
|
||||
"default": false
|
||||
},
|
||||
"output_pdf_of_document": {
|
||||
"anyOf": [
|
||||
{
|
||||
@@ -31334,14 +31440,12 @@
|
||||
"version_metadata": {
|
||||
"anyOf": [
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
"$ref": "#/components/schemas/DataSourceReaderVersionMetadata"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Version Metadata",
|
||||
"description": "Version metadata for the data source"
|
||||
},
|
||||
"project_id": {
|
||||
@@ -32129,12 +32233,6 @@
|
||||
"title": "Data Source Project File Changed",
|
||||
"description": "Whether the data source project file has changed",
|
||||
"default": false
|
||||
},
|
||||
"should_migrate_pipeline_file_to_external_file_id": {
|
||||
"type": "boolean",
|
||||
"title": "Should Migrate Pipeline File To External File Id",
|
||||
"description": "Whether to migrate the pipeline file to the external file id",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
@@ -34239,19 +34337,6 @@
|
||||
"title": "Name",
|
||||
"description": "A name for the role."
|
||||
},
|
||||
"organization_id": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Organization Id",
|
||||
"description": "The organization's ID."
|
||||
},
|
||||
"permissions": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Permission"
|
||||
@@ -34262,7 +34347,7 @@
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": ["id", "name", "organization_id", "permissions"],
|
||||
"required": ["id", "name", "permissions"],
|
||||
"title": "Role",
|
||||
"description": "Schema for a role."
|
||||
},
|
||||
@@ -35134,19 +35219,13 @@
|
||||
"title": "Project Ids",
|
||||
"description": "The project ID scope."
|
||||
},
|
||||
"role_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"title": "Role Id",
|
||||
"description": "The role's ID."
|
||||
},
|
||||
"role": {
|
||||
"$ref": "#/components/schemas/Role",
|
||||
"description": "The role."
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": ["id", "user_id", "organization_id", "role_id", "role"],
|
||||
"required": ["id", "user_id", "organization_id", "role"],
|
||||
"title": "UserOrganizationRole",
|
||||
"description": "Schema for a user's role in an organization."
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloud",
|
||||
"version": "4.0.19",
|
||||
"version": "4.1.3",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
@@ -11,20 +11,22 @@
|
||||
"files": [
|
||||
"openapi.json",
|
||||
"./api",
|
||||
"./reader"
|
||||
"./reader",
|
||||
"./parse",
|
||||
"./beta/agent"
|
||||
],
|
||||
"exports": {
|
||||
"./openapi.json": "./openapi.json",
|
||||
"./agent": {
|
||||
"./beta/agent": {
|
||||
"require": {
|
||||
"types": "./agent/dist/index.d.cts",
|
||||
"default": "./agent/dist/index.cjs"
|
||||
"types": "./beta/agent/dist/index.d.cts",
|
||||
"default": "./beta/agent/dist/index.cjs"
|
||||
},
|
||||
"import": {
|
||||
"types": "./agent/dist/index.d.ts",
|
||||
"default": "./agent/dist/index.js"
|
||||
"types": "./beta/agent/dist/index.d.ts",
|
||||
"default": "./beta/agent/dist/index.js"
|
||||
},
|
||||
"default": "./agent/dist/index.js"
|
||||
"default": "./beta/agent/dist/index.js"
|
||||
},
|
||||
"./api": {
|
||||
"require": {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user