Merge pull request #744 from janhq/fix508

docs: update specs/product
This commit is contained in:
0xSage 2023-11-28 15:04:29 +08:00 committed by GitHub
commit 460cb3377a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 137 additions and 63 deletions

View File

@ -1,5 +1,6 @@
---
title: Architecture
slug: /specs
---
:::warning
@ -10,35 +11,28 @@ This page is still under construction, and should be read as a scratchpad
## Overview
- Jan built a modular infrastructure on top of Electron, in order to support extensions and AI functionality.
- Jan is largely built on top of its own modules.
- Jan has a modular architecture and is largely built on top of its own modules.
- Jan uses a local [file-based approach](/specs/file-based) for data persistence.
## Modules
Modules are low level, system services. It is similar to OS kernel modules, in that `modules` provide abstractions to device level, basic functionality like the filesystem, device system, databases, AI inference engines, etc.
## Pluggable Modules
Jan exports modules that mirror OpenAIs, exposing similar APIs and objects:
- Modules are modular, atomic implementations of a single OpenAI-compatible endpoint
- Modules can be swapped out for alternate implementations
- The default `messages` module persists messages in thread-specific `.json`
- `messages-postgresql` uses Postgres for production-grade cloud-native environments
| Jan Module | Description | API Docs |
| ---------- | ------------- | ---------------------------- |
| Chat | Inference | [/chat](/api/chat) |
| Models | Models | [/model](/api/model) |
| Assistants | Apps | [/assistant](/api/assistant) |
| Threads | Conversations | [/thread](/api/thread) |
| Messages | Messages | [/message](/api/message) |
<!-- TODO: link npm modules -->
- Jan currently supports an Electron-based [Desktop UI](https://github.com/janhq/jan) and a C++ inference engine called [Nitro](https://nitro.jan.ai/docs/).
## Extensions
Extensions are feature level services that include both UI and logic implementation.
Jan has an Extensions API inspired by VSCode. In fact, most of Jan's core services are built as extensions.
<!-- TODO[@linh]: add all of @linh's specs here -->
Jan supports the following OpenAI compatible extensions:
| Jan Module | Description | API Docs |
| ---------- | ------------- | --------------------------------------------- |
| Chat | Inference | [/chats](/api-reference/#tag/Chat-Completion) |
| Models | Models | [/models](/api-reference/#tag/Models) |
| Assistants | Apps | [/assistants](/api-reference/#tag/Assistants) |
| Threads | Conversations | [/threads](/api-reference/#tag/Threads) |
| Messages | Messages | [/messages](/api-reference/#tag/Messages) |
<!-- TODO: link npm modules -->
## Modules
Modules are low level, system services. It is similar to OS kernel modules. Modules provide abstractions to basic, device level functionality like working with the filesystem, device system, databases, AI inference engines, etc.
Jan follows the [dependency inversion principle](https://en.wikipedia.org/wiki/Dependency_inversion_principle) such that `modules` expose the interfaces that `extensions` can then implement.

View File

@ -1,5 +1,6 @@
---
title: "Assistants"
slug: /specs/assistants
---
:::caution
@ -14,7 +15,7 @@ In Jan, assistants are `primary` entities with the following capabilities:
- Assistants can use `models`, `tools`, handle and emit `events`, and invoke `custom code`.
- Users can create custom assistants with saved `model` settings and parameters.
- An [OpenAI Assistants API](https://platform.openai.com/docs/api-reference/assistants) compatible endpoint at `localhost:3000/v1/assistants`.
- An [OpenAI Assistants API](https://platform.openai.com/docs/api-reference/assistants) compatible endpoint at `localhost:1337/v1/assistants`.
- Jan ships with a default assistant called "Jan" that lets you use all models.
## Folder Structure
@ -49,6 +50,7 @@ In Jan, assistants are `primary` entities with the following capabilities:
"models": [ // Defaults to "*" all models
{ ...model_0 }
],
"instructions": "Be concise", // A system prompt for the assistant
"events": [], // Defaults to "*"
"metadata": {}, // Defaults to {}
// "tools": [], // Coming soon

View File

@ -1,5 +1,6 @@
---
title: Chats
slug: /specs/chats
---
:::caution
@ -13,7 +14,7 @@ This is currently under development.
In Jan, `chats` are LLM responses in the form of OpenAI compatible `chat completion objects`.
- Models take a list of messages and return a model-generated response as output.
- An [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) compatible endpoint at `localhost:3000/v1/chats`.
- An [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) compatible endpoint at `localhost:1337/v1/chats`.
## Folder Structure

View File

@ -1,5 +1,6 @@
---
title: "Files"
slug: /specs/files
---
:::warning

View File

@ -0,0 +1,6 @@
---
title: "Fine-tuning"
slug: /specs/finetuning
---
Todo: @hiro

View File

@ -1,5 +1,6 @@
---
title: Messages
slug: /specs/messages
---
:::caution

View File

@ -1,5 +1,6 @@
---
title: Models
slug: /specs/models
---
:::caution
@ -13,7 +14,7 @@ This is currently under development.
In Jan, models are primary entities with the following capabilities:
- Users can import, configure, and run models locally.
- An [OpenAI Model API](https://platform.openai.com/docs/api-reference/models) compatible endpoint at `localhost:3000/v1/models`.
- An [OpenAI Model API](https://platform.openai.com/docs/api-reference/models) compatible endpoint at `localhost:1337/v1/models`.
- Supported model formats: `ggufv3`, and more.
## Folder Structure

View File

@ -1,7 +1,8 @@
---
title: Prompts
slug: /specs/prompts
---
- [ ] /prompts folder
- [ ] How to add to prompts
- [ ] Assistants can have suggested Prompts
- [ ] Assistants can have suggested Prompts

View File

@ -1,5 +1,6 @@
---
title: Threads
slug: /specs/threads
---
:::caution

View File

@ -1,4 +0,0 @@
---
title: "Fine-tuning"
---
Todo: @hiro

View File

@ -1,3 +0,0 @@
---
title: Home
---

View File

@ -1,3 +0,0 @@
---
title: Hub
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@ -0,0 +1,17 @@
---
title: Chat
slug: /specs/chat
---
## Overview
A home screen for users to chat with [assistants](/specs/assistants) via conversation [threads](/specs/threads).
![alt text](../img/chat-screen.png)
## User Stories
<!-- Can also be used as a QA Checklist -->
- Users can chat with `Jan` the default assistant
- Users can customize chat settings like model parameters via both the GUI & `thread.json`

View File

@ -0,0 +1,18 @@
---
title: Hub
slug: /specs/hub
---
## Overview
The Hub is like a store for everything, where users can discover and download models, assistants, and more.
![alt text](../img/hub-screen.png)
## User Stories
<!-- Can also be used as a QA Checklist -->
- Users can discover recommended models (Jan ships with a few preconfigured `model.json` files)
- Users can download models suitable for their devices, e.g. compatible with their RAM
- Users can download models via a HuggingFace URL (coming soon)

View File

@ -0,0 +1,32 @@
---
title: Settings
slug: /specs/settings
---
## Overview
A settings page for users to add extensions, configure model settings, change app appearance, add keyboard shortcuts, and a plethora of other personalizations.
![alt text](../img/settings-screen.png)
## User Stories
<!-- Can also be used as a QA Checklist -->
### General Settings
- Users can customize `port` number
- Users can customize `janroot` folder location
### Extensions Settings
- Users can add, delete, and configure extensions
### Model Settings
- Users can configure default model parameters and settings
- Users can delete models
### Appearance
- Users can set color themes and dark/light modes

View File

@ -0,0 +1,17 @@
---
title: System Monitor
slug: /specs/system-monitor
---
## Overview
An activity screen to monitor system health and running models.
![alt text](../img/system-screen.png)
## User Stories
<!-- Can also be used as a QA Checklist -->
- Users can see disk and ram utilization
- Users can start and stop models based on system health

View File

@ -1,5 +0,0 @@
---
title: Settings
---
- [ ] .jan folder in jan root

View File

@ -1,3 +0,0 @@
---
title: System Monitor
---

View File

@ -66,10 +66,10 @@ const sidebars = {
collapsible: true,
collapsed: false,
items: [
"specs/home",
"specs/hub",
"specs/system-monitor",
"specs/settings",
"specs/product/chat",
"specs/product/hub",
"specs/product/system-monitor",
"specs/product/settings",
],
},
@ -79,16 +79,16 @@ const sidebars = {
collapsible: true,
collapsed: false,
items: [
"specs/chats",
"specs/models",
"specs/threads",
"specs/messages",
"specs/assistants",
// "specs/files",
// "specs/jan",
// "specs/fine-tuning",
// "specs/settings",
// "specs/prompts",
"specs/engineering/chats",
"specs/engineering/models",
"specs/engineering/threads",
"specs/engineering/messages",
"specs/engineering/assistants",
// "specs/engineering/files",
// "specs/engineering/jan",
// "specs/engineering/fine-tuning",
// "specs/engineering/settings",
// "specs/engineering/prompts",
],
},
],