Compare commits

..

8 Commits

Author SHA1 Message Date
google-labs-jules[bot] 68529cadc2 chore: update to google/gen-ai fixing #1934 2025-05-23 04:08:18 +00:00
github-actions[bot] eaf2cb11a5 Release 0.11.3 (#1966)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-22 16:58:59 +07:00
Marcus Schiesser 3ae01a227e chore: remove repin (#1967) 2025-05-22 16:53:44 +07:00
Marcus Schiesser 76ff23dc48 fix: pRetry not working with CommonJS 2025-05-22 15:14:00 +07:00
github-actions[bot] ed497727b1 Release 0.11.2 (#1964)
Co-authored-by: marcusschiesser <17126+marcusschiesser@users.noreply.github.com>
2025-05-22 14:34:37 +07:00
Marcus Schiesser 59601dd3ab feat: Add support for builtin image generation tool 2025-05-22 13:12:23 +07:00
github-actions[bot] 8474ca970e Release 0.11.1 (#1961)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-20 22:18:57 -07:00
Alex Yang 3703f907d9 fix(parse): upload API (#1960) 2025-05-20 17:39:39 -07:00
142 changed files with 5669 additions and 1515 deletions
+29
View File
@@ -1,5 +1,34 @@
# @llamaindex/doc
## 0.2.22
### Patch Changes
- Updated dependencies [76ff23d]
- @llamaindex/cloud@4.0.11
- llamaindex@0.11.3
## 0.2.21
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
- @llamaindex/cloud@4.0.10
- llamaindex@0.11.2
- @llamaindex/node-parser@2.0.7
- @llamaindex/readers@3.1.5
- @llamaindex/workflow@1.1.4
## 0.2.20
### Patch Changes
- Updated dependencies [3703f90]
- @llamaindex/cloud@4.0.9
- llamaindex@0.11.1
## 0.2.19
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/doc",
"version": "0.2.19",
"version": "0.2.22",
"private": true,
"scripts": {
"postinstall": "fumadocs-mdx",
@@ -1,5 +1,23 @@
# @llamaindex/cloudflare-worker-agent-test
## 0.0.164
### Patch Changes
- llamaindex@0.11.3
## 0.0.163
### Patch Changes
- llamaindex@0.11.2
## 0.0.162
### Patch Changes
- llamaindex@0.11.1
## 0.0.161
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloudflare-worker-agent-test",
"version": "0.0.161",
"version": "0.0.164",
"type": "module",
"private": true,
"scripts": {
@@ -1,5 +1,25 @@
# @llamaindex/llama-parse-browser-test
## 0.0.66
### Patch Changes
- Updated dependencies [76ff23d]
- @llamaindex/cloud@4.0.11
## 0.0.65
### Patch Changes
- @llamaindex/cloud@4.0.10
## 0.0.64
### Patch Changes
- Updated dependencies [3703f90]
- @llamaindex/cloud@4.0.9
## 0.0.63
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llama-parse-browser-test",
"private": true,
"version": "0.0.63",
"version": "0.0.66",
"type": "module",
"scripts": {
"dev": "vite",
+18
View File
@@ -1,5 +1,23 @@
# @llamaindex/next-agent-test
## 0.1.164
### Patch Changes
- llamaindex@0.11.3
## 0.1.163
### Patch Changes
- llamaindex@0.11.2
## 0.1.162
### Patch Changes
- llamaindex@0.11.1
## 0.1.161
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-agent-test",
"version": "0.1.161",
"version": "0.1.164",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,23 @@
# test-edge-runtime
## 0.1.163
### Patch Changes
- llamaindex@0.11.3
## 0.1.162
### Patch Changes
- llamaindex@0.11.2
## 0.1.161
### Patch Changes
- llamaindex@0.11.1
## 0.1.160
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/nextjs-edge-runtime-test",
"version": "0.1.160",
"version": "0.1.163",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,25 @@
# @llamaindex/next-node-runtime
## 0.1.31
### Patch Changes
- llamaindex@0.11.3
## 0.1.30
### Patch Changes
- @llamaindex/huggingface@0.1.11
- llamaindex@0.11.2
- @llamaindex/readers@3.1.5
## 0.1.29
### Patch Changes
- llamaindex@0.11.1
## 0.1.28
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-node-runtime-test",
"version": "0.1.28",
"version": "0.1.31",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,23 @@
# vite-import-llamaindex
## 0.0.30
### Patch Changes
- llamaindex@0.11.3
## 0.0.29
### Patch Changes
- llamaindex@0.11.2
## 0.0.28
### Patch Changes
- llamaindex@0.11.1
## 0.0.27
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "vite-import-llamaindex",
"private": true,
"version": "0.0.27",
"version": "0.0.30",
"type": "module",
"scripts": {
"build": "vite build",
@@ -1,5 +1,23 @@
# @llamaindex/waku-query-engine-test
## 0.0.164
### Patch Changes
- llamaindex@0.11.3
## 0.0.163
### Patch Changes
- llamaindex@0.11.2
## 0.0.162
### Patch Changes
- llamaindex@0.11.1
## 0.0.161
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/waku-query-engine-test",
"version": "0.0.161",
"version": "0.0.164",
"type": "module",
"private": true,
"scripts": {
+51
View File
@@ -1,5 +1,56 @@
# examples
## 0.3.17
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
- @llamaindex/clip@0.0.57
- @llamaindex/deepinfra@0.0.57
- @llamaindex/deepseek@0.0.17
- @llamaindex/fireworks@0.0.17
- @llamaindex/groq@0.0.72
- @llamaindex/huggingface@0.1.11
- @llamaindex/jinaai@0.0.17
- @llamaindex/perplexity@0.0.14
- @llamaindex/azure@0.1.17
- @llamaindex/elastic-search@0.1.7
- @llamaindex/milvus@0.1.16
- @llamaindex/qdrant@0.1.16
- @llamaindex/supabase@0.1.6
- @llamaindex/together@0.0.17
- @llamaindex/vllm@0.0.43
- @llamaindex/xai@0.0.4
- @llamaindex/cloud@4.0.10
- llamaindex@0.11.2
- @llamaindex/node-parser@2.0.7
- @llamaindex/anthropic@0.3.8
- @llamaindex/assemblyai@0.1.6
- @llamaindex/cohere@0.0.21
- @llamaindex/discord@0.1.6
- @llamaindex/google@0.3.3
- @llamaindex/mistral@0.1.7
- @llamaindex/mixedbread@0.0.21
- @llamaindex/notion@0.1.6
- @llamaindex/ollama@0.1.7
- @llamaindex/portkey-ai@0.0.49
- @llamaindex/replicate@0.0.49
- @llamaindex/astra@0.0.21
- @llamaindex/chroma@0.0.21
- @llamaindex/firestore@1.0.14
- @llamaindex/mongodb@0.0.22
- @llamaindex/pinecone@0.1.7
- @llamaindex/postgres@0.0.50
- @llamaindex/upstash@0.0.21
- @llamaindex/weaviate@0.0.21
- @llamaindex/vercel@0.1.7
- @llamaindex/voyage-ai@1.0.13
- @llamaindex/readers@3.1.5
- @llamaindex/tools@0.0.12
- @llamaindex/workflow@1.1.4
## 0.3.16
### Patch Changes
@@ -0,0 +1,35 @@
import { openaiResponses } from "@llamaindex/openai";
import fs from "fs";
import { MessageContentDetail } from "llamaindex";
async function main() {
const llm = openaiResponses({
model: "gpt-4.1-mini",
builtInTools: [{ type: "image_generation" }],
});
const response = await llm.chat({
messages: [
{
role: "user",
content:
"Generate an image of a cute tiny llama wearing a hat playing with a cat on a meadow",
},
],
});
const content = response.message.content as MessageContentDetail[];
// This call returns a message with two parts, an image and a text part, get both parts
const imagePart = content.find((part) => part.type === "image");
const textPart = content.find((part) => part.type === "text");
// write the image to a file
fs.writeFileSync(
"llama.png",
Buffer.from(imagePart?.data as string, "base64"),
);
// and print out the text part
console.log(textPart?.text);
}
main().catch(console.error);
@@ -0,0 +1,31 @@
import { openaiResponses } from "@llamaindex/openai";
async function main() {
const llm = openaiResponses({
model: "gpt-4.1",
builtInTools: [
{
type: "code_interpreter",
container: { type: "auto" },
},
],
});
const response = await llm.chat({
messages: [
{
role: "system",
content:
"You are a personal math tutor. When asked a math question, write and run code to answer the question.",
},
{
role: "user",
content: "I need to solve the equation 3x + 11 = 14. Can you help me?",
},
],
});
console.log(response.message.content);
}
main().catch(console.error);
@@ -7,7 +7,6 @@ async function main() {
builtInTools: [{ type: "web_search_preview" }],
});
// Streaming chat example
const response = await llm.chat({
messages: [
{
+46 -46
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/examples",
"version": "0.3.16",
"version": "0.3.17",
"private": true,
"scripts": {
"lint": "eslint .",
@@ -11,51 +11,51 @@
"@azure/cosmos": "^4.1.1",
"@azure/identity": "^4.4.1",
"@azure/search-documents": "^12.1.0",
"@llamaindex/anthropic": "^0.3.7",
"@llamaindex/assemblyai": "^0.1.5",
"@llamaindex/astra": "^0.0.20",
"@llamaindex/azure": "^0.1.16",
"@llamaindex/chroma": "^0.0.20",
"@llamaindex/clip": "^0.0.56",
"@llamaindex/cloud": "^4.0.8",
"@llamaindex/cohere": "^0.0.20",
"@llamaindex/core": "^0.6.6",
"@llamaindex/deepinfra": "^0.0.56",
"@llamaindex/deepseek": "^0.0.16",
"@llamaindex/discord": "^0.1.5",
"@llamaindex/elastic-search": "^0.1.6",
"@llamaindex/anthropic": "^0.3.8",
"@llamaindex/assemblyai": "^0.1.6",
"@llamaindex/astra": "^0.0.21",
"@llamaindex/azure": "^0.1.17",
"@llamaindex/chroma": "^0.0.21",
"@llamaindex/clip": "^0.0.57",
"@llamaindex/cloud": "^4.0.10",
"@llamaindex/cohere": "^0.0.21",
"@llamaindex/core": "^0.6.7",
"@llamaindex/deepinfra": "^0.0.57",
"@llamaindex/deepseek": "^0.0.17",
"@llamaindex/discord": "^0.1.6",
"@llamaindex/elastic-search": "^0.1.7",
"@llamaindex/env": "^0.1.30",
"@llamaindex/firestore": "^1.0.13",
"@llamaindex/fireworks": "^0.0.16",
"@llamaindex/google": "^0.3.2",
"@llamaindex/groq": "^0.0.71",
"@llamaindex/huggingface": "^0.1.10",
"@llamaindex/jinaai": "^0.0.16",
"@llamaindex/milvus": "^0.1.15",
"@llamaindex/mistral": "^0.1.6",
"@llamaindex/mixedbread": "^0.0.20",
"@llamaindex/mongodb": "^0.0.21",
"@llamaindex/node-parser": "^2.0.6",
"@llamaindex/notion": "^0.1.5",
"@llamaindex/ollama": "^0.1.6",
"@llamaindex/openai": "^0.4.0",
"@llamaindex/perplexity": "^0.0.13",
"@llamaindex/pinecone": "^0.1.6",
"@llamaindex/portkey-ai": "^0.0.48",
"@llamaindex/postgres": "^0.0.49",
"@llamaindex/qdrant": "^0.1.15",
"@llamaindex/readers": "^3.1.4",
"@llamaindex/replicate": "^0.0.48",
"@llamaindex/supabase": "^0.1.5",
"@llamaindex/together": "^0.0.16",
"@llamaindex/tools": "^0.0.11",
"@llamaindex/upstash": "^0.0.20",
"@llamaindex/vercel": "^0.1.6",
"@llamaindex/vllm": "^0.0.42",
"@llamaindex/voyage-ai": "^1.0.12",
"@llamaindex/weaviate": "^0.0.20",
"@llamaindex/workflow": "^1.1.3",
"@llamaindex/xai": "workspace:^0.0.3",
"@llamaindex/firestore": "^1.0.14",
"@llamaindex/fireworks": "^0.0.17",
"@llamaindex/google": "^0.3.3",
"@llamaindex/groq": "^0.0.72",
"@llamaindex/huggingface": "^0.1.11",
"@llamaindex/jinaai": "^0.0.17",
"@llamaindex/milvus": "^0.1.16",
"@llamaindex/mistral": "^0.1.7",
"@llamaindex/mixedbread": "^0.0.21",
"@llamaindex/mongodb": "^0.0.22",
"@llamaindex/node-parser": "^2.0.7",
"@llamaindex/notion": "^0.1.6",
"@llamaindex/ollama": "^0.1.7",
"@llamaindex/openai": "^0.4.1",
"@llamaindex/perplexity": "^0.0.14",
"@llamaindex/pinecone": "^0.1.7",
"@llamaindex/portkey-ai": "^0.0.49",
"@llamaindex/postgres": "^0.0.50",
"@llamaindex/qdrant": "^0.1.16",
"@llamaindex/readers": "^3.1.5",
"@llamaindex/replicate": "^0.0.49",
"@llamaindex/supabase": "^0.1.6",
"@llamaindex/together": "^0.0.17",
"@llamaindex/tools": "^0.0.12",
"@llamaindex/upstash": "^0.0.21",
"@llamaindex/vercel": "^0.1.7",
"@llamaindex/vllm": "^0.0.43",
"@llamaindex/voyage-ai": "^1.0.13",
"@llamaindex/weaviate": "^0.0.21",
"@llamaindex/workflow": "^1.1.4",
"@llamaindex/xai": "workspace:^0.0.4",
"@notionhq/client": "^2.2.15",
"@pinecone-database/pinecone": "^4.0.0",
"@vercel/postgres": "^0.10.0",
@@ -64,7 +64,7 @@
"commander": "^12.1.0",
"dotenv": "^16.4.5",
"js-tiktoken": "^1.0.14",
"llamaindex": "^0.11.0",
"llamaindex": "^0.11.2",
"mongodb": "6.7.0",
"postgres": "^3.4.4",
"wikipedia": "^2.1.2",
+9 -1
View File
@@ -1,5 +1,13 @@
import { LlamaParseReader } from "@llamaindex/cloud";
import { VectorStoreIndex } from "llamaindex";
import { openai, OpenAIEmbedding } from "@llamaindex/openai";
import { Settings, VectorStoreIndex } from "llamaindex";
Settings.llm = openai({
model: "gpt-4.1",
});
Settings.embedModel = new OpenAIEmbedding({
model: "text-embedding-3-small",
});
async function main() {
// Load PDF using LlamaParse
+2 -3
View File
@@ -15,10 +15,9 @@
"circular-check": "madge --circular ./packages/**/**/dist/index.js",
"release": "pnpm run build && changeset publish",
"release-snapshot": "pnpm run build && changeset publish --tag snapshot",
"new-version": "changeset version && pnpm postversion && pnpm format:write && pnpm run build",
"new-version": "changeset version && pnpm format:write && pnpm run build",
"new-snapshot": "pnpm run build && changeset version --snapshot",
"lint-staged": "lint-staged",
"postversion": "node scripts/repin-workflow.mjs"
"lint-staged": "lint-staged"
},
"devDependencies": {
"@changesets/cli": "^2.27.5",
+18
View File
@@ -1,5 +1,23 @@
# @llamaindex/autotool
## 8.0.3
### Patch Changes
- llamaindex@0.11.3
## 8.0.2
### Patch Changes
- llamaindex@0.11.2
## 8.0.1
### Patch Changes
- llamaindex@0.11.1
## 8.0.0
### Patch Changes
@@ -1,5 +1,26 @@
# @llamaindex/autotool-01-node-example
## 0.0.111
### Patch Changes
- llamaindex@0.11.3
- @llamaindex/autotool@8.0.3
## 0.0.110
### Patch Changes
- llamaindex@0.11.2
- @llamaindex/autotool@8.0.2
## 0.0.109
### Patch Changes
- llamaindex@0.11.1
- @llamaindex/autotool@8.0.1
## 0.0.108
### Patch Changes
@@ -13,5 +13,5 @@
"scripts": {
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
},
"version": "0.0.108"
"version": "0.0.111"
}
+1 -1
View File
@@ -6,7 +6,7 @@
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
"directory": "packages/autotool"
},
"version": "8.0.0",
"version": "8.0.3",
"description": "auto transpile your JS function to LLM Agent compatible",
"files": [
"dist",
+19
View File
@@ -1,5 +1,24 @@
# @llamaindex/cloud
## 4.0.11
### Patch Changes
- 76ff23d: Fix pRetry not working with CommonJS
## 4.0.10
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 4.0.9
### Patch Changes
- 3703f90: feat(parse): add upload API
## 4.0.8
### Patch Changes
+6 -1
View File
@@ -12,8 +12,13 @@ export default defineConfig({
plugins: [
...defaultPlugins,
"@hey-api/client-fetch",
"zod",
"@hey-api/schemas",
"@hey-api/sdk",
{
name: "@hey-api/sdk",
enums: "javascript",
identifierCase: "PascalCase",
name: "@hey-api/typescript",
},
],
});
+2868 -953
View File
File diff suppressed because it is too large Load Diff
+18 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloud",
"version": "4.0.8",
"version": "4.0.11",
"type": "module",
"license": "MIT",
"scripts": {
@@ -37,6 +37,17 @@
},
"default": "./reader/dist/index.js"
},
"./parse": {
"require": {
"types": "./parse/dist/index.d.cts",
"default": "./parse/dist/index.cjs"
},
"import": {
"types": "./parse/dist/index.d.ts",
"default": "./parse/dist/index.js"
},
"default": "./parse/dist/index.js"
},
".": {
"require": {
"types": "./reader/dist/index.d.cts",
@@ -55,16 +66,19 @@
"directory": "packages/cloud"
},
"devDependencies": {
"@hey-api/client-fetch": "^0.10.0",
"@hey-api/openapi-ts": "^0.66.7",
"@hey-api/client-fetch": "^0.10.1",
"@hey-api/openapi-ts": "^0.67.5",
"@llama-flow/core": "^0.4.1",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*"
},
"peerDependencies": {
"@llama-flow/core": "^0.4.1",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*"
},
"dependencies": {
"p-retry": "^6.2.1"
"p-retry": "^6.2.1",
"zod": "^3.25.7"
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": "./dist/index.js",
"private": true
}
+55
View File
@@ -0,0 +1,55 @@
import { workflowEvent } from "@llama-flow/core";
import { zodEvent } from "@llama-flow/core/util/zod";
import { z } from "zod";
import { parseFormSchema } from "./schema";
export const uploadEvent = zodEvent(
parseFormSchema.merge(
z.object({
file: z
.string()
.or(z.instanceof(File))
.or(z.instanceof(Blob))
.or(z.instanceof(Uint8Array))
.optional()
.describe("input"),
}),
),
{
debugLabel: "upload",
uniqueId: "52099967-34a8-419b-8950-c859eab60145",
},
);
export const checkStatusEvent = workflowEvent<string>({
debugLabel: "check-status",
uniqueId: "462157fc-1ded-4ba7-9bc4-3e870395bd20",
});
export const checkStatusSuccessEvent = workflowEvent<string>({
debugLabel: "check-status-success",
uniqueId: "360b7641-30f7-456e-851d-104bb5e3f8d2",
});
export const requestMarkdownEvent = workflowEvent<string>({
debugLabel: "markdown-request",
uniqueId: "aa4c2e3c-0f09-4035-aab6-c72719c877cc",
});
export const requestTextEvent = workflowEvent<string>({
debugLabel: "text-request",
uniqueId: "6976536e-5399-4285-9455-0b70f1dfc92b",
});
export const requestJsonEvent = workflowEvent<string>({
debugLabel: "json-request",
uniqueId: "9fc4a330-52ad-4aac-8092-a650998b7f6f",
});
export const markdownResultEvent = workflowEvent<string>({
debugLabel: "markdown-result",
uniqueId: "2dfb57c8-73d1-4394-bea8-f05246d934d4",
});
export const textResultEvent = workflowEvent<string>({
debugLabel: "text-result",
uniqueId: "a27deec6-b24f-4eda-a5ac-ba2fb2bf37c8",
});
export const jsonResultEvent = workflowEvent<unknown>({
debugLabel: "json-result",
uniqueId: "e086e6bd-a612-4f25-ab41-9b31dcb8af86",
});
+225
View File
@@ -0,0 +1,225 @@
import { createClient, createConfig } from "@hey-api/client-fetch";
import { createWorkflow, type InferWorkflowEventData } from "@llama-flow/core";
import { createStatefulMiddleware } from "@llama-flow/core/middleware/state";
import { withTraceEvents } from "@llama-flow/core/middleware/trace-events";
import { pRetryHandler } from "@llama-flow/core/util/p-retry";
import { fs, getEnv, path } from "@llamaindex/env";
import {
type BodyUploadFileApiV1ParsingUploadPost,
getJobApiV1ParsingJobJobIdGet,
getJobJsonResultApiV1ParsingJobJobIdResultJsonGet,
getJobResultApiV1ParsingJobJobIdResultMarkdownGet,
getJobTextResultApiV1ParsingJobJobIdResultTextGet,
type StatusEnum,
uploadFileApiV1ParsingUploadPost,
} from "./client";
import {
checkStatusEvent,
checkStatusSuccessEvent,
jsonResultEvent,
markdownResultEvent,
requestJsonEvent,
requestMarkdownEvent,
requestTextEvent,
textResultEvent,
uploadEvent,
} from "./events";
export type LlamaParseWorkflowParams = {
region?: "us" | "eu" | "us-staging";
apiKey?: string;
};
const URLS = {
us: "https://api.cloud.llamaindex.ai",
eu: "https://api.cloud.eu.llamaindex.ai",
"us-staging": "https://api.staging.llamaindex.ai",
} as const;
const { withState, getContext } = createStatefulMiddleware(
(params: LlamaParseWorkflowParams) => {
const apiKey = params.apiKey ?? getEnv("LLAMA_CLOUD_API_KEY");
const region = params.region ?? "us";
if (!apiKey) {
throw new Error("LLAMA_CLOUD_API_KEY is not set");
}
return {
cache: {} as Record<string, StatusEnum>,
client: createClient(
createConfig({
baseUrl: URLS[region],
headers: {
Authorization: `Bearer ${apiKey}`,
},
}),
),
};
},
);
const llamaParseWorkflow = withState(withTraceEvents(createWorkflow()));
llamaParseWorkflow.handle([uploadEvent], async ({ data: form }) => {
const { state } = getContext();
const finalForm = { ...form };
if ("file" in form) {
// support loads from the file system
const file = form?.file;
const isFilePath = typeof file === "string";
const data = isFilePath ? await fs.readFile(file) : file;
const filename: string | undefined = isFilePath
? path.basename(file)
: undefined;
finalForm.file = data
? globalThis.File && filename
? new File([data], filename)
: new Blob([data])
: undefined;
}
const {
data: { id, status },
} = await uploadFileApiV1ParsingUploadPost({
throwOnError: true,
body: {
...finalForm,
} as BodyUploadFileApiV1ParsingUploadPost,
client: state.client,
});
state.cache[id] = status;
return checkStatusEvent.with(id);
});
llamaParseWorkflow.handle(
[checkStatusEvent],
pRetryHandler(
async ({ data: uuid }) => {
const { state } = getContext();
if (state.cache[uuid] === "SUCCESS") {
return checkStatusSuccessEvent.with(uuid);
}
const {
data: { status },
} = await getJobApiV1ParsingJobJobIdGet({
throwOnError: true,
path: {
job_id: uuid,
},
client: state.client,
});
state.cache[uuid] = status;
if (status === "SUCCESS") {
return checkStatusSuccessEvent.with(uuid);
}
throw new Error(`LLamaParse status: ${status}`);
},
{
retries: 100,
},
),
);
//#region sub workflow
llamaParseWorkflow.handle([requestMarkdownEvent], async ({ data: job_id }) => {
const { state } = getContext();
const { data } = await getJobResultApiV1ParsingJobJobIdResultMarkdownGet({
throwOnError: true,
path: {
job_id,
},
client: state.client,
});
return markdownResultEvent.with(data.markdown);
});
llamaParseWorkflow.handle([requestTextEvent], async ({ data: job_id }) => {
const { state } = getContext();
const { data } = await getJobTextResultApiV1ParsingJobJobIdResultTextGet({
throwOnError: true,
path: {
job_id,
},
client: state.client,
});
return textResultEvent.with(data.text);
});
llamaParseWorkflow.handle([requestJsonEvent], async ({ data: job_id }) => {
const { state } = getContext();
const { data } = await getJobJsonResultApiV1ParsingJobJobIdResultJsonGet({
throwOnError: true,
path: {
job_id,
},
client: state.client,
});
return jsonResultEvent.with(data.pages);
});
//#endregion
export type ParseJob = {
get jobId(): string;
get signal(): AbortSignal;
get context(): ReturnType<typeof llamaParseWorkflow.createContext>;
get form(): InferWorkflowEventData<typeof uploadEvent>;
markdown(): Promise<string>;
text(): Promise<string>;
//eslint-disable-next-line @typescript-eslint/no-explicit-any
json(): Promise<any[]>;
};
export const upload = async (
params: InferWorkflowEventData<typeof uploadEvent> & LlamaParseWorkflowParams,
): Promise<ParseJob> => {
//#region upload event
const context = llamaParseWorkflow.createContext(params);
const { stream, sendEvent } = context;
const ev = uploadEvent.with(params);
sendEvent(ev);
const uploadThread = await llamaParseWorkflow
.substream(ev, stream)
.until((ev) => checkStatusSuccessEvent.include(ev))
.toArray();
//#region
const jobId: string = uploadThread.at(-1)!.data;
return {
get signal() {
// lazy load
return context.signal;
},
get jobId() {
return jobId;
},
get form() {
return ev.data;
},
get context() {
return context;
},
async markdown(): Promise<string> {
const requestEv = requestMarkdownEvent.with(jobId);
const { sendEvent, stream } = llamaParseWorkflow.createContext(params);
sendEvent(requestEv);
const markdownThread = await stream.until(markdownResultEvent).toArray();
return markdownThread.at(-1)!.data;
},
async text(): Promise<string> {
const requestEv = requestTextEvent.with(jobId);
const { sendEvent, stream } = llamaParseWorkflow.createContext(params);
sendEvent(requestEv);
const textThread = await stream.until(textResultEvent).toArray();
return textThread.at(-1)!.data;
},
//eslint-disable-next-line @typescript-eslint/no-explicit-any
async json(): Promise<any[]> {
const requestEv = requestJsonEvent.with(jobId);
const { sendEvent, stream } = llamaParseWorkflow.createContext(params);
sendEvent(requestEv);
const jsonThread = await stream
.until((ev) => jsonResultEvent.include(ev))
.toArray();
return jsonThread.at(-1)!.data;
},
};
};
+1 -1
View File
@@ -2,7 +2,6 @@
import { type Client, createClient, createConfig } from "@hey-api/client-fetch";
import { Document, FileReader } from "@llamaindex/core/schema";
import { fs, getEnv, path } from "@llamaindex/env";
import pRetry from "p-retry";
import {
type BodyUploadFileApiParsingUploadPost,
type FailPageMode,
@@ -391,6 +390,7 @@ export class LlamaParseReader extends FileReader {
): Promise<any> {
let tries = 0;
let currentInterval = this.checkInterval;
const { default: pRetry } = await import("p-retry");
while (true) {
await sleep(currentInterval * 1000);
+131
View File
@@ -0,0 +1,131 @@
import { FailPageMode, ParserLanguages, ParsingMode } from "./client";
import { z } from "zod";
type Language = ParserLanguages;
const VALUES: [Language, ...Language[]] = [
ParserLanguages.EN,
...Object.values(ParserLanguages),
];
const languageSchema = z.enum(VALUES);
const PARSE_PRESETS = [
"fast",
"balanced",
"premium",
"structured",
"auto",
"scientific",
"invoice",
"slides",
"_carlyle",
] as const;
export const parsePresetSchema = z.enum(PARSE_PRESETS);
export const parseFormSchema = z.object({
adaptive_long_table: z.boolean().optional(),
annotate_links: z.boolean().optional(),
auto_mode: z.boolean().optional(),
auto_mode_trigger_on_image_in_page: z.boolean().optional(),
auto_mode_trigger_on_table_in_page: z.boolean().optional(),
auto_mode_trigger_on_text_in_page: z.string().optional(),
auto_mode_trigger_on_regexp_in_page: z.string().optional(),
auto_mode_configuration_json: z.string().optional(),
azure_openai_api_version: z.string().optional(),
azure_openai_deployment_name: z.string().optional(),
azure_openai_endpoint: z.string().optional(),
azure_openai_key: z.string().optional(),
bbox_bottom: z.number().min(0).max(1).optional(),
bbox_left: z.number().min(0).max(1).optional(),
bbox_right: z.number().min(0).max(1).optional(),
bbox_top: z.number().min(0).max(1).optional(),
disable_ocr: z.boolean().optional(),
disable_reconstruction: z.boolean().optional(),
disable_image_extraction: z.boolean().optional(),
do_not_cache: z.coerce.boolean().optional(),
do_not_unroll_columns: z.coerce.boolean().optional(),
extract_charts: z.boolean().optional(),
guess_xlsx_sheet_name: z.boolean().optional(),
html_make_all_elements_visible: z.boolean().optional(),
html_remove_fixed_elements: z.boolean().optional(),
html_remove_navigation_elements: z.boolean().optional(),
http_proxy: z
.string()
.url(
'Set a valid URL for the HTTP proxy, e.g., "http://proxy.example.com:8080"',
)
.refine(
(url) => {
try {
const parsedUrl = new URL(url);
return (
parsedUrl.protocol === "http:" || parsedUrl.protocol === "https:"
);
} catch {
return false;
}
},
{
message: "Invalid HTTP proxy URL",
},
)
.optional(),
input_s3_path: z.string().optional(),
input_s3_region: z.string().optional(),
input_url: z.string().optional(),
invalidate_cache: z.boolean().optional(),
language: z.array(languageSchema).optional(),
extract_layout: z.boolean().optional(),
max_pages: z.number().nullable().optional(),
output_pdf_of_document: z.boolean().optional(),
output_s3_path_prefix: z.string().optional(),
output_s3_region: z.string().optional(),
page_prefix: z.string().optional(),
page_separator: z.string().optional(),
page_suffix: z.string().optional(),
preserve_layout_alignment_across_pages: z.boolean().optional(),
skip_diagonal_text: z.boolean().optional(),
spreadsheet_extract_sub_tables: z.boolean().optional(),
structured_output: z.boolean().optional(),
structured_output_json_schema: z.string().optional(),
structured_output_json_schema_name: z.string().optional(),
take_screenshot: z.boolean().optional(),
target_pages: z.string().optional(),
vendor_multimodal_api_key: z.string().optional(),
vendor_multimodal_model_name: z.string().optional(),
model: z.string().optional(),
webhook_url: z.string().url().optional(),
parse_mode: z.nativeEnum(ParsingMode).nullable().optional(),
system_prompt: z.string().optional(),
system_prompt_append: z.string().optional(),
user_prompt: z.string().optional(),
job_timeout_in_seconds: z.number().optional(),
job_timeout_extra_time_per_page_in_seconds: z.number().optional(),
strict_mode_image_extraction: z.boolean().optional(),
strict_mode_image_ocr: z.boolean().optional(),
strict_mode_reconstruction: z.boolean().optional(),
strict_mode_buggy_font: z.boolean().optional(),
save_images: z.boolean().optional(),
ignore_document_elements_for_layout_detection: z.boolean().optional(),
output_tables_as_HTML: z.boolean().optional(),
use_vendor_multimodal_model: z.boolean().optional(),
bounding_box: z.string().optional(),
gpt4o_mode: z.boolean().optional(),
gpt4o_api_key: z.string().optional(),
complemental_formatting_instruction: z.string().optional(),
content_guideline_instruction: z.string().optional(),
premium_mode: z.boolean().optional(),
is_formatting_instruction: z.boolean().optional(),
continuous_mode: z.boolean().optional(),
parsing_instruction: z.string().optional(),
fast_mode: z.boolean().optional(),
formatting_instruction: z.string().optional(),
preset: parsePresetSchema.optional(),
compact_markdown_table: z.boolean().optional(),
markdown_table_multiline_header_separator: z.string().optional(),
page_error_tolerance: z.number().min(0).max(1).optional(),
replace_failed_page_mode: z.nativeEnum(FailPageMode).nullable().optional(),
replace_failed_page_with_error_message_prefix: z.string().optional(),
replace_failed_page_with_error_message_suffix: z.string().optional(),
});
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/core
## 0.6.7
### Patch Changes
- 59601dd: Add support for builtin image generation tool
## 0.6.6
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/core",
"type": "module",
"version": "0.6.6",
"version": "0.6.7",
"description": "LlamaIndex Core Module",
"exports": {
"./agent": {
+1
View File
@@ -36,3 +36,4 @@ export type {
ToolResult,
ToolResultOptions,
} from "./type";
export { addContentPart } from "./utils";
+28
View File
@@ -0,0 +1,28 @@
import type {
ChatMessage,
MessageContentImageDataDetail,
MessageContentTextDetail,
} from "./type";
export function addContentPart<AdditionalMessageOptions extends object>(
message: ChatMessage<AdditionalMessageOptions>,
part: MessageContentTextDetail | MessageContentImageDataDetail,
): void {
if (part.type === "text") {
if (typeof message.content === "string") {
message.content += part.text;
} else {
message.content.push(part);
}
} else {
if (typeof message.content === "string") {
if (message.content === "") {
message.content = [part];
} else {
message.content = [{ type: "text", text: message.content }, part];
}
} else {
message.content.push(part);
}
}
}
+18
View File
@@ -1,5 +1,23 @@
# @llamaindex/experimental
## 0.0.180
### Patch Changes
- llamaindex@0.11.3
## 0.0.179
### Patch Changes
- llamaindex@0.11.2
## 0.0.178
### Patch Changes
- llamaindex@0.11.1
## 0.0.177
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/experimental",
"description": "Experimental package for LlamaIndexTS",
"version": "0.0.177",
"version": "0.0.180",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+24
View File
@@ -1,5 +1,29 @@
# llamaindex
## 0.11.3
### Patch Changes
- Updated dependencies [76ff23d]
- @llamaindex/cloud@4.0.11
## 0.11.2
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
- @llamaindex/cloud@4.0.10
- @llamaindex/node-parser@2.0.7
- @llamaindex/workflow@1.1.4
## 0.11.1
### Patch Changes
- Updated dependencies [3703f90]
- @llamaindex/cloud@4.0.9
## 0.11.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "llamaindex",
"version": "0.11.0",
"version": "0.11.3",
"license": "MIT",
"type": "module",
"keywords": [
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/core-test
## 0.1.2
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
## 0.1.1
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llamaindex-test",
"private": true,
"version": "0.1.1",
"version": "0.1.2",
"type": "module",
"scripts": {
"test": "vitest run"
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/node-parser
## 2.0.7
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 2.0.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/node-parser",
"version": "2.0.6",
"version": "2.0.7",
"description": "Node parser for LlamaIndex",
"type": "module",
"exports": {
@@ -1,5 +1,12 @@
# @llamaindex/anthropic
## 0.3.8
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.3.7
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/anthropic",
"description": "Anthropic Adapter for LlamaIndex",
"version": "0.3.7",
"version": "0.3.8",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/assemblyai
## 0.1.6
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.1.5
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/assemblyai",
"description": "AssemblyAI Reader for LlamaIndex",
"version": "0.1.5",
"version": "0.1.6",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/community
## 0.0.101
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.0.100
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/aws",
"description": "AWS package for LlamaIndexTS",
"version": "0.0.100",
"version": "0.0.101",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+8
View File
@@ -1,5 +1,13 @@
# @llamaindex/clip
## 0.0.57
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
## 0.0.56
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/clip",
"description": "Clip Embedding Adapter for LlamaIndex",
"version": "0.0.56",
"version": "0.0.57",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/cohere
## 0.0.21
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.0.20
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/cohere",
"description": "Cohere Adapter for LlamaIndex",
"version": "0.0.20",
"version": "0.0.21",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,13 @@
# @llamaindex/deepinfra
## 0.0.57
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
## 0.0.56
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/deepinfra",
"description": "Deepinfra Adapter for LlamaIndex",
"version": "0.0.56",
"version": "0.0.57",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/deepseek
## 0.0.17
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
## 0.0.16
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/deepseek",
"description": "DeepSeek Adapter for LlamaIndex",
"version": "0.0.16",
"version": "0.0.17",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/discord
## 0.1.6
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.1.5
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/discord",
"description": "Discord Reader for LlamaIndex",
"version": "0.1.5",
"version": "0.1.6",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
@@ -1,5 +1,12 @@
# @llamaindex/fireworks
## 0.0.17
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
## 0.0.16
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/fireworks",
"description": "Fireworks Adapter for LlamaIndex",
"version": "0.0.16",
"version": "0.0.17",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/google
## 0.3.3
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.3.2
### Patch Changes
+2 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/google",
"description": "Google Adapter for LlamaIndex",
"version": "0.3.2",
"version": "0.3.3",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -38,8 +38,6 @@
"@llamaindex/env": "workspace:*"
},
"dependencies": {
"@google-cloud/vertexai": "1.9.0",
"@google/genai": "^0.12.0",
"@google/generative-ai": "0.24.0"
"@google/genai": "^1.0.0"
}
}
@@ -15,20 +15,23 @@ export class GeminiEmbedding extends BaseEmbedding {
model: GEMINI_EMBEDDING_MODEL;
session: GeminiSession;
constructor(init?: Partial<GeminiEmbedding>) {
apiKey?: string; // Added for clarity, though session handles it
constructor(init?: Partial<GeminiEmbedding> & { apiKey?: string }) {
super();
this.model = init?.model ?? GEMINI_EMBEDDING_MODEL.EMBEDDING_001;
this.apiKey = init?.apiKey; // Store apiKey if provided
this.session =
init?.session ??
(GeminiSessionStore.get({
backend: GEMINI_BACKENDS.GOOGLE,
}) as GeminiSession);
(GeminiSessionStore.get(
{ backend: GEMINI_BACKENDS.GOOGLE, apiKey: this.apiKey }, // Use stored or passed apiKey
{ model: this.model }, // Pass modelParams
) as GeminiSession);
}
private async getEmbedding(prompt: string): Promise<number[]> {
const client = this.session.getGenerativeModel({
model: this.model,
});
// getGenerativeModel no longer takes arguments
const client = this.session.getGenerativeModel();
const result = await client.embedContent(prompt);
return result.embedding.values;
}
+178 -105
View File
@@ -8,9 +8,8 @@ import {
type StartChatParams as GoogleStartChatParams,
type GenerateContentStreamResult as GoogleStreamGenerateContentResult,
type SafetySetting,
} from "@google/generative-ai";
} from "@google/genai";
import type { StartChatParams as VertexStartChatParams } from "@google-cloud/vertexai";
import { wrapLLMEvent } from "@llamaindex/core/decorator";
import type {
CompletionResponse,
@@ -105,77 +104,113 @@ export type GeminiConfig = Partial<typeof DEFAULT_GEMINI_PARAMS> & {
voiceName?: GeminiVoiceName;
};
type StartChatParams = GoogleStartChatParams & VertexStartChatParams;
type StartChatParams = GoogleStartChatParams;
/**
* Gemini Session to manage the connection to the Gemini API
*/
export class GeminiSession implements IGeminiSession {
private gemini: GoogleGenerativeAI;
private generativeModel: GoogleGenerativeModel; // Added to store the model
constructor(options: GoogleGeminiSessionOptions) {
if (!options.apiKey) {
options.apiKey = getEnv("GOOGLE_API_KEY")!;
constructor(options: GoogleGeminiSessionOptions, modelParams: GoogleModelParams, requestOpts?: GoogleRequestOptions) {
if (options.backend === GEMINI_BACKENDS.VERTEX) {
// Vertex AI initialization
const project = options.project ?? getEnv("GOOGLE_VERTEX_PROJECT_ID");
const location = options.location ?? getEnv("GOOGLE_VERTEX_LOCATION");
if (!project || !location) {
throw new Error(
"Set GOOGLE_VERTEX_PROJECT_ID and GOOGLE_VERTEX_LOCATION env variables for Vertex AI",
);
}
this.gemini = new GoogleGenerativeAI({
vertexai: true,
project,
location,
apiVersion: options.apiVersion,
});
} else {
// Gemini API initialization
if (!options.apiKey) {
options.apiKey = getEnv("GOOGLE_API_KEY")!;
}
if (!options.apiKey) {
throw new Error("Set Google API Key in GOOGLE_API_KEY env variable");
}
this.gemini = new GoogleGenerativeAI({
apiKey: options.apiKey,
apiVersion: options.apiVersion,
});
}
if (!options.apiKey) {
throw new Error("Set Google API Key in GOOGLE_API_KEY env variable");
}
this.gemini = new GoogleGenerativeAI(options.apiKey);
}
getGenerativeModel(
metadata: GoogleModelParams,
requestOpts?: GoogleRequestOptions,
): GoogleGenerativeModel {
return this.gemini.getGenerativeModel(
// Store the generative model
this.generativeModel = this.gemini.getGenerativeModel(
{
safetySettings: metadata.safetySettings ?? DEFAULT_SAFETY_SETTINGS,
...metadata,
safetySettings: modelParams.safetySettings ?? DEFAULT_SAFETY_SETTINGS,
...modelParams,
},
requestOpts,
);
}
getGenerativeModel(
_metadata: GoogleModelParams, // metadata is now part of constructor
_requestOpts?: GoogleRequestOptions, // requestOpts is now part of constructor
): GoogleGenerativeModel {
return this.generativeModel;
}
getResponseText(response: EnhancedGenerateContentResponse): string {
return response.text();
// Updated to access text as a property
return response.text ?? "";
}
getToolsFromResponse(
response: EnhancedGenerateContentResponse,
): ToolCall[] | undefined {
return response.functionCalls()?.map(
(call: FunctionCall) =>
({
name: call.name,
input: call.args,
id: randomUUID(),
}) as ToolCall,
);
// Updated to access functionCalls as a property
const fc = response.functionCalls;
if (fc) {
return fc.map( // Assuming fc is an array
(call: FunctionCall) =>
({
name: call.name,
input: call.args, // Ensure call.args is the correct field for input
id: randomUUID(),
}) as ToolCall,
);
}
return undefined;
}
async *getChatStream(
result: GoogleStreamGenerateContentResult,
result: GoogleStreamGenerateContentResult, // This will likely change to an AsyncIterableIterator
): GeminiChatStreamResponse {
yield* streamConverter(result.stream, (response) => {
// The new SDK returns an async iterator directly from generateContentStream
// This method needs to adapt to that
for await (const response of result.stream) { // Assuming result.stream is the async iterator
const tools = this.getToolsFromResponse(response);
const options: ToolCallLLMMessageOptions = tools?.length
? { toolCall: tools }
: {};
return {
yield {
delta: this.getResponseText(response),
raw: response,
options,
};
});
}
}
getCompletionStream(
result: GoogleStreamGenerateContentResult,
async *getCompletionStream( // Changed to async generator
result: GoogleStreamGenerateContentResult, // This will likely change to an AsyncIterableIterator
): AsyncIterable<CompletionResponse> {
return streamConverter(result.stream, (response) => ({
text: this.getResponseText(response),
raw: response,
}));
// The new SDK returns an async iterator directly from generateContentStream
// This method needs to adapt to that
for await (const response of result.stream) { // Assuming result.stream is the async iterator
yield {
text: this.getResponseText(response),
raw: response,
};
}
}
}
@@ -186,42 +221,48 @@ export class GeminiSessionStore {
static sessions: Array<{
session: IGeminiSession;
options: GeminiSessionOptions;
// Store modelParams and requestOpts used for this session
modelParams: GoogleModelParams;
requestOpts?: GoogleRequestOptions;
}> = [];
private static getSessionId(options: GeminiSessionOptions): string {
if (options.backend === GEMINI_BACKENDS.GOOGLE) {
return options?.apiKey ?? "";
if (options.backend === GEMINI_BACKENDS.VERTEX) {
return `${options.project}-${options.location}-${options.apiVersion ?? ""}`;
}
return "";
return `${options.apiKey ?? ""}-${options.apiVersion ?? ""}`;
}
private static sessionMatched(
o1: GeminiSessionOptions,
o2: GeminiSessionOptions,
s1: { options: GeminiSessionOptions; modelParams: GoogleModelParams; requestOpts?: GoogleRequestOptions },
options: GeminiSessionOptions,
modelParams: GoogleModelParams,
requestOpts?: GoogleRequestOptions,
): boolean {
// #TODO: check if the session is matched
// Q: should we check the requestOptions?
// A: wait for confirmation from author
// Also check if modelParams and requestOpts match, if necessary for session reuse.
// For simplicity, this example only matches on options.
// A more robust solution might involve deep comparison of modelParams and requestOpts.
return (
GeminiSessionStore.getSessionId(o1) ===
GeminiSessionStore.getSessionId(o2)
GeminiSessionStore.getSessionId(s1.options) ===
GeminiSessionStore.getSessionId(options) &&
JSON.stringify(s1.modelParams) === JSON.stringify(modelParams) && // Basic comparison
JSON.stringify(s1.requestOpts) === JSON.stringify(requestOpts) // Basic comparison
);
}
static get(
options: GeminiSessionOptions = { backend: GEMINI_BACKENDS.GOOGLE },
modelParams: GoogleModelParams, // Pass modelParams
requestOpts?: GoogleRequestOptions, // Pass requestOpts
): IGeminiSession {
let session = this.sessions.find((session) =>
this.sessionMatched(session.options, options),
)?.session;
if (session) return session;
let sessionEntry = this.sessions.find((entry) =>
this.sessionMatched(entry, options, modelParams, requestOpts),
);
if (sessionEntry) return sessionEntry.session;
if (options.backend === GEMINI_BACKENDS.VERTEX) {
throw Error("No Session");
} else {
session = new GeminiSession(options);
}
this.sessions.push({ session, options });
return session;
const newSession = new GeminiSession(options, modelParams, requestOpts);
this.sessions.push({ session: newSession, options, modelParams, requestOpts });
return newSession;
}
}
@@ -245,10 +286,20 @@ export class Gemini extends ToolCallLLM<GeminiAdditionalChatOptions> {
this.temperature = init?.temperature ?? 0.1;
this.topP = init?.topP ?? 1;
this.maxTokens = init?.maxTokens ?? undefined;
this.session = init?.session ?? GeminiSessionStore.get();
this.#requestOptions = init?.requestOptions ?? undefined;
this.#requestOptions = init?.requestOptions ?? undefined; // Store requestOptions
this.safetySettings = init?.safetySettings ?? DEFAULT_SAFETY_SETTINGS;
this.apiKey = init?.apiKey ?? getEnv("GOOGLE_API_KEY");
// Pass model metadata and request options to GeminiSessionStore.get
// The session is now initialized with modelParams and requestOpts
this.session = init?.session ?? GeminiSessionStore.get(
{
apiKey: this.apiKey,
backend: this.apiKey ? GEMINI_BACKENDS.GOOGLE : GEMINI_BACKENDS.VERTEX, // Infer backend
// Potentially add project/location if known, or handle in GeminiSession constructor
},
{ model: this.model, temperature: this.temperature, topP: this.topP, maxTokens: this.maxTokens, safetySettings: this.safetySettings },
this.#requestOptions
);
this.voiceName = init?.voiceName ?? undefined;
}
@@ -280,45 +331,54 @@ export class Gemini extends ToolCallLLM<GeminiAdditionalChatOptions> {
};
}
private async createStartChatParams(
private async createGenerationParams( // Renamed and updated
params: GeminiChatParamsNonStreaming | GeminiChatParamsStreaming,
) {
const context = await getChatContext(params);
const common = {
history: context.history,
safetySettings: this.safetySettings as SafetySetting[],
const { messages, tools } = params; // Assuming params.messages is the new way to pass chat history
const lastMessage = messages[messages.length - 1];
const history = messages.slice(0, -1).map(GeminiHelper.messageToGeminiContent);
const generationConfig = {
candidateCount: 1, // Default or make configurable
stopSequences: undefined, // Default or make configurable
maxOutputTokens: this.maxTokens,
temperature: this.temperature,
topP: this.topP,
// topK: undefined, // Default or make configurable
};
return params.tools?.length
const safetySettings = this.safetySettings;
const toolParams = tools?.length
? {
...common,
// only if non-empty tools list
tools: [
{
functionDeclarations: params.tools.map(
functionDeclarations: tools.map(
mapBaseToolToGeminiFunctionDeclaration,
),
},
],
safetySettings: this.safetySettings,
}
: common;
: {};
return {
contents: [...history, await GeminiHelper.messageContentToGeminiParts(lastMessage.content, lastMessage.role)],
generationConfig,
safetySettings,
...toolParams,
};
}
protected async nonStreamChat(
params: GeminiChatParamsNonStreaming,
): Promise<GeminiChatNonStreamResponse> {
const context = await getChatContext(params);
const client = this.session.getGenerativeModel(
this.metadata,
this.#requestOptions,
);
const chat = client.startChat(
(await this.createStartChatParams(params)) as StartChatParams,
);
const { response } = await chat.sendMessage(context.message);
const topCandidate = response.candidates![0]!;
const generationParams = await this.createGenerationParams(params);
const client = this.session.getGenerativeModel();
// Use generateContent from the new SDK
const result = await client.generateContent(generationParams);
const response = result.response; // Response from generateContent
const topCandidate = response.candidates![0]!;
const tools = this.session.getToolsFromResponse(response);
const options: ToolCallLLMMessageOptions = tools?.length
? { toolCall: tools }
@@ -339,16 +399,30 @@ export class Gemini extends ToolCallLLM<GeminiAdditionalChatOptions> {
protected async *streamChat(
params: GeminiChatParamsStreaming,
): GeminiChatStreamResponse {
const context = await getChatContext(params);
const client = this.session.getGenerativeModel(
this.metadata,
this.#requestOptions,
);
const chat = client.startChat(
(await this.createStartChatParams(params)) as StartChatParams,
);
const result = await chat.sendMessageStream(context.message);
yield* this.session.getChatStream(result);
const generationParams = await this.createGenerationParams(params);
const client = this.session.getGenerativeModel();
// Use generateContentStream from the new SDK
const result = await client.generateContentStream(generationParams);
// getChatStream in GeminiSession expects a GoogleStreamGenerateContentResult,
// which has a `stream` property that is an async iterator.
// The result from generateContentStream is directly the async iterator over chunks.
// So we need to adapt how we call getChatStream or how getChatStream is implemented.
// Option 1: Adapt getChatStream to take the raw stream
// For now, let's assume getChatStream is updated to handle the direct stream from generateContentStream
// This means `result` itself is the async iterator over the chunks (EnhancedGenerateContentResponse)
// However, the current `getChatStream` expects `result.stream`.
// Let's create a compatible object for now, or refactor `getChatStream` later.
// Create a compatible structure for the current getChatStream
const compatibleResult: GoogleStreamGenerateContentResult = {
stream: result, // result is already the async iterator
response: Promise.resolve({} as EnhancedGenerateContentResponse), // Dummy promise, not used by current getChatStream logic
};
yield* this.session.getChatStream(compatibleResult);
}
chat(params: GeminiChatParamsStreaming): Promise<GeminiChatStreamResponse>;
@@ -373,24 +447,23 @@ export class Gemini extends ToolCallLLM<GeminiAdditionalChatOptions> {
params: LLMCompletionParamsStreaming | LLMCompletionParamsNonStreaming,
): Promise<CompletionResponse | AsyncIterable<CompletionResponse>> {
const { prompt, stream } = params;
const client = this.session.getGenerativeModel(
this.metadata,
this.#requestOptions,
// getGenerativeModel no longer takes arguments
const client = this.session.getGenerativeModel();
const content = getPartsText(
await GeminiHelper.messageContentToGeminiParts({ content: prompt }),
);
if (stream) {
const result = await client.generateContentStream(
getPartsText(
await GeminiHelper.messageContentToGeminiParts({ content: prompt }),
),
);
// generateContentStream is now directly on the model (client)
const result = await client.generateContentStream({ contents: [{ parts: [{ text: content }] }] });
// getCompletionStream in GeminiSession expects an AsyncIterable
// result from generateContentStream should be directly usable if it's an AsyncIterableIterator<EnhancedGenerateContentResponse>
// or if result.stream is the correct iterator
return this.session.getCompletionStream(result);
}
const result = await client.generateContent(
getPartsText(
await GeminiHelper.messageContentToGeminiParts({ content: prompt }),
),
);
// generateContent is now directly on the model (client)
const result = await client.generateContent({ contents: [{ parts: [{ text: content }] }] });
return {
text: this.session.getResponseText(result.response),
raw: result.response,
@@ -81,7 +81,7 @@ export class GoogleStudio extends ToolCallLLM<GoogleAdditionalChatOptions> {
temperature: number;
topP: number;
maxTokens?: number | undefined;
topK?: number;
topK?: number; // Keep an eye on topK if it's used by the SDK's GenerationConfig
constructor({
temperature,
+70 -56
View File
@@ -1,12 +1,13 @@
import {
type GenerateContentResponse,
GoogleGenerativeAI,
GenerativeModel as GoogleGenerativeModel,
type EnhancedGenerateContentResponse,
type FunctionCall,
type ModelParams as GoogleModelParams,
type RequestOptions as GoogleRequestOptions, // Added for consistency if needed
type GenerateContentStreamResult as GoogleStreamGenerateContentResult,
type SafetySetting,
VertexAI,
GenerativeModel as VertexGenerativeModel,
GenerativeModelPreview as VertexGenerativeModelPreview,
type ModelParams as VertexModelParams,
type StreamGenerateContentResult as VertexStreamGenerateContentResult,
} from "@google-cloud/vertexai";
} from "@google/genai";
import type {
GeminiChatStreamResponse,
@@ -14,7 +15,7 @@ import type {
VertexGeminiSessionOptions,
} from "./types.js";
import type { FunctionCall } from "@google/generative-ai";
// ToolCall related imports are already here from @llamaindex/core/llms
import type {
CompletionResponse,
ToolCall,
@@ -22,7 +23,7 @@ import type {
} from "@llamaindex/core/llms";
import { streamConverter } from "@llamaindex/core/utils";
import { getEnv, randomUUID } from "@llamaindex/env";
import { DEFAULT_SAFETY_SETTINGS, getFunctionCalls, getText } from "./utils.js";
import { DEFAULT_SAFETY_SETTINGS } from "./utils.js"; // getText and getFunctionCalls might be replaced or inlined
/* To use Google's Vertex AI backend, it doesn't use api key authentication.
*
@@ -38,80 +39,93 @@ import { DEFAULT_SAFETY_SETTINGS, getFunctionCalls, getText } from "./utils.js";
* */
export class GeminiVertexSession implements IGeminiSession {
private vertex: VertexAI;
private preview: boolean = false;
private gemini: GoogleGenerativeAI;
private generativeModel: GoogleGenerativeModel;
constructor(options?: Partial<VertexGeminiSessionOptions>) {
const project = options?.project ?? getEnv("GOOGLE_VERTEX_PROJECT");
constructor(options?: VertexGeminiSessionOptions, modelParams?: GoogleModelParams, requestOpts?: GoogleRequestOptions) {
const project = options?.project ?? getEnv("GOOGLE_VERTEX_PROJECT_ID") ?? getEnv("GOOGLE_VERTEX_PROJECT");
const location = options?.location ?? getEnv("GOOGLE_VERTEX_LOCATION");
if (!project || !location) {
throw new Error(
"Set Google Vertex project and location in GOOGLE_VERTEX_PROJECT and GOOGLE_VERTEX_LOCATION env variables",
"Set Google Vertex project and location in GOOGLE_VERTEX_PROJECT_ID/GOOGLE_VERTEX_PROJECT and GOOGLE_VERTEX_LOCATION env variables",
);
}
this.vertex = new VertexAI({
...options,
this.gemini = new GoogleGenerativeAI({
vertexai: true,
project,
location,
apiVersion: options?.apiVersion, // Pass apiVersion if provided
});
this.preview = options?.preview ?? false;
}
getGenerativeModel(
metadata: VertexModelParams,
): VertexGenerativeModelPreview | VertexGenerativeModel {
const safetySettings = metadata.safetySettings ?? DEFAULT_SAFETY_SETTINGS;
if (this.preview) {
return this.vertex.preview.getGenerativeModel({
safetySettings: safetySettings as SafetySetting[],
...metadata,
});
if (!modelParams || !modelParams.model) {
throw new Error("Model parameters (modelParams) with a model name are required.");
}
return this.vertex.getGenerativeModel({
safetySettings: safetySettings as SafetySetting[],
...metadata,
});
}
getResponseText(response: GenerateContentResponse): string {
return getText(response);
}
getToolsFromResponse(
response: GenerateContentResponse,
): ToolCall[] | undefined {
return getFunctionCalls(response)?.map(
(call: FunctionCall) =>
({
name: call.name,
input: call.args,
id: randomUUID(),
}) as ToolCall,
this.generativeModel = this.gemini.getGenerativeModel(
{
safetySettings: modelParams.safetySettings ?? DEFAULT_SAFETY_SETTINGS,
...modelParams,
},
requestOpts,
);
}
getGenerativeModel(
_metadata?: GoogleModelParams, // No longer takes metadata here, it's part of constructor
_requestOpts?: GoogleRequestOptions,
): GoogleGenerativeModel {
return this.generativeModel;
}
getResponseText(response: EnhancedGenerateContentResponse): string {
// Align with base.ts GeminiSession
return response.text ?? "";
}
getToolsFromResponse(
response: EnhancedGenerateContentResponse,
): ToolCall[] | undefined {
// Align with base.ts GeminiSession
const fc = response.functionCalls;
if (fc) {
return fc.map(
(call: FunctionCall) =>
({
name: call.name,
input: call.args,
id: randomUUID(),
}) as ToolCall,
);
}
return undefined;
}
async *getChatStream(
result: VertexStreamGenerateContentResult,
result: GoogleStreamGenerateContentResult, // Use GoogleStreamGenerateContentResult from @google/genai
): GeminiChatStreamResponse {
yield* streamConverter(result.stream, (response) => {
// Align with base.ts GeminiSession
for await (const response of result.stream) {
const tools = this.getToolsFromResponse(response);
const options: ToolCallLLMMessageOptions = tools?.length
? { toolCall: tools }
: {};
return {
yield {
delta: this.getResponseText(response),
raw: response,
options,
};
});
}
}
getCompletionStream(
result: VertexStreamGenerateContentResult,
async *getCompletionStream( // Changed to async generator and use GoogleStreamGenerateContentResult
result: GoogleStreamGenerateContentResult,
): AsyncIterable<CompletionResponse> {
return streamConverter(result.stream, (response) => ({
text: this.getResponseText(response),
raw: response,
}));
// Align with base.ts GeminiSession
for await (const response of result.stream) {
yield {
text: this.getResponseText(response),
raw: response,
};
}
}
}
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/groq
## 0.0.72
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
## 0.0.71
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/groq",
"description": "Groq Adapter for LlamaIndex",
"version": "0.0.71",
"version": "0.0.72",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,13 @@
# @llamaindex/huggingface
## 0.1.11
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
## 0.1.10
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/huggingface",
"description": "Huggingface Adapter for LlamaIndex",
"version": "0.1.10",
"version": "0.1.11",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+8
View File
@@ -1,5 +1,13 @@
# @llamaindex/jinaai
## 0.0.17
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
## 0.0.16
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/jinaai",
"description": "JinaAI Adapter for LlamaIndex",
"version": "0.0.16",
"version": "0.0.17",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/mistral
## 0.1.7
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.1.6
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/mistral",
"description": "Mistral Adapter for LlamaIndex",
"version": "0.1.6",
"version": "0.1.7",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/mixedbread
## 0.0.21
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.0.20
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/mixedbread",
"description": "Mixedbread Adapter for LlamaIndex",
"version": "0.0.20",
"version": "0.0.21",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/notion
## 0.1.6
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.1.5
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/notion",
"description": "Notion Reader for LlamaIndex",
"version": "0.1.5",
"version": "0.1.6",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/ollama
## 0.1.7
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.1.6
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/ollama",
"description": "Ollama Adapter for LlamaIndex",
"version": "0.1.6",
"version": "0.1.7",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+8
View File
@@ -1,5 +1,13 @@
# @llamaindex/openai
## 0.4.1
### Patch Changes
- 59601dd: Add support for builtin image generation tool
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.4.0
### Minor Changes
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/openai",
"description": "OpenAI Adapter for LlamaIndex",
"version": "0.4.0",
"version": "0.4.1",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -31,15 +31,15 @@
"test": "vitest"
},
"devDependencies": {
"zod": "^3.24.2",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*"
"@llamaindex/env": "workspace:*",
"zod": "^3.24.2"
},
"peerDependencies": {
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*"
},
"dependencies": {
"openai": "^4.90.0"
"openai": "^4.102.0"
}
}
+21 -1
View File
@@ -1,4 +1,5 @@
import {
addContentPart,
ToolCallLLM,
type BaseTool,
type ChatMessage,
@@ -8,6 +9,7 @@ import {
type LLMChatParamsStreaming,
type LLMMetadata,
type MessageContent,
type MessageContentImageDataDetail,
type MessageType,
type PartialToolCall,
type ToolCallLLMMessageOptions,
@@ -182,6 +184,15 @@ export class OpenAIResponses extends ToolCallLLM<OpenAIResponsesChatOptions> {
return item.type === "function_call";
}
private isImageGenerationCall(
item: OpenAILLM.Responses.ResponseOutputItem,
): item is OpenAILLM.Responses.ResponseOutputItem.ImageGenerationCall {
return (
item.type === "image_generation_call" &&
typeof (item as { result?: unknown }).result === "string"
);
}
private isResponseCreatedEvent(
event: OpenAILLM.Responses.ResponseStreamEvent,
): event is OpenAILLM.Responses.ResponseCreatedEvent {
@@ -313,7 +324,16 @@ export class OpenAIResponses extends ToolCallLLM<OpenAIResponsesChatOptions> {
for (const item of response) {
if (this.isMessageBlock(item)) {
const outputContent = this.handleResponseOutputMessage(item, options);
message.content = outputContent;
if (outputContent) {
addContentPart(message, { type: "text", text: outputContent });
}
} else if (this.isImageGenerationCall(item) && item.result) {
const imagePart: MessageContentImageDataDetail = {
type: "image",
data: item.result,
mimeType: "image/png",
};
addContentPart(message, imagePart);
} else if (this.isBuiltInToolCall(item)) {
options.built_in_tool_calls.push(item);
} else if (this.isReasoning(item)) {
+1
View File
@@ -129,6 +129,7 @@ export const ALL_AVAILABLE_OPENAI_MODELS = {
...O1_MODELS,
...O3_MODELS,
...O4_MODELS,
"codex-mini-latest": { contextWindow: 200000 },
} satisfies Record<ChatModel, { contextWindow: number }>;
export function isFunctionCallingModel(llm: LLM): llm is OpenAI {
@@ -1,5 +1,13 @@
# @llamaindex/perplexity
## 0.0.14
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
## 0.0.13
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/perplexity",
"description": "Perplexity Adapter for LlamaIndex",
"version": "0.0.13",
"version": "0.0.14",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/portkey-ai
## 0.0.49
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.0.48
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/portkey-ai",
"description": "Portkey Adapter for LlamaIndex",
"version": "0.0.48",
"version": "0.0.49",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/replicate
## 0.0.49
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.0.48
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/replicate",
"description": "Replicate Adapter for LlamaIndex",
"version": "0.0.48",
"version": "0.0.49",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/astra
## 0.0.21
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 0.0.20
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/astra",
"description": "Astra Storage for LlamaIndex",
"version": "0.0.20",
"version": "0.0.21",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,13 @@
# @llamaindex/azure
## 0.1.17
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/openai@0.4.1
- @llamaindex/core@0.6.7
## 0.1.16
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/azure",
"description": "Azure Storage for LlamaIndex",
"version": "0.1.16",
"version": "0.1.17",
"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