From f066e504826b54fab4d35b342db9af6f2271cf7d Mon Sep 17 00:00:00 2001 From: Alex Yang <himself65@outlook.com> Date: Mon, 11 Nov 2024 13:14:08 -0800 Subject: [PATCH] feat: vllm support (#1468) --- .changeset/pink-dolls-destroy.md | 6 +++++ examples/vllm.ts | 16 +++++++++++ packages/llamaindex/package.json | 3 ++- packages/llamaindex/src/llm/index.ts | 2 +- packages/providers/vllm/package.json | 38 +++++++++++++++++++++++++++ packages/providers/vllm/src/index.ts | 1 + packages/providers/vllm/src/llm.ts | 25 ++++++++++++++++++ packages/providers/vllm/tsconfig.json | 16 +++++++++++ pnpm-lock.yaml | 13 +++++++++ tsconfig.json | 3 +++ 10 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 .changeset/pink-dolls-destroy.md create mode 100644 examples/vllm.ts create mode 100644 packages/providers/vllm/package.json create mode 100644 packages/providers/vllm/src/index.ts create mode 100644 packages/providers/vllm/src/llm.ts create mode 100644 packages/providers/vllm/tsconfig.json diff --git a/.changeset/pink-dolls-destroy.md b/.changeset/pink-dolls-destroy.md new file mode 100644 index 000000000..33f1e17d8 --- /dev/null +++ b/.changeset/pink-dolls-destroy.md @@ -0,0 +1,6 @@ +--- +"llamaindex": patch +"@llamaindex/vllm": patch +--- + +feat: vllm support diff --git a/examples/vllm.ts b/examples/vllm.ts new file mode 100644 index 000000000..f65cd375e --- /dev/null +++ b/examples/vllm.ts @@ -0,0 +1,16 @@ +import { VLLM } from "llamaindex"; + +const llm = new VLLM({ + model: "NousResearch/Meta-Llama-3-8B-Instruct", +}); + +const response = await llm.chat({ + messages: [ + { + role: "user", + content: "Hello?", + }, + ], +}); + +console.log(response.message.content); diff --git a/packages/llamaindex/package.json b/packages/llamaindex/package.json index 124edc354..d65a4474a 100644 --- a/packages/llamaindex/package.json +++ b/packages/llamaindex/package.json @@ -44,6 +44,7 @@ "@llamaindex/portkey-ai": "workspace:*", "@llamaindex/readers": "workspace:*", "@llamaindex/replicate": "workspace:*", + "@llamaindex/vllm": "workspace:*", "@mistralai/mistralai": "^1.0.4", "@mixedbread-ai/sdk": "^2.2.11", "@pinecone-database/pinecone": "^3.0.2", @@ -85,10 +86,10 @@ } }, "devDependencies": { + "@huggingface/transformers": "^3.0.2", "@swc/cli": "^0.5.0", "@swc/core": "^1.7.22", "@vercel/postgres": "^0.10.0", - "@huggingface/transformers": "^3.0.2", "concurrently": "^9.1.0", "glob": "^11.0.0", "pg": "^8.12.0", diff --git a/packages/llamaindex/src/llm/index.ts b/packages/llamaindex/src/llm/index.ts index 5596440a0..83e4b7f08 100644 --- a/packages/llamaindex/src/llm/index.ts +++ b/packages/llamaindex/src/llm/index.ts @@ -1,3 +1,4 @@ +export { VLLM, type VLLMParams } from "@llamaindex/vllm"; export { ALL_AVAILABLE_ANTHROPIC_LEGACY_MODELS, ALL_AVAILABLE_ANTHROPIC_MODELS, @@ -6,7 +7,6 @@ export { } from "./anthropic.js"; export { FireworksLLM } from "./fireworks.js"; export { Gemini, GeminiSession } from "./gemini/base.js"; - export { GEMINI_MODEL, type GoogleGeminiSessionOptions, diff --git a/packages/providers/vllm/package.json b/packages/providers/vllm/package.json new file mode 100644 index 000000000..b72a2001d --- /dev/null +++ b/packages/providers/vllm/package.json @@ -0,0 +1,38 @@ +{ + "name": "@llamaindex/vllm", + "description": "vLLM Adapter for LlamaIndex", + "version": "0.0.1", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "exports": { + ".": { + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + }, + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "files": [ + "dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/run-llama/LlamaIndexTS.git", + "directory": "packages/providers/vllm" + }, + "scripts": { + "build": "bunchee", + "dev": "bunchee --watch" + }, + "devDependencies": { + "bunchee": "5.6.1" + }, + "dependencies": { + "@llamaindex/openai": "workspace:*" + } +} diff --git a/packages/providers/vllm/src/index.ts b/packages/providers/vllm/src/index.ts new file mode 100644 index 000000000..2c5bc5792 --- /dev/null +++ b/packages/providers/vllm/src/index.ts @@ -0,0 +1 @@ +export { VLLM, type VLLMParams } from "./llm"; diff --git a/packages/providers/vllm/src/llm.ts b/packages/providers/vllm/src/llm.ts new file mode 100644 index 000000000..28b56afc0 --- /dev/null +++ b/packages/providers/vllm/src/llm.ts @@ -0,0 +1,25 @@ +/** + * vLLM + * + * https://docs.vllm.ai/en/latest/index.html + * + * @module + */ +import { OpenAI } from "@llamaindex/openai"; + +export type VLLMParams = { + model: string; + baseURL?: string; +}; + +export class VLLM extends OpenAI { + constructor(params: VLLMParams) { + super({ + additionalSessionOptions: { + baseURL: "http://localhost:8000/v1", + }, + model: params.model, + apiKey: "token-abc123", + }); + } +} diff --git a/packages/providers/vllm/tsconfig.json b/packages/providers/vllm/tsconfig.json new file mode 100644 index 000000000..7af4eb314 --- /dev/null +++ b/packages/providers/vllm/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "outDir": "./lib", + "tsBuildInfoFile": "./lib/.tsbuildinfo" + }, + "include": ["./src", "package.json"], + "references": [ + { + "path": "../openai/tsconfig.json" + } + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d650bd2c..c1e41071e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1026,6 +1026,9 @@ importers: '@llamaindex/replicate': specifier: workspace:* version: link:../providers/replicate + '@llamaindex/vllm': + specifier: workspace:* + version: link:../providers/vllm '@mistralai/mistralai': specifier: ^1.0.4 version: 1.1.0(zod@3.23.8) @@ -1350,6 +1353,16 @@ importers: specifier: 5.6.1 version: 5.6.1(typescript@5.6.3) + packages/providers/vllm: + dependencies: + '@llamaindex/openai': + specifier: workspace:* + version: link:../openai + devDependencies: + bunchee: + specifier: 5.6.1 + version: 5.6.1(typescript@5.6.3) + packages/readers: dependencies: '@azure/cosmos': diff --git a/tsconfig.json b/tsconfig.json index 0d73a1e45..3be6d6b8d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -53,6 +53,9 @@ { "path": "./packages/providers/ollama/tsconfig.json" }, + { + "path": "./packages/providers/vllm/tsconfig.json" + }, { "path": "./packages/cloud/tsconfig.json" }, -- GitLab