mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-03 19:19:08 -04:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f369d3de4f | |||
| c1850ee370 | |||
| 086a65141d | |||
| d99d598491 | |||
| a0e6f57d9b | |||
| e0f6cc3be1 | |||
| 8386510d86 | |||
| b504303c66 | |||
| cf9a9356e0 | |||
| 335020e242 | |||
| 3d1808b5d2 | |||
| a19cbc7fe0 | |||
| b8f0cbc4e0 | |||
| 7e8230b056 | |||
| 8be45899a7 | |||
| c4800bcf82 | |||
| fd38a253b7 |
@@ -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,37 @@
|
||||
# docs
|
||||
|
||||
## 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
|
||||
|
||||
@@ -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.129",
|
||||
"version": "0.0.133",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# @llamaindex/doc
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/doc",
|
||||
"version": "0.0.27",
|
||||
"version": "0.0.31",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "pnpm run build:docs && next build",
|
||||
|
||||
@@ -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,5 +1,26 @@
|
||||
# @llamaindex/cloudflare-worker-agent-test
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||
"version": "0.0.120",
|
||||
"version": "0.0.123",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
# @llamaindex/llama-parse-browser-test
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/llama-parse-browser-test",
|
||||
"private": true,
|
||||
"version": "0.0.35",
|
||||
"version": "0.0.38",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @llamaindex/next-agent-test
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-agent-test",
|
||||
"version": "0.1.120",
|
||||
"version": "0.1.123",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# test-edge-runtime
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||
"version": "0.1.119",
|
||||
"version": "0.1.122",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @llamaindex/next-node-runtime
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-node-runtime-test",
|
||||
"version": "0.0.101",
|
||||
"version": "0.0.104",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# @llamaindex/waku-query-engine-test
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/waku-query-engine-test",
|
||||
"version": "0.0.120",
|
||||
"version": "0.0.123",
|
||||
"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,49 @@
|
||||
# examples
|
||||
|
||||
## 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.20",
|
||||
"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.18",
|
||||
"@llamaindex/readers": "^1.0.20",
|
||||
"@llamaindex/workflow": "^0.0.8",
|
||||
"@llamaindex/vercel": "^0.0.5",
|
||||
"@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.27",
|
||||
"mongodb": "^6.7.0",
|
||||
"pathe": "^1.1.2",
|
||||
"postgres": "^3.4.4"
|
||||
|
||||
@@ -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,28 @@
|
||||
# @llamaindex/autotool
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/autotool-01-node-example
|
||||
|
||||
## 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
|
||||
|
||||
@@ -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.67"
|
||||
"version": "0.0.70"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/autotool-02-next-example
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool-02-next-example",
|
||||
"private": true,
|
||||
"version": "0.1.111",
|
||||
"version": "0.1.114",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool",
|
||||
"type": "module",
|
||||
"version": "5.0.24",
|
||||
"version": "5.0.27",
|
||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloud",
|
||||
"version": "2.0.15",
|
||||
"version": "2.0.18",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# @llamaindex/community
|
||||
|
||||
## 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
|
||||
|
||||
@@ -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.73",
|
||||
"version": "0.0.76",
|
||||
"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",
|
||||
@@ -189,6 +198,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 +237,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 +254,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 +338,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 +359,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 +395,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 +409,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,27 @@
|
||||
# @llamaindex/core
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/core",
|
||||
"type": "module",
|
||||
"version": "0.4.15",
|
||||
"version": "0.4.18",
|
||||
"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));
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -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
+12
@@ -1,5 +1,17 @@
|
||||
# @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
|
||||
|
||||
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.23",
|
||||
"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,5 +1,27 @@
|
||||
# @llamaindex/experimental
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/experimental",
|
||||
"description": "Experimental package for LlamaIndexTS",
|
||||
"version": "0.0.136",
|
||||
"version": "0.0.139",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
|
||||
@@ -1,5 +1,72 @@
|
||||
# llamaindex
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "llamaindex",
|
||||
"version": "0.8.24",
|
||||
"version": "0.8.27",
|
||||
"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,
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/node-parser
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/node-parser",
|
||||
"version": "0.0.16",
|
||||
"version": "0.0.19",
|
||||
"description": "Node parser for LlamaIndex",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/anthropic
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/anthropic",
|
||||
"description": "Anthropic Adapter for LlamaIndex",
|
||||
"version": "0.0.24",
|
||||
"version": "0.0.27",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,33 @@
|
||||
# @llamaindex/clip
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/clip",
|
||||
"description": "Clip Embedding Adapter for LlamaIndex",
|
||||
"version": "0.0.24",
|
||||
"version": "0.0.27",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,33 @@
|
||||
# @llamaindex/deepinfra
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/deepinfra",
|
||||
"description": "Deepinfra Adapter for LlamaIndex",
|
||||
"version": "0.0.24",
|
||||
"version": "0.0.27",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
# @llamaindex/groq
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/groq",
|
||||
"description": "Groq Adapter for LlamaIndex",
|
||||
"version": "0.0.39",
|
||||
"version": "0.0.42",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,33 @@
|
||||
# @llamaindex/huggingface
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/huggingface",
|
||||
"description": "Huggingface Adapter for LlamaIndex",
|
||||
"version": "0.0.24",
|
||||
"version": "0.0.27",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/ollama
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/ollama",
|
||||
"description": "Ollama Adapter for LlamaIndex",
|
||||
"version": "0.0.31",
|
||||
"version": "0.0.34",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# @llamaindex/openai
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/openai",
|
||||
"description": "OpenAI Adapter for LlamaIndex",
|
||||
"version": "0.1.40",
|
||||
"version": "0.1.43",
|
||||
"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,30 @@
|
||||
# @llamaindex/portkey-ai
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/portkey-ai",
|
||||
"description": "Portkey Adapter for LlamaIndex",
|
||||
"version": "0.0.24",
|
||||
"version": "0.0.27",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/replicate
|
||||
|
||||
## 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/replicate",
|
||||
"description": "Replicate Adapter for LlamaIndex",
|
||||
"version": "0.0.24",
|
||||
"version": "0.0.27",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# @llamaindex/vercel
|
||||
|
||||
## 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.5",
|
||||
"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.";
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"target": "ESNext",
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"outDir": "./lib",
|
||||
"tsBuildInfoFile": "./lib/.tsbuildinfo"
|
||||
},
|
||||
"include": ["./src"],
|
||||
"references": [
|
||||
{
|
||||
"path": "../../core/tsconfig.json"
|
||||
},
|
||||
{
|
||||
"path": "../../env/tsconfig.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,26 @@
|
||||
# @llamaindex/vllm
|
||||
|
||||
## 0.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/openai@0.1.43
|
||||
|
||||
## 0.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/vllm",
|
||||
"description": "vLLM Adapter for LlamaIndex",
|
||||
"version": "0.0.10",
|
||||
"version": "0.0.13",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# @llamaindex/readers
|
||||
|
||||
## 1.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- Updated dependencies [e0f6cc3]
|
||||
- @llamaindex/env@0.1.25
|
||||
- @llamaindex/core@0.4.18
|
||||
|
||||
## 1.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 1.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 7e8230b: Add obsidian reader
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 1.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/readers",
|
||||
"description": "LlamaIndex Readers",
|
||||
"version": "1.0.17",
|
||||
"version": "1.0.20",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
"./node/hook": "./node/dist/hook.js",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @llamaindex/wasm-tools
|
||||
|
||||
## 0.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
|
||||
## 0.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/wasm-tools",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @llamaindex/workflow
|
||||
|
||||
## 0.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b504303]
|
||||
- @llamaindex/env@0.1.25
|
||||
|
||||
## 0.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
|
||||
## 0.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/workflow",
|
||||
"description": "Workflow API",
|
||||
"version": "0.0.6",
|
||||
"version": "0.0.8",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"module": "dist/index.js",
|
||||
@@ -54,7 +54,11 @@
|
||||
"build": "bunchee"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"@types/node": "^22.9.0",
|
||||
"bunchee": "5.6.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@llamaindex/env": "workspace:*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { CustomEvent, randomUUID } from "@llamaindex/env";
|
||||
import {
|
||||
type AnyWorkflowEventConstructor,
|
||||
StartEvent,
|
||||
@@ -231,7 +232,7 @@ export class WorkflowContext<Start = string, Stop = string, Data = unknown>
|
||||
#requireEvent = async <T extends AnyWorkflowEventConstructor>(
|
||||
event: T,
|
||||
): Promise<InstanceType<T>> => {
|
||||
const requestId = crypto.randomUUID();
|
||||
const requestId = randomUUID();
|
||||
this.#queue.push({
|
||||
type: "requestEvent",
|
||||
id: requestId,
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"emitDeclarationOnly": true,
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"skipLibCheck": true,
|
||||
"types": ["node"],
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
|
||||
Generated
+752
-90
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user