mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-01 22:14:03 -04:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bbb87f42ed | |||
| 24caf93efe | |||
| a9b5b993fa | |||
| f369d3de4f | |||
| c1850ee370 | |||
| 086a65141d | |||
| d99d598491 | |||
| a0e6f57d9b | |||
| e0f6cc3be1 | |||
| 8386510d86 | |||
| b504303c66 | |||
| cf9a9356e0 | |||
| 335020e242 | |||
| 3d1808b5d2 | |||
| a19cbc7fe0 | |||
| b8f0cbc4e0 | |||
| 7e8230b056 | |||
| 8be45899a7 | |||
| c4800bcf82 | |||
| fd38a253b7 | |||
| 510191cb5d | |||
| 7934ade092 | |||
| a6c1eab762 | |||
| 515f2c1e3d | |||
| dc85649ead | |||
| d2b2722a30 |
@@ -23,7 +23,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [20.x, 22.x, 23.x]
|
||||
node-version: [18.x, 20.x, 22.x, 23.x]
|
||||
name: E2E on Node.js ${{ matrix.node-version }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [20.x, 22.x, 23.x]
|
||||
node-version: [18.x, 20.x, 22.x, 23.x]
|
||||
name: Test on Node.js ${{ matrix.node-version }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
@@ -1,5 +1,57 @@
|
||||
# docs
|
||||
|
||||
## 0.0.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
- @llamaindex/examples@0.0.21
|
||||
|
||||
## 0.0.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- c1850ee: feat: Amazon Nova support via Bedrock
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
- @llamaindex/examples@0.0.20
|
||||
|
||||
## 0.0.132
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
- @llamaindex/examples@0.0.19
|
||||
|
||||
## 0.0.131
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
- @llamaindex/examples@0.0.18
|
||||
|
||||
## 0.0.130
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [fd38a25]
|
||||
- @llamaindex/examples@0.0.17
|
||||
|
||||
## 0.0.129
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.128
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.127
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -37,6 +37,9 @@ 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
|
||||
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:
|
||||
@@ -53,6 +56,9 @@ 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-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_ANTHROPIC_CLAUDE_3_HAIKU = "eu.anthropic.claude-3-haiku-20240307-v1:0";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "docs",
|
||||
"version": "0.0.127",
|
||||
"version": "0.0.134",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
||||
@@ -29,4 +29,5 @@ next-env.d.ts
|
||||
|
||||
# build
|
||||
/src/content/docs/cloud/api
|
||||
/src/content/docs/api
|
||||
./types
|
||||
|
||||
@@ -1,5 +1,83 @@
|
||||
# @llamaindex/doc
|
||||
|
||||
## 0.0.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a9b5b99: feat: build api reference pages for new documentation site
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
- @llamaindex/readers@1.0.21
|
||||
- @llamaindex/cloud@2.0.19
|
||||
- llamaindex@0.8.28
|
||||
- @llamaindex/node-parser@0.0.20
|
||||
- @llamaindex/openai@0.1.44
|
||||
|
||||
## 0.0.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
- @llamaindex/core@0.4.18
|
||||
- @llamaindex/cloud@2.0.18
|
||||
- @llamaindex/node-parser@0.0.19
|
||||
- @llamaindex/openai@0.1.43
|
||||
- @llamaindex/readers@1.0.20
|
||||
- @llamaindex/workflow@0.0.8
|
||||
|
||||
## 0.0.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- llamaindex@0.8.26
|
||||
- @llamaindex/openai@0.1.42
|
||||
- @llamaindex/cloud@2.0.17
|
||||
- @llamaindex/node-parser@0.0.18
|
||||
- @llamaindex/readers@1.0.19
|
||||
|
||||
## 0.0.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7e8230b]
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/readers@1.0.18
|
||||
- @llamaindex/cloud@2.0.16
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/node-parser@0.0.17
|
||||
- @llamaindex/openai@0.1.41
|
||||
- @llamaindex/workflow@0.0.7
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fd38a25: Add vercel tool adapter to use query engine tool
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.15
|
||||
- @llamaindex/core@0.4.15
|
||||
- llamaindex@0.8.23
|
||||
- @llamaindex/node-parser@0.0.16
|
||||
- @llamaindex/openai@0.1.40
|
||||
- @llamaindex/readers@1.0.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
+11
-7
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/doc",
|
||||
"version": "0.0.25",
|
||||
"version": "0.0.32",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "pnpm run build:docs && next build",
|
||||
@@ -8,7 +8,7 @@
|
||||
"start": "next start",
|
||||
"postdev": "fumadocs-mdx",
|
||||
"postbuild": "fumadocs-mdx && tsx scripts/post-build.mts",
|
||||
"build:docs": "node ./scripts/generate-docs.mjs"
|
||||
"build:docs": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" typedoc && node ./scripts/generate-docs.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@icons-pack/react-simple-icons": "^10.1.0",
|
||||
@@ -33,13 +33,13 @@
|
||||
"clsx": "2.1.1",
|
||||
"foxact": "^0.2.41",
|
||||
"framer-motion": "^11.11.17",
|
||||
"fumadocs-core": "14.4.2",
|
||||
"fumadocs-core": "^14.6.0",
|
||||
"fumadocs-docgen": "^1.3.2",
|
||||
"fumadocs-mdx": "^11.1.1",
|
||||
"fumadocs-openapi": "^5.7.0",
|
||||
"fumadocs-twoslash": "^2.0.1",
|
||||
"fumadocs-mdx": "^11.1.2",
|
||||
"fumadocs-openapi": "^5.8.2",
|
||||
"fumadocs-twoslash": "^2.0.2",
|
||||
"fumadocs-typescript": "^3.0.2",
|
||||
"fumadocs-ui": "14.4.2",
|
||||
"fumadocs-ui": "^14.6.0",
|
||||
"hast-util-to-jsx-runtime": "^2.3.2",
|
||||
"llamaindex": "workspace:*",
|
||||
"lucide-react": "^0.460.0",
|
||||
@@ -72,6 +72,7 @@
|
||||
"@types/react": "^18.3.12",
|
||||
"@types/react-dom": "^18.3.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"cross-env": "^7.0.3",
|
||||
"fast-glob": "^3.3.2",
|
||||
"gray-matter": "^4.0.3",
|
||||
"monaco-editor-webpack-plugin": "^7.1.0",
|
||||
@@ -82,6 +83,9 @@
|
||||
"remark-stringify": "^11.0.0",
|
||||
"tailwindcss": "^3.4.15",
|
||||
"tsx": "^4.19.2",
|
||||
"typedoc": "^0.26.11",
|
||||
"typedoc-plugin-markdown": "^4.3.1",
|
||||
"typedoc-plugin-merge-modules": "^6.1.0",
|
||||
"typescript": "^5.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import * as OpenAPI from "fumadocs-openapi";
|
||||
import { generateFiles } from "fumadocs-typescript";
|
||||
import fs from "node:fs";
|
||||
import * as path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { rimrafSync } from "rimraf";
|
||||
|
||||
const out = "./src/content/docs/cloud/api";
|
||||
const apiRefOut = "./src/content/docs/api";
|
||||
|
||||
// clean generated files
|
||||
rimrafSync(out, {
|
||||
@@ -20,3 +24,63 @@ void OpenAPI.generateFiles({
|
||||
output: out,
|
||||
groupBy: "tag",
|
||||
});
|
||||
|
||||
void generateFiles({
|
||||
input: ["./src/content/docs/api/**/*.mdx"],
|
||||
output: (file) => path.resolve(path.dirname(file), path.basename(file)),
|
||||
transformOutput,
|
||||
});
|
||||
|
||||
function transformOutput(filePath, content) {
|
||||
const fileName = path.basename(filePath);
|
||||
let title = fileName.split(".")[0];
|
||||
let pageContent = content;
|
||||
if (title === "index") title = "LlamaIndex API Reference";
|
||||
return `---\ntitle: ${title}\n---\n\n${transformAbsoluteUrl(pageContent, filePath)}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the content by converting relative MDX links to absolute docs API links
|
||||
* Example: [text](../type-aliases/TaskHandler.mdx) -> [text](/docs/api/type-aliases/TaskHandler)
|
||||
* [text](BaseChatEngine.mdx) -> [text](/docs/api/classes/BaseChatEngine)
|
||||
* [text](BaseVectorStore.mdx#constructors) -> [text](/docs/api/classes/BaseVectorStore#constructors)
|
||||
* [text](TaskStep.mdx) -> [text](/docs/api/type-aliases/TaskStep)
|
||||
*/
|
||||
function transformAbsoluteUrl(content, filePath) {
|
||||
const group = path.dirname(filePath).split(path.sep).pop();
|
||||
return content.replace(
|
||||
/\]\(([^)]+)\.mdx([^)]*)\)/g,
|
||||
(match, slug, anchor) => {
|
||||
const slugParts = slug.split("/");
|
||||
const fileName = slugParts[slugParts.length - 1];
|
||||
const fileGroup = slugParts[slugParts.length - 2] ?? group;
|
||||
const result = ["/docs/api", fileGroup, fileName, anchor]
|
||||
.filter(Boolean)
|
||||
.join("/");
|
||||
return `](${result})`;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// append meta.json for API page
|
||||
fs.writeFileSync(
|
||||
path.resolve(apiRefOut, "meta.json"),
|
||||
JSON.stringify(
|
||||
{
|
||||
title: "API Reference",
|
||||
description: "LlamaIndex API Reference",
|
||||
root: true,
|
||||
pages: [
|
||||
"index",
|
||||
"classes",
|
||||
"enumerations",
|
||||
"functions",
|
||||
"interfaces",
|
||||
"type-aliases",
|
||||
"variables",
|
||||
],
|
||||
},
|
||||
null,
|
||||
2,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -94,4 +94,33 @@
|
||||
body {
|
||||
@apply bg-background text-foreground;
|
||||
}
|
||||
|
||||
/*
|
||||
* Override default styles for Markdown
|
||||
*/
|
||||
.prose
|
||||
:where(blockquote):not(
|
||||
:where([class~="not-prose"], [class~="not-prose"] *)
|
||||
) {
|
||||
font-style: normal !important;
|
||||
}
|
||||
|
||||
.prose
|
||||
:where(blockquote p:first-of-type):not(
|
||||
:where([class~="not-prose"], [class~="not-prose"] *)
|
||||
):before {
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
.prose
|
||||
:where(blockquote p:first-of-type):not(
|
||||
:where([class~="not-prose"], [class~="not-prose"] *)
|
||||
):after {
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
.prose
|
||||
:where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
|
||||
@apply text-blue-600 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "Integration",
|
||||
"description": "See our integrations",
|
||||
"pages": ["open-llm-metry", "lang-trace"]
|
||||
"pages": ["open-llm-metry", "lang-trace", "vercel"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: Vercel
|
||||
description: Integrate LlamaIndex with Vercel's AI SDK
|
||||
---
|
||||
|
||||
LlamaIndex provides integration with Vercel's AI SDK, allowing you to create powerful search and retrieval applications. You can:
|
||||
- Use any of Vercel AI's [model providers](https://sdk.vercel.ai/docs/foundations/providers-and-models) as LLMs in LlamaIndex
|
||||
- Use indexes (e.g. VectorStoreIndex, LlamaCloudIndex) from LlamaIndexTS in your Vercel AI applications
|
||||
|
||||
## Setup
|
||||
|
||||
First, install the required dependencies:
|
||||
|
||||
```bash
|
||||
npm install @llamaindex/vercel ai
|
||||
```
|
||||
|
||||
## Using Vercel AI's Model Providers
|
||||
|
||||
Using the `VercelLLM` adapter, it's easy to use any of Vercel AI's [model providers](https://sdk.vercel.ai/docs/foundations/providers-and-models) as LLMs in LlamaIndex. Here's an example of how to use OpenAI's GPT-4o model:
|
||||
|
||||
```typescript
|
||||
const llm = new VercelLLM({ model: openai("gpt-4o") });
|
||||
const result = await llm.complete({
|
||||
prompt: "What is the capital of France?",
|
||||
stream: false, // Set to true if you want streaming responses
|
||||
});
|
||||
console.log(result.text);
|
||||
```
|
||||
|
||||
## Use Indexes
|
||||
|
||||
### Using VectorStoreIndex
|
||||
|
||||
Here's how to create a simple vector store index and query it using Vercel's AI SDK:
|
||||
|
||||
```typescript
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { Document, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
// Create an index from your documents
|
||||
const document = new Document({ text: yourText, id_: "unique-id" });
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
|
||||
// Create a query tool
|
||||
const queryTool = llamaindex({
|
||||
model: openai("gpt-4"),
|
||||
index,
|
||||
description: "Search through the documents", // optional
|
||||
});
|
||||
|
||||
// Use the tool with Vercel's AI SDK
|
||||
streamText({
|
||||
model: openai("gpt-4"),
|
||||
prompt: "Your question here",
|
||||
tools: { queryTool },
|
||||
onFinish({ response }) {
|
||||
console.log("Response:", response.messages); // log the response
|
||||
},
|
||||
}).toDataStream();
|
||||
```
|
||||
|
||||
> Note: the Vercel AI model referenced in the `llamaindex` function is used by the response synthesizer to generate a response for the tool call.
|
||||
|
||||
### Using LlamaCloud
|
||||
|
||||
For production deployments, you can use LlamaCloud to store and manage your documents:
|
||||
|
||||
```typescript
|
||||
import { LlamaCloudIndex } from "llamaindex";
|
||||
|
||||
// Create a LlamaCloud index
|
||||
const index = await LlamaCloudIndex.fromDocuments({
|
||||
documents: [document],
|
||||
name: "your-index-name",
|
||||
projectName: "your-project",
|
||||
apiKey: process.env.LLAMA_CLOUD_API_KEY,
|
||||
});
|
||||
|
||||
// Use it the same way as VectorStoreIndex
|
||||
const queryTool = llamaindex({
|
||||
model: openai("gpt-4"),
|
||||
index,
|
||||
description: "Search through the documents",
|
||||
});
|
||||
|
||||
// Use the tool with Vercel's AI SDK
|
||||
streamText({
|
||||
model: openai("gpt-4"),
|
||||
prompt: "Your question here",
|
||||
tools: { queryTool },
|
||||
}).toDataStream();
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Explore [LlamaCloud](https://cloud.llamaindex.ai/) for managed document storage and retrieval
|
||||
2. Join our [Discord community](https://discord.gg/dGcwcsnxhU) for support and discussions
|
||||
|
||||
@@ -84,7 +84,7 @@ Imaging you put output file into `/dist/openai.js` but you are importing `llamai
|
||||
}
|
||||
```
|
||||
|
||||
In old module resolution, TypeScript will not be able to find the module because it is not follow the file structure, even you run `node index.js` successfully. (on Node.js >=16)
|
||||
In old module resolution, TypeScript will not be able to find the module because it is not following the file structure, even you run `node index.js` successfully. (on Node.js >=16)
|
||||
|
||||
See more about [moduleResolution](https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution) or
|
||||
[TypeScript 5.0 blog](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#--moduleresolution-bundler7).
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"pages": ["llamaindex", "cloud"]
|
||||
"pages": ["llamaindex", "cloud", "api"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"plugin": ["typedoc-plugin-markdown", "typedoc-plugin-merge-modules"],
|
||||
"entryPoints": ["../../packages/llamaindex/src/index.ts"],
|
||||
"tsconfig": "../../tsconfig.json",
|
||||
"readme": "none",
|
||||
"sourceLinkTemplate": "https://github.com/run-llama/LlamaIndexTS/blob/{gitRevision}/{path}#L{line}",
|
||||
"out": "./src/content/docs/api",
|
||||
"outputFileStrategy": "members",
|
||||
"categorizeByGroup": true,
|
||||
"categoryOrder": ["Classes", "Enums", "Functions", "Interfaces", "Types"],
|
||||
"sort": ["source-order"],
|
||||
"entryFileName": "index.md",
|
||||
"fileExtension": ".mdx",
|
||||
"hidePageTitle": true,
|
||||
"hidePageHeader": true,
|
||||
"hideGroupHeadings": true,
|
||||
"hideBreadcrumbs": true
|
||||
}
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/cloudflare-worker-agent-test
|
||||
|
||||
## 0.0.124
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 0.0.123
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 0.0.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||
"version": "0.0.118",
|
||||
"version": "0.0.124",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,36 @@
|
||||
# @llamaindex/llama-parse-browser-test
|
||||
|
||||
## 0.0.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.19
|
||||
|
||||
## 0.0.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.18
|
||||
|
||||
## 0.0.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.17
|
||||
|
||||
## 0.0.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/cloud@2.0.16
|
||||
|
||||
## 0.0.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.15
|
||||
|
||||
## 0.0.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/llama-parse-browser-test",
|
||||
"private": true,
|
||||
"version": "0.0.34",
|
||||
"version": "0.0.39",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/next-agent-test
|
||||
|
||||
## 0.1.124
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 0.1.123
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 0.1.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.1.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.1.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.1.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.1.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-agent-test",
|
||||
"version": "0.1.118",
|
||||
"version": "0.1.124",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# test-edge-runtime
|
||||
|
||||
## 0.1.123
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 0.1.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 0.1.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.1.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.1.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.1.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.1.117
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||
"version": "0.1.117",
|
||||
"version": "0.1.123",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/next-node-runtime
|
||||
|
||||
## 0.0.105
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 0.0.104
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 0.0.103
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.102
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.101
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.100
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.99
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-node-runtime-test",
|
||||
"version": "0.0.99",
|
||||
"version": "0.0.105",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/waku-query-engine-test
|
||||
|
||||
## 0.0.124
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 0.0.123
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 0.0.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/waku-query-engine-test",
|
||||
"version": "0.0.118",
|
||||
"version": "0.0.124",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -21,6 +21,11 @@ test.beforeEach(() => {
|
||||
});
|
||||
|
||||
await test("clip embedding", async (t) => {
|
||||
const major = parseInt(process.versions.node.split(".")[0] ?? "0", 10);
|
||||
if (major < 20) {
|
||||
t.skip("Skip CLIP tests on Node.js < 20");
|
||||
return;
|
||||
}
|
||||
await t.test("should trigger load transformer event", async () => {
|
||||
const nodes = [
|
||||
new ImageNode({
|
||||
|
||||
@@ -1,5 +1,59 @@
|
||||
# examples
|
||||
|
||||
## 0.0.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
- @llamaindex/readers@1.0.21
|
||||
- llamaindex@0.8.28
|
||||
- @llamaindex/vercel@0.0.6
|
||||
|
||||
## 0.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [086a651]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
- @llamaindex/vercel@0.0.5
|
||||
- @llamaindex/core@0.4.18
|
||||
- @llamaindex/readers@1.0.20
|
||||
- @llamaindex/workflow@0.0.8
|
||||
|
||||
## 0.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- llamaindex@0.8.26
|
||||
- @llamaindex/vercel@0.0.4
|
||||
- @llamaindex/readers@1.0.19
|
||||
|
||||
## 0.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7e8230b]
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/readers@1.0.18
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/vercel@0.0.3
|
||||
- @llamaindex/workflow@0.0.7
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fd38a25: Add vercel tool adapter to use query engine tool
|
||||
- Updated dependencies [fd38a25]
|
||||
- @llamaindex/vercel@0.0.2
|
||||
|
||||
## 0.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
import {
|
||||
Document,
|
||||
IngestionPipeline,
|
||||
MetadataMode,
|
||||
OpenAIEmbedding,
|
||||
SentenceSplitter,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
async function main() {
|
||||
// Load essay from abramov.txt in Node
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const path = "../node_modules/llamaindex/examples/abramov.txt";
|
||||
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
|
||||
@@ -22,14 +21,23 @@ async function main() {
|
||||
new OpenAIEmbedding(),
|
||||
],
|
||||
});
|
||||
console.time("Pipeline Run Time");
|
||||
|
||||
// run the pipeline
|
||||
const nodes = await pipeline.run({ documents: [document] });
|
||||
|
||||
// print out the result of the pipeline run
|
||||
for (const node of nodes) {
|
||||
console.log(node.getContent(MetadataMode.NONE));
|
||||
}
|
||||
console.timeEnd("Pipeline Run Time");
|
||||
|
||||
// initialize the VectorStoreIndex from nodes
|
||||
const index = await VectorStoreIndex.init({ nodes });
|
||||
|
||||
// Query the index
|
||||
const queryEngine = index.asQueryEngine();
|
||||
|
||||
const { message } = await queryEngine.query({
|
||||
query: "summarize the article in three sentence",
|
||||
});
|
||||
|
||||
console.log(message);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -1,24 +1,27 @@
|
||||
{
|
||||
"name": "@llamaindex/examples",
|
||||
"private": true,
|
||||
"version": "0.0.16",
|
||||
"version": "0.0.21",
|
||||
"dependencies": {
|
||||
"@ai-sdk/openai": "^1.0.5",
|
||||
"@aws-crypto/sha256-js": "^5.2.0",
|
||||
"@azure/cosmos": "^4.1.1",
|
||||
"@azure/identity": "^4.4.1",
|
||||
"@datastax/astra-db-ts": "^1.4.1",
|
||||
"@llamaindex/core": "^0.4.10",
|
||||
"@llamaindex/readers": "^1.0.11",
|
||||
"@llamaindex/workflow": "^0.0.6",
|
||||
"@llamaindex/core": "^0.4.19",
|
||||
"@llamaindex/readers": "^1.0.21",
|
||||
"@llamaindex/workflow": "^0.0.8",
|
||||
"@llamaindex/vercel": "^0.0.6",
|
||||
"@notionhq/client": "^2.2.15",
|
||||
"@pinecone-database/pinecone": "^4.0.0",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
"@zilliz/milvus2-sdk-node": "^2.4.6",
|
||||
"ai": "^4.0.0",
|
||||
"chromadb": "^1.8.1",
|
||||
"commander": "^12.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"js-tiktoken": "^1.0.14",
|
||||
"llamaindex": "^0.8.13",
|
||||
"llamaindex": "^0.8.28",
|
||||
"mongodb": "^6.7.0",
|
||||
"pathe": "^1.1.2",
|
||||
"postgres": "^3.4.4"
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"start:llamaparse-dir": "node --import tsx ./src/simple-directory-reader-with-llamaparse.ts",
|
||||
"start:llamaparse-json": "node --import tsx ./src/llamaparse-json.ts",
|
||||
"start:discord": "node --import tsx ./src/discord.ts",
|
||||
"start:json": "node --import tsx ./src/json.ts"
|
||||
"start:json": "node --import tsx ./src/json.ts",
|
||||
"start:obsidian": "node --import tsx ./src/obsidian.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/readers": "*",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { ObsidianReader } from "@llamaindex/readers/obsidian";
|
||||
|
||||
const obsidianReader = new ObsidianReader(
|
||||
"/Users/jingyi/Documents/jingyi-vault",
|
||||
);
|
||||
|
||||
obsidianReader.loadData().then((documents) => {
|
||||
console.log("documents:", documents.length);
|
||||
documents.forEach((doc) => {
|
||||
console.log(`document (${doc.id_}):`, doc.getText());
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,60 @@
|
||||
# Vercel Examples
|
||||
|
||||
These examples demonstrate how to integrate LlamaIndexTS with Vercel's AI SDK. The examples show how to use LlamaIndex for search and retrieval in both local vector store and LlamaCloud environments.
|
||||
|
||||
## Setup
|
||||
|
||||
To run these examples, first install the required dependencies from the parent folder `examples`:
|
||||
|
||||
```bash
|
||||
npm i
|
||||
```
|
||||
|
||||
## Running the Examples
|
||||
|
||||
Make sure to run the examples from the parent folder called `examples`. The following examples are available:
|
||||
|
||||
### Vercel LLM Example
|
||||
|
||||
Run the Vercel LLM example with:
|
||||
|
||||
```bash
|
||||
npx tsx vercel/llm.ts
|
||||
```
|
||||
|
||||
This example demonstrates using the `VercelLLM` adapter with Vercel's OpenAI model provider
|
||||
|
||||
### Vector Store Example
|
||||
|
||||
Run the local vector store example with:
|
||||
|
||||
```bash
|
||||
npx tsx vercel/vector-store.ts
|
||||
```
|
||||
|
||||
This example demonstrates:
|
||||
|
||||
- Creating a vector store index from one document
|
||||
- Using Vercel's AI SDK with LlamaIndex for streaming responses
|
||||
|
||||
### LlamaCloud Example
|
||||
|
||||
To run the LlamaCloud example:
|
||||
|
||||
```bash
|
||||
npx tsx vercel/llamacloud.ts
|
||||
```
|
||||
|
||||
This example requires a LlamaCloud API key set in your environment and an embedding model set in the `EMBEDDING_MODEL` environment variable:
|
||||
|
||||
```bash
|
||||
export LLAMA_CLOUD_API_KEY=your_api_key_here
|
||||
export EMBEDDING_MODEL="text-embedding-3-small"
|
||||
```
|
||||
|
||||
The example demonstrates:
|
||||
|
||||
- Creating a LlamaCloud index from one document
|
||||
- Streaming responses using Vercel's AI SDK
|
||||
|
||||
For more detailed information about the Vercel integration, check out [the documentation](https://ts.llamaindex.ai/docs/llamaindex/integration/vercel).
|
||||
@@ -0,0 +1,39 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { Document, LlamaCloudIndex } from "llamaindex";
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
async function main() {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
|
||||
const index = await LlamaCloudIndex.fromDocuments({
|
||||
documents: [document],
|
||||
name: "test-pipeline",
|
||||
projectName: "Default",
|
||||
apiKey: process.env.LLAMA_CLOUD_API_KEY,
|
||||
});
|
||||
console.log("Successfully created index");
|
||||
|
||||
const result = streamText({
|
||||
model: openai("gpt-4o"),
|
||||
prompt: "Cost of moving cat from Russia to UK?",
|
||||
tools: {
|
||||
queryTool: llamaindex({
|
||||
model: openai("gpt-4o"),
|
||||
index,
|
||||
description:
|
||||
"get information from your knowledge base to answer questions.", // optional description
|
||||
}),
|
||||
},
|
||||
maxSteps: 5,
|
||||
});
|
||||
|
||||
for await (const textPart of result.textStream) {
|
||||
process.stdout.write(textPart);
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -0,0 +1,45 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { VercelLLM } from "@llamaindex/vercel";
|
||||
import { LLMAgent, WikipediaTool } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
// Create an instance of VercelLLM with the OpenAI model
|
||||
const vercelLLM = new VercelLLM({ model: openai("gpt-4o") });
|
||||
|
||||
console.log("\n=== Test 1: Using complete() for single response ===");
|
||||
const result = await vercelLLM.complete({
|
||||
prompt: "What is the capital of France?",
|
||||
stream: false, // Set to true if you want streaming responses
|
||||
});
|
||||
console.log(result.text);
|
||||
|
||||
console.log("\n=== Test 2: Using chat() for streaming response ===");
|
||||
const stream = await vercelLLM.chat({
|
||||
messages: [
|
||||
{ content: "You want to talk in rhymes.", role: "system" },
|
||||
{
|
||||
content:
|
||||
"How much wood would a woodchuck chuck if a woodchuck could chuck wood?",
|
||||
role: "user",
|
||||
},
|
||||
],
|
||||
stream: true,
|
||||
});
|
||||
for await (const chunk of stream) {
|
||||
process.stdout.write(chunk.delta);
|
||||
}
|
||||
|
||||
console.log("\n=== Test 3: Using LLMAgent with WikipediaTool ===");
|
||||
const agent = new LLMAgent({
|
||||
llm: vercelLLM,
|
||||
tools: [new WikipediaTool()],
|
||||
});
|
||||
|
||||
const { message } = await agent.chat({
|
||||
message: "What's the history of New York from Wikipedia in 3 sentences?",
|
||||
});
|
||||
|
||||
console.log(message);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -0,0 +1,35 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { Document, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
async function main() {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
console.log("Successfully created index");
|
||||
|
||||
const result = streamText({
|
||||
model: openai("gpt-4o"),
|
||||
prompt: "Cost of moving cat from Russia to UK?",
|
||||
tools: {
|
||||
queryTool: llamaindex({
|
||||
model: openai("gpt-4o"),
|
||||
index,
|
||||
description:
|
||||
"get information from your knowledge base to answer questions.", // optional description
|
||||
}),
|
||||
},
|
||||
maxSteps: 5,
|
||||
});
|
||||
|
||||
for await (const textPart of result.textStream) {
|
||||
process.stdout.write(textPart);
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
+2
-2
@@ -2,8 +2,8 @@
|
||||
"name": "@llamaindex/monorepo",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "turbo run build --filter=\"./packages/*\"",
|
||||
"dev": "turbo run dev --filter=\"./packages/*\"",
|
||||
"build": "turbo run build --filter=\"./packages/*\" --filter=\"./packages/providers/*\"",
|
||||
"dev": "turbo run dev --filter=\"./packages/*\" --filter=\"./packages/providers/*\"",
|
||||
"format": "prettier --ignore-unknown --cache --check .",
|
||||
"format:write": "prettier --ignore-unknown --write .",
|
||||
"lint": "turbo run lint",
|
||||
|
||||
@@ -1,5 +1,47 @@
|
||||
# @llamaindex/autotool
|
||||
|
||||
## 5.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 5.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 5.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 5.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 5.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 5.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 5.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# @llamaindex/autotool-01-node-example
|
||||
|
||||
## 0.0.71
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
- @llamaindex/autotool@5.0.28
|
||||
|
||||
## 0.0.70
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
- @llamaindex/autotool@5.0.27
|
||||
|
||||
## 0.0.69
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/autotool@5.0.26
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.68
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/autotool@5.0.25
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.67
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
- @llamaindex/autotool@5.0.24
|
||||
|
||||
## 0.0.66
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
- @llamaindex/autotool@5.0.23
|
||||
|
||||
## 0.0.65
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"dependencies": {
|
||||
"@llamaindex/autotool": "workspace:*",
|
||||
"llamaindex": "workspace:*",
|
||||
"openai": "^4.72.0"
|
||||
"openai": "^4.73.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tsx": "^4.19.0"
|
||||
@@ -13,5 +13,5 @@
|
||||
"scripts": {
|
||||
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
||||
},
|
||||
"version": "0.0.65"
|
||||
"version": "0.0.71"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# @llamaindex/autotool-02-next-example
|
||||
|
||||
## 0.1.115
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
- @llamaindex/autotool@5.0.28
|
||||
|
||||
## 0.1.114
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
- @llamaindex/autotool@5.0.27
|
||||
|
||||
## 0.1.113
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/autotool@5.0.26
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.1.112
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/autotool@5.0.25
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.1.111
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
- @llamaindex/autotool@5.0.24
|
||||
|
||||
## 0.1.110
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
- @llamaindex/autotool@5.0.23
|
||||
|
||||
## 0.1.109
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool-02-next-example",
|
||||
"private": true,
|
||||
"version": "0.1.109",
|
||||
"version": "0.1.115",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool",
|
||||
"type": "module",
|
||||
"version": "5.0.22",
|
||||
"version": "5.0.28",
|
||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
## 2.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 2.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 2.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 2.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 2.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 2.0.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloud",
|
||||
"version": "2.0.14",
|
||||
"version": "2.0.19",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,47 @@
|
||||
# @llamaindex/community
|
||||
|
||||
## 0.0.77
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 24caf93: fix: added inference profile mapping for nova models"
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.76
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- c1850ee: feat: Amazon Nova support via Bedrock
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.75
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.74
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.73
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.72
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
## Current Features:
|
||||
|
||||
- Bedrock support for Amazon Nova models Pro, Lite and Micro
|
||||
- Bedrock support for the Anthropic Claude Models [usage](https://ts.llamaindex.ai/modules/llms/available_llms/bedrock) including the latest Sonnet 3.5 v2 and Haiku 3.5
|
||||
- Bedrock support for the Meta LLama 2, 3, 3.1 and 3.2 Models [usage](https://ts.llamaindex.ai/modules/llms/available_llms/bedrock)
|
||||
- Meta LLama3.1 405b and Llama3.2 tool call support
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/community",
|
||||
"description": "Community package for LlamaIndexTS",
|
||||
"version": "0.0.72",
|
||||
"version": "0.0.77",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
@@ -46,8 +46,8 @@
|
||||
"bunchee": "5.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-bedrock-agent-runtime": "^3.693.0",
|
||||
"@aws-sdk/client-bedrock-runtime": "^3.693.0",
|
||||
"@aws-sdk/client-bedrock-agent-runtime": "^3.706.0",
|
||||
"@aws-sdk/client-bedrock-runtime": "^3.706.0",
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"@llamaindex/env": "workspace:*"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
import type {
|
||||
ContentBlockDelta,
|
||||
ConverseOutput,
|
||||
ConverseRequest,
|
||||
ConverseResponse,
|
||||
ConverseStreamOutput,
|
||||
InvokeModelCommandInput,
|
||||
InvokeModelWithResponseStreamCommandInput,
|
||||
ResponseStream,
|
||||
} from "@aws-sdk/client-bedrock-runtime";
|
||||
import type {
|
||||
BaseTool,
|
||||
ChatMessage,
|
||||
LLMMetadata,
|
||||
ToolCall,
|
||||
ToolCallLLMMessageOptions,
|
||||
} from "@llamaindex/core/llms";
|
||||
import { toUtf8 } from "../utils";
|
||||
|
||||
import { Provider, type BedrockChatStreamResponse } from "../provider";
|
||||
import {
|
||||
mapBaseToolsToAmazonTools,
|
||||
mapChatMessagesToAmazonMessages,
|
||||
} from "./utils";
|
||||
|
||||
export class AmazonProvider extends Provider<ConverseStreamOutput> {
|
||||
getResultFromResponse(response: Record<string, any>): ConverseResponse {
|
||||
return JSON.parse(toUtf8(response.body));
|
||||
}
|
||||
|
||||
getToolsFromResponse<ToolContent>(response: ConverseOutput): ToolContent[] {
|
||||
return (
|
||||
response.message?.content
|
||||
?.filter((item) => item.toolUse)
|
||||
.map(
|
||||
(item) =>
|
||||
({
|
||||
id: item.toolUse!.toolUseId,
|
||||
name: item.toolUse!.name,
|
||||
input: item.toolUse!.input
|
||||
? JSON.parse(item.toolUse!.input as string)
|
||||
: "",
|
||||
}) as ToolContent,
|
||||
) ?? []
|
||||
);
|
||||
}
|
||||
|
||||
getTextFromResponse(response: ConverseResponse): string {
|
||||
const result = this.getResultFromResponse(response);
|
||||
const content = result.output?.message?.content ?? [];
|
||||
return content.map((item) => item.text).join(" ");
|
||||
}
|
||||
|
||||
getTextFromStreamResponse(response: ResponseStream): string {
|
||||
let event: ConverseStreamOutput | undefined =
|
||||
this.getStreamingEventResponse(response);
|
||||
if (!event || !event.contentBlockDelta) return "";
|
||||
const delta: ContentBlockDelta | undefined = event.contentBlockDelta.delta;
|
||||
return delta?.text || "";
|
||||
}
|
||||
|
||||
async *reduceStream(
|
||||
stream: AsyncIterable<ResponseStream>,
|
||||
): BedrockChatStreamResponse {
|
||||
let toolId: string | undefined = undefined;
|
||||
let toolName: string | undefined = undefined;
|
||||
for await (const response of stream) {
|
||||
const event = this.getStreamingEventResponse(response);
|
||||
const delta = this.getTextFromStreamResponse(response);
|
||||
|
||||
let options: undefined | ToolCallLLMMessageOptions = undefined;
|
||||
if (event?.contentBlockStart && event.contentBlockStart.start?.toolUse) {
|
||||
toolId = event.contentBlockStart.start?.toolUse.toolUseId;
|
||||
toolName = event.contentBlockStart.start?.toolUse.name;
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
toolId &&
|
||||
toolName &&
|
||||
event?.contentBlockDelta?.delta?.toolUse?.input
|
||||
) {
|
||||
options = {
|
||||
toolCall: [
|
||||
{
|
||||
id: toolId,
|
||||
name: toolName,
|
||||
input: JSON.parse(event?.contentBlockDelta?.delta?.toolUse.input),
|
||||
} as ToolCall,
|
||||
],
|
||||
};
|
||||
toolId = undefined;
|
||||
toolName = undefined;
|
||||
}
|
||||
|
||||
if (!delta && !options) continue;
|
||||
|
||||
yield {
|
||||
delta: options ? "" : delta,
|
||||
options,
|
||||
raw: response,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
getRequestBody<T extends ChatMessage>(
|
||||
metadata: LLMMetadata,
|
||||
messages: T[],
|
||||
tools: BaseTool[] = [],
|
||||
options: Omit<ConverseRequest, "modelId" | "messages" | "inferenceConfig">,
|
||||
): InvokeModelCommandInput | InvokeModelWithResponseStreamCommandInput {
|
||||
const request: Omit<ConverseRequest, "modelId"> = {
|
||||
...options,
|
||||
messages: mapChatMessagesToAmazonMessages(messages),
|
||||
inferenceConfig: {
|
||||
maxTokens: metadata.maxTokens,
|
||||
temperature: metadata.temperature,
|
||||
topP: metadata.topP,
|
||||
},
|
||||
};
|
||||
if (tools.length) {
|
||||
request.toolConfig = {
|
||||
tools: mapBaseToolsToAmazonTools(tools),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
modelId: metadata.model,
|
||||
contentType: "application/json",
|
||||
accept: "application/json",
|
||||
body: JSON.stringify(request),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import type { ConverseRequest, Message } from "@aws-sdk/client-bedrock-runtime";
|
||||
|
||||
export type AmazonMessages = ConverseRequest["messages"];
|
||||
|
||||
export type AmazonMessage = Message;
|
||||
@@ -0,0 +1,141 @@
|
||||
import type {
|
||||
ImageBlock,
|
||||
ImageFormat,
|
||||
Message,
|
||||
Tool,
|
||||
} from "@aws-sdk/client-bedrock-runtime";
|
||||
import type {
|
||||
BaseTool,
|
||||
ChatMessage,
|
||||
MessageContentDetail,
|
||||
ToolCallLLMMessageOptions,
|
||||
} from "@llamaindex/core/llms";
|
||||
import {
|
||||
extractDataUrlComponents,
|
||||
mapMessageContentToMessageContentDetails,
|
||||
} from "../utils";
|
||||
|
||||
import type { JSONObject } from "@llamaindex/core/global";
|
||||
import type { AmazonMessage, AmazonMessages } from "./types";
|
||||
|
||||
const ACCEPTED_IMAGE_MIME_TYPES = [
|
||||
"image/jpeg",
|
||||
"image/png",
|
||||
"image/webp",
|
||||
"image/gif",
|
||||
] as const;
|
||||
|
||||
const ACCEPTED_IMAGE_MIME_TYPE_FORMAT_MAP: Record<
|
||||
(typeof ACCEPTED_IMAGE_MIME_TYPES)[number],
|
||||
ImageFormat
|
||||
> = {
|
||||
"image/jpeg": "jpeg",
|
||||
"image/png": "png",
|
||||
"image/webp": "webp",
|
||||
"image/gif": "gif",
|
||||
};
|
||||
|
||||
export const mapImageContent = (imageUrl: string): ImageBlock => {
|
||||
if (!imageUrl.startsWith("data:"))
|
||||
throw new Error(
|
||||
"For Amazon please only use base64 data url, e.g.: data:image/jpeg;base64,SGVsbG8sIFdvcmxkIQ==",
|
||||
);
|
||||
const { mimeType, base64: data } = extractDataUrlComponents(imageUrl);
|
||||
if (
|
||||
!ACCEPTED_IMAGE_MIME_TYPES.includes(
|
||||
mimeType as keyof typeof ACCEPTED_IMAGE_MIME_TYPE_FORMAT_MAP,
|
||||
)
|
||||
)
|
||||
throw new Error(
|
||||
`Amazon only accepts the following mimeTypes: ${ACCEPTED_IMAGE_MIME_TYPES.join("\n")}`,
|
||||
);
|
||||
|
||||
return {
|
||||
format:
|
||||
ACCEPTED_IMAGE_MIME_TYPE_FORMAT_MAP[
|
||||
mimeType as keyof typeof ACCEPTED_IMAGE_MIME_TYPE_FORMAT_MAP
|
||||
],
|
||||
|
||||
// @ts-ignore: there's a mistake in the "@aws-sdk/client-bedrock-runtime" compared to the actual api
|
||||
source: { bytes: data },
|
||||
};
|
||||
};
|
||||
|
||||
export const mapMessageContentDetailToAmazonContent = <
|
||||
T extends MessageContentDetail,
|
||||
>(
|
||||
detail: T,
|
||||
): Message["content"] => {
|
||||
let content: Message["content"] = [];
|
||||
|
||||
if (detail.type === "text") {
|
||||
content = [{ text: detail.text }];
|
||||
} else if (detail.type === "image_url") {
|
||||
content = [{ image: mapImageContent(detail.image_url.url) }];
|
||||
} else {
|
||||
throw new Error("Unsupported content detail type");
|
||||
}
|
||||
return content;
|
||||
};
|
||||
|
||||
export const mapChatMessagesToAmazonMessages = <
|
||||
T extends ChatMessage<ToolCallLLMMessageOptions>,
|
||||
>(
|
||||
messages: T[],
|
||||
): AmazonMessages => {
|
||||
return messages.flatMap((msg: T): AmazonMessage[] => {
|
||||
return mapMessageContentToMessageContentDetails(msg.content).map(
|
||||
(detail: MessageContentDetail): AmazonMessage => {
|
||||
if (msg.options && "toolCall" in msg.options) {
|
||||
return {
|
||||
role: "assistant",
|
||||
content: msg.options.toolCall.map((call) => ({
|
||||
toolUse: {
|
||||
toolUseId: call.id,
|
||||
name: call.name,
|
||||
input: call.input as JSONObject,
|
||||
},
|
||||
})),
|
||||
};
|
||||
}
|
||||
if (msg.options && "toolResult" in msg.options) {
|
||||
return {
|
||||
role: "user",
|
||||
content: [
|
||||
{
|
||||
toolResult: {
|
||||
toolUseId: msg.options.toolResult.id,
|
||||
content: [
|
||||
{
|
||||
text: msg.options.toolResult.result,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
role: msg.role === "assistant" ? "assistant" : "user",
|
||||
content: mapMessageContentDetailToAmazonContent(detail),
|
||||
};
|
||||
},
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
export const mapBaseToolsToAmazonTools = (tools?: BaseTool[]): Tool[] => {
|
||||
if (!tools) return [];
|
||||
return tools.map((tool: BaseTool) => {
|
||||
const {
|
||||
metadata: { parameters, ...options },
|
||||
} = tool;
|
||||
return {
|
||||
toolSpec: {
|
||||
...options,
|
||||
inputSchema: parameters,
|
||||
},
|
||||
} as Tool;
|
||||
});
|
||||
};
|
||||
@@ -11,13 +11,10 @@ import type {
|
||||
ToolCall,
|
||||
ToolCallLLMMessageOptions,
|
||||
} from "@llamaindex/core/llms";
|
||||
import {
|
||||
type BedrockAdditionalChatOptions,
|
||||
type BedrockChatStreamResponse,
|
||||
Provider,
|
||||
} from "../provider";
|
||||
import { type BedrockChatStreamResponse, Provider } from "../provider";
|
||||
import { toUtf8 } from "../utils";
|
||||
import type {
|
||||
AnthropicAdditionalChatOptions,
|
||||
AnthropicNoneStreamingResponse,
|
||||
AnthropicStreamEvent,
|
||||
AnthropicTextContent,
|
||||
@@ -134,7 +131,7 @@ export class AnthropicProvider extends Provider<AnthropicStreamEvent> {
|
||||
metadata: LLMMetadata,
|
||||
messages: T[],
|
||||
tools?: BaseTool[],
|
||||
options?: BedrockAdditionalChatOptions,
|
||||
options?: AnthropicAdditionalChatOptions,
|
||||
): InvokeModelCommandInput | InvokeModelWithResponseStreamCommandInput {
|
||||
const extra: Record<string, unknown> = {};
|
||||
if (options?.toolChoice) {
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import type { ToolMetadata } from "@llamaindex/core/llms";
|
||||
import type { InvocationMetrics } from "../types";
|
||||
|
||||
export type ToolChoice =
|
||||
| { type: "any" }
|
||||
| { type: "auto" }
|
||||
| { type: "tool"; name: string };
|
||||
|
||||
export type AnthropicAdditionalChatOptions = { toolChoice: ToolChoice };
|
||||
|
||||
type Usage = {
|
||||
input_tokens: number;
|
||||
output_tokens: number;
|
||||
|
||||
@@ -25,6 +25,7 @@ import {
|
||||
import { mapMessageContentToMessageContentDetails } from "./utils";
|
||||
|
||||
import { wrapLLMEvent } from "@llamaindex/core/decorator";
|
||||
import { AmazonProvider } from "./amazon/provider";
|
||||
import { AnthropicProvider } from "./anthropic/provider";
|
||||
import { MetaProvider } from "./meta/provider";
|
||||
|
||||
@@ -32,6 +33,7 @@ import { MetaProvider } from "./meta/provider";
|
||||
export const PROVIDERS: { [key: string]: Provider } = {
|
||||
anthropic: new AnthropicProvider(),
|
||||
meta: new MetaProvider(),
|
||||
amazon: new AmazonProvider(),
|
||||
};
|
||||
|
||||
export type BedrockChatParamsStreaming = LLMChatParamsStreaming<
|
||||
@@ -81,7 +83,11 @@ export const BEDROCK_MODELS = {
|
||||
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_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",
|
||||
};
|
||||
|
||||
export type BEDROCK_MODELS =
|
||||
(typeof BEDROCK_MODELS)[keyof typeof BEDROCK_MODELS];
|
||||
|
||||
@@ -98,6 +104,9 @@ export const INFERENCE_BEDROCK_MODELS = {
|
||||
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-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_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",
|
||||
@@ -136,6 +145,13 @@ export const INFERENCE_TO_BEDROCK_MAP: Record<
|
||||
[INFERENCE_BEDROCK_MODELS.US_META_LLAMA_3_2_90B_INSTRUCT]:
|
||||
BEDROCK_MODELS.META_LLAMA3_2_90B_INSTRUCT,
|
||||
|
||||
[INFERENCE_BEDROCK_MODELS.US_AMAZON_NOVA_PRO_1]:
|
||||
BEDROCK_MODELS.AMAZON_NOVA_PRO_1,
|
||||
[INFERENCE_BEDROCK_MODELS.US_AMAZON_NOVA_LITE_1]:
|
||||
BEDROCK_MODELS.AMAZON_NOVA_LITE_1,
|
||||
[INFERENCE_BEDROCK_MODELS.US_AMAZON_NOVA_MICRO_1]:
|
||||
BEDROCK_MODELS.AMAZON_NOVA_MICRO_1,
|
||||
|
||||
[INFERENCE_BEDROCK_MODELS.EU_ANTHROPIC_CLAUDE_3_HAIKU]:
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_HAIKU,
|
||||
[INFERENCE_BEDROCK_MODELS.EU_ANTHROPIC_CLAUDE_3_SONNET]:
|
||||
@@ -189,6 +205,9 @@ const CHAT_ONLY_MODELS = {
|
||||
[BEDROCK_MODELS.MISTRAL_7B_INSTRUCT]: 32000,
|
||||
[BEDROCK_MODELS.MISTRAL_MIXTRAL_7B_INSTRUCT]: 32000,
|
||||
[BEDROCK_MODELS.MISTRAL_MIXTRAL_LARGE_2402]: 32000,
|
||||
[BEDROCK_MODELS.AMAZON_NOVA_PRO_1]: 300000,
|
||||
[BEDROCK_MODELS.AMAZON_NOVA_LITE_1]: 300000,
|
||||
[BEDROCK_MODELS.AMAZON_NOVA_MICRO_1]: 130000,
|
||||
};
|
||||
|
||||
const BEDROCK_FOUNDATION_LLMS = { ...COMPLETION_MODELS, ...CHAT_ONLY_MODELS };
|
||||
@@ -225,6 +244,9 @@ export const STREAMING_MODELS = new Set([
|
||||
BEDROCK_MODELS.MISTRAL_7B_INSTRUCT,
|
||||
BEDROCK_MODELS.MISTRAL_MIXTRAL_7B_INSTRUCT,
|
||||
BEDROCK_MODELS.MISTRAL_MIXTRAL_LARGE_2402,
|
||||
BEDROCK_MODELS.AMAZON_NOVA_PRO_1,
|
||||
BEDROCK_MODELS.AMAZON_NOVA_LITE_1,
|
||||
BEDROCK_MODELS.AMAZON_NOVA_MICRO_1,
|
||||
]);
|
||||
|
||||
export const TOOL_CALL_MODELS: BEDROCK_MODELS[] = [
|
||||
@@ -239,6 +261,9 @@ export const TOOL_CALL_MODELS: BEDROCK_MODELS[] = [
|
||||
BEDROCK_MODELS.META_LLAMA3_2_3B_INSTRUCT,
|
||||
BEDROCK_MODELS.META_LLAMA3_2_11B_INSTRUCT,
|
||||
BEDROCK_MODELS.META_LLAMA3_2_90B_INSTRUCT,
|
||||
BEDROCK_MODELS.AMAZON_NOVA_PRO_1,
|
||||
BEDROCK_MODELS.AMAZON_NOVA_LITE_1,
|
||||
BEDROCK_MODELS.AMAZON_NOVA_MICRO_1,
|
||||
];
|
||||
|
||||
const getProvider = (model: string): Provider => {
|
||||
@@ -320,10 +345,6 @@ export class Bedrock extends ToolCallLLM<BedrockAdditionalChatOptions> {
|
||||
this.temperature = temperature ?? DEFAULT_BEDROCK_PARAMS.temperature;
|
||||
this.topP = topP ?? DEFAULT_BEDROCK_PARAMS.topP;
|
||||
this.client = new BedrockRuntimeClient(params);
|
||||
|
||||
if (!this.supportToolCall) {
|
||||
console.warn(`The model "${this.model}" doesn't support ToolCall`);
|
||||
}
|
||||
}
|
||||
|
||||
get supportToolCall(): boolean {
|
||||
@@ -345,6 +366,9 @@ export class Bedrock extends ToolCallLLM<BedrockAdditionalChatOptions> {
|
||||
protected async nonStreamChat(
|
||||
params: BedrockChatParamsNonStreaming,
|
||||
): Promise<BedrockChatNonStreamResponse> {
|
||||
if (!this.supportToolCall && params.tools?.length) {
|
||||
console.warn(`The model "${this.model}" doesn't support ToolCall`);
|
||||
}
|
||||
const input = this.provider.getRequestBody(
|
||||
this.metadata,
|
||||
params.messages,
|
||||
@@ -378,6 +402,10 @@ export class Bedrock extends ToolCallLLM<BedrockAdditionalChatOptions> {
|
||||
if (!STREAMING_MODELS.has(this.model))
|
||||
throw new Error(`The model: ${this.model} does not support streaming`);
|
||||
|
||||
if (!this.supportToolCall && params.tools?.length) {
|
||||
console.warn(`The model "${this.model}" doesn't support ToolCall`);
|
||||
}
|
||||
|
||||
const input = this.provider.getRequestBody(
|
||||
this.metadata,
|
||||
params.messages,
|
||||
@@ -388,7 +416,6 @@ export class Bedrock extends ToolCallLLM<BedrockAdditionalChatOptions> {
|
||||
command.input.modelId = this.actualModel;
|
||||
|
||||
const response = await this.client.send(command);
|
||||
|
||||
if (response.body) yield* this.provider.reduceStream(response.body);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,10 +11,9 @@ import {
|
||||
type ToolCallLLMMessageOptions,
|
||||
} from "@llamaindex/core/llms";
|
||||
import { streamConverter } from "@llamaindex/core/utils";
|
||||
import type { ToolChoice } from "./types";
|
||||
import { toUtf8 } from "./utils";
|
||||
|
||||
export type BedrockAdditionalChatOptions = { toolChoice: ToolChoice };
|
||||
export type BedrockAdditionalChatOptions = Record<string, unknown>;
|
||||
|
||||
export type BedrockChatStreamResponse = AsyncIterable<
|
||||
ChatResponseChunk<ToolCallLLMMessageOptions>
|
||||
|
||||
@@ -4,8 +4,3 @@ export type InvocationMetrics = {
|
||||
invocationLatency: number;
|
||||
firstByteLatency: number;
|
||||
};
|
||||
|
||||
export type ToolChoice =
|
||||
| { type: "any" }
|
||||
| { type: "auto" }
|
||||
| { type: "tool"; name: string };
|
||||
|
||||
@@ -1,5 +1,40 @@
|
||||
# @llamaindex/core
|
||||
|
||||
## 0.4.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a9b5b99: feat: build api reference pages for new documentation site
|
||||
|
||||
## 0.4.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- e0f6cc3: The compact and refine response synthesizer (retrieved by using `getResponseSynthesizer('compact')`) has been fixed to return the original source nodes that were provided to it in its response. Previous to this it was returning the compacted text chunk documents.
|
||||
- Updated dependencies [b504303]
|
||||
- @llamaindex/env@0.1.25
|
||||
|
||||
## 0.4.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
|
||||
## 0.4.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.4.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
|
||||
## 0.4.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/core",
|
||||
"type": "module",
|
||||
"version": "0.4.14",
|
||||
"version": "0.4.19",
|
||||
"description": "LlamaIndex Core Module",
|
||||
"exports": {
|
||||
"./agent": {
|
||||
|
||||
@@ -369,7 +369,9 @@ export abstract class AgentRunner<
|
||||
verbose: boolean | undefined = undefined,
|
||||
chatHistory?: ChatMessage<AdditionalMessageOptions>[],
|
||||
additionalChatOptions?: AdditionalChatOptions,
|
||||
) {
|
||||
): ReadableStream<
|
||||
TaskStepOutput<AI, Store, AdditionalMessageOptions, AdditionalChatOptions>
|
||||
> {
|
||||
const initialMessages = [...(chatHistory ?? this.#chatHistory)];
|
||||
if (this.#systemPrompt !== null) {
|
||||
const systemPrompt = this.#systemPrompt;
|
||||
@@ -453,14 +455,9 @@ export abstract class AgentRunner<
|
||||
const { output } = stepOutput;
|
||||
if (output instanceof ReadableStream) {
|
||||
return output.pipeThrough(
|
||||
new TransformStream<EngineResponse>({
|
||||
new TransformStream({
|
||||
transform(chunk, controller) {
|
||||
controller.enqueue(
|
||||
EngineResponse.fromChatResponseChunk(
|
||||
chunk,
|
||||
chunk.sourceNodes,
|
||||
),
|
||||
);
|
||||
controller.enqueue(EngineResponse.fromChatResponseChunk(chunk));
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -22,7 +22,8 @@ import type { ContextGenerator } from "./type";
|
||||
|
||||
/**
|
||||
* ContextChatEngine uses the Index to get the appropriate context for each query.
|
||||
* The context is stored in the system prompt, and the chat history is chunk: ChatResponseChunk, nodes?: NodeWithScore<import("/Users/marcus/code/llamaindex/LlamaIndexTS/packages/core/src/Node").Metadata>[], nodes?: NodeWithScore<import("/Users/marcus/code/llamaindex/LlamaIndexTS/packages/core/src/Node").Metadata>[]lowing the appropriate context to be surfaced for each query.
|
||||
* The context is stored in the system prompt, and the chat history is chunk,
|
||||
* allowing the appropriate context to be surfaced for each query.
|
||||
*/
|
||||
export class ContextChatEngine extends PromptMixin implements BaseChatEngine {
|
||||
chatModel: LLM;
|
||||
|
||||
@@ -77,6 +77,16 @@ class Refine extends BaseSynthesizer {
|
||||
}
|
||||
}
|
||||
|
||||
async getResponse(
|
||||
query: MessageContent,
|
||||
nodes: NodeWithScore[],
|
||||
stream: true,
|
||||
): Promise<AsyncIterable<EngineResponse>>;
|
||||
async getResponse(
|
||||
query: MessageContent,
|
||||
nodes: NodeWithScore[],
|
||||
stream: false,
|
||||
): Promise<EngineResponse>;
|
||||
async getResponse(
|
||||
query: MessageContent,
|
||||
nodes: NodeWithScore[],
|
||||
@@ -197,6 +207,16 @@ class Refine extends BaseSynthesizer {
|
||||
* CompactAndRefine is a slight variation of Refine that first compacts the text chunks into the smallest possible number of chunks.
|
||||
*/
|
||||
class CompactAndRefine extends Refine {
|
||||
async getResponse(
|
||||
query: MessageContent,
|
||||
nodes: NodeWithScore[],
|
||||
stream: true,
|
||||
): Promise<AsyncIterable<EngineResponse>>;
|
||||
async getResponse(
|
||||
query: MessageContent,
|
||||
nodes: NodeWithScore[],
|
||||
stream: false,
|
||||
): Promise<EngineResponse>;
|
||||
async getResponse(
|
||||
query: MessageContent,
|
||||
nodes: NodeWithScore[],
|
||||
@@ -216,17 +236,24 @@ class CompactAndRefine extends Refine {
|
||||
const newTexts = this.promptHelper.repack(maxPrompt, textChunks);
|
||||
const newNodes = newTexts.map((text) => new TextNode({ text }));
|
||||
if (stream) {
|
||||
return super.getResponse(
|
||||
const streamResponse = await super.getResponse(
|
||||
query,
|
||||
newNodes.map((node) => ({ node })),
|
||||
true,
|
||||
);
|
||||
return streamConverter(streamResponse, (chunk) => {
|
||||
chunk.sourceNodes = nodes;
|
||||
return chunk;
|
||||
});
|
||||
}
|
||||
return super.getResponse(
|
||||
|
||||
const originalResponse = await super.getResponse(
|
||||
query,
|
||||
newNodes.map((node) => ({ node })),
|
||||
false,
|
||||
);
|
||||
originalResponse.sourceNodes = nodes;
|
||||
return originalResponse;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
import type { LLMMetadata } from "../../llms/dist/index.js";
|
||||
import { getResponseSynthesizer } from "../../response-synthesizers/dist/index.js";
|
||||
import { Document } from "../../schema/dist/index.js";
|
||||
|
||||
const mockLllm = () => ({
|
||||
complete: vi.fn().mockImplementation(({ stream }) => {
|
||||
const response = { text: "unimportant" };
|
||||
if (!stream) {
|
||||
return response;
|
||||
}
|
||||
|
||||
function* gen() {
|
||||
// yield a few times to make sure each chunk has the sourceNodes
|
||||
yield response;
|
||||
yield response;
|
||||
yield response;
|
||||
}
|
||||
|
||||
return gen();
|
||||
}),
|
||||
chat: vi.fn(),
|
||||
metadata: {} as unknown as LLMMetadata,
|
||||
});
|
||||
|
||||
describe("compact and refine response synthesizer", () => {
|
||||
describe("synthesize", () => {
|
||||
test("should return original sourceNodes with response when stream = false", async () => {
|
||||
const synthesizer = getResponseSynthesizer("compact", {
|
||||
llm: mockLllm(),
|
||||
});
|
||||
|
||||
const sourceNode = { node: new Document({}), score: 1 };
|
||||
|
||||
const response = await synthesizer.synthesize(
|
||||
{
|
||||
query: "test",
|
||||
nodes: [sourceNode],
|
||||
},
|
||||
false,
|
||||
);
|
||||
|
||||
expect(response.sourceNodes).toEqual([sourceNode]);
|
||||
});
|
||||
|
||||
test("should return original sourceNodes with response when stream = true", async () => {
|
||||
const synthesizer = getResponseSynthesizer("compact", {
|
||||
llm: mockLllm(),
|
||||
});
|
||||
|
||||
const sourceNode = { node: new Document({}), score: 1 };
|
||||
|
||||
const response = await synthesizer.synthesize(
|
||||
{
|
||||
query: "test",
|
||||
nodes: [sourceNode],
|
||||
},
|
||||
true,
|
||||
);
|
||||
|
||||
for await (const chunk of response) {
|
||||
expect(chunk.sourceNodes).toEqual([sourceNode]);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
Vendored
+18
@@ -1,5 +1,23 @@
|
||||
# @llamaindex/env
|
||||
|
||||
## 0.1.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- b504303: Allow Node 18 again (throw run-time error if not possible) to make Stackblitz work
|
||||
|
||||
## 0.1.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
|
||||
## 0.1.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- d2b2722: fix: switch tokenizer in cloudflare
|
||||
|
||||
## 0.1.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/env",
|
||||
"description": "environment wrapper, supports all JS environment including node, deno, bun, edge runtime, and cloudflare worker",
|
||||
"version": "0.1.22",
|
||||
"version": "0.1.25",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"module": "dist/index.js",
|
||||
|
||||
@@ -7,6 +7,13 @@ export {
|
||||
} from "./shared.js";
|
||||
|
||||
export async function loadTransformers(onLoad: OnLoad) {
|
||||
const nodeVersions = process.versions.node.split(".");
|
||||
if (nodeVersions[0] && parseInt(nodeVersions[0], 10) < 20) {
|
||||
throw new Error(
|
||||
"@huggingface/transformers is not supported on Node.js versions below 20",
|
||||
);
|
||||
}
|
||||
|
||||
if (getTransformers() === null) {
|
||||
setTransformers(await import("@huggingface/transformers"));
|
||||
} else {
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ export {
|
||||
Tokenizers,
|
||||
tokenizers,
|
||||
type Tokenizer,
|
||||
} from "./internal/tokenizers/js.js";
|
||||
} from "./internal/tokenizers/node.js";
|
||||
|
||||
@@ -1,5 +1,46 @@
|
||||
# @llamaindex/experimental
|
||||
|
||||
## 0.0.140
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.28
|
||||
|
||||
## 0.0.139
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [a0e6f57]
|
||||
- llamaindex@0.8.27
|
||||
|
||||
## 0.0.138
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.136
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.135
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/experimental",
|
||||
"description": "Experimental package for LlamaIndexTS",
|
||||
"version": "0.0.134",
|
||||
"version": "0.0.140",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
|
||||
@@ -1,5 +1,119 @@
|
||||
# llamaindex
|
||||
|
||||
## 0.8.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
- @llamaindex/readers@1.0.21
|
||||
- @llamaindex/cloud@2.0.19
|
||||
- @llamaindex/node-parser@0.0.20
|
||||
- @llamaindex/anthropic@0.0.28
|
||||
- @llamaindex/clip@0.0.28
|
||||
- @llamaindex/deepinfra@0.0.28
|
||||
- @llamaindex/huggingface@0.0.28
|
||||
- @llamaindex/ollama@0.0.35
|
||||
- @llamaindex/openai@0.1.44
|
||||
- @llamaindex/portkey-ai@0.0.28
|
||||
- @llamaindex/replicate@0.0.28
|
||||
- @llamaindex/groq@0.0.43
|
||||
- @llamaindex/vllm@0.0.14
|
||||
|
||||
## 0.8.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- b504303: Allow Node 18 again (throw run-time error if not possible) to make Stackblitz work
|
||||
- a0e6f57: withLlamaIndex now passes through webpack options to the passed in customized NextJS webpack config. Before it was only passing through the config.
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
- @llamaindex/cloud@2.0.18
|
||||
- @llamaindex/node-parser@0.0.19
|
||||
- @llamaindex/anthropic@0.0.27
|
||||
- @llamaindex/clip@0.0.27
|
||||
- @llamaindex/deepinfra@0.0.27
|
||||
- @llamaindex/groq@0.0.42
|
||||
- @llamaindex/huggingface@0.0.27
|
||||
- @llamaindex/ollama@0.0.34
|
||||
- @llamaindex/openai@0.1.43
|
||||
- @llamaindex/portkey-ai@0.0.27
|
||||
- @llamaindex/replicate@0.0.27
|
||||
- @llamaindex/readers@1.0.20
|
||||
- @llamaindex/vllm@0.0.13
|
||||
|
||||
## 0.8.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
- @llamaindex/cloud@2.0.17
|
||||
- @llamaindex/node-parser@0.0.18
|
||||
- @llamaindex/anthropic@0.0.26
|
||||
- @llamaindex/clip@0.0.26
|
||||
- @llamaindex/deepinfra@0.0.26
|
||||
- @llamaindex/huggingface@0.0.26
|
||||
- @llamaindex/ollama@0.0.33
|
||||
- @llamaindex/portkey-ai@0.0.26
|
||||
- @llamaindex/replicate@0.0.26
|
||||
- @llamaindex/readers@1.0.19
|
||||
- @llamaindex/groq@0.0.41
|
||||
- @llamaindex/vllm@0.0.12
|
||||
|
||||
## 0.8.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7e8230b]
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/readers@1.0.18
|
||||
- @llamaindex/cloud@2.0.16
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/node-parser@0.0.17
|
||||
- @llamaindex/anthropic@0.0.25
|
||||
- @llamaindex/clip@0.0.25
|
||||
- @llamaindex/deepinfra@0.0.25
|
||||
- @llamaindex/groq@0.0.40
|
||||
- @llamaindex/huggingface@0.0.25
|
||||
- @llamaindex/ollama@0.0.32
|
||||
- @llamaindex/openai@0.1.41
|
||||
- @llamaindex/portkey-ai@0.0.25
|
||||
- @llamaindex/replicate@0.0.25
|
||||
- @llamaindex/vllm@0.0.11
|
||||
|
||||
## 0.8.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 515f2c1: Add vector store for CosmosDB
|
||||
|
||||
## 0.8.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/cloud@2.0.15
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/node-parser@0.0.16
|
||||
- @llamaindex/anthropic@0.0.24
|
||||
- @llamaindex/clip@0.0.24
|
||||
- @llamaindex/deepinfra@0.0.24
|
||||
- @llamaindex/groq@0.0.39
|
||||
- @llamaindex/huggingface@0.0.24
|
||||
- @llamaindex/ollama@0.0.31
|
||||
- @llamaindex/openai@0.1.40
|
||||
- @llamaindex/portkey-ai@0.0.24
|
||||
- @llamaindex/replicate@0.0.24
|
||||
- @llamaindex/readers@1.0.17
|
||||
- @llamaindex/vllm@0.0.10
|
||||
|
||||
## 0.8.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "llamaindex",
|
||||
"version": "0.8.22",
|
||||
"version": "0.8.28",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"keywords": [
|
||||
@@ -65,7 +65,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"magic-bytes.js": "^1.10.0",
|
||||
"mongodb": "^6.7.0",
|
||||
"openai": "^4.72.0",
|
||||
"openai": "^4.73.1",
|
||||
"pathe": "^1.1.2",
|
||||
"rake-modified": "^1.0.8",
|
||||
"weaviate-client": "^3.2.3",
|
||||
@@ -86,7 +86,6 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"@huggingface/transformers": "^3.0.2",
|
||||
"@swc/cli": "^0.5.0",
|
||||
"@swc/core": "^1.9.2",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
@@ -98,7 +97,7 @@
|
||||
"typescript": "^5.6.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
"node": ">=18.0.0"
|
||||
},
|
||||
"types": "./dist/type/index.d.ts",
|
||||
"main": "./dist/cjs/index.js",
|
||||
|
||||
@@ -41,7 +41,7 @@ export default function withLlamaIndex(config: any) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
config.webpack = function (webpackConfig: any, options: any) {
|
||||
if (userWebpack) {
|
||||
webpackConfig = userWebpack(webpackConfig);
|
||||
webpackConfig = userWebpack(webpackConfig, options);
|
||||
}
|
||||
webpackConfig.resolve.alias = {
|
||||
...webpackConfig.resolve.alias,
|
||||
|
||||
@@ -15,5 +15,6 @@ export * from "@llamaindex/readers/json";
|
||||
export * from "@llamaindex/readers/markdown";
|
||||
export * from "@llamaindex/readers/mongo";
|
||||
export * from "@llamaindex/readers/notion";
|
||||
export * from "@llamaindex/readers/obsidian";
|
||||
export * from "@llamaindex/readers/pdf";
|
||||
export * from "@llamaindex/readers/text";
|
||||
|
||||
@@ -0,0 +1,328 @@
|
||||
import type { BaseNode } from "@llamaindex/core/schema";
|
||||
import { MetadataMode } from "@llamaindex/core/schema";
|
||||
import { getEnv } from "@llamaindex/env";
|
||||
import { Collection, Db, MongoClient } from "mongodb";
|
||||
import {
|
||||
BaseVectorStore,
|
||||
type VectorStoreBaseParams,
|
||||
type VectorStoreQuery,
|
||||
type VectorStoreQueryResult,
|
||||
} from "./types.js";
|
||||
import { metadataDictToNode, nodeToMetadata } from "./utils.js";
|
||||
|
||||
/** Azure Cosmos DB for MongoDB vCore Similarity type. */
|
||||
export const AzureCosmosDBMongoDBSimilarityType = {
|
||||
/** Cosine similarity */
|
||||
COS: "COS",
|
||||
/** Inner - product */
|
||||
IP: "IP",
|
||||
/** Euclidian distance */
|
||||
L2: "L2",
|
||||
} as const;
|
||||
|
||||
/** Azure Cosmos DB for MongoDB vCore Similarity type. */
|
||||
export type AzureCosmosDBMongoDBSimilarityType =
|
||||
(typeof AzureCosmosDBMongoDBSimilarityType)[keyof typeof AzureCosmosDBMongoDBSimilarityType];
|
||||
|
||||
/** Azure Cosmos DB for MongoDB vCore Index Options. */
|
||||
export type AzureCosmosDBMongoDBIndexOptions = {
|
||||
readonly indexType?: "ivf" | "hnsw" | "diskann" | undefined;
|
||||
/** Number of clusters that the inverted file (IVF) index uses to group the vector data. */
|
||||
readonly numLists?: number | undefined;
|
||||
/** Number of dimensions for vector similarity. */
|
||||
readonly dimensions?: number | undefined;
|
||||
/** Similarity metric to use with the IVF index. */
|
||||
readonly similarity?: AzureCosmosDBMongoDBSimilarityType | undefined;
|
||||
/** The max number of connections per layer with the HNSW index. */
|
||||
readonly m?: number | undefined;
|
||||
/** The size of the dynamic candidate list for constructing the graph with the HNSW index. */
|
||||
readonly efConstruction?: number | undefined;
|
||||
/** Max number of neighbors withe the Diskann idnex */
|
||||
readonly maxDegree?: number | undefined;
|
||||
/** L value for index building withe the Diskann idnex */
|
||||
readonly lBuild?: number | undefined;
|
||||
/** L value for index searching withe the Diskann idnex */
|
||||
readonly lSearch?: number | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Azure Cosmos DB for MongoDB vCore vector store.
|
||||
* To use this, you should have both:
|
||||
* - the `mongodb` NPM package installed
|
||||
* - a connection string associated with a MongoDB VCore Cluster
|
||||
*
|
||||
* You do not need to create a database or collection, it will be created
|
||||
* automatically.
|
||||
*
|
||||
* You also need an index on the collection, which is by default be created
|
||||
* automatically using the `createIndex` method.
|
||||
*/
|
||||
export class AzureCosmosDBMongoDBVectorStore extends BaseVectorStore {
|
||||
storesText: boolean = true;
|
||||
flatMetadata: boolean = true;
|
||||
|
||||
dbName: string;
|
||||
|
||||
collectionName: string;
|
||||
|
||||
indexedMetadataFields: string[];
|
||||
|
||||
/**
|
||||
* The used MongoClient. If not given, a new MongoClient is created based on the MONGODB_URI env variable.
|
||||
*/
|
||||
mongodbClient: MongoClient;
|
||||
|
||||
indexName: string;
|
||||
|
||||
embeddingKey: string;
|
||||
|
||||
idKey: string;
|
||||
|
||||
textKey: string;
|
||||
|
||||
metadataKey: string;
|
||||
|
||||
indexOptions: AzureCosmosDBMongoDBIndexOptions;
|
||||
|
||||
private collection?: Collection;
|
||||
|
||||
private database: Db;
|
||||
|
||||
constructor(
|
||||
init: Partial<AzureCosmosDBMongoDBVectorStore> & {
|
||||
dbName: string;
|
||||
collectionName: string;
|
||||
indexedMetadataFields?: string[];
|
||||
} & VectorStoreBaseParams,
|
||||
) {
|
||||
super(init);
|
||||
if (init.mongodbClient) {
|
||||
this.mongodbClient = init.mongodbClient;
|
||||
} else {
|
||||
const mongoUri = getEnv("AZURE_COSMOSDB_MONGODB_CONNECTION_STRING");
|
||||
if (!mongoUri) {
|
||||
throw new Error(
|
||||
"AzureCosmosDBMongoDBVectorStore client or connection string must be set.",
|
||||
);
|
||||
}
|
||||
this.mongodbClient = new MongoClient(mongoUri);
|
||||
}
|
||||
|
||||
this.dbName = init.dbName ?? "documentsDB";
|
||||
this.collectionName = init.collectionName ?? "documents";
|
||||
this.indexedMetadataFields = init.indexedMetadataFields ?? [];
|
||||
this.indexName = init.indexName ?? "vectorSearchIndex";
|
||||
this.embeddingKey = init.embeddingKey ?? "vectorContent";
|
||||
this.idKey = init.idKey ?? "id";
|
||||
this.textKey = init.textKey ?? "text";
|
||||
this.metadataKey = init.metadataKey ?? "metadata";
|
||||
this.indexOptions = init.indexOptions ?? {};
|
||||
this.database = this.mongodbClient.db(this.dbName);
|
||||
}
|
||||
|
||||
client() {
|
||||
return this.mongodbClient;
|
||||
}
|
||||
|
||||
async ensureCollection() {
|
||||
if (!this.collection) {
|
||||
const collection = await this.mongodbClient
|
||||
.db(this.dbName)
|
||||
.createCollection(this.collectionName);
|
||||
|
||||
this.collection = collection;
|
||||
}
|
||||
|
||||
return this.collection;
|
||||
}
|
||||
|
||||
async add(nodes: BaseNode[]): Promise<string[]> {
|
||||
if (!nodes || nodes.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const dataToInsert = nodes.map((node) => {
|
||||
const metadata = nodeToMetadata(
|
||||
node,
|
||||
true,
|
||||
this.textKey,
|
||||
this.flatMetadata,
|
||||
);
|
||||
|
||||
// Include the specified metadata fields in the top level of the document (to help filter)
|
||||
const populatedMetadata: Record<string, unknown> = {};
|
||||
for (const field of this.indexedMetadataFields) {
|
||||
populatedMetadata[field] = metadata[field];
|
||||
}
|
||||
|
||||
return {
|
||||
[this.idKey]: node.id_,
|
||||
[this.embeddingKey]: node.getEmbedding(),
|
||||
[this.textKey]: node.getContent(MetadataMode.NONE) || "",
|
||||
[this.metadataKey]: metadata,
|
||||
...populatedMetadata,
|
||||
};
|
||||
});
|
||||
|
||||
const collection = await this.ensureCollection();
|
||||
const insertResult = await collection.insertMany(dataToInsert);
|
||||
return Object.values(insertResult.insertedIds).map((id) => String(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes specified documents from the AzureCosmosDBMongoDBVectorStore.
|
||||
* @param params Parameters for the delete operation.
|
||||
* @returns A promise that resolves when the documents have been removed.
|
||||
*/
|
||||
async delete(id: string, deleteOptions?: object): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
await collection.deleteMany(
|
||||
{
|
||||
id: id,
|
||||
},
|
||||
deleteOptions,
|
||||
);
|
||||
}
|
||||
|
||||
async query(
|
||||
query: VectorStoreQuery,
|
||||
options?: object,
|
||||
): Promise<VectorStoreQueryResult> {
|
||||
const pipeline = [
|
||||
{
|
||||
$search: {
|
||||
cosmosSearch: {
|
||||
vector: query.queryEmbedding,
|
||||
path: this.embeddingKey,
|
||||
k: query.similarityTopK ?? 4,
|
||||
},
|
||||
returnStoredSource: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const collection = await this.ensureCollection();
|
||||
const cursor = await collection.aggregate(pipeline);
|
||||
|
||||
const nodes: BaseNode[] = [];
|
||||
const ids: string[] = [];
|
||||
const similarities: number[] = [];
|
||||
|
||||
for await (const res of await cursor) {
|
||||
const text = res[this.textKey];
|
||||
const score = res.score;
|
||||
const id = res[this.idKey];
|
||||
const metadata = res[this.metadataKey];
|
||||
|
||||
const node = metadataDictToNode(metadata);
|
||||
node.setContent(text);
|
||||
|
||||
ids.push(id);
|
||||
nodes.push(node);
|
||||
similarities.push(score);
|
||||
}
|
||||
|
||||
const result = {
|
||||
nodes,
|
||||
similarities,
|
||||
ids,
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an index on the collection with the specified index name during
|
||||
* instance construction.
|
||||
*
|
||||
* Setting the numLists parameter correctly is important for achieving good
|
||||
* accuracy and performance.
|
||||
* Since the vector store uses IVF as the indexing strategy, you should
|
||||
* create the index only after you have loaded a large enough sample
|
||||
* documents to ensure that the centroids for the respective buckets are
|
||||
* faily distributed.
|
||||
*
|
||||
* @param indexType Index Type for Mongo vCore index.
|
||||
* @param dimensions Number of dimensions for vector similarity.
|
||||
* The maximum number of supported dimensions is 2000.
|
||||
* If no number is provided, it will be determined automatically by
|
||||
* embedding a short text.
|
||||
* @param similarity Similarity metric to use with the IVF index.
|
||||
* Possible options are:
|
||||
* - CosmosDBSimilarityType.COS (cosine distance)
|
||||
* - CosmosDBSimilarityType.L2 (Euclidean distance)
|
||||
* - CosmosDBSimilarityType.IP (inner product)
|
||||
* @returns A promise that resolves when the index has been created.
|
||||
*/
|
||||
async createIndex(
|
||||
dimensions: number | undefined = undefined,
|
||||
indexType: "ivf" | "hnsw" | "diskann" = "ivf",
|
||||
similarity: AzureCosmosDBMongoDBSimilarityType = AzureCosmosDBMongoDBSimilarityType.COS,
|
||||
): Promise<void> {
|
||||
let vectorLength = dimensions;
|
||||
|
||||
if (vectorLength === undefined) {
|
||||
vectorLength = 1536;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const cosmosSearchOptions: any = {
|
||||
kind: "",
|
||||
similarity,
|
||||
dimensions: vectorLength,
|
||||
};
|
||||
|
||||
if (indexType === "hnsw") {
|
||||
cosmosSearchOptions.kind = "vector-hnsw";
|
||||
cosmosSearchOptions.m = this.indexOptions.m ?? 16;
|
||||
cosmosSearchOptions.efConstruction =
|
||||
this.indexOptions.efConstruction ?? 200;
|
||||
} else if (indexType === "diskann") {
|
||||
cosmosSearchOptions.kind = "vector-diskann";
|
||||
cosmosSearchOptions.maxDegree = this.indexOptions.maxDegree ?? 40;
|
||||
cosmosSearchOptions.lBuild = this.indexOptions.lBuild ?? 50;
|
||||
cosmosSearchOptions.lSearch = this.indexOptions.lSearch ?? 40;
|
||||
/** Default to IVF index */
|
||||
} else {
|
||||
cosmosSearchOptions.kind = "vector-ivf";
|
||||
cosmosSearchOptions.numLists = this.indexOptions.numLists ?? 100;
|
||||
}
|
||||
|
||||
const createIndexCommands = {
|
||||
createIndexes: this.collection?.collectionName,
|
||||
indexes: [
|
||||
{
|
||||
name: this.indexName,
|
||||
key: { [this.embeddingKey]: "cosmosSearch" },
|
||||
cosmosSearchOptions,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
await this.database.command(createIndexCommands);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the specified index name during instance construction exists
|
||||
* on the collection.
|
||||
* @returns A promise that resolves to a boolean indicating if the index exists.
|
||||
*/
|
||||
async checkIndexExists(): Promise<boolean> {
|
||||
const collection = await this.ensureCollection();
|
||||
const indexes = await collection.listIndexes().toArray();
|
||||
return indexes.some((index) => index.name === this.indexName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the index specified during instance construction if it exists.
|
||||
* @returns A promise that resolves when the index has been deleted.
|
||||
*/
|
||||
async deleteIndex(indexName: string): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
const indexes = await collection.listIndexes().toArray();
|
||||
const indexToDelete = indexes.find((index) => index.name === indexName);
|
||||
if (indexToDelete) {
|
||||
await collection.dropIndex(indexName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
export * from "./AstraDBVectorStore.js";
|
||||
export * from "./AzureCosmosDBMongoVectorStore.js";
|
||||
export * from "./AzureCosmosDBNoSqlVectorStore.js";
|
||||
export * from "./ChromaVectorStore.js";
|
||||
export * from "./MilvusVectorStore.js";
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/node-parser
|
||||
|
||||
## 0.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/node-parser",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.20",
|
||||
"description": "Node parser for LlamaIndex",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/anthropic
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/anthropic",
|
||||
"description": "Anthropic Adapter for LlamaIndex",
|
||||
"version": "0.0.23",
|
||||
"version": "0.0.28",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,50 @@
|
||||
# @llamaindex/clip
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
- @llamaindex/openai@0.1.44
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
- @llamaindex/openai@0.1.43
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/clip",
|
||||
"description": "Clip Embedding Adapter for LlamaIndex",
|
||||
"version": "0.0.23",
|
||||
"version": "0.0.28",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,50 @@
|
||||
# @llamaindex/deepinfra
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
- @llamaindex/openai@0.1.44
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
- @llamaindex/openai@0.1.43
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/deepinfra",
|
||||
"description": "Deepinfra Adapter for LlamaIndex",
|
||||
"version": "0.0.23",
|
||||
"version": "0.0.28",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,43 @@
|
||||
# @llamaindex/groq
|
||||
|
||||
## 0.0.43
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/openai@0.1.44
|
||||
|
||||
## 0.0.42
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/openai@0.1.43
|
||||
|
||||
## 0.0.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/groq",
|
||||
"description": "Groq Adapter for LlamaIndex",
|
||||
"version": "0.0.38",
|
||||
"version": "0.0.43",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,50 @@
|
||||
# @llamaindex/huggingface
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
- @llamaindex/openai@0.1.44
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
- @llamaindex/openai@0.1.43
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/huggingface",
|
||||
"description": "Huggingface Adapter for LlamaIndex",
|
||||
"version": "0.0.23",
|
||||
"version": "0.0.28",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/ollama
|
||||
|
||||
## 0.0.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.33
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/ollama",
|
||||
"description": "Ollama Adapter for LlamaIndex",
|
||||
"version": "0.0.30",
|
||||
"version": "0.0.35",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,46 @@
|
||||
# @llamaindex/openai
|
||||
|
||||
## 0.1.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.1.43
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.1.42
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.1.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.1.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.1.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/openai",
|
||||
"description": "OpenAI Adapter for LlamaIndex",
|
||||
"version": "0.1.39",
|
||||
"version": "0.1.44",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
@@ -35,6 +35,6 @@
|
||||
"dependencies": {
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"openai": "^4.72.0"
|
||||
"openai": "^4.73.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,9 @@ export const GPT4_MODELS = {
|
||||
"gpt-4o-audio-preview-2024-10-01": {
|
||||
contextWindow: 128000,
|
||||
},
|
||||
"gpt-4o-2024-11-20": {
|
||||
contextWindow: 128000,
|
||||
},
|
||||
};
|
||||
|
||||
// NOTE we don't currently support gpt-3.5-turbo-instruct and don't plan to in the near future
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/portkey-ai
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/portkey-ai",
|
||||
"description": "Portkey Adapter for LlamaIndex",
|
||||
"version": "0.0.23",
|
||||
"version": "0.0.28",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/replicate
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/replicate",
|
||||
"description": "Replicate Adapter for LlamaIndex",
|
||||
"version": "0.0.23",
|
||||
"version": "0.0.28",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# @llamaindex/vercel
|
||||
|
||||
## 0.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [a9b5b99]
|
||||
- @llamaindex/core@0.4.19
|
||||
|
||||
## 0.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 086a651: Add VercelLLM (adapter to use any model provider from Vercel AI in LlamaIndex)
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 0.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
|
||||
## 0.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fd38a25: Add vercel tool adapter to use query engine tool
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "@llamaindex/vercel",
|
||||
"description": "Vercel Adapter for LlamaIndex",
|
||||
"version": "0.0.6",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"edge-light": {
|
||||
"types": "./dist/index.edge-light.d.ts",
|
||||
"default": "./dist/index.edge-light.js"
|
||||
},
|
||||
"workerd": {
|
||||
"types": "./dist/index.edge-light.d.ts",
|
||||
"default": "./dist/index.edge-light.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./dist/index.d.cts",
|
||||
"default": "./dist/index.cjs"
|
||||
},
|
||||
"import": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"default": "./dist/index.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/providers/vercel"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "bunchee",
|
||||
"dev": "bunchee --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"bunchee": "5.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"zod": "^3.23.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ai": "^4.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
export { VercelLLM } from "./llm";
|
||||
export { llamaindex } from "./tool";
|
||||
@@ -0,0 +1,183 @@
|
||||
import { wrapEventCaller, wrapLLMEvent } from "@llamaindex/core/decorator";
|
||||
import {
|
||||
ToolCallLLM,
|
||||
type ChatMessage,
|
||||
type ChatResponse,
|
||||
type ChatResponseChunk,
|
||||
type LLMChatParamsNonStreaming,
|
||||
type LLMChatParamsStreaming,
|
||||
type LLMMetadata,
|
||||
type ToolCallLLMMessageOptions,
|
||||
} from "@llamaindex/core/llms";
|
||||
import { extractText } from "@llamaindex/core/utils";
|
||||
import {
|
||||
generateText,
|
||||
streamText,
|
||||
type CoreAssistantMessage,
|
||||
type CoreMessage,
|
||||
type CoreSystemMessage,
|
||||
type CoreToolMessage,
|
||||
type CoreUserMessage,
|
||||
type ImagePart,
|
||||
type LanguageModelV1,
|
||||
type TextPart,
|
||||
} from "ai";
|
||||
|
||||
export type VercelAdditionalChatOptions = ToolCallLLMMessageOptions;
|
||||
|
||||
export class VercelLLM extends ToolCallLLM<VercelAdditionalChatOptions> {
|
||||
supportToolCall: boolean = true;
|
||||
private model: LanguageModelV1;
|
||||
|
||||
constructor({ model }: { model: LanguageModelV1 }) {
|
||||
super();
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
get metadata(): LLMMetadata {
|
||||
return {
|
||||
model: this.model.modelId,
|
||||
temperature: 1,
|
||||
topP: 1,
|
||||
contextWindow: 128000,
|
||||
tokenizer: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
private toVercelMessages(
|
||||
messages: ChatMessage<ToolCallLLMMessageOptions>[],
|
||||
): CoreMessage[] {
|
||||
return messages.map((message) => {
|
||||
const options = message.options ?? {};
|
||||
|
||||
if ("toolResult" in options) {
|
||||
return {
|
||||
role: "tool",
|
||||
content: [
|
||||
{
|
||||
type: "tool-result",
|
||||
toolCallId: options.toolResult.id,
|
||||
toolName: "", // XXX: tool result doesn't name
|
||||
isError: options.toolResult.isError,
|
||||
result: options.toolResult.result,
|
||||
},
|
||||
],
|
||||
} satisfies CoreToolMessage;
|
||||
} else if ("toolCall" in options) {
|
||||
return {
|
||||
role: "assistant",
|
||||
content: options.toolCall.map((toolCall) => ({
|
||||
type: "tool-call",
|
||||
toolName: toolCall.name,
|
||||
toolCallId: toolCall.id,
|
||||
args: toolCall.input,
|
||||
})),
|
||||
} satisfies CoreAssistantMessage;
|
||||
}
|
||||
|
||||
if (message.role === "system" || message.role === "assistant") {
|
||||
return {
|
||||
role: message.role,
|
||||
content: extractText(message.content),
|
||||
} satisfies CoreSystemMessage | CoreAssistantMessage;
|
||||
}
|
||||
|
||||
if (message.role === "user") {
|
||||
return {
|
||||
role: message.role,
|
||||
content:
|
||||
typeof message.content === "string"
|
||||
? message.content
|
||||
: message.content.map((contentDetail) => {
|
||||
if (contentDetail.type === "image_url") {
|
||||
return {
|
||||
type: "image",
|
||||
image: new URL(contentDetail.image_url.url),
|
||||
} satisfies ImagePart;
|
||||
}
|
||||
return {
|
||||
type: "text",
|
||||
text: contentDetail.text,
|
||||
} satisfies TextPart;
|
||||
}),
|
||||
} satisfies CoreUserMessage;
|
||||
}
|
||||
|
||||
throw new Error(`Can not convert message ${JSON.stringify(message)}`);
|
||||
});
|
||||
}
|
||||
|
||||
chat(
|
||||
params: LLMChatParamsStreaming<
|
||||
VercelAdditionalChatOptions,
|
||||
ToolCallLLMMessageOptions
|
||||
>,
|
||||
): Promise<AsyncIterable<ChatResponseChunk<ToolCallLLMMessageOptions>>>;
|
||||
chat(
|
||||
params: LLMChatParamsNonStreaming<
|
||||
VercelAdditionalChatOptions,
|
||||
ToolCallLLMMessageOptions
|
||||
>,
|
||||
): Promise<ChatResponse<ToolCallLLMMessageOptions>>;
|
||||
@wrapEventCaller
|
||||
@wrapLLMEvent
|
||||
async chat(
|
||||
params:
|
||||
| LLMChatParamsNonStreaming<
|
||||
VercelAdditionalChatOptions,
|
||||
ToolCallLLMMessageOptions
|
||||
>
|
||||
| LLMChatParamsStreaming<
|
||||
VercelAdditionalChatOptions,
|
||||
ToolCallLLMMessageOptions
|
||||
>,
|
||||
): Promise<
|
||||
| ChatResponse<ToolCallLLMMessageOptions>
|
||||
| AsyncIterable<ChatResponseChunk<ToolCallLLMMessageOptions>>
|
||||
> {
|
||||
const { messages, stream } = params;
|
||||
|
||||
// Streaming
|
||||
if (stream) {
|
||||
const result = streamText({
|
||||
model: this.model,
|
||||
messages: this.toVercelMessages(messages),
|
||||
});
|
||||
return result.fullStream.pipeThrough(
|
||||
new TransformStream({
|
||||
async transform(message, controller): Promise<void> {
|
||||
switch (message.type) {
|
||||
case "text-delta":
|
||||
controller.enqueue({ raw: message, delta: message.textDelta });
|
||||
}
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
// Non-streaming
|
||||
const result = await generateText({
|
||||
model: this.model,
|
||||
messages: this.toVercelMessages(messages),
|
||||
});
|
||||
|
||||
return {
|
||||
raw: result,
|
||||
message: {
|
||||
content: result.text,
|
||||
role: "assistant",
|
||||
options: result.toolCalls?.length
|
||||
? {
|
||||
toolCall: result.toolCalls.map(
|
||||
({ toolCallId, toolName, args }) => ({
|
||||
id: toolCallId,
|
||||
name: toolName,
|
||||
input: args,
|
||||
}),
|
||||
),
|
||||
}
|
||||
: {},
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { Settings } from "@llamaindex/core/global";
|
||||
import type { BaseQueryEngine } from "@llamaindex/core/query-engine";
|
||||
import { type CoreTool, type LanguageModelV1, tool } from "ai";
|
||||
import { z } from "zod";
|
||||
import { VercelLLM } from "./llm";
|
||||
|
||||
interface DatasourceIndex {
|
||||
asQueryEngine: () => BaseQueryEngine;
|
||||
}
|
||||
|
||||
export function llamaindex({
|
||||
model,
|
||||
index,
|
||||
description,
|
||||
}: {
|
||||
model: LanguageModelV1;
|
||||
index: DatasourceIndex;
|
||||
description?: string;
|
||||
}): CoreTool {
|
||||
const llm = new VercelLLM({ model });
|
||||
return Settings.withLLM<CoreTool>(llm, () => {
|
||||
const queryEngine = index.asQueryEngine();
|
||||
return tool({
|
||||
description: description ?? "Get information about your documents.",
|
||||
parameters: z.object({
|
||||
query: z
|
||||
.string()
|
||||
.describe("The query to get information about your documents."),
|
||||
}),
|
||||
execute: async ({ query }) => {
|
||||
const result = await queryEngine?.query({ query });
|
||||
return result?.message.content ?? "No result found in documents.";
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user