mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-01 22:14:03 -04:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cb73f77bb8 | |||
| 8bf1ca1701 | |||
| 58b3ee52e0 | |||
| 4bac71d6a2 | |||
| a3cbcb31a2 | |||
| bbc8c8787d | |||
| 4b49428f57 | |||
| 7ee4968b06 | |||
| 0111f5c8b0 | |||
| beb922b743 | |||
| e28c29d1f5 | |||
| 008cccd9f1 | |||
| 081698d68c | |||
| ab5fe5d7a0 | |||
| 56689707d3 | |||
| fd74ba4bf1 | |||
| b2634e47ca | |||
| ad3c7f1ec1 | |||
| 335f2df626 | |||
| ee963644bf | |||
| cb256f24ae | |||
| 1ccc04ecb5 | |||
| 034639153b | |||
| 1914b52708 | |||
| cb021e7196 | |||
| c2aa836b35 |
@@ -41,8 +41,15 @@ pnpm install
|
||||
|
||||
### Build the packages
|
||||
|
||||
You'll need Turbo to build the packages. If you don't have it, you can run it with `pnpx`.
|
||||
|
||||
To build all packages, run:
|
||||
|
||||
```shell
|
||||
# Build all packages
|
||||
pnpx turbo build --filter "./packages/*"
|
||||
|
||||
# Or if you have turbo installed, you can run:
|
||||
turbo build --filter "./packages/*"
|
||||
```
|
||||
|
||||
|
||||
@@ -1,5 +1,79 @@
|
||||
# @llamaindex/doc
|
||||
|
||||
## 0.1.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4bac71d: Support binding additional argument to function tool
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
- @llamaindex/cloud@3.0.8
|
||||
- llamaindex@0.9.9
|
||||
- @llamaindex/node-parser@1.0.7
|
||||
- @llamaindex/openai@0.1.59
|
||||
- @llamaindex/readers@2.0.7
|
||||
- @llamaindex/workflow@0.0.15
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
- @llamaindex/cloud@3.0.5
|
||||
- llamaindex@0.9.5
|
||||
- @llamaindex/node-parser@1.0.4
|
||||
- @llamaindex/openai@0.1.56
|
||||
- @llamaindex/readers@2.0.4
|
||||
|
||||
## 0.1.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb256f2]
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/openai@0.1.55
|
||||
- @llamaindex/core@0.5.3
|
||||
- llamaindex@0.9.4
|
||||
- @llamaindex/cloud@3.0.4
|
||||
- @llamaindex/node-parser@1.0.3
|
||||
- @llamaindex/readers@2.0.3
|
||||
|
||||
## 0.1.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/doc",
|
||||
"version": "0.1.3",
|
||||
"version": "0.1.9",
|
||||
"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.
|
||||
|
||||
+3
-2
@@ -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();
|
||||
|
||||
|
||||
+3
-2
@@ -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>",
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: VoyageAI
|
||||
---
|
||||
|
||||
To use VoyageAI embeddings, you need to import `VoyageAIEmbedding` from `@llamaindex/voyage-ai`.
|
||||
|
||||
## Installation
|
||||
|
||||
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
|
||||
|
||||
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
|
||||
```shell tab="npm"
|
||||
npm install llamaindex @llamaindex/voyage-ai
|
||||
```
|
||||
|
||||
```shell tab="yarn"
|
||||
yarn add llamaindex @llamaindex/voyage-ai
|
||||
```
|
||||
|
||||
```shell tab="pnpm"
|
||||
pnpm add llamaindex @llamaindex/voyage-ai
|
||||
```
|
||||
</Tabs>
|
||||
|
||||
```ts
|
||||
import { VoyageAIEmbedding } from "@llamaindex/voyage-ai";
|
||||
import { Document, Settings, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
Settings.embedModel = new VoyageAIEmbedding();
|
||||
|
||||
const document = new Document({ text: essay, id_: "essay" });
|
||||
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
|
||||
const queryEngine = index.asQueryEngine();
|
||||
|
||||
const query = "What is the meaning of life?";
|
||||
|
||||
const results = await queryEngine.query({
|
||||
query,
|
||||
});
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
- [VoyageAIEmbedding](/docs/api/classes/VoyageAIEmbedding)
|
||||
@@ -37,6 +37,31 @@ Settings.embedModel = new OpenAIEmbedding({
|
||||
|
||||
For local embeddings, you can use the [HuggingFace](/docs/llamaindex/modules/embeddings/available_embeddings/huggingface) embedding model.
|
||||
|
||||
## Local Ollama Embeddings With Remote Host
|
||||
|
||||
Ollama provides a way to run embedding models locally or connect to a remote Ollama instance. This is particularly useful when you need to:
|
||||
- Run embeddings without relying on external API services
|
||||
- Use custom embedding models
|
||||
- Connect to a shared Ollama instance in your network
|
||||
|
||||
The ENV variable method you will find elsewhere sometimes may not work with the OllamaEmbedding class. Also note, you'll need to change the host
|
||||
in the Ollama server to `0.0.0.0` to allow connections from other machines.
|
||||
|
||||
To use Ollama embeddings with a remote host, you need to specify the host URL in the configuration like this:
|
||||
|
||||
```typescript
|
||||
import { OllamaEmbedding } from "@llamaindex/ollama";
|
||||
import { Settings } from "llamaindex";
|
||||
|
||||
// Configure Ollama with a remote host
|
||||
Settings.embedModel = new OllamaEmbedding({
|
||||
model: "nomic-embed-text",
|
||||
config: {
|
||||
host: "http://your-ollama-host:11434"
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## Available Embeddings
|
||||
|
||||
Most available embeddings are listed in the sidebar on the left.
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Tools
|
||||
---
|
||||
|
||||
A "tool" is a utility that can be called by an agent on behalf of an LLM.
|
||||
A tool can be called to perform custom actions, or retrieve extra information based on the LLM-generated input.
|
||||
A result from a tool call can be used by subsequent steps in a workflow, or to compute a final answer.
|
||||
For example, a "weather tool" could fetch some live weather information from a geographical location.
|
||||
|
||||
## Function tool
|
||||
|
||||
Function tools are implemented with the `FunctionTool` class.
|
||||
A `FunctionTool` is constructed from a function with signature
|
||||
```ts
|
||||
(input: T, additionalArg?: AdditionalToolArgument) => R
|
||||
```
|
||||
where
|
||||
- `input` is generated by the LLM, `T` is the type defined by the tool `parameters`
|
||||
- `additionalArg` is an optional extra argument, see "Binding" below
|
||||
- `R` is the return type
|
||||
|
||||
### Binding
|
||||
|
||||
An additional argument can be bound to a tool, each tool call will be passed
|
||||
- the input provided by the LLM
|
||||
- the additional argument (extends object)
|
||||
|
||||
Note: calling the `bind` method will return a new `FunctionTool` instance, without modifying the tool which `bind` is called on.
|
||||
|
||||
Example to pass a `userToken` as additional argument:
|
||||
```ts
|
||||
// first arg is LLM input, second is bound arg
|
||||
const queryKnowledgeBase = async ({ question }, { userToken }) => {
|
||||
const response = await fetch(`https://knowledge-base.com?token=${userToken}&query=${question}`);
|
||||
// ...
|
||||
};
|
||||
|
||||
// define tool as usual
|
||||
const kbTool = FunctionTool.from(queryKnowledgeBase, {
|
||||
name: 'queryKnowledgeBase',
|
||||
description: 'Query knowledge base',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
question: {
|
||||
type: 'string',
|
||||
description: 'The user question',
|
||||
},
|
||||
},
|
||||
required: ['question'],
|
||||
},
|
||||
});
|
||||
|
||||
// create an agent
|
||||
const additionalArg = { userToken: 'abcd1234' };
|
||||
const kbAgent = new LLMAgent({
|
||||
tools: [kbTool.bind(additionalArg)],
|
||||
// llm, systemPrompt etc
|
||||
})
|
||||
```
|
||||
@@ -1,5 +1,44 @@
|
||||
# @llamaindex/cloudflare-worker-agent-test
|
||||
|
||||
## 0.0.143
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 0.0.138
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 0.0.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||
"version": "0.0.137",
|
||||
"version": "0.0.143",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,35 @@
|
||||
# @llamaindex/llama-parse-browser-test
|
||||
|
||||
## 0.0.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@3.0.8
|
||||
|
||||
## 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
|
||||
|
||||
- @llamaindex/cloud@3.0.5
|
||||
|
||||
## 0.0.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@3.0.4
|
||||
|
||||
## 0.0.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/llama-parse-browser-test",
|
||||
"private": true,
|
||||
"version": "0.0.48",
|
||||
"version": "0.0.53",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,5 +1,44 @@
|
||||
# @llamaindex/next-agent-test
|
||||
|
||||
## 0.1.143
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 0.1.138
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 0.1.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-agent-test",
|
||||
"version": "0.1.137",
|
||||
"version": "0.1.143",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,44 @@
|
||||
# test-edge-runtime
|
||||
|
||||
## 0.1.142
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 0.1.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 0.1.136
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||
"version": "0.1.136",
|
||||
"version": "0.1.142",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,54 @@
|
||||
# @llamaindex/next-node-runtime
|
||||
|
||||
## 0.1.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
- @llamaindex/huggingface@0.0.43
|
||||
- @llamaindex/readers@2.0.7
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
- @llamaindex/huggingface@0.0.40
|
||||
- @llamaindex/readers@2.0.4
|
||||
|
||||
## 0.1.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
- @llamaindex/huggingface@0.0.39
|
||||
- @llamaindex/readers@2.0.3
|
||||
|
||||
## 0.1.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-node-runtime-test",
|
||||
"version": "0.1.3",
|
||||
"version": "0.1.9",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,44 @@
|
||||
# vite-import-llamaindex
|
||||
|
||||
## 0.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 0.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 0.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "vite-import-llamaindex",
|
||||
"private": true,
|
||||
"version": "0.0.3",
|
||||
"version": "0.0.9",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -1,5 +1,45 @@
|
||||
# @llamaindex/waku-query-engine-test
|
||||
|
||||
## 0.0.143
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 0.0.138
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 0.0.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/waku-query-engine-test",
|
||||
"version": "0.0.137",
|
||||
"version": "0.0.143",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,223 @@
|
||||
# examples
|
||||
|
||||
## 0.2.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [58b3ee5]
|
||||
- Updated dependencies [4bac71d]
|
||||
- Updated dependencies [8bf1ca1]
|
||||
- @llamaindex/google@0.1.0
|
||||
- @llamaindex/core@0.5.7
|
||||
- @llamaindex/anthropic@0.2.5
|
||||
- @llamaindex/cloud@3.0.8
|
||||
- llamaindex@0.9.9
|
||||
- @llamaindex/node-parser@1.0.7
|
||||
- @llamaindex/clip@0.0.43
|
||||
- @llamaindex/cohere@0.0.12
|
||||
- @llamaindex/deepinfra@0.0.43
|
||||
- @llamaindex/huggingface@0.0.43
|
||||
- @llamaindex/jinaai@0.0.3
|
||||
- @llamaindex/mistral@0.0.12
|
||||
- @llamaindex/mixedbread@0.0.12
|
||||
- @llamaindex/ollama@0.0.47
|
||||
- @llamaindex/openai@0.1.59
|
||||
- @llamaindex/portkey-ai@0.0.40
|
||||
- @llamaindex/replicate@0.0.40
|
||||
- @llamaindex/astra@0.0.12
|
||||
- @llamaindex/azure@0.1.7
|
||||
- @llamaindex/chroma@0.0.12
|
||||
- @llamaindex/firestore@1.0.5
|
||||
- @llamaindex/milvus@0.1.7
|
||||
- @llamaindex/mongodb@0.0.12
|
||||
- @llamaindex/pinecone@0.0.12
|
||||
- @llamaindex/postgres@0.0.40
|
||||
- @llamaindex/qdrant@0.1.7
|
||||
- @llamaindex/upstash@0.0.12
|
||||
- @llamaindex/weaviate@0.0.12
|
||||
- @llamaindex/vercel@0.0.18
|
||||
- @llamaindex/voyage-ai@1.0.4
|
||||
- @llamaindex/readers@2.0.7
|
||||
- @llamaindex/workflow@0.0.15
|
||||
- @llamaindex/deepseek@0.0.3
|
||||
- @llamaindex/fireworks@0.0.3
|
||||
- @llamaindex/groq@0.0.58
|
||||
- @llamaindex/together@0.0.3
|
||||
- @llamaindex/vllm@0.0.29
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
- @llamaindex/cloud@3.0.5
|
||||
- llamaindex@0.9.5
|
||||
- @llamaindex/node-parser@1.0.4
|
||||
- @llamaindex/anthropic@0.2.2
|
||||
- @llamaindex/clip@0.0.40
|
||||
- @llamaindex/cohere@0.0.9
|
||||
- @llamaindex/deepinfra@0.0.40
|
||||
- @llamaindex/google@0.0.11
|
||||
- @llamaindex/huggingface@0.0.40
|
||||
- @llamaindex/mistral@0.0.9
|
||||
- @llamaindex/mixedbread@0.0.9
|
||||
- @llamaindex/ollama@0.0.44
|
||||
- @llamaindex/openai@0.1.56
|
||||
- @llamaindex/portkey-ai@0.0.37
|
||||
- @llamaindex/replicate@0.0.37
|
||||
- @llamaindex/astra@0.0.9
|
||||
- @llamaindex/azure@0.1.4
|
||||
- @llamaindex/chroma@0.0.9
|
||||
- @llamaindex/firestore@1.0.2
|
||||
- @llamaindex/milvus@0.1.4
|
||||
- @llamaindex/mongodb@0.0.9
|
||||
- @llamaindex/pinecone@0.0.9
|
||||
- @llamaindex/postgres@0.0.37
|
||||
- @llamaindex/qdrant@0.1.4
|
||||
- @llamaindex/upstash@0.0.9
|
||||
- @llamaindex/weaviate@0.0.9
|
||||
- @llamaindex/vercel@0.0.15
|
||||
- @llamaindex/voyage-ai@1.0.1
|
||||
- @llamaindex/readers@2.0.4
|
||||
- @llamaindex/groq@0.0.55
|
||||
- @llamaindex/vllm@0.0.26
|
||||
|
||||
## 0.2.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb256f2]
|
||||
- Updated dependencies [cb021e7]
|
||||
- Updated dependencies [0346391]
|
||||
- @llamaindex/openai@0.1.55
|
||||
- @llamaindex/core@0.5.3
|
||||
- llamaindex@0.9.4
|
||||
- @llamaindex/voyage-ai@1.0.0
|
||||
- @llamaindex/clip@0.0.39
|
||||
- @llamaindex/deepinfra@0.0.39
|
||||
- @llamaindex/groq@0.0.54
|
||||
- @llamaindex/huggingface@0.0.39
|
||||
- @llamaindex/azure@0.1.3
|
||||
- @llamaindex/milvus@0.1.3
|
||||
- @llamaindex/qdrant@0.1.3
|
||||
- @llamaindex/vllm@0.0.25
|
||||
- @llamaindex/cloud@3.0.4
|
||||
- @llamaindex/node-parser@1.0.3
|
||||
- @llamaindex/anthropic@0.2.1
|
||||
- @llamaindex/cohere@0.0.8
|
||||
- @llamaindex/google@0.0.10
|
||||
- @llamaindex/mistral@0.0.8
|
||||
- @llamaindex/mixedbread@0.0.8
|
||||
- @llamaindex/ollama@0.0.43
|
||||
- @llamaindex/portkey-ai@0.0.36
|
||||
- @llamaindex/replicate@0.0.36
|
||||
- @llamaindex/astra@0.0.8
|
||||
- @llamaindex/chroma@0.0.8
|
||||
- @llamaindex/firestore@1.0.1
|
||||
- @llamaindex/mongodb@0.0.8
|
||||
- @llamaindex/pinecone@0.0.8
|
||||
- @llamaindex/postgres@0.0.36
|
||||
- @llamaindex/upstash@0.0.8
|
||||
- @llamaindex/weaviate@0.0.8
|
||||
- @llamaindex/vercel@0.0.14
|
||||
- @llamaindex/readers@2.0.3
|
||||
|
||||
## 0.2.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
@@ -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);
|
||||
});
|
||||
@@ -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);
|
||||
});
|
||||
@@ -0,0 +1,114 @@
|
||||
import fs from "fs";
|
||||
import {
|
||||
AgentToolCall,
|
||||
AgentToolCallResult,
|
||||
AgentWorkflow,
|
||||
FunctionAgent,
|
||||
FunctionTool,
|
||||
} from "llamaindex";
|
||||
import { z } from "zod";
|
||||
|
||||
import { Anthropic } from "@llamaindex/anthropic";
|
||||
|
||||
const llm = new Anthropic({
|
||||
model: "claude-3-5-sonnet",
|
||||
});
|
||||
|
||||
const weatherTool = FunctionTool.from(
|
||||
(query: { location: string }) => {
|
||||
return `The weather in ${query.location} is sunny`;
|
||||
},
|
||||
{
|
||||
name: "weather",
|
||||
description: "Get the weather",
|
||||
parameters: z.object({
|
||||
location: z.string({
|
||||
description: "The location to get the weather for",
|
||||
}),
|
||||
}),
|
||||
},
|
||||
);
|
||||
|
||||
const inflationTool = FunctionTool.from(
|
||||
(query: { location: string }) => {
|
||||
return `The inflation in ${query.location} is 2%`;
|
||||
},
|
||||
{
|
||||
name: "inflation",
|
||||
description: "Get the inflation",
|
||||
parameters: z.object({
|
||||
location: z.string({
|
||||
description: "The location to get the inflation for",
|
||||
}),
|
||||
}),
|
||||
},
|
||||
);
|
||||
|
||||
const saveFileTool = FunctionTool.from(
|
||||
({ content }: { content: string }) => {
|
||||
const filePath = "./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 creating concise reports about weather and inflation data",
|
||||
systemPrompt: `You are a professional writer. Your task is to create a clear and concise report summarizing the weather and inflation data provided. Once complete, save the report 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 about the inflation and weather in the location provided.`,
|
||||
tools: [inflationTool, weatherTool],
|
||||
canHandoffTo: [reportAgent],
|
||||
llm,
|
||||
});
|
||||
|
||||
const workflow = new AgentWorkflow({
|
||||
agents: [researchAgent, reportAgent],
|
||||
rootAgent: researchAgent,
|
||||
});
|
||||
|
||||
const context = workflow.run(
|
||||
"Write a report about New York weather and inflation",
|
||||
);
|
||||
|
||||
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);
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { LLMAgent } from "llamaindex";
|
||||
import { stdin as input, stdout as output } from "node:process";
|
||||
import readline from "node:readline/promises";
|
||||
|
||||
const agent = new LLMAgent({ tools: [] });
|
||||
|
||||
(async () => {
|
||||
const rl = readline.createInterface({ input, output });
|
||||
|
||||
while (true) {
|
||||
const query = await rl.question("User: ");
|
||||
|
||||
const startTime = Date.now();
|
||||
const stream = await agent.chat({ message: query, stream: true });
|
||||
const timeToGetFirstChunk = Date.now() - startTime;
|
||||
process.stdout.write(
|
||||
`Time to get first chunk from LLMAgent: ${timeToGetFirstChunk}ms\n`,
|
||||
);
|
||||
process.stdout.write("Assistant with LLMAgent: ");
|
||||
for await (const chunk of stream) {
|
||||
process.stdout.write(chunk.response);
|
||||
}
|
||||
process.stdout.write("\n");
|
||||
}
|
||||
})();
|
||||
@@ -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");
|
||||
})();
|
||||
@@ -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() {
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
|
||||
|
||||
(async () => {
|
||||
const llm = new OpenAI({ model: "gpt-4-1106-preview", temperature: 0.1 });
|
||||
const llm = new OpenAI({ model: "gpt-4.5-preview", temperature: 0.1 });
|
||||
|
||||
// complete api
|
||||
const response1 = await llm.complete({ prompt: "How are you?" });
|
||||
|
||||
+41
-36
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/examples",
|
||||
"version": "0.2.2",
|
||||
"version": "0.2.8",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
@@ -11,38 +11,43 @@
|
||||
"@azure/cosmos": "^4.1.1",
|
||||
"@azure/identity": "^4.4.1",
|
||||
"@azure/search-documents": "^12.1.0",
|
||||
"@llamaindex/anthropic": "^0.2.0",
|
||||
"@llamaindex/astra": "^0.0.7",
|
||||
"@llamaindex/azure": "^0.1.2",
|
||||
"@llamaindex/chroma": "^0.0.7",
|
||||
"@llamaindex/clip": "^0.0.38",
|
||||
"@llamaindex/cloud": "^3.0.3",
|
||||
"@llamaindex/cohere": "^0.0.7",
|
||||
"@llamaindex/core": "^0.5.2",
|
||||
"@llamaindex/deepinfra": "^0.0.38",
|
||||
"@llamaindex/env": "^0.1.28",
|
||||
"@llamaindex/firestore": "^1.0.0",
|
||||
"@llamaindex/google": "^0.0.9",
|
||||
"@llamaindex/groq": "^0.0.53",
|
||||
"@llamaindex/huggingface": "^0.0.38",
|
||||
"@llamaindex/milvus": "^0.1.2",
|
||||
"@llamaindex/mistral": "^0.0.7",
|
||||
"@llamaindex/mixedbread": "^0.0.7",
|
||||
"@llamaindex/mongodb": "^0.0.7",
|
||||
"@llamaindex/node-parser": "^1.0.2",
|
||||
"@llamaindex/ollama": "^0.0.42",
|
||||
"@llamaindex/openai": "^0.1.54",
|
||||
"@llamaindex/pinecone": "^0.0.7",
|
||||
"@llamaindex/portkey-ai": "^0.0.35",
|
||||
"@llamaindex/postgres": "^0.0.35",
|
||||
"@llamaindex/qdrant": "^0.1.2",
|
||||
"@llamaindex/readers": "^2.0.2",
|
||||
"@llamaindex/replicate": "^0.0.35",
|
||||
"@llamaindex/upstash": "^0.0.7",
|
||||
"@llamaindex/vercel": "^0.0.13",
|
||||
"@llamaindex/vllm": "^0.0.24",
|
||||
"@llamaindex/weaviate": "^0.0.7",
|
||||
"@llamaindex/workflow": "^0.0.11",
|
||||
"@llamaindex/anthropic": "^0.2.5",
|
||||
"@llamaindex/astra": "^0.0.12",
|
||||
"@llamaindex/azure": "^0.1.7",
|
||||
"@llamaindex/chroma": "^0.0.12",
|
||||
"@llamaindex/clip": "^0.0.43",
|
||||
"@llamaindex/cloud": "^3.0.8",
|
||||
"@llamaindex/cohere": "^0.0.12",
|
||||
"@llamaindex/core": "^0.5.7",
|
||||
"@llamaindex/deepinfra": "^0.0.43",
|
||||
"@llamaindex/env": "^0.1.29",
|
||||
"@llamaindex/firestore": "^1.0.5",
|
||||
"@llamaindex/google": "^0.1.0",
|
||||
"@llamaindex/groq": "^0.0.58",
|
||||
"@llamaindex/huggingface": "^0.0.43",
|
||||
"@llamaindex/milvus": "^0.1.7",
|
||||
"@llamaindex/mistral": "^0.0.12",
|
||||
"@llamaindex/mixedbread": "^0.0.12",
|
||||
"@llamaindex/mongodb": "^0.0.12",
|
||||
"@llamaindex/node-parser": "^1.0.7",
|
||||
"@llamaindex/ollama": "^0.0.47",
|
||||
"@llamaindex/openai": "^0.1.59",
|
||||
"@llamaindex/pinecone": "^0.0.12",
|
||||
"@llamaindex/portkey-ai": "^0.0.40",
|
||||
"@llamaindex/postgres": "^0.0.40",
|
||||
"@llamaindex/qdrant": "^0.1.7",
|
||||
"@llamaindex/readers": "^2.0.7",
|
||||
"@llamaindex/replicate": "^0.0.40",
|
||||
"@llamaindex/upstash": "^0.0.12",
|
||||
"@llamaindex/vercel": "^0.0.18",
|
||||
"@llamaindex/vllm": "^0.0.29",
|
||||
"@llamaindex/voyage-ai": "^1.0.4",
|
||||
"@llamaindex/weaviate": "^0.0.12",
|
||||
"@llamaindex/workflow": "^0.0.15",
|
||||
"@llamaindex/deepseek": "^0.0.3",
|
||||
"@llamaindex/fireworks": "^0.0.3",
|
||||
"@llamaindex/together": "^0.0.3",
|
||||
"@llamaindex/jinaai": "^0.0.3",
|
||||
"@notionhq/client": "^2.2.15",
|
||||
"@pinecone-database/pinecone": "^4.0.0",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
@@ -51,11 +56,11 @@
|
||||
"commander": "^12.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"js-tiktoken": "^1.0.14",
|
||||
"llamaindex": "^0.9.3",
|
||||
"llamaindex": "^0.9.9",
|
||||
"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",
|
||||
|
||||
@@ -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));
|
||||
@@ -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));
|
||||
@@ -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,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({
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import { VoyageAIEmbedding } from "@llamaindex/voyage-ai";
|
||||
|
||||
async function main() {
|
||||
// API token can be provided as an environment variable too
|
||||
// using VOYAGE_API_TOKEN variable
|
||||
const apiKey = process.env.VOYAGE_API_TOKEN ?? "YOUR_API_TOKEN";
|
||||
const model = "voyage-3-lite";
|
||||
const embedModel = new VoyageAIEmbedding({
|
||||
model,
|
||||
apiKey,
|
||||
});
|
||||
const texts = ["hello", "world"];
|
||||
const embeddings = await embedModel.getTextEmbeddingsBatch(texts);
|
||||
console.log(`\nWe have ${embeddings.length} embeddings`);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
+1
-1
@@ -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",
|
||||
|
||||
@@ -1,5 +1,44 @@
|
||||
# @llamaindex/autotool
|
||||
|
||||
## 6.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 6.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 6.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,5 +1,50 @@
|
||||
# @llamaindex/autotool-01-node-example
|
||||
|
||||
## 0.0.90
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
- @llamaindex/autotool@6.0.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
- @llamaindex/autotool@6.0.5
|
||||
|
||||
## 0.0.85
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
- @llamaindex/autotool@6.0.4
|
||||
|
||||
## 0.0.84
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
"scripts": {
|
||||
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
||||
},
|
||||
"version": "0.0.84"
|
||||
"version": "0.0.90"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,50 @@
|
||||
# @llamaindex/autotool-02-next-example
|
||||
|
||||
## 0.1.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
- @llamaindex/autotool@6.0.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
- @llamaindex/autotool@6.0.5
|
||||
|
||||
## 0.1.129
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
- @llamaindex/autotool@6.0.4
|
||||
|
||||
## 0.1.128
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool-02-next-example",
|
||||
"private": true,
|
||||
"version": "0.1.128",
|
||||
"version": "0.1.134",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/autotool"
|
||||
},
|
||||
"version": "6.0.3",
|
||||
"version": "6.0.9",
|
||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
## 3.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
|
||||
## 3.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/core@0.5.3
|
||||
|
||||
## 3.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloud",
|
||||
"version": "3.0.3",
|
||||
"version": "3.0.8",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,43 @@
|
||||
# @llamaindex/community
|
||||
|
||||
## 0.0.89
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
|
||||
## 0.0.85
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 1914b52: Added Claude 3.7 Sonnet support
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/core@0.5.3
|
||||
|
||||
## 0.0.84
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/community",
|
||||
"description": "Community package for LlamaIndexTS",
|
||||
"version": "0.0.84",
|
||||
"version": "0.0.89",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
|
||||
@@ -6,7 +6,19 @@ export type ToolChoice =
|
||||
| { type: "auto" }
|
||||
| { type: "tool"; name: string };
|
||||
|
||||
export type AnthropicAdditionalChatOptions = { toolChoice: ToolChoice };
|
||||
export interface ThinkingConfigDisabled {
|
||||
type: "disabled";
|
||||
}
|
||||
|
||||
export interface ThinkingConfigEnabled {
|
||||
budget_tokens: number;
|
||||
type: "enabled";
|
||||
}
|
||||
|
||||
export type AnthropicAdditionalChatOptions = {
|
||||
toolChoice: ToolChoice;
|
||||
thinking?: ThinkingConfigDisabled | ThinkingConfigEnabled;
|
||||
};
|
||||
|
||||
type Usage = {
|
||||
input_tokens: number;
|
||||
|
||||
@@ -69,6 +69,7 @@ export const BEDROCK_MODELS = {
|
||||
ANTHROPIC_CLAUDE_3_5_SONNET: "anthropic.claude-3-5-sonnet-20240620-v1:0",
|
||||
ANTHROPIC_CLAUDE_3_5_SONNET_V2: "anthropic.claude-3-5-sonnet-20241022-v2:0",
|
||||
ANTHROPIC_CLAUDE_3_5_HAIKU: "anthropic.claude-3-5-haiku-20241022-v1:0",
|
||||
ANTHROPIC_CLAUDE_3_7_SONNET: "anthropic.claude-3-7-sonnet-20250219-v1:0",
|
||||
META_LLAMA2_13B_CHAT: "meta.llama2-13b-chat-v1",
|
||||
META_LLAMA2_70B_CHAT: "meta.llama2-70b-chat-v1",
|
||||
META_LLAMA3_8B_INSTRUCT: "meta.llama3-8b-instruct-v1:0",
|
||||
@@ -80,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",
|
||||
@@ -100,10 +102,13 @@ export const INFERENCE_BEDROCK_MODELS = {
|
||||
"us.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
||||
US_ANTHROPIC_CLAUDE_3_5_SONNET_V2:
|
||||
"us.anthropic.claude-3-5-sonnet-20241022-v2:0",
|
||||
US_ANTHROPIC_CLAUDE_3_7_SONNET:
|
||||
"us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
||||
US_META_LLAMA_3_2_1B_INSTRUCT: "us.meta.llama3-2-1b-instruct-v1:0",
|
||||
US_META_LLAMA_3_2_3B_INSTRUCT: "us.meta.llama3-2-3b-instruct-v1:0",
|
||||
US_META_LLAMA_3_2_11B_INSTRUCT: "us.meta.llama3-2-11b-instruct-v1:0",
|
||||
US_META_LLAMA_3_2_90B_INSTRUCT: "us.meta.llama3-2-90b-instruct-v1:0",
|
||||
US_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",
|
||||
@@ -113,6 +118,8 @@ export const INFERENCE_BEDROCK_MODELS = {
|
||||
EU_ANTHROPIC_CLAUDE_3_SONNET: "eu.anthropic.claude-3-sonnet-20240229-v1:0",
|
||||
EU_ANTHROPIC_CLAUDE_3_5_SONNET:
|
||||
"eu.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
||||
EU_ANTHROPIC_CLAUDE_3_7_SONNET:
|
||||
"eu.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
||||
EU_META_LLAMA_3_2_1B_INSTRUCT: "eu.meta.llama3-2-1b-instruct-v1:0",
|
||||
EU_META_LLAMA_3_2_3B_INSTRUCT: "eu.meta.llama3-2-3b-instruct-v1:0",
|
||||
};
|
||||
@@ -132,6 +139,8 @@ export const INFERENCE_TO_BEDROCK_MAP: Record<
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_SONNET,
|
||||
[INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_5_SONNET]:
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
|
||||
[INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_7_SONNET]:
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
|
||||
[INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_5_SONNET_V2]:
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
|
||||
[INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_5_HAIKU]:
|
||||
@@ -144,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,
|
||||
@@ -158,6 +169,8 @@ export const INFERENCE_TO_BEDROCK_MAP: Record<
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_SONNET,
|
||||
[INFERENCE_BEDROCK_MODELS.EU_ANTHROPIC_CLAUDE_3_5_SONNET]:
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
|
||||
[INFERENCE_BEDROCK_MODELS.EU_ANTHROPIC_CLAUDE_3_7_SONNET]:
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
|
||||
[INFERENCE_BEDROCK_MODELS.EU_META_LLAMA_3_2_1B_INSTRUCT]:
|
||||
BEDROCK_MODELS.META_LLAMA3_2_1B_INSTRUCT,
|
||||
[INFERENCE_BEDROCK_MODELS.EU_META_LLAMA_3_2_3B_INSTRUCT]:
|
||||
@@ -191,6 +204,7 @@ const CHAT_ONLY_MODELS = {
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET]: 200000,
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2]: 200000,
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU]: 200000,
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET]: 200000,
|
||||
[BEDROCK_MODELS.META_LLAMA2_13B_CHAT]: 2048,
|
||||
[BEDROCK_MODELS.META_LLAMA2_70B_CHAT]: 4096,
|
||||
[BEDROCK_MODELS.META_LLAMA3_8B_INSTRUCT]: 8192,
|
||||
@@ -202,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,
|
||||
@@ -230,6 +245,7 @@ export const STREAMING_MODELS = new Set([
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU,
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
|
||||
BEDROCK_MODELS.META_LLAMA2_13B_CHAT,
|
||||
BEDROCK_MODELS.META_LLAMA2_70B_CHAT,
|
||||
BEDROCK_MODELS.META_LLAMA3_8B_INSTRUCT,
|
||||
@@ -241,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,
|
||||
@@ -256,11 +273,13 @@ export const TOOL_CALL_MODELS: BEDROCK_MODELS[] = [
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU,
|
||||
BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
|
||||
BEDROCK_MODELS.META_LLAMA3_1_405B_INSTRUCT,
|
||||
BEDROCK_MODELS.META_LLAMA3_2_1B_INSTRUCT,
|
||||
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,
|
||||
@@ -294,6 +313,7 @@ export const BEDROCK_MODEL_MAX_TOKENS: Partial<Record<BEDROCK_MODELS, number>> =
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET]: 4096,
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2]: 8192,
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU]: 8192,
|
||||
[BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET]: 8192,
|
||||
[BEDROCK_MODELS.META_LLAMA2_13B_CHAT]: 2048,
|
||||
[BEDROCK_MODELS.META_LLAMA2_70B_CHAT]: 2048,
|
||||
[BEDROCK_MODELS.META_LLAMA3_8B_INSTRUCT]: 2048,
|
||||
@@ -305,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 = {
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/core
|
||||
|
||||
## 0.5.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4bac71d: Support binding additional argument to function tool
|
||||
|
||||
## 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
|
||||
|
||||
- ad3c7f1: fix: streaming issues with LLMAgent
|
||||
|
||||
## 0.5.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- cb021e7: feat(node-parser): support async function
|
||||
|
||||
## 0.5.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/core",
|
||||
"type": "module",
|
||||
"version": "0.5.2",
|
||||
"version": "0.5.7",
|
||||
"description": "LlamaIndex Core Module",
|
||||
"exports": {
|
||||
"./agent": {
|
||||
|
||||
@@ -193,7 +193,7 @@ export abstract class AgentWorker<
|
||||
return new ReadableStream<
|
||||
TaskStepOutput<AI, Store, AdditionalMessageOptions, AdditionalChatOptions>
|
||||
>({
|
||||
start: async (controller) => {
|
||||
pull: async (controller) => {
|
||||
for await (const stepOutput of taskOutputStream) {
|
||||
this.#taskSet.add(stepOutput.taskStep);
|
||||
if (stepOutput.isLast) {
|
||||
@@ -209,23 +209,31 @@ export abstract class AgentWorker<
|
||||
}
|
||||
const { output, taskStep } = stepOutput;
|
||||
if (output instanceof ReadableStream) {
|
||||
const [pipStream, finalStream] = output.tee();
|
||||
stepOutput.output = finalStream;
|
||||
const reader = pipStream.getReader();
|
||||
const { value } = await reader.read();
|
||||
reader.releaseLock();
|
||||
let content: string = value!.delta;
|
||||
for await (const chunk of pipStream) {
|
||||
content += chunk.delta;
|
||||
}
|
||||
taskStep.context.store.messages = [
|
||||
...taskStep.context.store.messages,
|
||||
{
|
||||
role: "assistant",
|
||||
content,
|
||||
options: value!.options,
|
||||
},
|
||||
];
|
||||
let content = "";
|
||||
let options: AdditionalMessageOptions | undefined = undefined;
|
||||
const transformedStream = output.pipeThrough(
|
||||
new TransformStream({
|
||||
transform(chunk, controller) {
|
||||
content += chunk.delta;
|
||||
if (!options && chunk.options) {
|
||||
options = chunk.options;
|
||||
}
|
||||
controller.enqueue(chunk); // Pass the chunk through unchanged
|
||||
},
|
||||
// When stream finishes, store the accumulated message in context
|
||||
flush() {
|
||||
taskStep.context.store.messages = [
|
||||
...taskStep.context.store.messages,
|
||||
{
|
||||
role: "assistant",
|
||||
content,
|
||||
options,
|
||||
},
|
||||
];
|
||||
},
|
||||
}),
|
||||
);
|
||||
stepOutput.output = transformedStream;
|
||||
}
|
||||
controller.enqueue(stepOutput);
|
||||
controller.close();
|
||||
|
||||
@@ -215,13 +215,19 @@ 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;
|
||||
};
|
||||
|
||||
/**
|
||||
* Simple Tool interface. Likely to change.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
export interface BaseTool<Input = any> {
|
||||
export interface BaseTool<
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
Input = any,
|
||||
> {
|
||||
/**
|
||||
* This could be undefined if the implementation is not provided,
|
||||
* which might be the case when communicating with a llm.
|
||||
|
||||
@@ -7,21 +7,27 @@ import {
|
||||
TextNode,
|
||||
TransformComponent,
|
||||
} from "../schema";
|
||||
import { isPromise } from "../utils";
|
||||
|
||||
export abstract class NodeParser extends TransformComponent<BaseNode[]> {
|
||||
export abstract class NodeParser<
|
||||
Result extends TextNode[] | Promise<TextNode[]> =
|
||||
| TextNode[]
|
||||
| Promise<TextNode[]>,
|
||||
> extends TransformComponent<Result> {
|
||||
includeMetadata: boolean = true;
|
||||
includePrevNextRel: boolean = true;
|
||||
|
||||
constructor() {
|
||||
super((nodes: BaseNode[]): BaseNode[] => {
|
||||
super((nodes: BaseNode[]): Result => {
|
||||
// alex: should we fix `as` type?
|
||||
return this.getNodesFromDocuments(nodes as TextNode[]);
|
||||
});
|
||||
}
|
||||
|
||||
protected postProcessParsedNodes(
|
||||
nodes: TextNode[],
|
||||
nodes: Awaited<Result>,
|
||||
parentDocMap: Map<string, TextNode>,
|
||||
): TextNode[] {
|
||||
): Awaited<Result> {
|
||||
nodes.forEach((node, i) => {
|
||||
const parentDoc = parentDocMap.get(node.sourceNode?.nodeId || "");
|
||||
|
||||
@@ -73,9 +79,9 @@ export abstract class NodeParser extends TransformComponent<BaseNode[]> {
|
||||
protected abstract parseNodes(
|
||||
documents: TextNode[],
|
||||
showProgress?: boolean,
|
||||
): TextNode[];
|
||||
): Result;
|
||||
|
||||
public getNodesFromDocuments(documents: TextNode[]): TextNode[] {
|
||||
public getNodesFromDocuments(documents: TextNode[]): Result {
|
||||
const docsId: Map<string, TextNode> = new Map(
|
||||
documents.map((doc) => [doc.id_, doc]),
|
||||
);
|
||||
@@ -85,20 +91,36 @@ export abstract class NodeParser extends TransformComponent<BaseNode[]> {
|
||||
documents,
|
||||
});
|
||||
|
||||
const nodes = this.postProcessParsedNodes(
|
||||
this.parseNodes(documents),
|
||||
docsId,
|
||||
);
|
||||
const parsedNodes = this.parseNodes(documents);
|
||||
if (isPromise(parsedNodes)) {
|
||||
return parsedNodes.then((parsedNodes) => {
|
||||
const nodes = this.postProcessParsedNodes(
|
||||
parsedNodes as Awaited<Result>,
|
||||
docsId,
|
||||
);
|
||||
|
||||
callbackManager.dispatchEvent("node-parsing-end", {
|
||||
nodes,
|
||||
});
|
||||
callbackManager.dispatchEvent("node-parsing-end", {
|
||||
nodes,
|
||||
});
|
||||
|
||||
return nodes;
|
||||
return nodes;
|
||||
}) as Result;
|
||||
} else {
|
||||
const nodes = this.postProcessParsedNodes(
|
||||
parsedNodes as Awaited<Result>,
|
||||
docsId,
|
||||
);
|
||||
|
||||
callbackManager.dispatchEvent("node-parsing-end", {
|
||||
nodes,
|
||||
});
|
||||
|
||||
return nodes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export abstract class TextSplitter extends NodeParser {
|
||||
export abstract class TextSplitter extends NodeParser<TextNode[]> {
|
||||
abstract splitText(text: string): string[];
|
||||
|
||||
public splitTexts(texts: string[]): string[] {
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
} from "../schema";
|
||||
import { NodeParser } from "./base";
|
||||
|
||||
export class MarkdownNodeParser extends NodeParser {
|
||||
export class MarkdownNodeParser extends NodeParser<TextNode[]> {
|
||||
override parseNodes(nodes: TextNode[], showProgress?: boolean): TextNode[] {
|
||||
return nodes.reduce<TextNode[]>((allNodes, node) => {
|
||||
const markdownNodes = this.getNodesFromNode(node);
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
import { NodeParser } from "./base";
|
||||
import { splitBySentenceTokenizer, type TextSplitterFn } from "./utils";
|
||||
|
||||
export class SentenceWindowNodeParser extends NodeParser {
|
||||
export class SentenceWindowNodeParser extends NodeParser<TextNode[]> {
|
||||
static DEFAULT_WINDOW_SIZE = 3;
|
||||
static DEFAULT_WINDOW_METADATA_KEY = "window";
|
||||
static DEFAULT_ORIGINAL_TEXT_METADATA_KEY = "originalText";
|
||||
|
||||
@@ -4,40 +4,66 @@ import { zodToJsonSchema } from "zod-to-json-schema";
|
||||
import type { JSONValue } from "../global";
|
||||
import type { BaseTool, ToolMetadata } from "../llms";
|
||||
|
||||
export class FunctionTool<T, R extends JSONValue | Promise<JSONValue>>
|
||||
implements BaseTool<T>
|
||||
export class FunctionTool<
|
||||
T,
|
||||
R extends JSONValue | Promise<JSONValue>,
|
||||
AdditionalToolArgument extends object = object,
|
||||
> implements BaseTool<T>
|
||||
{
|
||||
#fn: (input: T) => R;
|
||||
#fn: (input: T, additionalArg?: AdditionalToolArgument) => R;
|
||||
#additionalArg: AdditionalToolArgument | undefined;
|
||||
readonly #metadata: ToolMetadata<JSONSchemaType<T>>;
|
||||
readonly #zodType: z.ZodType<T> | null = null;
|
||||
constructor(
|
||||
fn: (input: T) => R,
|
||||
fn: (input: T, additionalArg?: AdditionalToolArgument) => R,
|
||||
metadata: ToolMetadata<JSONSchemaType<T>>,
|
||||
zodType?: z.ZodType<T>,
|
||||
additionalArg?: AdditionalToolArgument,
|
||||
) {
|
||||
this.#fn = fn;
|
||||
this.#metadata = metadata;
|
||||
if (zodType) {
|
||||
this.#zodType = zodType;
|
||||
}
|
||||
this.#additionalArg = additionalArg;
|
||||
}
|
||||
|
||||
static from<T>(
|
||||
fn: (input: T) => JSONValue | Promise<JSONValue>,
|
||||
static from<T, AdditionalToolArgument extends object = object>(
|
||||
fn: (
|
||||
input: T,
|
||||
additionalArg?: AdditionalToolArgument,
|
||||
) => JSONValue | Promise<JSONValue>,
|
||||
schema: ToolMetadata<JSONSchemaType<T>>,
|
||||
): FunctionTool<T, JSONValue | Promise<JSONValue>>;
|
||||
static from<R extends z.ZodType>(
|
||||
fn: (input: z.infer<R>) => JSONValue | Promise<JSONValue>,
|
||||
): FunctionTool<T, JSONValue | Promise<JSONValue>, AdditionalToolArgument>;
|
||||
static from<
|
||||
R extends z.ZodType,
|
||||
AdditionalToolArgument extends object = object,
|
||||
>(
|
||||
fn: (
|
||||
input: z.infer<R>,
|
||||
additionalArg?: AdditionalToolArgument,
|
||||
) => JSONValue | Promise<JSONValue>,
|
||||
schema: Omit<ToolMetadata, "parameters"> & {
|
||||
parameters: R;
|
||||
},
|
||||
): FunctionTool<z.infer<R>, JSONValue | Promise<JSONValue>>;
|
||||
static from<T, R extends z.ZodType<T>>(
|
||||
fn: (input: T) => JSONValue | Promise<JSONValue>,
|
||||
): FunctionTool<
|
||||
z.infer<R>,
|
||||
JSONValue | Promise<JSONValue>,
|
||||
AdditionalToolArgument
|
||||
>;
|
||||
static from<
|
||||
T,
|
||||
R extends z.ZodType<T>,
|
||||
AdditionalToolArgument extends object = object,
|
||||
>(
|
||||
fn: (
|
||||
input: T,
|
||||
additionalArg?: AdditionalToolArgument,
|
||||
) => JSONValue | Promise<JSONValue>,
|
||||
schema: Omit<ToolMetadata, "parameters"> & {
|
||||
parameters: R;
|
||||
},
|
||||
): FunctionTool<T, JSONValue>;
|
||||
): FunctionTool<T, JSONValue, AdditionalToolArgument>;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
static from(fn: any, schema: any): any {
|
||||
if (schema.parameters instanceof z.ZodSchema) {
|
||||
@@ -58,15 +84,41 @@ export class FunctionTool<T, R extends JSONValue | Promise<JSONValue>>
|
||||
return this.#metadata as BaseTool<T>["metadata"];
|
||||
}
|
||||
|
||||
bind = (additionalArg: AdditionalToolArgument) => {
|
||||
return new FunctionTool(
|
||||
this.#fn,
|
||||
this.#metadata,
|
||||
this.#zodType ?? undefined,
|
||||
additionalArg,
|
||||
);
|
||||
};
|
||||
|
||||
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 },
|
||||
this.#additionalArg,
|
||||
);
|
||||
} else {
|
||||
return this.#fn.call(null, result.data, this.#additionalArg);
|
||||
}
|
||||
} else {
|
||||
console.warn(result.error.errors);
|
||||
}
|
||||
}
|
||||
return this.#fn.call(null, input);
|
||||
return this.#fn.call(null, input, this.#additionalArg);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import type { JSONValue } from "../global";
|
||||
|
||||
export const isPromise = <T>(obj: unknown): obj is Promise<T> => {
|
||||
return obj != null && typeof obj === "object" && "then" in obj;
|
||||
};
|
||||
|
||||
export const isAsyncIterable = (
|
||||
obj: unknown,
|
||||
): obj is AsyncIterable<unknown> => {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { validateAgentParams } from "@llamaindex/core/agent";
|
||||
import { LLMAgent, validateAgentParams } from "@llamaindex/core/agent";
|
||||
import { MockLLM } from "@llamaindex/core/utils";
|
||||
import { expect, test } from "vitest";
|
||||
import { ZodError } from "zod";
|
||||
|
||||
@@ -33,3 +34,62 @@ test("validate agent params", () => {
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
test("LLMAgent streaming: first chunk should be available immediately", async () => {
|
||||
const responseMessage =
|
||||
"This is a very long response message that should take a while to stream";
|
||||
const timeBetweenToken = 20; // delay time between tokens
|
||||
|
||||
const agent = new LLMAgent({
|
||||
tools: [],
|
||||
llm: new MockLLM({ responseMessage, timeBetweenToken }),
|
||||
});
|
||||
|
||||
const startTime = Date.now();
|
||||
const stream = await agent.chat({ message: "Hello", stream: true });
|
||||
|
||||
let fullResponse = "";
|
||||
let timeToGetFirstChunk: number | undefined;
|
||||
|
||||
for await (const chunk of stream) {
|
||||
expect(chunk).toHaveProperty("delta");
|
||||
fullResponse += chunk.delta;
|
||||
if (timeToGetFirstChunk === undefined) {
|
||||
timeToGetFirstChunk = Date.now() - startTime;
|
||||
}
|
||||
}
|
||||
|
||||
expect(fullResponse).toBe(responseMessage);
|
||||
|
||||
// the first chunk should be available immediately and no need the whole response to be sent
|
||||
expect(timeToGetFirstChunk).toBeLessThan(500);
|
||||
});
|
||||
|
||||
test("LLMAgent create task: first task should be executed immediately", async () => {
|
||||
const responseMessage =
|
||||
"This is a very long response message that should take a while to stream";
|
||||
const timeBetweenToken = 20; // delay time between tokens
|
||||
|
||||
const agent = new LLMAgent({
|
||||
tools: [],
|
||||
llm: new MockLLM({ responseMessage, timeBetweenToken }),
|
||||
});
|
||||
|
||||
const startTime = Date.now();
|
||||
const task = agent.createTask("Write a long paragraph", true, false, []);
|
||||
|
||||
let timeToGetFirstChunk: number | undefined;
|
||||
let output: ReadableStream | undefined;
|
||||
for await (const stepOutput of task) {
|
||||
if (timeToGetFirstChunk === undefined) {
|
||||
timeToGetFirstChunk = Date.now() - startTime;
|
||||
}
|
||||
if (stepOutput.output instanceof ReadableStream) {
|
||||
output = stepOutput.output;
|
||||
}
|
||||
}
|
||||
|
||||
expect(timeToGetFirstChunk).toBeLessThan(500);
|
||||
expect(output).toBeDefined();
|
||||
expect(output).toBeInstanceOf(ReadableStream);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import { NodeParser } from "@llamaindex/core/node-parser";
|
||||
import { TextNode } from "@llamaindex/core/schema";
|
||||
import { describe, expect, test } from "vitest";
|
||||
|
||||
describe("NodeParser", () => {
|
||||
test("node parser should allow async parse function", async () => {
|
||||
class MyNodeParser extends NodeParser<Promise<TextNode[]>> {
|
||||
protected async parseNodes(documents: TextNode[]): Promise<TextNode[]> {
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
return documents;
|
||||
}
|
||||
}
|
||||
|
||||
const nodeParser = new MyNodeParser();
|
||||
const nodes = [
|
||||
new TextNode({
|
||||
text: "Hello, world!",
|
||||
}),
|
||||
];
|
||||
const result = nodeParser(nodes);
|
||||
expect(result).toBeInstanceOf(Promise);
|
||||
await expect(result).resolves.toEqual(nodes);
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,5 @@
|
||||
import { FunctionTool } from "@llamaindex/core/tools";
|
||||
import { describe, test } from "vitest";
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
import { z } from "zod";
|
||||
|
||||
describe("FunctionTool", () => {
|
||||
@@ -32,4 +32,38 @@ describe("FunctionTool", () => {
|
||||
parameters: inputSchema,
|
||||
});
|
||||
});
|
||||
|
||||
test("bind additional argument", () => {
|
||||
type AdditionalHelloArgument = {
|
||||
question?: string;
|
||||
};
|
||||
|
||||
const hello = vi
|
||||
.fn()
|
||||
.mockImplementation((name: string, arg?: AdditionalHelloArgument) => {
|
||||
return `Hello ${name}. ${arg?.question ?? ""}`;
|
||||
});
|
||||
|
||||
const helloTool = FunctionTool.from<string, AdditionalHelloArgument>(
|
||||
hello,
|
||||
{
|
||||
name: "hello",
|
||||
description: "Says hello",
|
||||
},
|
||||
);
|
||||
|
||||
helloTool.call("Alice");
|
||||
expect(hello).to.toHaveBeenCalledOnce();
|
||||
expect(hello).to.toHaveBeenCalledWith("Alice", undefined);
|
||||
|
||||
hello.mockReset();
|
||||
|
||||
const additionalArg = {
|
||||
question: "How is it going?",
|
||||
};
|
||||
const helloBoundTool = helloTool.bind(additionalArg);
|
||||
helloBoundTool.call("Bob");
|
||||
expect(hello).to.toHaveBeenCalledOnce();
|
||||
expect(hello).to.toHaveBeenCalledWith("Bob", additionalArg);
|
||||
});
|
||||
});
|
||||
|
||||
Vendored
+6
@@ -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
|
||||
|
||||
Vendored
+8
-17
@@ -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
@@ -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 {
|
||||
|
||||
@@ -1,5 +1,44 @@
|
||||
# @llamaindex/experimental
|
||||
|
||||
## 0.0.159
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.9.9
|
||||
|
||||
## 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
|
||||
|
||||
- llamaindex@0.9.5
|
||||
|
||||
## 0.0.154
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- llamaindex@0.9.4
|
||||
|
||||
## 0.0.153
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/experimental",
|
||||
"description": "Experimental package for LlamaIndexTS",
|
||||
"version": "0.0.153",
|
||||
"version": "0.0.159",
|
||||
"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",
|
||||
|
||||
@@ -1,5 +1,70 @@
|
||||
# llamaindex
|
||||
|
||||
## 0.9.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
- @llamaindex/cloud@3.0.8
|
||||
- @llamaindex/node-parser@1.0.7
|
||||
- @llamaindex/openai@0.1.59
|
||||
- @llamaindex/workflow@0.0.15
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
- @llamaindex/cloud@3.0.5
|
||||
- @llamaindex/node-parser@1.0.4
|
||||
- @llamaindex/openai@0.1.56
|
||||
|
||||
## 0.9.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- cb021e7: feat(node-parser): support async function
|
||||
- Updated dependencies [cb256f2]
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/openai@0.1.55
|
||||
- @llamaindex/core@0.5.3
|
||||
- @llamaindex/cloud@3.0.4
|
||||
- @llamaindex/node-parser@1.0.3
|
||||
|
||||
## 0.9.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "llamaindex",
|
||||
"version": "0.9.3",
|
||||
"version": "0.9.9",
|
||||
"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";
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -296,7 +296,7 @@ export class KeywordTableIndex extends BaseIndex<KeywordTable> {
|
||||
await docStore.setDocumentHash(doc.id_, doc.hash);
|
||||
}
|
||||
|
||||
const nodes = Settings.nodeParser.getNodesFromDocuments(documents);
|
||||
const nodes = await Settings.nodeParser.getNodesFromDocuments(documents);
|
||||
const index = await KeywordTableIndex.init({
|
||||
nodes,
|
||||
storageContext,
|
||||
|
||||
@@ -145,7 +145,7 @@ export class SummaryIndex extends BaseIndex<IndexList> {
|
||||
await docStore.setDocumentHash(doc.id_, doc.hash);
|
||||
}
|
||||
|
||||
const nodes = Settings.nodeParser.getNodesFromDocuments(documents);
|
||||
const nodes = await Settings.nodeParser.getNodesFromDocuments(documents);
|
||||
|
||||
const index = await SummaryIndex.init({
|
||||
nodes,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
export { DeepSeekLLM } from "./deepseek.js";
|
||||
export { FireworksLLM } from "./fireworks.js";
|
||||
export * from "./openai.js";
|
||||
export { TogetherLLM } from "./together.js";
|
||||
@@ -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,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;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @llamaindex/node-parser
|
||||
|
||||
## 1.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
|
||||
## 1.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/core@0.5.3
|
||||
|
||||
## 1.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/node-parser",
|
||||
"version": "1.0.2",
|
||||
"version": "1.0.7",
|
||||
"description": "Node parser for LlamaIndex",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,5 +1,42 @@
|
||||
# @llamaindex/anthropic
|
||||
|
||||
## 0.2.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8bf1ca1: Support chat stream with tools for Anthropic LLM
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
|
||||
## 0.2.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/core@0.5.3
|
||||
|
||||
## 0.2.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/anthropic",
|
||||
"description": "Anthropic Adapter for LlamaIndex",
|
||||
"version": "0.2.0",
|
||||
"version": "0.2.5",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -13,7 +13,7 @@ import type {
|
||||
Tool,
|
||||
ToolUseBlock,
|
||||
} from "@anthropic-ai/sdk/resources/messages";
|
||||
import { wrapLLMEvent } from "@llamaindex/core/decorator";
|
||||
import { wrapEventCaller, wrapLLMEvent } from "@llamaindex/core/decorator";
|
||||
import type { JSONObject } from "@llamaindex/core/global";
|
||||
import type {
|
||||
BaseTool,
|
||||
@@ -22,6 +22,7 @@ import type {
|
||||
ChatResponseChunk,
|
||||
LLMChatParamsNonStreaming,
|
||||
LLMChatParamsStreaming,
|
||||
PartialToolCall,
|
||||
ToolCallLLMMessageOptions,
|
||||
} from "@llamaindex/core/llms";
|
||||
import { ToolCallLLM } from "@llamaindex/core/llms";
|
||||
@@ -378,6 +379,7 @@ export class Anthropic extends ToolCallLLM<
|
||||
AnthropicToolCallLLMMessageOptions
|
||||
>,
|
||||
): Promise<ChatResponse<AnthropicToolCallLLMMessageOptions>>;
|
||||
@wrapEventCaller
|
||||
@wrapLLMEvent
|
||||
async chat(
|
||||
params:
|
||||
@@ -445,19 +447,16 @@ export class Anthropic extends ToolCallLLM<
|
||||
),
|
||||
};
|
||||
|
||||
if (stream) {
|
||||
if (tools) {
|
||||
console.error("Tools are not supported in streaming mode");
|
||||
}
|
||||
return this.streamChat(anthropic, apiParams);
|
||||
}
|
||||
|
||||
if (tools?.length) {
|
||||
Object.assign(apiParams, {
|
||||
tools: this.prepareToolsForAPI(tools),
|
||||
});
|
||||
}
|
||||
|
||||
if (stream) {
|
||||
return this.streamChat(anthropic, apiParams);
|
||||
}
|
||||
|
||||
const response = await anthropic.messages.create(apiParams);
|
||||
|
||||
const toolUseBlock = response.content.filter(
|
||||
@@ -494,6 +493,7 @@ export class Anthropic extends ToolCallLLM<
|
||||
};
|
||||
}
|
||||
|
||||
@wrapEventCaller
|
||||
protected async *streamChat(
|
||||
anthropic: SDKAnthropic,
|
||||
params: MessageCreateParams,
|
||||
@@ -503,7 +503,9 @@ export class Anthropic extends ToolCallLLM<
|
||||
stream: true,
|
||||
});
|
||||
|
||||
let idx_counter: number = 0;
|
||||
let currentToolCall: PartialToolCall | null = null;
|
||||
let accumulatedToolInput = "";
|
||||
|
||||
for await (const part of stream) {
|
||||
const textContent =
|
||||
part.type === "content_block_delta" && part.delta.type === "text_delta"
|
||||
@@ -516,9 +518,48 @@ export class Anthropic extends ToolCallLLM<
|
||||
? part.delta.thinking
|
||||
: undefined;
|
||||
|
||||
if (
|
||||
part.type === "content_block_start" &&
|
||||
part.content_block.type === "tool_use"
|
||||
) {
|
||||
currentToolCall = {
|
||||
id: part.content_block.id,
|
||||
name: part.content_block.name,
|
||||
input: "",
|
||||
};
|
||||
accumulatedToolInput = "";
|
||||
continue;
|
||||
}
|
||||
|
||||
if (
|
||||
part.type === "content_block_delta" &&
|
||||
part.delta.type === "input_json_delta" &&
|
||||
currentToolCall
|
||||
) {
|
||||
accumulatedToolInput += part.delta.partial_json;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (part.type === "content_block_stop" && currentToolCall) {
|
||||
yield {
|
||||
raw: part,
|
||||
delta: "",
|
||||
options: {
|
||||
toolCall: [
|
||||
{
|
||||
id: currentToolCall.id,
|
||||
name: currentToolCall.name,
|
||||
input: accumulatedToolInput,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
currentToolCall = null;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!textContent && !thinking) continue;
|
||||
|
||||
idx_counter++;
|
||||
yield {
|
||||
raw: part,
|
||||
delta: textContent ?? "",
|
||||
|
||||
@@ -1,5 +1,47 @@
|
||||
# @llamaindex/clip
|
||||
|
||||
## 0.0.43
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
- @llamaindex/openai@0.1.59
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
- @llamaindex/openai@0.1.56
|
||||
|
||||
## 0.0.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb256f2]
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/openai@0.1.55
|
||||
- @llamaindex/core@0.5.3
|
||||
|
||||
## 0.0.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/clip",
|
||||
"description": "Clip Embedding Adapter for LlamaIndex",
|
||||
"version": "0.0.38",
|
||||
"version": "0.0.43",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @llamaindex/cohere
|
||||
|
||||
## 0.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4bac71d]
|
||||
- @llamaindex/core@0.5.7
|
||||
|
||||
## 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
|
||||
|
||||
- Updated dependencies [ad3c7f1]
|
||||
- @llamaindex/core@0.5.4
|
||||
|
||||
## 0.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cb021e7]
|
||||
- @llamaindex/core@0.5.3
|
||||
|
||||
## 0.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/cohere",
|
||||
"description": "Cohere Adapter for LlamaIndex",
|
||||
"version": "0.0.7",
|
||||
"version": "0.0.12",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user