Compare commits

...

12 Commits

Author SHA1 Message Date
github-actions[bot] a3cbcb31a2 Release 0.9.8 (#1711)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: marcusschiesser <17126+marcusschiesser@users.noreply.github.com>
2025-03-06 16:33:19 +07:00
Thuc Pham bbc8c8787d fix: prefer using embedding model from vector store (#1708) 2025-03-06 16:24:05 +07:00
Huu Le 4b49428f57 fix agent workflow tool call for Ollama (#1706)
Co-authored-by: Marcus Schiesser <mail@marcusschiesser.de>
2025-03-06 11:13:42 +07:00
Peter Goldstein 7ee4968b06 Add Gemini 2.0 Pro Experimental (#1707) 2025-03-06 11:04:56 +07:00
github-actions[bot] 0111f5c8b0 Release 0.9.7 (#1703)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: marcusschiesser <17126+marcusschiesser@users.noreply.github.com>
2025-03-05 16:59:05 +07:00
Thuc Pham beb922b743 fix: build fail in edge runtime (#1705)
Co-authored-by: Marcus Schiesser <mail@marcusschiesser.de>
2025-03-05 16:35:00 +07:00
patryktop e28c29d1f5 feat: add Llama 3.3 70B Instruct to community package (#1702) 2025-03-04 17:27:35 -08:00
github-actions[bot] 008cccd9f1 Release 0.9.6 (#1698) 2025-03-04 17:33:18 +07:00
Huu Le 081698d68c chore: simplify imports of agent workflow (#1700) 2025-03-04 17:01:29 +07:00
Huu Le ab5fe5d7a0 chore: remove core import in document (#1699) 2025-03-04 16:14:31 +07:00
Huu Le 56689707d3 feat: Support AgentWorkflow (#1685)
Co-authored-by: Marcus Schiesser <mail@marcusschiesser.de>
2025-03-04 16:05:25 +07:00
Brian Lange fd74ba4bf1 fix: Voyage typescript configs + docs (#1696) 2025-03-04 11:00:05 +07:00
166 changed files with 3041 additions and 235 deletions
+35
View File
@@ -1,5 +1,40 @@
# @llamaindex/doc
## 0.1.8
### Patch Changes
- Updated dependencies [4b49428]
- Updated dependencies [bbc8c87]
- @llamaindex/workflow@0.0.14
- llamaindex@0.9.8
## 0.1.7
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/core@0.5.6
- llamaindex@0.9.7
- @llamaindex/cloud@3.0.7
- @llamaindex/node-parser@1.0.6
- @llamaindex/openai@0.1.58
- @llamaindex/readers@2.0.6
- @llamaindex/workflow@0.0.13
## 0.1.6
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
- @llamaindex/workflow@0.0.12
- @llamaindex/cloud@3.0.6
- llamaindex@0.9.6
- @llamaindex/node-parser@1.0.5
- @llamaindex/openai@0.1.57
- @llamaindex/readers@2.0.5
## 0.1.5
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/doc",
"version": "0.1.5",
"version": "0.1.8",
"private": true,
"scripts": {
"build": "pnpm run build:docs && next build",
@@ -3,6 +3,8 @@ title: With Node.js/Bun/Deno
description: In this guide, you'll learn how to use LlamaIndex with Node.js, Bun, and Deno.
---
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
## Adding environment variables
By default, LlamaIndex uses OpenAI provider, which requires an API key. You can set the `OPENAI_API_KEY` environment variable to authenticate with OpenAI.
@@ -22,6 +24,26 @@ node --env-file .env your-script.js
For more information, see the [How to read environment variables from Node.js](https://nodejs.org/en/learn/command-line/how-to-read-environment-variables-from-nodejs).
## Performance Optimization
By the default, we are using `js-tiktoken` for tokenization. You can install `gpt-tokenizer` which is then automatically used by LlamaIndex to get a 60x speedup for tokenization:
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install gpt-tokenizer
```
```shell tab="yarn"
yarn add gpt-tokenizer
```
```shell tab="pnpm"
pnpm add gpt-tokenizer
```
</Tabs>
> Note: This only works for Node.js
## TypeScript support
<Card
@@ -0,0 +1,139 @@
---
title: Agent Workflow
---
import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
import CodeSource from "!raw-loader!../../../../../../../examples/agentworkflow/blog_writer.ts";
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
`AgentWorkflow` is a powerful system that enables you to create and orchestrate one or multiple agents with tools to perform specific tasks. It's built on top of the base `Workflow` system and provides a streamlined interface for agent interactions.
## Installation
You'll need to install the `@llamaindex/workflow` package:
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install @llamaindex/workflow
```
```shell tab="yarn"
yarn add @llamaindex/workflow
```
```shell tab="pnpm"
pnpm add @llamaindex/workflow
```
</Tabs>
## Usage
### Single Agent Workflow
The simplest use case is creating a single agent with specific tools. Here's an example of creating an assistant that tells jokes:
```typescript
import { AgentWorkflow, FunctionTool } from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
// Define a joke-telling tool
const jokeTool = FunctionTool.from(
() => "Baby Llama is called cria",
{
name: "joke",
description: "Use this tool to get a joke",
}
);
// Create an agent workflow with the tool
const workflow = AgentWorkflow.fromTools({
tools: [jokeTool],
llm: new OpenAI({
model: "gpt-4o-mini",
}),
});
// Run the workflow
const result = await workflow.run("Tell me something funny");
console.log(result); // Baby Llama is called cria
```
### Event Streaming
`AgentWorkflow` provides a unified interface for event streaming, making it easy to track and respond to different events during execution:
```typescript
import { AgentToolCall, AgentStream } from "llamaindex";
// Get the workflow execution context
const context = workflow.run("Tell me something funny");
// Stream and handle events
for await (const event of context) {
if (event instanceof AgentToolCall) {
console.log(`Tool being called: ${event.data.toolName}`);
}
if (event instanceof AgentStream) {
process.stdout.write(event.data.delta);
}
}
```
### Multi-Agent Workflow
`AgentWorkflow` can orchestrate multiple agents, enabling complex interactions and task handoffs. Each agent in a multi-agent workflow requires:
- `name`: Unique identifier for the agent
- `description`: Purpose description used for task routing
- `tools`: Array of tools the agent can use
- `canHandoffTo` (optional): Array of agent names or agent instances that this agent can delegate tasks to
Here's an example of a multi-agent system that combines joke-telling and weather information:
```typescript
import { AgentWorkflow, FunctionAgent, FunctionTool } from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import { z } from "zod";
// Create a weather agent
const weatherAgent = new FunctionAgent({
name: "WeatherAgent",
description: "Provides weather information for any city",
tools: [
FunctionTool.from(
({ city }: { city: string }) => `The weather in ${city} is sunny`,
{
name: "fetchWeather",
description: "Get weather information for a city",
parameters: z.object({
city: z.string(),
}),
}
),
],
llm: new OpenAI({ model: "gpt-4o-mini" }),
});
// Create a joke-telling agent
const jokeAgent = new FunctionAgent({
name: "JokeAgent",
description: "Tells jokes and funny stories",
tools: [jokeTool], // Using the joke tool defined earlier
llm: new OpenAI({ model: "gpt-4o-mini" }),
canHandoffTo: [weatherAgent], // Can hand off to the weather agent
});
// Create the multi-agent workflow
const workflow = new AgentWorkflow({
agents: [jokeAgent, weatherAgent],
rootAgent: jokeAgent, // Start with the joke agent
});
// Run the workflow
const result = await workflow.run(
"Give me a morning greeting with a joke and the weather in San Francisco"
);
```
The workflow will coordinate between agents, allowing them to handle different aspects of the request and hand off tasks when appropriate.
@@ -2,10 +2,11 @@
title: Jina AI
---
To use Jina AI embeddings, you need to import `JinaAIEmbedding` from `llamaindex`.
To use Jina AI embeddings, you need to import `JinaAIEmbedding` from `@llamaindex/jinaai`.
```ts
import { JinaAIEmbedding, Settings } from "llamaindex";
import { Settings } from "llamaindex";
import { JinaAIEmbedding } from "@llamaindex/jinaai";
Settings.embedModel = new JinaAIEmbedding();
@@ -2,10 +2,11 @@
title: Together
---
To use together embeddings, you need to import `TogetherEmbedding` from `llamaindex`.
To use together embeddings, you need to import `TogetherEmbedding` from `@llamaindex/together`.
```ts
import { TogetherEmbedding, Settings } from "llamaindex";
import { Settings } from "llamaindex";
import { TogetherEmbedding } from "@llamaindex/together";
Settings.embedModel = new TogetherEmbedding({
apiKey: "<YOUR_API_KEY>",
@@ -7,7 +7,8 @@ title: DeepSeek LLM
## Usage
```ts
import { DeepSeekLLM, Settings } from "llamaindex";
import { Settings } from "llamaindex";
import { DeepSeekLLM } from "@llamaindex/deepseek";
Settings.llm = new DeepSeekLLM({
apiKey: "<YOUR_API_KEY>",
@@ -18,7 +19,8 @@ Settings.llm = new DeepSeekLLM({
## Example
```ts
import { DeepSeekLLM, Document, VectorStoreIndex, Settings } from "llamaindex";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { DeepSeekLLM } from "@llamaindex/deepseek";
const deepseekLlm = new DeepSeekLLM({
apiKey: "<YOUR_API_KEY>",
@@ -7,7 +7,8 @@ title: Fireworks LLM
## Usage
```ts
import { FireworksLLM, Settings } from "llamaindex";
import { Settings } from "llamaindex";
import { FireworksLLM } from "@llamaindex/fireworks";
Settings.llm = new FireworksLLM({
apiKey: "<YOUR_API_KEY>",
@@ -23,7 +23,8 @@ import { Tab, Tabs } from "fumadocs-ui/components/tabs";
## Usage
```ts
import { Settings, TogetherLLM } from "llamaindex";
import { Settings } from "llamaindex";
import { TogetherLLM } from "@llamaindex/together";
Settings.llm = new TogetherLLM({
apiKey: "<YOUR_API_KEY>",
@@ -1,5 +1,25 @@
# @llamaindex/cloudflare-worker-agent-test
## 0.0.142
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.0.141
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
## 0.0.140
### Patch Changes
- llamaindex@0.9.6
## 0.0.139
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloudflare-worker-agent-test",
"version": "0.0.139",
"version": "0.0.142",
"type": "module",
"private": true,
"scripts": {
@@ -1,5 +1,17 @@
# @llamaindex/llama-parse-browser-test
## 0.0.52
### Patch Changes
- @llamaindex/cloud@3.0.7
## 0.0.51
### Patch Changes
- @llamaindex/cloud@3.0.6
## 0.0.50
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llama-parse-browser-test",
"private": true,
"version": "0.0.50",
"version": "0.0.52",
"type": "module",
"scripts": {
"dev": "vite",
+20
View File
@@ -1,5 +1,25 @@
# @llamaindex/next-agent-test
## 0.1.142
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.1.141
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
## 0.1.140
### Patch Changes
- llamaindex@0.9.6
## 0.1.139
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-agent-test",
"version": "0.1.139",
"version": "0.1.142",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,25 @@
# test-edge-runtime
## 0.1.141
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.1.140
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
## 0.1.139
### Patch Changes
- llamaindex@0.9.6
## 0.1.138
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/nextjs-edge-runtime-test",
"version": "0.1.138",
"version": "0.1.141",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,29 @@
# @llamaindex/next-node-runtime
## 0.1.8
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.1.7
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
- @llamaindex/huggingface@0.0.42
- @llamaindex/readers@2.0.6
## 0.1.6
### Patch Changes
- llamaindex@0.9.6
- @llamaindex/huggingface@0.0.41
- @llamaindex/readers@2.0.5
## 0.1.5
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-node-runtime-test",
"version": "0.1.5",
"version": "0.1.8",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,25 @@
# vite-import-llamaindex
## 0.0.8
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.0.7
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
## 0.0.6
### Patch Changes
- llamaindex@0.9.6
## 0.0.5
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "vite-import-llamaindex",
"private": true,
"version": "0.0.5",
"version": "0.0.8",
"type": "module",
"scripts": {
"build": "vite build",
@@ -1,5 +1,26 @@
# @llamaindex/waku-query-engine-test
## 0.0.142
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.0.141
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- llamaindex@0.9.7
## 0.0.140
### Patch Changes
- llamaindex@0.9.6
## 0.0.139
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/waku-query-engine-test",
"version": "0.0.139",
"version": "0.0.142",
"type": "module",
"private": true,
"scripts": {
+95
View File
@@ -1,5 +1,100 @@
# examples
## 0.2.7
### Patch Changes
- Updated dependencies [4b49428]
- Updated dependencies [bbc8c87]
- Updated dependencies [7ee4968]
- @llamaindex/workflow@0.0.14
- llamaindex@0.9.8
- @llamaindex/deepseek@0.0.2
- @llamaindex/fireworks@0.0.2
- @llamaindex/together@0.0.2
- @llamaindex/jinaai@0.0.2
- @llamaindex/google@0.0.14
## 0.2.6
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
- llamaindex@0.9.7
- @llamaindex/cloud@3.0.7
- @llamaindex/node-parser@1.0.6
- @llamaindex/anthropic@0.2.4
- @llamaindex/clip@0.0.42
- @llamaindex/cohere@0.0.11
- @llamaindex/deepinfra@0.0.42
- @llamaindex/google@0.0.13
- @llamaindex/groq@0.0.57
- @llamaindex/huggingface@0.0.42
- @llamaindex/mistral@0.0.11
- @llamaindex/mixedbread@0.0.11
- @llamaindex/ollama@0.0.46
- @llamaindex/openai@0.1.58
- @llamaindex/portkey-ai@0.0.39
- @llamaindex/replicate@0.0.39
- @llamaindex/astra@0.0.11
- @llamaindex/azure@0.1.6
- @llamaindex/chroma@0.0.11
- @llamaindex/firestore@1.0.4
- @llamaindex/milvus@0.1.6
- @llamaindex/mongodb@0.0.11
- @llamaindex/pinecone@0.0.11
- @llamaindex/postgres@0.0.39
- @llamaindex/qdrant@0.1.6
- @llamaindex/upstash@0.0.11
- @llamaindex/weaviate@0.0.11
- @llamaindex/voyage-ai@1.0.3
- @llamaindex/readers@2.0.6
- @llamaindex/workflow@0.0.13
- @llamaindex/vercel@0.0.17
- @llamaindex/vllm@0.0.28
## 0.2.5
### Patch Changes
- Updated dependencies [5668970]
- Updated dependencies [fd74ba4]
- @llamaindex/core@0.5.5
- @llamaindex/workflow@0.0.12
- @llamaindex/voyage-ai@1.0.2
- @llamaindex/cloud@3.0.6
- llamaindex@0.9.6
- @llamaindex/node-parser@1.0.5
- @llamaindex/anthropic@0.2.3
- @llamaindex/clip@0.0.41
- @llamaindex/cohere@0.0.10
- @llamaindex/deepinfra@0.0.41
- @llamaindex/google@0.0.12
- @llamaindex/huggingface@0.0.41
- @llamaindex/mistral@0.0.10
- @llamaindex/mixedbread@0.0.10
- @llamaindex/ollama@0.0.45
- @llamaindex/openai@0.1.57
- @llamaindex/portkey-ai@0.0.38
- @llamaindex/replicate@0.0.38
- @llamaindex/astra@0.0.10
- @llamaindex/azure@0.1.5
- @llamaindex/chroma@0.0.10
- @llamaindex/firestore@1.0.3
- @llamaindex/milvus@0.1.5
- @llamaindex/mongodb@0.0.10
- @llamaindex/pinecone@0.0.10
- @llamaindex/postgres@0.0.38
- @llamaindex/qdrant@0.1.5
- @llamaindex/upstash@0.0.10
- @llamaindex/weaviate@0.0.10
- @llamaindex/vercel@0.0.16
- @llamaindex/readers@2.0.5
- @llamaindex/groq@0.0.56
- @llamaindex/vllm@0.0.27
## 0.2.4
### Patch Changes
+83
View File
@@ -0,0 +1,83 @@
import { OpenAI } from "@llamaindex/openai";
import fs from "fs";
import {
AgentToolCall,
AgentToolCallResult,
AgentWorkflow,
FunctionAgent,
FunctionTool,
} from "llamaindex";
import os from "os";
import { z } from "zod";
import { WikipediaTool } from "../wiki";
const llm = new OpenAI({
model: "gpt-4o-mini",
});
const saveFileTool = FunctionTool.from(
({ content }: { content: string }) => {
const filePath = os.tmpdir() + "/report.md";
fs.writeFileSync(filePath, content);
return `File saved successfully at ${filePath}`;
},
{
name: "saveFile",
description:
"Save the written content into a file that can be downloaded by the user",
parameters: z.object({
content: z.string({
description: "The content to save into a file",
}),
}),
},
);
async function main() {
const reportAgent = new FunctionAgent({
name: "ReportAgent",
description:
"Responsible for crafting well-written blog posts based on research findings",
systemPrompt: `You are a professional writer. Your task is to create an engaging blog post using the research content provided. Once complete, save the post to a file using the saveFile tool.`,
tools: [saveFileTool],
llm,
});
const researchAgent = new FunctionAgent({
name: "ResearchAgent",
description:
"Responsible for gathering relevant information from the internet",
systemPrompt: `You are a research agent. Your role is to gather information from the internet using the provided tools and then transfer this information to the report agent for content creation.`,
tools: [new WikipediaTool()],
canHandoffTo: [reportAgent],
llm,
});
const workflow = new AgentWorkflow({
agents: [researchAgent, reportAgent],
rootAgent: researchAgent,
});
const context = workflow.run("Write a blog post about history of LLM");
let finalResult;
for await (const event of context) {
if (event instanceof AgentToolCall) {
console.log(
`[Agent ${event.displayName}] executing tool ${event.data.toolName} with parameters ${JSON.stringify(
event.data.toolKwargs,
)}`,
);
} else if (event instanceof AgentToolCallResult) {
console.log(
`[Agent ${event.displayName}] executed tool ${event.data.toolName} with result ${event.data.toolOutput.result}`,
);
}
finalResult = event;
}
console.log("Final result:", finalResult?.data);
}
main().catch((error) => {
console.error("Error:", error);
});
+110
View File
@@ -0,0 +1,110 @@
/**
* This example shows how to use AgentWorkflow with multiple agents
* 1. FetchWeatherAgent - Fetches the weather in a city
* 2. TemperatureConverterAgent - Converts the temperature from Fahrenheit to Celsius
*/
import { OpenAI } from "@llamaindex/openai";
import { StopEvent } from "@llamaindex/workflow";
import {
AgentInput,
AgentOutput,
AgentStream,
AgentToolCall,
AgentToolCallResult,
AgentWorkflow,
FunctionAgent,
FunctionTool,
} from "llamaindex";
import { z } from "zod";
const llm = new OpenAI({
model: "gpt-4o-mini",
});
// Define tools for the agents
const temperatureConverterTool = FunctionTool.from(
({ temperature }: { temperature: number }) => {
return ((temperature - 32) * 5) / 9;
},
{
description: "Convert a temperature from Fahrenheit to Celsius",
name: "fahrenheitToCelsius",
parameters: z.object({
temperature: z.number({
description: "The temperature in Fahrenheit",
}),
}),
},
);
const temperatureFetcherTool = FunctionTool.from(
({ city }: { city: string }) => {
const temperature = Math.floor(Math.random() * 58) + 32;
return `The current temperature in ${city} is ${temperature}°F`;
},
{
description: "Fetch the temperature (in Fahrenheit) for a city",
name: "fetchTemperature",
parameters: z.object({
city: z.string({
description: "The city to fetch the temperature for",
}),
}),
},
);
// Create agents
async function multiWeatherAgent() {
const converterAgent = new FunctionAgent({
name: "TemperatureConverterAgent",
description:
"An agent that can convert temperatures from Fahrenheit to Celsius.",
tools: [temperatureConverterTool],
llm,
});
const weatherAgent = new FunctionAgent({
name: "FetchWeatherAgent",
description: "An agent that can get the weather in a city. ",
systemPrompt:
"If you can't answer the user question, hand off to other agents.",
tools: [temperatureFetcherTool],
llm,
// Define which next agents can be called next if this agent cannot complete the task
// Can be passed as agent name, e.g. "TemperatureConverterAgent"
canHandoffTo: [converterAgent],
});
// Create agent workflow with the agents
const workflow = new AgentWorkflow({
agents: [weatherAgent, converterAgent],
rootAgent: weatherAgent,
verbose: false,
});
// Ask the agent to get the weather in a city
const context = workflow.run(
"What is the weather in San Francisco in Celsius?",
);
// Stream the events
for await (const event of context) {
// These events might be useful for UI
if (
event instanceof AgentToolCall ||
event instanceof AgentToolCallResult ||
event instanceof AgentOutput ||
event instanceof AgentInput ||
event instanceof StopEvent
) {
console.log(event);
} else if (event instanceof AgentStream) {
for (const chunk of event.data.delta) {
process.stdout.write(chunk);
}
}
}
}
multiWeatherAgent().catch((error) => {
console.error("Error:", error);
});
+37
View File
@@ -0,0 +1,37 @@
/**
* This example shows how to use AgentWorkflow as a single agent with tools
*/
import { OpenAI } from "@llamaindex/openai";
import { AgentWorkflow } from "llamaindex";
import { getWeatherTool } from "../agent/utils/tools";
const llm = new OpenAI({
model: "gpt-4o",
});
async function singleWeatherAgent() {
const workflow = AgentWorkflow.fromTools({
tools: [getWeatherTool],
llm,
verbose: false,
});
const workflowContext = workflow.run(
"What's the weather like in San Francisco?",
);
const sfResult = await workflowContext;
// The weather in San Francisco, CA is currently sunny.
console.log(`${JSON.stringify(sfResult, null, 2)}`);
// Reuse the context from the previous run
const workflowContext2 = workflow.run("Compare it with California?", {
context: workflowContext.data,
});
const caResult = await workflowContext2;
// Both San Francisco and California are currently experiencing sunny weather.
console.log(`${JSON.stringify(caResult, null, 2)}`);
}
singleWeatherAgent().catch((error) => {
console.error("Error:", error);
});
+46
View File
@@ -0,0 +1,46 @@
import { DeepSeekLLM } from "@llamaindex/deepseek";
// process.env.DEEPSEEK_API_KEY is required
const deepseek = new DeepSeekLLM({
apiKey: process.env.DEEPSEEK_API_KEY,
model: "deepseek-coder", // or "deepseek-chat"
});
(async () => {
// Example of non-streaming chat
const response = await deepseek.chat({
messages: [
{
role: "system",
content: "You are an AI assistant",
},
{
role: "user",
content: "Tell me about San Francisco",
},
],
stream: false,
});
console.log("Response from DeepSeek AI:");
console.log(response);
// Example of streaming chat
const generator = await deepseek.chat({
messages: [
{
role: "system",
content: "You are an AI assistant",
},
{
role: "user",
content: "Write a short poem about San Francisco",
},
],
stream: true,
});
console.log("\nStreaming response from DeepSeek AI...");
for await (const message of generator) {
process.stdout.write(message.delta);
}
console.log("\n");
})();
+2 -6
View File
@@ -1,10 +1,6 @@
import { JinaAIEmbedding } from "@llamaindex/jinaai";
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
import {
ImageDocument,
JinaAIEmbedding,
similarity,
SimilarityType,
} from "llamaindex";
import { ImageDocument, similarity, SimilarityType } from "llamaindex";
import path from "path";
async function main() {
+41 -37
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/examples",
"version": "0.2.4",
"version": "0.2.7",
"private": true,
"scripts": {
"lint": "eslint .",
@@ -11,39 +11,43 @@
"@azure/cosmos": "^4.1.1",
"@azure/identity": "^4.4.1",
"@azure/search-documents": "^12.1.0",
"@llamaindex/anthropic": "^0.2.2",
"@llamaindex/astra": "^0.0.9",
"@llamaindex/azure": "^0.1.4",
"@llamaindex/chroma": "^0.0.9",
"@llamaindex/clip": "^0.0.40",
"@llamaindex/cloud": "^3.0.5",
"@llamaindex/cohere": "^0.0.9",
"@llamaindex/core": "^0.5.4",
"@llamaindex/deepinfra": "^0.0.40",
"@llamaindex/env": "^0.1.28",
"@llamaindex/firestore": "^1.0.2",
"@llamaindex/google": "^0.0.11",
"@llamaindex/groq": "^0.0.55",
"@llamaindex/huggingface": "^0.0.40",
"@llamaindex/milvus": "^0.1.4",
"@llamaindex/mistral": "^0.0.9",
"@llamaindex/mixedbread": "^0.0.9",
"@llamaindex/mongodb": "^0.0.9",
"@llamaindex/node-parser": "^1.0.4",
"@llamaindex/ollama": "^0.0.44",
"@llamaindex/openai": "^0.1.56",
"@llamaindex/pinecone": "^0.0.9",
"@llamaindex/portkey-ai": "^0.0.37",
"@llamaindex/postgres": "^0.0.37",
"@llamaindex/qdrant": "^0.1.4",
"@llamaindex/readers": "^2.0.4",
"@llamaindex/replicate": "^0.0.37",
"@llamaindex/upstash": "^0.0.9",
"@llamaindex/vercel": "^0.0.15",
"@llamaindex/vllm": "^0.0.26",
"@llamaindex/voyage-ai": "^1.0.1",
"@llamaindex/weaviate": "^0.0.9",
"@llamaindex/workflow": "^0.0.11",
"@llamaindex/anthropic": "^0.2.4",
"@llamaindex/astra": "^0.0.11",
"@llamaindex/azure": "^0.1.6",
"@llamaindex/chroma": "^0.0.11",
"@llamaindex/clip": "^0.0.42",
"@llamaindex/cloud": "^3.0.7",
"@llamaindex/cohere": "^0.0.11",
"@llamaindex/core": "^0.5.6",
"@llamaindex/deepinfra": "^0.0.42",
"@llamaindex/env": "^0.1.29",
"@llamaindex/firestore": "^1.0.4",
"@llamaindex/google": "^0.0.14",
"@llamaindex/groq": "^0.0.57",
"@llamaindex/huggingface": "^0.0.42",
"@llamaindex/milvus": "^0.1.6",
"@llamaindex/mistral": "^0.0.11",
"@llamaindex/mixedbread": "^0.0.11",
"@llamaindex/mongodb": "^0.0.11",
"@llamaindex/node-parser": "^1.0.6",
"@llamaindex/ollama": "^0.0.46",
"@llamaindex/openai": "^0.1.58",
"@llamaindex/pinecone": "^0.0.11",
"@llamaindex/portkey-ai": "^0.0.39",
"@llamaindex/postgres": "^0.0.39",
"@llamaindex/qdrant": "^0.1.6",
"@llamaindex/readers": "^2.0.6",
"@llamaindex/replicate": "^0.0.39",
"@llamaindex/upstash": "^0.0.11",
"@llamaindex/vercel": "^0.0.17",
"@llamaindex/vllm": "^0.0.28",
"@llamaindex/voyage-ai": "^1.0.3",
"@llamaindex/weaviate": "^0.0.11",
"@llamaindex/workflow": "^0.0.14",
"@llamaindex/deepseek": "^0.0.2",
"@llamaindex/fireworks": "^0.0.2",
"@llamaindex/together": "^0.0.2",
"@llamaindex/jinaai": "^0.0.2",
"@notionhq/client": "^2.2.15",
"@pinecone-database/pinecone": "^4.0.0",
"@vercel/postgres": "^0.10.0",
@@ -52,11 +56,11 @@
"commander": "^12.1.0",
"dotenv": "^16.4.5",
"js-tiktoken": "^1.0.14",
"llamaindex": "^0.9.5",
"llamaindex": "^0.9.8",
"mongodb": "6.7.0",
"pathe": "^1.1.2",
"postgres": "^3.4.4",
"wikipedia": "^2.1.2"
"wikipedia": "^2.1.2",
"zod": "^3.23.8"
},
"devDependencies": {
"@types/node": "^22.9.0",
+33
View File
@@ -0,0 +1,33 @@
import {
GEMINI_EMBEDDING_MODEL,
GeminiEmbedding,
GeminiSession,
} from "@llamaindex/google";
import { QdrantVectorStore } from "@llamaindex/qdrant";
import {
Document,
storageContextFromDefaults,
VectorStoreIndex,
} from "llamaindex";
const embedding = new GeminiEmbedding({
model: GEMINI_EMBEDDING_MODEL.EMBEDDING_001,
session: new GeminiSession({
apiKey: process.env.GEMINI_API_KEY,
}),
});
async function main() {
const docs = [new Document({ text: "Lorem ipsum dolor sit amet" })];
const vectorStore = new QdrantVectorStore({
url: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY,
embeddingModel: embedding,
collectionName: "gemini_test",
});
const storageContext = await storageContextFromDefaults({ vectorStore });
await VectorStoreIndex.fromDocuments(docs, { storageContext });
console.log("Inizialized vector store successfully");
}
void main().catch((err) => console.error(err));
+27
View File
@@ -0,0 +1,27 @@
import { JinaAIEmbedding } from "@llamaindex/jinaai";
import { QdrantVectorStore } from "@llamaindex/qdrant";
import {
Document,
storageContextFromDefaults,
VectorStoreIndex,
} from "llamaindex";
const embedding = new JinaAIEmbedding({
apiKey: process.env.JINAAI_API_KEY,
model: "jina-embeddings-v3",
});
async function main() {
const docs = [new Document({ text: "Lorem ipsum dolor sit amet" })];
const vectorStore = new QdrantVectorStore({
url: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY,
embeddingModel: embedding,
collectionName: "jina_test",
});
const storageContext = await storageContextFromDefaults({ vectorStore });
await VectorStoreIndex.fromDocuments(docs, { storageContext });
console.log("Inizialized vector store successfully");
}
void main().catch((err) => console.error(err));
+2 -1
View File
@@ -1,5 +1,6 @@
import { FireworksEmbedding, FireworksLLM } from "@llamaindex/fireworks";
import { PDFReader } from "@llamaindex/readers/pdf";
import { FireworksEmbedding, FireworksLLM, VectorStoreIndex } from "llamaindex";
import { VectorStoreIndex } from "llamaindex";
import { Settings } from "llamaindex";
+1 -1
View File
@@ -1,4 +1,4 @@
import { TogetherEmbedding, TogetherLLM } from "llamaindex";
import { TogetherEmbedding, TogetherLLM } from "@llamaindex/together";
// process.env.TOGETHER_API_KEY is required
const together = new TogetherLLM({
+2 -7
View File
@@ -1,12 +1,7 @@
import fs from "node:fs/promises";
import {
Document,
Settings,
TogetherEmbedding,
TogetherLLM,
VectorStoreIndex,
} from "llamaindex";
import { TogetherEmbedding, TogetherLLM } from "@llamaindex/together";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
// Update llm to use TogetherAI
Settings.llm = new TogetherLLM({
+1 -1
View File
@@ -15,7 +15,7 @@ async function main() {
tools: [
{
metadata: {
name: "wikipedia_tool",
name: "wikipedia_search",
description: "A tool that uses a query engine to search Wikipedia.",
parameters: {
type: "object",
+1 -1
View File
@@ -14,7 +14,7 @@ type WikipediaToolParams = {
};
const DEFAULT_META_DATA: ToolMetadata<JSONSchemaType<WikipediaParameter>> = {
name: "wikipedia_tool",
name: "wikipedia_search",
description: "A tool that uses a query engine to search Wikipedia.",
parameters: {
type: "object",
+20
View File
@@ -1,5 +1,25 @@
# @llamaindex/autotool
## 6.0.8
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 6.0.7
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
## 6.0.6
### Patch Changes
- llamaindex@0.9.6
## 6.0.5
### Patch Changes
@@ -1,5 +1,28 @@
# @llamaindex/autotool-01-node-example
## 0.0.89
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
- @llamaindex/autotool@6.0.8
## 0.0.88
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
- @llamaindex/autotool@6.0.7
## 0.0.87
### Patch Changes
- llamaindex@0.9.6
- @llamaindex/autotool@6.0.6
## 0.0.86
### Patch Changes
@@ -13,5 +13,5 @@
"scripts": {
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
},
"version": "0.0.86"
"version": "0.0.89"
}
@@ -1,5 +1,28 @@
# @llamaindex/autotool-02-next-example
## 0.1.133
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
- @llamaindex/autotool@6.0.8
## 0.1.132
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
- @llamaindex/autotool@6.0.7
## 0.1.131
### Patch Changes
- llamaindex@0.9.6
- @llamaindex/autotool@6.0.6
## 0.1.130
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/autotool-02-next-example",
"private": true,
"version": "0.1.130",
"version": "0.1.133",
"scripts": {
"dev": "next dev",
"build": "next build",
+1 -1
View File
@@ -6,7 +6,7 @@
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
"directory": "packages/autotool"
},
"version": "6.0.5",
"version": "6.0.8",
"description": "auto transpile your JS function to LLM Agent compatible",
"files": [
"dist",
+15
View File
@@ -1,5 +1,20 @@
# @llamaindex/cloud
## 3.0.7
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 3.0.6
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 3.0.5
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloud",
"version": "3.0.5",
"version": "3.0.7",
"type": "module",
"license": "MIT",
"scripts": {
+16
View File
@@ -1,5 +1,21 @@
# @llamaindex/community
## 0.0.88
### Patch Changes
- e28c29d: Added Llama 3.3 70B Instruct support
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 0.0.87
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 0.0.86
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/community",
"description": "Community package for LlamaIndexTS",
"version": "0.0.86",
"version": "0.0.88",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
@@ -81,6 +81,7 @@ export const BEDROCK_MODELS = {
META_LLAMA3_2_3B_INSTRUCT: "meta.llama3-2-3b-instruct-v1:0",
META_LLAMA3_2_11B_INSTRUCT: "meta.llama3-2-11b-instruct-v1:0",
META_LLAMA3_2_90B_INSTRUCT: "meta.llama3-2-90b-instruct-v1:0",
META_LLAMA3_3_70B_INSTRUCT: "meta.llama3-3-70b-instruct-v1:0",
MISTRAL_7B_INSTRUCT: "mistral.mistral-7b-instruct-v0:2",
MISTRAL_MIXTRAL_7B_INSTRUCT: "mistral.mixtral-8x7b-instruct-v0:1",
MISTRAL_MIXTRAL_LARGE_2402: "mistral.mistral-large-2402-v1:0",
@@ -107,6 +108,7 @@ 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_META_LLAMA_3_3_70B_INSTRUCT: "us.meta.llama3-3-70b-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",
@@ -151,6 +153,8 @@ export const INFERENCE_TO_BEDROCK_MAP: Record<
BEDROCK_MODELS.META_LLAMA3_2_11B_INSTRUCT,
[INFERENCE_BEDROCK_MODELS.US_META_LLAMA_3_2_90B_INSTRUCT]:
BEDROCK_MODELS.META_LLAMA3_2_90B_INSTRUCT,
[INFERENCE_BEDROCK_MODELS.US_META_LLAMA_3_3_70B_INSTRUCT]:
BEDROCK_MODELS.META_LLAMA3_3_70B_INSTRUCT,
[INFERENCE_BEDROCK_MODELS.US_AMAZON_NOVA_PRO_1]:
BEDROCK_MODELS.AMAZON_NOVA_PRO_1,
@@ -212,6 +216,7 @@ const CHAT_ONLY_MODELS = {
[BEDROCK_MODELS.META_LLAMA3_2_3B_INSTRUCT]: 131000,
[BEDROCK_MODELS.META_LLAMA3_2_11B_INSTRUCT]: 128000,
[BEDROCK_MODELS.META_LLAMA3_2_90B_INSTRUCT]: 128000,
[BEDROCK_MODELS.META_LLAMA3_3_70B_INSTRUCT]: 128000,
[BEDROCK_MODELS.MISTRAL_7B_INSTRUCT]: 32000,
[BEDROCK_MODELS.MISTRAL_MIXTRAL_7B_INSTRUCT]: 32000,
[BEDROCK_MODELS.MISTRAL_MIXTRAL_LARGE_2402]: 32000,
@@ -252,6 +257,7 @@ export const STREAMING_MODELS = new Set([
BEDROCK_MODELS.META_LLAMA3_2_3B_INSTRUCT,
BEDROCK_MODELS.META_LLAMA3_2_11B_INSTRUCT,
BEDROCK_MODELS.META_LLAMA3_2_90B_INSTRUCT,
BEDROCK_MODELS.META_LLAMA3_3_70B_INSTRUCT,
BEDROCK_MODELS.MISTRAL_7B_INSTRUCT,
BEDROCK_MODELS.MISTRAL_MIXTRAL_7B_INSTRUCT,
BEDROCK_MODELS.MISTRAL_MIXTRAL_LARGE_2402,
@@ -273,6 +279,7 @@ 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.META_LLAMA3_3_70B_INSTRUCT,
BEDROCK_MODELS.AMAZON_NOVA_PRO_1,
BEDROCK_MODELS.AMAZON_NOVA_LITE_1,
BEDROCK_MODELS.AMAZON_NOVA_MICRO_1,
@@ -318,6 +325,7 @@ export const BEDROCK_MODEL_MAX_TOKENS: Partial<Record<BEDROCK_MODELS, number>> =
[BEDROCK_MODELS.META_LLAMA3_2_3B_INSTRUCT]: 2048,
[BEDROCK_MODELS.META_LLAMA3_2_11B_INSTRUCT]: 2048,
[BEDROCK_MODELS.META_LLAMA3_2_90B_INSTRUCT]: 2048,
[BEDROCK_MODELS.META_LLAMA3_3_70B_INSTRUCT]: 2048,
};
const DEFAULT_BEDROCK_PARAMS = {
+14
View File
@@ -1,5 +1,19 @@
# @llamaindex/core
## 0.5.6
### Patch Changes
- beb922b: Fix edge runtime builds by adding missing packages to env package. Make gpt-tokenizer optional for llamaindex to reduce package size.
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
## 0.5.5
### Patch Changes
- 5668970: feat: Support AgentWorkflow
## 0.5.4
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/core",
"type": "module",
"version": "0.5.4",
"version": "0.5.6",
"description": "LlamaIndex Core Module",
"exports": {
"./agent": {
+4
View File
@@ -215,6 +215,10 @@ export type ToolMetadata<
* @link https://json-schema.org/understanding-json-schema
*/
parameters?: Parameters;
/**
* Whether the tool requires workflow context to be passed in.
*/
requireContext?: boolean;
};
/**
+15 -1
View File
@@ -59,14 +59,28 @@ export class FunctionTool<T, R extends JSONValue | Promise<JSONValue>>
}
call = (input: T) => {
if (this.#metadata.requireContext) {
const inputWithContext = input as Record<string, unknown>;
if (!inputWithContext.context) {
throw new Error(
"Tool call requires context, but context parameter is missing",
);
}
}
if (this.#zodType) {
const result = this.#zodType.safeParse(input);
if (result.success) {
return this.#fn.call(null, result.data);
if (this.#metadata.requireContext) {
const { context } = input as Record<string, unknown>;
return this.#fn.call(null, { context, ...result.data });
} else {
return this.#fn.call(null, result.data);
}
} else {
console.warn(result.error.errors);
}
}
return this.#fn.call(null, input);
};
}
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/env
## 0.1.29
### Patch Changes
- beb922b: Fix edge runtime builds by adding missing packages to env package. Make gpt-tokenizer optional for llamaindex to reduce package size.
## 0.1.28
### Patch Changes
+8 -17
View File
@@ -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.28",
"version": "0.1.29",
"type": "module",
"types": "dist/index.d.ts",
"module": "dist/index.js",
@@ -120,31 +120,22 @@
"@types/node": "^22.9.0",
"@types/readable-stream": "^4.0.15",
"bunchee": "6.3.4",
"gpt-tokenizer": "^2.6.2",
"pathe": "^1.1.2",
"vitest": "^2.1.5"
},
"peerDependencies": {
"dependencies": {
"pathe": "^1.1.2",
"@aws-crypto/sha256-js": "^5.2.0",
"js-tiktoken": "^1.0.12"
},
"peerDependencies": {
"@huggingface/transformers": "^3.0.2",
"gpt-tokenizer": "^2.5.0",
"js-tiktoken": "^1.0.12",
"pathe": "^1.1.2"
"gpt-tokenizer": "^2.5.0"
},
"peerDependenciesMeta": {
"@aws-crypto/sha256-js": {
"optional": true
},
"@huggingface/transformers": {
"optional": true
},
"pathe": {
"optional": true
},
"tiktoken": {
"optional": true
},
"js-tiktoken": {
"gpt-tokenizer": {
"optional": true
}
}
+37 -9
View File
@@ -1,20 +1,48 @@
import { getEncoding } from "js-tiktoken";
import type { Tokenizer } from "./types.js";
import { Tokenizers } from "./types.js";
import cl100kBase from "gpt-tokenizer";
function tryLoadGptTokenizer() {
try {
// eslint-disable-next-line @typescript-eslint/no-require-imports
return require("gpt-tokenizer"); // using require for CommonJS compatibility
} catch (e) {
return null;
}
}
const gptTokenizerModule = tryLoadGptTokenizer();
class TokenizerSingleton {
#defaultTokenizer: Tokenizer;
constructor() {
this.#defaultTokenizer = {
encode: (text: string): Uint32Array => {
return new Uint32Array(cl100kBase.encode(text));
},
decode: (tokens: Uint32Array) => {
return cl100kBase.decode(tokens);
},
};
// Use gpt-tokenizer if available, otherwise use js-tiktoken
if (gptTokenizerModule) {
this.#defaultTokenizer = {
encode: (text: string): Uint32Array => {
return new Uint32Array(gptTokenizerModule.encode(text));
},
decode: (tokens: Uint32Array): string => {
return gptTokenizerModule.decode(Array.from(tokens));
},
};
} else {
// Fall back to js-tiktoken which is always available
// Note: js-tiktoken it's 60x slower than gpt-tokenizer
const encoding = getEncoding("cl100k_base");
this.#defaultTokenizer = {
encode: (text: string) => {
return new Uint32Array(encoding.encode(text));
},
decode: (tokens: Uint32Array) => {
const numberArray = Array.from(tokens);
const text = encoding.decode(numberArray);
const uint8Array = new TextEncoder().encode(text);
return new TextDecoder().decode(uint8Array);
},
};
}
}
tokenizer(encoding?: Tokenizers): Tokenizer {
+20
View File
@@ -1,5 +1,25 @@
# @llamaindex/experimental
## 0.0.158
### Patch Changes
- Updated dependencies [bbc8c87]
- llamaindex@0.9.8
## 0.0.157
### Patch Changes
- Updated dependencies [beb922b]
- llamaindex@0.9.7
## 0.0.156
### Patch Changes
- llamaindex@0.9.6
## 0.0.155
### Patch Changes
+2 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/experimental",
"description": "Experimental package for LlamaIndexTS",
"version": "0.0.155",
"version": "0.0.158",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
@@ -55,12 +55,10 @@
"dev": "concurrently \"pnpm run build:esm --watch\" \"pnpm run build:cjs --watch\" \"pnpm run build:type --watch\""
},
"devDependencies": {
"@aws-crypto/sha256-js": "^5.2.0",
"@swc/cli": "^0.5.0",
"@swc/core": "^1.9.2",
"@types/jsonpath": "^0.2.4",
"concurrently": "^9.1.0",
"pathe": "^1.1.2"
"concurrently": "^9.1.0"
},
"dependencies": {
"@types/lodash": "^4.17.7",
+32
View File
@@ -1,5 +1,37 @@
# llamaindex
## 0.9.8
### Patch Changes
- bbc8c87: fix: prefer using embedding model from vector store
- Updated dependencies [4b49428]
- @llamaindex/workflow@0.0.14
## 0.9.7
### Patch Changes
- beb922b: Fix edge runtime builds by adding missing packages to env package. Make gpt-tokenizer optional for llamaindex to reduce package size.
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
- @llamaindex/cloud@3.0.7
- @llamaindex/node-parser@1.0.6
- @llamaindex/openai@0.1.58
- @llamaindex/workflow@0.0.13
## 0.9.6
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
- @llamaindex/workflow@0.0.12
- @llamaindex/cloud@3.0.6
- @llamaindex/node-parser@1.0.5
- @llamaindex/openai@0.1.57
## 0.9.5
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "llamaindex",
"version": "0.9.5",
"version": "0.9.8",
"license": "MIT",
"type": "module",
"keywords": [
@@ -25,12 +25,12 @@
"@llamaindex/env": "workspace:*",
"@llamaindex/node-parser": "workspace:*",
"@llamaindex/openai": "workspace:*",
"@llamaindex/workflow": "workspace:*",
"@types/lodash": "^4.17.7",
"@types/node": "^22.9.0",
"ajv": "^8.17.1",
"lodash": "^4.17.21",
"magic-bytes.js": "^1.10.0",
"gpt-tokenizer": "^2.6.2"
"magic-bytes.js": "^1.10.0"
},
"devDependencies": {
"@swc/cli": "^0.5.0",
@@ -1 +0,0 @@
export * from "@llamaindex/openai";
@@ -1,5 +0,0 @@
export * from "@llamaindex/core/embeddings";
export { FireworksEmbedding } from "./fireworks.js";
export * from "./JinaAIEmbedding.js";
export * from "./OpenAIEmbedding.js";
export { TogetherEmbedding } from "./together.js";
+3 -2
View File
@@ -22,6 +22,7 @@ export {
export * from "@llamaindex/core/agent";
export * from "@llamaindex/core/chat-engine";
export * from "@llamaindex/core/data-structs";
export * from "@llamaindex/core/embeddings";
export {
CallbackManager,
DEFAULT_BASE_URL,
@@ -65,9 +66,10 @@ export * from "@llamaindex/core/storage/doc-store";
export * from "@llamaindex/core/storage/index-store";
export * from "@llamaindex/core/storage/kv-store";
export * from "@llamaindex/core/utils";
export * from "@llamaindex/openai";
export * from "@llamaindex/workflow/agent";
export * from "./agent/index.js";
export * from "./cloud/index.js";
export * from "./embeddings/index.js";
export * from "./engines/chat/index.js";
export * from "./engines/query/index.js";
export * from "./evaluation/index.js";
@@ -75,7 +77,6 @@ export * from "./extractors/index.js";
export * from "./indices/index.js";
export * from "./ingestion/index.js";
export { imageToDataUrl } from "./internal/utils.js";
export * from "./llm/index.js";
export * from "./node-parser.js";
export * from "./objects/index.js";
export * from "./OutputParser.js";
-3
View File
@@ -1,8 +1,5 @@
export * from "./index.edge.js";
// TODO: clean up, move to jinaai package
export { JinaAIEmbedding } from "./embeddings/JinaAIEmbedding.js";
// Don't export file-system stores for non-node.js runtime on top level,
// as we cannot guarantee that they will work in other environments
export * from "./storage/index.js";
@@ -175,7 +175,7 @@ export class VectorStoreIndex extends BaseIndex<IndexDict> {
for (const type in nodeMap) {
const nodes = nodeMap[type as ModalityType];
const embedModel =
this.embedModel ?? this.vectorStores[type as ModalityType]?.embedModel;
this.vectorStores[type as ModalityType]?.embedModel ?? this.embedModel;
if (embedModel && nodes) {
await embedModel(nodes, {
logProgress: options?.logProgress,
-4
View File
@@ -1,4 +0,0 @@
export { DeepSeekLLM } from "./deepseek.js";
export { FireworksLLM } from "./fireworks.js";
export * from "./openai.js";
export { TogetherLLM } from "./together.js";
-1
View File
@@ -1 +0,0 @@
export * from "@llamaindex/openai";
@@ -1,13 +1,11 @@
import { Document } from "@llamaindex/core/schema";
import { Settings } from "llamaindex";
import { OpenAIEmbedding } from "llamaindex/embeddings/index";
import { OpenAI, OpenAIEmbedding, Settings } from "llamaindex";
import {
KeywordExtractor,
QuestionsAnsweredExtractor,
SummaryExtractor,
TitleExtractor,
} from "llamaindex/extractors/index";
import { OpenAI } from "llamaindex/llm/openai";
import { SentenceSplitter } from "llamaindex/node-parser";
import { afterAll, beforeAll, describe, expect, test, vi } from "vitest";
import {
+1 -1
View File
@@ -1,7 +1,7 @@
import { describe, expect, test } from "vitest";
// from unittest.mock import patch
import { OpenAI } from "llamaindex/llm/index";
import { OpenAI } from "llamaindex";
import { LLMSingleSelector } from "llamaindex/selectors/index";
import { mocStructuredkLlmGeneration } from "./utility/mockOpenAI.js";
@@ -20,13 +20,13 @@ describe("SummaryIndex", () => {
let storageContext: StorageContext;
beforeAll(async () => {
storageContext = await storageContextFromDefaults({
persistDir: testDir,
});
const embedModel = new OpenAIEmbedding();
mockEmbeddingModel(embedModel);
Settings.embedModel = embedModel;
storageContext = await storageContextFromDefaults({
persistDir: testDir,
});
});
afterAll(() => {
@@ -9,7 +9,7 @@ import { DocStoreStrategy } from "llamaindex/ingestion/strategies/index";
import { mkdtemp, rm } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { afterAll, beforeAll, describe, expect, test, vi } from "vitest";
import { afterAll, beforeAll, describe, expect, it, test, vi } from "vitest";
const testDir = await mkdtemp(join(tmpdir(), "test-"));
@@ -24,6 +24,10 @@ describe("VectorStoreIndex", () => {
) => Promise<Array<number>>;
beforeAll(async () => {
const embedModel = new OpenAIEmbedding();
mockEmbeddingModel(embedModel);
Settings.embedModel = embedModel;
storageContext = await mockStorageContext(testDir);
testStrategy = async (
strategy: DocStoreStrategy,
@@ -41,10 +45,6 @@ describe("VectorStoreIndex", () => {
}
return entries;
};
const embedModel = new OpenAIEmbedding();
mockEmbeddingModel(embedModel);
Settings.embedModel = embedModel;
});
afterAll(() => {
@@ -65,3 +65,28 @@ describe("VectorStoreIndex", () => {
await rm(testDir, { recursive: true });
});
});
describe("[VectorStoreIndex] use embedding model", () => {
it("should use embedding model passed in options instead of Settings", async () => {
const documents = [new Document({ text: "This needs to be embedded" })];
// Create mock embedding models
const settingsEmbedModel = new OpenAIEmbedding();
const customEmbedModel = new OpenAIEmbedding();
// Mock the embedding models using the utility function
mockEmbeddingModel(settingsEmbedModel);
mockEmbeddingModel(customEmbedModel);
// Add spies to track calls
const settingsSpy = vi.spyOn(settingsEmbedModel, "getTextEmbeddings");
const customSpy = vi.spyOn(customEmbedModel, "getTextEmbeddings");
Settings.embedModel = settingsEmbedModel;
const storageContext = await mockStorageContext(testDir, customEmbedModel); // setup custom embedding model
await VectorStoreIndex.fromDocuments(documents, { storageContext });
expect(customSpy).toHaveBeenCalled();
expect(settingsSpy).not.toHaveBeenCalled();
});
});
@@ -1,8 +1,6 @@
import type { CallbackManager } from "@llamaindex/core/global";
import type { LLMChatParamsBase } from "llamaindex";
import { Settings } from "llamaindex";
import type { OpenAIEmbedding } from "llamaindex/embeddings/OpenAIEmbedding";
import { OpenAI } from "llamaindex/llm/openai";
import type { LLMChatParamsBase, OpenAIEmbedding } from "llamaindex";
import { OpenAI, Settings } from "llamaindex";
import { vi } from "vitest";
export const DEFAULT_LLM_TEXT_OUTPUT = "MOCK_TOKEN_1-MOCK_TOKEN_2";
@@ -1,14 +1,27 @@
import { OpenAIEmbedding, storageContextFromDefaults } from "llamaindex";
import {
BaseEmbedding,
OpenAIEmbedding,
storageContextFromDefaults,
} from "llamaindex";
import { mockEmbeddingModel } from "./mockOpenAI.js";
export async function mockStorageContext(testDir: string) {
export async function mockStorageContext(
testDir: string,
embeddingModel?: BaseEmbedding,
) {
const storageContext = await storageContextFromDefaults({
persistDir: testDir,
});
for (const store of Object.values(storageContext.vectorStores)) {
store.embedModel = new OpenAIEmbedding();
mockEmbeddingModel(store.embedModel as OpenAIEmbedding);
if (embeddingModel) {
// use embeddingModel if it is passed in
store.embedModel = embeddingModel;
} else {
// mock an embedding model for testing
store.embedModel = new OpenAIEmbedding();
mockEmbeddingModel(store.embedModel as OpenAIEmbedding);
}
}
return storageContext;
}
+15
View File
@@ -1,5 +1,20 @@
# @llamaindex/node-parser
## 1.0.6
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 1.0.5
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 1.0.4
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/node-parser",
"version": "1.0.4",
"version": "1.0.6",
"description": "Node parser for LlamaIndex",
"type": "module",
"exports": {
+15
View File
@@ -1,5 +1,20 @@
# @llamaindex/anthropic
## 0.2.4
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 0.2.3
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 0.2.2
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/anthropic",
"description": "Anthropic Adapter for LlamaIndex",
"version": "0.2.2",
"version": "0.2.4",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+17
View File
@@ -1,5 +1,22 @@
# @llamaindex/clip
## 0.0.42
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
- @llamaindex/openai@0.1.58
## 0.0.41
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
- @llamaindex/openai@0.1.57
## 0.0.40
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/clip",
"description": "Clip Embedding Adapter for LlamaIndex",
"version": "0.0.40",
"version": "0.0.42",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+15
View File
@@ -1,5 +1,20 @@
# @llamaindex/cohere
## 0.0.11
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 0.0.10
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 0.0.9
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/cohere",
"description": "Cohere Adapter for LlamaIndex",
"version": "0.0.9",
"version": "0.0.11",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+17
View File
@@ -1,5 +1,22 @@
# @llamaindex/deepinfra
## 0.0.42
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
- @llamaindex/openai@0.1.58
## 0.0.41
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
- @llamaindex/openai@0.1.57
## 0.0.40
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/deepinfra",
"description": "Deepinfra Adapter for LlamaIndex",
"version": "0.0.40",
"version": "0.0.42",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -0,0 +1,7 @@
# @llamaindex/deepseek
## 0.0.2
### Patch Changes
- bbc8c87: fix: prefer using embedding model from vector store
+39
View File
@@ -0,0 +1,39 @@
{
"name": "@llamaindex/deepseek",
"description": "DeepSeek Adapter for LlamaIndex",
"version": "0.0.2",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"exports": {
".": {
"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": "git+https://github.com/run-llama/LlamaIndexTS.git",
"directory": "packages/providers/deepseek"
},
"scripts": {
"build": "bunchee",
"dev": "bunchee --watch"
},
"devDependencies": {
"bunchee": "6.3.4"
},
"dependencies": {
"@llamaindex/env": "workspace:*",
"@llamaindex/openai": "workspace:*"
}
}
+1
View File
@@ -0,0 +1 @@
export * from "./llm";
+19
View File
@@ -0,0 +1,19 @@
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"outDir": "./lib",
"tsBuildInfoFile": "./lib/.tsbuildinfo"
},
"include": ["./src"],
"references": [
{
"path": "../openai/tsconfig.json"
},
{
"path": "../../env/tsconfig.json"
}
]
}
@@ -0,0 +1,7 @@
# @llamaindex/fireworks
## 0.0.2
### Patch Changes
- bbc8c87: fix: prefer using embedding model from vector store
+39
View File
@@ -0,0 +1,39 @@
{
"name": "@llamaindex/fireworks",
"description": "Fireworks Adapter for LlamaIndex",
"version": "0.0.2",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"exports": {
".": {
"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": "git+https://github.com/run-llama/LlamaIndexTS.git",
"directory": "packages/providers/fireworks"
},
"scripts": {
"build": "bunchee",
"dev": "bunchee --watch"
},
"devDependencies": {
"bunchee": "6.3.4"
},
"dependencies": {
"@llamaindex/env": "workspace:*",
"@llamaindex/openai": "workspace:*"
}
}
@@ -0,0 +1,2 @@
export * from "./embedding";
export * from "./llm";
@@ -0,0 +1,19 @@
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"outDir": "./lib",
"tsBuildInfoFile": "./lib/.tsbuildinfo"
},
"include": ["./src"],
"references": [
{
"path": "../openai/tsconfig.json"
},
{
"path": "../../env/tsconfig.json"
}
]
}
+21
View File
@@ -1,5 +1,26 @@
# @llamaindex/google
## 0.0.14
### Patch Changes
- 7ee4968: Add Gemini 2.0 Pro Experimental
## 0.0.13
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 0.0.12
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 0.0.11
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/google",
"description": "Google Adapter for LlamaIndex",
"version": "0.0.11",
"version": "0.0.14",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+2
View File
@@ -57,6 +57,7 @@ export const GEMINI_MODEL_INFO_MAP: Record<GEMINI_MODEL, GeminiModelInfo> = {
[GEMINI_MODEL.GEMINI_2_0_FLASH]: { contextWindow: 10 ** 6 },
[GEMINI_MODEL.GEMINI_2_0_FLASH_LITE_PREVIEW]: { contextWindow: 10 ** 6 },
[GEMINI_MODEL.GEMINI_2_0_FLASH_THINKING_EXP]: { contextWindow: 32768 },
[GEMINI_MODEL.GEMINI_2_0_PRO_EXPERIMENTAL]: { contextWindow: 2 * 10 ** 6 },
};
const SUPPORT_TOOL_CALL_MODELS: GEMINI_MODEL[] = [
@@ -72,6 +73,7 @@ const SUPPORT_TOOL_CALL_MODELS: GEMINI_MODEL[] = [
GEMINI_MODEL.GEMINI_PRO_1_5_FLASH_LATEST,
GEMINI_MODEL.GEMINI_2_0_FLASH_EXPERIMENTAL,
GEMINI_MODEL.GEMINI_2_0_FLASH,
GEMINI_MODEL.GEMINI_2_0_PRO_EXPERIMENTAL,
];
const DEFAULT_GEMINI_PARAMS = {
+1
View File
@@ -68,6 +68,7 @@ export enum GEMINI_MODEL {
GEMINI_2_0_FLASH = "gemini-2.0-flash-001",
GEMINI_2_0_FLASH_LITE_PREVIEW = "gemini-2.0-flash-lite-preview-02-05",
GEMINI_2_0_FLASH_THINKING_EXP = "gemini-2.0-flash-thinking-exp-01-21",
GEMINI_2_0_PRO_EXPERIMENTAL = "gemini-2.0-pro-exp-02-05",
}
export interface GeminiModelInfo {
+14
View File
@@ -1,5 +1,19 @@
# @llamaindex/groq
## 0.0.57
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/openai@0.1.58
## 0.0.56
### Patch Changes
- @llamaindex/openai@0.1.57
## 0.0.55
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/groq",
"description": "Groq Adapter for LlamaIndex",
"version": "0.0.55",
"version": "0.0.57",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,22 @@
# @llamaindex/huggingface
## 0.0.42
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
- @llamaindex/openai@0.1.58
## 0.0.41
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
- @llamaindex/openai@0.1.57
## 0.0.40
### Patch Changes

Some files were not shown because too many files have changed in this diff Show More