* feat: tensorrt-llm-extension * fix: loading * feat: add download tensorrt llm runner Signed-off-by: James <james@jan.ai> * feat: update to rollupjs instead of webpack for monitoring extension Signed-off-by: James <james@jan.ai> * feat: move update nvidia info to monitor extension Signed-off-by: James <james@jan.ai> * allow download tensorrt Signed-off-by: James <james@jan.ai> * update Signed-off-by: James <james@jan.ai> * allow download tensor rt based on gpu setting Signed-off-by: James <james@jan.ai> * update downloaded models Signed-off-by: James <james@jan.ai> * feat: add extension compatibility * dynamic tensor rt engines Signed-off-by: James <james@jan.ai> * update models Signed-off-by: James <james@jan.ai> * chore: remove ts-ignore * feat: getting installation state from extension Signed-off-by: James <james@jan.ai> * chore: adding type for decompress Signed-off-by: James <james@jan.ai> * feat: update according Louis's comment Signed-off-by: James <james@jan.ai> * feat: add progress for installing extension Signed-off-by: James <james@jan.ai> * chore: remove args from extension installation * fix: model download does not work properly * fix: do not allow user to stop tensorrtllm inference * fix: extension installed style * fix: download tensorrt does not update state Signed-off-by: James <james@jan.ai> * chore: replace int4 by fl16 * feat: modal for installing extension Signed-off-by: James <james@jan.ai> * fix: start download immediately after press install Signed-off-by: James <james@jan.ai> * fix: error switching between engines * feat: rename inference provider to ai engine and refactor to core * fix: missing ulid * fix: core bundler * feat: add cancel extension installing Signed-off-by: James <james@jan.ai> * remove mocking for mac Signed-off-by: James <james@jan.ai> * fix: show models only when extension is ready * add tensorrt badge for model Signed-off-by: James <james@jan.ai> * fix: copy * fix: add compatible check (#2342) * fix: add compatible check Signed-off-by: James <james@jan.ai> * fix: copy * fix: font * fix: copy * fix: broken monitoring extension * chore: bump engine * fix: copy * fix: model copy * fix: copy * fix: model json --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: Louis <louis@jan.ai> * fix: vulkan support * fix: installation button padding * fix: empty script * fix: remove hard code string --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: NamH <NamNh0122@gmail.com>
80 lines
2.6 KiB
Markdown
80 lines
2.6 KiB
Markdown
# Tensorrt-LLM Extension
|
|
|
|
Created using Jan extension example
|
|
|
|
# Create a Jan Extension using Typescript
|
|
|
|
Use this template to bootstrap the creation of a TypeScript Jan extension. 🚀
|
|
|
|
## Create Your Own Extension
|
|
|
|
To create your own extension, you can use this repository as a template! Just follow the below instructions:
|
|
|
|
1. Click the Use this template button at the top of the repository
|
|
2. Select Create a new repository
|
|
3. Select an owner and name for your new repository
|
|
4. Click Create repository
|
|
5. Clone your new repository
|
|
|
|
## Initial Setup
|
|
|
|
After you've cloned the repository to your local machine or codespace, you'll need to perform some initial setup steps before you can develop your extension.
|
|
|
|
> [!NOTE]
|
|
>
|
|
> You'll need to have a reasonably modern version of
|
|
> [Node.js](https://nodejs.org) handy. If you are using a version manager like
|
|
> [`nodenv`](https://github.com/nodenv/nodenv) or
|
|
> [`nvm`](https://github.com/nvm-sh/nvm), you can run `nodenv install` in the
|
|
> root of your repository to install the version specified in
|
|
> [`package.json`](./package.json). Otherwise, 20.x or later should work!
|
|
|
|
1. :hammer_and_wrench: Install the dependencies
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
1. :building_construction: Package the TypeScript for distribution
|
|
|
|
```bash
|
|
npm run bundle
|
|
```
|
|
|
|
1. :white_check_mark: Check your artifact
|
|
|
|
There will be a tgz file in your extension directory now
|
|
|
|
## Update the Extension Metadata
|
|
|
|
The [`package.json`](package.json) file defines metadata about your extension, such as
|
|
extension name, main entry, description and version.
|
|
|
|
When you copy this repository, update `package.json` with the name, description for your extension.
|
|
|
|
## Update the Extension Code
|
|
|
|
The [`src/`](./src/) directory is the heart of your extension! This contains the
|
|
source code that will be run when your extension functions are invoked. You can replace the
|
|
contents of this directory with your own code.
|
|
|
|
There are a few things to keep in mind when writing your extension code:
|
|
|
|
- Most Jan Extension functions are processed asynchronously.
|
|
In `index.ts`, you will see that the extension function will return a `Promise<any>`.
|
|
|
|
```typescript
|
|
import { events, MessageEvent, MessageRequest } from '@janhq/core'
|
|
|
|
function onStart(): Promise<any> {
|
|
return events.on(MessageEvent.OnMessageSent, (data: MessageRequest) =>
|
|
this.inference(data)
|
|
)
|
|
}
|
|
```
|
|
|
|
For more information about the Jan Extension Core module, see the
|
|
[documentation](https://github.com/janhq/jan/blob/main/core/README.md).
|
|
|
|
So, what are you waiting for? Go ahead and start customizing your extension!
|