Merge pull request #657 from janhq/docs/intro-and-models-spec
[docs] Add Introduction and refactor Models Spec
This commit is contained in:
commit
b384f58f8e
3
docs/docs/docs/extensions.md
Normal file
3
docs/docs/docs/extensions.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Extending Jan
|
||||
---
|
||||
@ -1,3 +1,11 @@
|
||||
---
|
||||
title: How Jan Works
|
||||
---
|
||||
---
|
||||
|
||||
- Local Filesystem
|
||||
- Follow-on from Quickstart to show how things actually worked
|
||||
- Write in a conversational style, show how things work under the hood
|
||||
- Check how filesystem changed after each request
|
||||
- Model loading into RAM/VRAM
|
||||
- Explain how the .bin file is loaded via Llama.cpp
|
||||
- Explain how it consumes RAM and VRAM, and refer to system monitor
|
||||
|
||||
@ -1,104 +1,34 @@
|
||||
---
|
||||
title: Introduction
|
||||
slug: /docs
|
||||
slug: /intro
|
||||
---
|
||||
|
||||
Jan can be used to build a variety of AI use cases, at every level of the stack:
|
||||
Jan is a ChatGPT-alternative that runs on your own computer.
|
||||
|
||||
- An OpenAI compatible API, with feature parity for `models`, `assistants`, `files` and more
|
||||
- A standard data format on top of the user's local filesystem, allowing for transparency and composability
|
||||
- Automatically package and distribute to Mac, Windows and Linux. Cloud coming soon
|
||||
- An UI kit to customize user interactions with `assistants` and more
|
||||
- A standalone inference engine for low level use cases
|
||||
Jan uses [open-source AI models](/guide/models), stores data in [open file formats](/specs/data-structures) and is is highly customizable via [extensions](/guide/extensions).
|
||||
|
||||
## Resources
|
||||
Jan ships with an [OpenAI-compatible API](/api) and a powerful [Assistant framework](/guide/assistants) to create custom AIs.
|
||||
|
||||
<!-- (@Rex: to add some quickstart tutorials) -->
|
||||
## Why Jan?
|
||||
|
||||
- Create an AI assistant
|
||||
- Run an OpenAI compatible API endpoint
|
||||
- Build a VSCode plugin with a local model
|
||||
- Build a Jan platform module
|
||||
#### 💻 Own your AI
|
||||
Jan runs 100% on your own machine, [predictably](https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7ksti6/?utm_source=share&utm_medium=web2x&context=3), privately and even offline. No one else can see your conversations, not even us.
|
||||
|
||||
## Key Concepts
|
||||
#### 🏗️ Extensions
|
||||
Jan ships with a powerful [extension framework](/guide/extensions), which allows developers to extend and customize Jan's functionality. In fact, most core modules of Jan are [built as extensions](/specs/architecture) and use the same extensions API.
|
||||
|
||||
### Modules
|
||||
#### 🗂️ Open File Formats
|
||||
Jan stores data in a [local folder of non-proprietary files](/specs/data-structures). You're never locked-in and can do what you want with your data with extensions, or even a different app.
|
||||
|
||||
Jan is comprised of system-level modules that mirror OpenAI’s, exposing similar APIs and objects
|
||||
#### 🌍 Open Source
|
||||
Both Jan and [Nitro](https://nitro.jan.ai), our lightweight inference engine, are licensed via the open source [AGPLv3 license](https://github.com/janhq/jan/blob/main/LICENSE).
|
||||
|
||||
- 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
|
||||
<!-- ## Design Principles -->
|
||||
|
||||
| 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) |
|
||||
<!-- OpenAI meets VSCode meets Obsidian.
|
||||
|
||||
### Local Filesystem
|
||||
Minimalism: https://docusaurus.io/docs#design-principles. Not having abstractions is better than having the wrong abstractions. Assistants as code. Only including features that are absolutely necessary in the Jan API.
|
||||
|
||||
Jan use the local filesystem for data persistence, similar to VSCode. This allows for composability and tinkerability.
|
||||
File-based: User should be able to look at a Jan directory and intuit how it works. Transparency. Editing things via a text editor, vs. needing a database tool for SQLite.
|
||||
|
||||
```sh=
|
||||
/janroot # Jan's root folder (e.g. ~/jan)
|
||||
/models # For raw AI models
|
||||
/threads # For conversation history
|
||||
/assistants # For AI assistants' configs, knowledge, etc.
|
||||
```
|
||||
|
||||
```sh=
|
||||
/models
|
||||
/modelA
|
||||
model.json # Default model settings
|
||||
llama-7b-q4.gguf # Model binaries
|
||||
llama-7b-q5.gguf # Include different quantizations
|
||||
/threads
|
||||
/jan-unixstamp-salt
|
||||
model.json # Overrides assistant/model-level model settings
|
||||
thread.json # thread metadata (e.g. subject)
|
||||
messages.json # messages
|
||||
content.json # What is this?
|
||||
files/ # Future for RAG
|
||||
/assistants
|
||||
/jan
|
||||
assistant.json # Assistant configs (see below)
|
||||
|
||||
# For any custom code
|
||||
package.json # Import npm modules
|
||||
# e.g. Langchain, Llamaindex
|
||||
/src # Supporting files (needs better name)
|
||||
index.js # Entrypoint
|
||||
process.js # For electron IPC processes (needs better name)
|
||||
|
||||
# `/threads` at root level
|
||||
# `/models` at root level
|
||||
/shakespeare
|
||||
assistant.json
|
||||
model.json # Creator chooses model and settings
|
||||
package.json
|
||||
/src
|
||||
index.js
|
||||
process.js
|
||||
|
||||
/threads # Assistants remember conversations in the future
|
||||
/models # Users can upload custom models
|
||||
/finetuned-model
|
||||
```
|
||||
|
||||
### Jan: a "global" assistant
|
||||
|
||||
Jan ships with a default assistant "Jan" that lets users chat with any open source model out-of-the-box.
|
||||
|
||||
This assistant is defined in `/jan`. It is a generic assistant to illustrate power of Jan. In the future, it will support additional features e.g. multi-assistant conversations
|
||||
|
||||
- Your Assistant "Jan" lets you pick any model that is in the root /models folder
|
||||
- Right panel: pick LLM model and set model parameters
|
||||
- Jan’s threads will be at root level
|
||||
- `model.json` will reflect model chosen for that session
|
||||
- Be able to “add” other assistants in the future
|
||||
- Jan’s files will be at thread level
|
||||
- Jan is not a persistent memory assistant
|
||||
Participatory: https://www.getlago.com/blog/the-5-reasons-why-we-chose-open-source -->
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
---
|
||||
title: Quickstart
|
||||
---
|
||||
|
||||
- Write in the style of comics, explanation
|
||||
- Similar to why's (poignant) Guide to Ruby
|
||||
- https://en.wikipedia.org/wiki/Why%27s_(poignant)_Guide_to_Ruby
|
||||
@ -2,6 +2,24 @@
|
||||
title: Architecture
|
||||
---
|
||||
|
||||
- Jan is built using modules
|
||||
- Plugin architecture (on Pluggable-Electron)
|
||||
|
||||
Jan is comprised of system-level modules that mirror OpenAI’s, 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) |
|
||||
|
||||
## Concepts
|
||||
|
||||
```mermaid
|
||||
@ -23,19 +41,3 @@ graph LR
|
||||
- Model object
|
||||
- Thread object
|
||||
- Built-in tool object
|
||||
|
||||
## File system
|
||||
```sh
|
||||
janroot/
|
||||
assistants/
|
||||
assistant-a/
|
||||
assistant.json
|
||||
src/
|
||||
index.ts
|
||||
threads/
|
||||
thread-a/
|
||||
thread-b
|
||||
models/
|
||||
model-a/
|
||||
model.json
|
||||
```
|
||||
@ -1,3 +1,69 @@
|
||||
---
|
||||
title: Data Structures
|
||||
---
|
||||
---
|
||||
|
||||
|
||||
```sh
|
||||
janroot/
|
||||
assistants/
|
||||
assistant-a/
|
||||
assistant.json
|
||||
src/
|
||||
index.ts
|
||||
threads/
|
||||
thread-a/
|
||||
thread-b
|
||||
models/
|
||||
model-a/
|
||||
model.json
|
||||
```
|
||||
|
||||
|
||||
|
||||
Jan use the local filesystem for data persistence, similar to VSCode. This allows for composability and tinkerability.
|
||||
|
||||
```sh=
|
||||
/janroot # Jan's root folder (e.g. ~/jan)
|
||||
/models # For raw AI models
|
||||
/threads # For conversation history
|
||||
/assistants # For AI assistants' configs, knowledge, etc.
|
||||
```
|
||||
|
||||
```sh=
|
||||
/models
|
||||
/modelA
|
||||
model.json # Default model settings
|
||||
llama-7b-q4.gguf # Model binaries
|
||||
llama-7b-q5.gguf # Include different quantizations
|
||||
/threads
|
||||
/jan-unixstamp-salt
|
||||
model.json # Overrides assistant/model-level model settings
|
||||
thread.json # thread metadata (e.g. subject)
|
||||
messages.json # messages
|
||||
content.json # What is this?
|
||||
files/ # Future for RAG
|
||||
/assistants
|
||||
/jan
|
||||
assistant.json # Assistant configs (see below)
|
||||
|
||||
# For any custom code
|
||||
package.json # Import npm modules
|
||||
# e.g. Langchain, Llamaindex
|
||||
/src # Supporting files (needs better name)
|
||||
index.js # Entrypoint
|
||||
process.js # For electron IPC processes (needs better name)
|
||||
|
||||
# `/threads` at root level
|
||||
# `/models` at root level
|
||||
/shakespeare
|
||||
assistant.json
|
||||
model.json # Creator chooses model and settings
|
||||
package.json
|
||||
/src
|
||||
index.js
|
||||
process.js
|
||||
|
||||
/threads # Assistants remember conversations in the future
|
||||
/models # Users can upload custom models
|
||||
/finetuned-model
|
||||
```
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
---
|
||||
title: "Fine tuning"
|
||||
title: "Fine-tuning"
|
||||
---
|
||||
Todo: @hiro
|
||||
@ -1,3 +1,17 @@
|
||||
---
|
||||
title: Jan
|
||||
---
|
||||
title: Jan (Assistant)
|
||||
---
|
||||
|
||||
## Jan: a "global" assistant
|
||||
|
||||
Jan ships with a default assistant "Jan" that lets users chat with any open source model out-of-the-box.
|
||||
|
||||
This assistant is defined in `/jan`. It is a generic assistant to illustrate power of Jan. In the future, it will support additional features e.g. multi-assistant conversations
|
||||
|
||||
- Your Assistant "Jan" lets you pick any model that is in the root /models folder
|
||||
- Right panel: pick LLM model and set model parameters
|
||||
- Jan’s threads will be at root level
|
||||
- `model.json` will reflect model chosen for that session
|
||||
- Be able to “add” other assistants in the future
|
||||
- Jan’s files will be at thread level
|
||||
- Jan is not a persistent memory assistant
|
||||
|
||||
@ -10,56 +10,103 @@ Feedback: [HackMD: Models Spec](https://hackmd.io/ulO3uB1AQCqLa5SAAMFOQw)
|
||||
|
||||
:::
|
||||
|
||||
Models are AI models like Llama and Mistral
|
||||
## Overview
|
||||
|
||||
> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models
|
||||
Jan's Model API aims to be as similar as possible to [OpenAI's Models API](https://platform.openai.com/docs/api-reference/models), with additional methods for managing and running models locally.
|
||||
|
||||
## User Stories
|
||||
### User Objectives
|
||||
|
||||
_Users can download a model via a web URL_
|
||||
- Users can start/stop models and use them in a thread (or via Chat Completions API)
|
||||
- Users can download, import and delete models
|
||||
- User can configure model settings at the model level or override it at thread-level
|
||||
- Users can use remote models (e.g. OpenAI, OpenRouter)
|
||||
|
||||
- Wireframes here
|
||||
## Models Folder
|
||||
|
||||
_Users can import a model from local directory_
|
||||
Models in Jan are stored in the `/models` folder.
|
||||
|
||||
- Wireframes here
|
||||
`<model-name>.json` files.
|
||||
|
||||
_Users can configure model settings, like run parameters_
|
||||
- Everything needed to represent a `model` is packaged into an `Model folder`.
|
||||
- The `folder` is standalone and can be easily zipped, imported, and exported, e.g. to Github.
|
||||
- The `folder` always contains at least one `Model Object`, declared in a `json` format.
|
||||
- The `folder` and `file` do not have to share the same name
|
||||
- The model `id` is made up of `folder_name/filename` and is thus always unique.
|
||||
|
||||
- Wireframes here
|
||||
```sh
|
||||
/janroot
|
||||
/models
|
||||
azure-openai/ # Folder name
|
||||
azure-openai-gpt3-5.json # File name
|
||||
|
||||
_Users can override run settings at runtime_
|
||||
llama2-70b/
|
||||
model.json
|
||||
.gguf
|
||||
```
|
||||
|
||||
- See Assistant Spec and Thread
|
||||
## Model Object
|
||||
|
||||
## Jan Model Object
|
||||
Models in Jan are represented as `json` objects, and are colloquially known as `model.jsons`.
|
||||
|
||||
- A `Jan Model Object` is a “representation" of a model
|
||||
- Objects are defined by `model-name.json` files in `json` format
|
||||
- Objects are identified by `folder-name/model-name`, where its `id` is indicative of its file location.
|
||||
- Objects are designed to be compatible with `OpenAI Model Objects`, with additional properties needed to run on our infrastructure.
|
||||
- ALL object properties are optional, i.e. users should be able to run a model declared by an empty `json` file.
|
||||
Jan's models follow a `<model_name>.json` naming convention.
|
||||
|
||||
Jan's `model.json` aims for rough equivalence with [OpenAI's Model Object](https://platform.openai.com/docs/api-reference/models/object), and add additional properties to support local models.
|
||||
|
||||
Jan's `model.json` object properties are optional, i.e. users should be able to run a model declared by an empty `json` file.
|
||||
|
||||
```json
|
||||
// ./models/zephr/zephyr-7b-beta-Q4_K_M.json
|
||||
{
|
||||
"source_url": "https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf",
|
||||
"parameters": {
|
||||
"init": {
|
||||
"ctx_len": "2048",
|
||||
"ngl": "100",
|
||||
"embedding": "true",
|
||||
"n_parallel": "4",
|
||||
"pre_prompt": "A chat between a curious user and an artificial intelligence",
|
||||
"user_prompt": "USER: ",
|
||||
"ai_prompt": "ASSISTANT: "
|
||||
},
|
||||
"runtime": {
|
||||
"temperature": "0.7",
|
||||
"token_limit": "2048",
|
||||
"top_k": "0",
|
||||
"top_p": "1",
|
||||
"stream": "true"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"engine": "llamacpp",
|
||||
"quantization": "Q4_K_M",
|
||||
"size": "7B",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Property | Type | Description | Validation |
|
||||
| ----------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------ |
|
||||
| `source_url` | string | The model download source. It can be an external url or a local filepath. | Defaults to `pwd`. See [Source_url](#Source_url) |
|
||||
| `object` | enum: `model`, `assistant`, `thread`, `message` | Type of the Jan Object. Always `model` | Defaults to "model" |
|
||||
| `name` | string | A vanity name | Defaults to filename |
|
||||
| `description` | string | A vanity description of the model | Defaults to "" |
|
||||
| `state` | enum[`to_download` , `downloading`, `ready` , `running`] | Needs more thought | Defaults to `to_download` |
|
||||
| `source_url` | string | The model download source. It can be an external url or a local filepath. | Defaults to `pwd`. See [Source_url](#Source_url) |
|
||||
| `parameters` | map | Defines default model run parameters used by any assistant. | Defaults to `{}` |
|
||||
| `description` | string | A vanity description of the model | Defaults to "" |
|
||||
| `metadata` | map | Stores additional structured information about the model. | Defaults to `{}` |
|
||||
| `metadata.engine` | enum: `llamacpp`, `api`, `tensorrt` | The model backend used to run model. | Defaults to "llamacpp" |
|
||||
| `metadata.quantization` | string | Supported formats only | See [Custom importers](#Custom-importers) |
|
||||
| `metadata.binaries` | array | Supported formats only. | See [Custom importers](#Custom-importers) |
|
||||
| `state` | enum[`to_download` , `downloading`, `ready` , `running`] | Needs more thought | Defaults to `to_download` |
|
||||
| `name` | string | A vanity name | Defaults to filename |
|
||||
|
||||
### Source_url
|
||||
### Model Source
|
||||
|
||||
There are 3 types of model sources
|
||||
|
||||
- Local model
|
||||
- Remote source
|
||||
- Cloud API
|
||||
|
||||
- Users can download models from a `remote` source or reference an existing `local` model.
|
||||
- If this property is not specified in the Model Object file, then the default behavior is to look in the current directory.
|
||||
|
||||
#### Local source_url
|
||||
|
||||
- Users can import a local model by providing the filepath to the model
|
||||
|
||||
```json
|
||||
@ -70,14 +117,36 @@ _Users can override run settings at runtime_
|
||||
"source_url": "./",
|
||||
```
|
||||
|
||||
#### Remote source_url
|
||||
|
||||
- Users can download a model by remote URL.
|
||||
- Supported url formats:
|
||||
- `https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/blob/main/llama-2-7b-chat.Q3_K_L.gguf`
|
||||
- `https://any-source.com/.../model-binary.bin`
|
||||
|
||||
#### Custom importers
|
||||
- Using a remote API to access model `model-azure-openai-gpt4-turbo.json`
|
||||
- See [source](https://learn.microsoft.com/en-us/azure/ai-services/openai/quickstart?tabs=command-line%2Cpython&pivots=rest-api)
|
||||
|
||||
```json
|
||||
"source_url": "https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo",
|
||||
"parameters": {
|
||||
"init" {
|
||||
"API-KEY": "",
|
||||
"DEPLOYMENT-NAME": "",
|
||||
"api-version": "2023-05-15"
|
||||
},
|
||||
"runtime": {
|
||||
"temperature": "0.7",
|
||||
"max_tokens": "2048",
|
||||
"presence_penalty": "0",
|
||||
"top_p": "1",
|
||||
"stream": "true"
|
||||
}
|
||||
}
|
||||
"metadata": {
|
||||
"engine": "api",
|
||||
}
|
||||
```
|
||||
|
||||
### Model Formats
|
||||
|
||||
Additionally, Jan supports importing popular formats. For example, if you provide a HuggingFace URL for a `TheBloke` model, Jan automatically downloads and catalogs all quantizations. Custom importers autofills properties like `metadata.quantization` and `metadata.size`.
|
||||
|
||||
@ -89,7 +158,8 @@ Supported URL formats with custom importers:
|
||||
- `azure_openai`: `https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo`
|
||||
- `openai`: `api.openai.com`
|
||||
|
||||
### Generic Example
|
||||
<details>
|
||||
<summary>Example: Zephyr 7B</summary>
|
||||
|
||||
- Model has 1 binary `model-zephyr-7B.json`
|
||||
- See [source](https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/)
|
||||
@ -122,8 +192,9 @@ Supported URL formats with custom importers:
|
||||
"size": "7B",
|
||||
}
|
||||
```
|
||||
</details>
|
||||
|
||||
### Example: multiple binaries
|
||||
### Multiple binaries
|
||||
|
||||
- Model has multiple binaries `model-llava-1.5-ggml.json`
|
||||
- See [source](https://huggingface.co/mys/ggml_llava-v1.5-13b)
|
||||
@ -139,112 +210,24 @@ Supported URL formats with custom importers:
|
||||
}
|
||||
```
|
||||
|
||||
### Example: Azure API
|
||||
## Models API
|
||||
|
||||
- Using a remote API to access model `model-azure-openai-gpt4-turbo.json`
|
||||
- See [source](https://learn.microsoft.com/en-us/azure/ai-services/openai/quickstart?tabs=command-line%2Cpython&pivots=rest-api)
|
||||
### Get Model
|
||||
|
||||
```json
|
||||
"source_url": "https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo",
|
||||
"parameters": {
|
||||
"init" {
|
||||
"API-KEY": "",
|
||||
"DEPLOYMENT-NAME": "",
|
||||
"api-version": "2023-05-15"
|
||||
},
|
||||
"runtime": {
|
||||
"temperature": "0.7",
|
||||
"max_tokens": "2048",
|
||||
"presence_penalty": "0",
|
||||
"top_p": "1",
|
||||
"stream": "true"
|
||||
}
|
||||
}
|
||||
"metadata": {
|
||||
"engine": "api",
|
||||
}
|
||||
```
|
||||
|
||||
## Filesystem
|
||||
|
||||
- Everything needed to represent a `model` is packaged into an `Model folder`.
|
||||
- The `folder` is standalone and can be easily zipped, imported, and exported, e.g. to Github.
|
||||
- The `folder` always contains at least one `Model Object`, declared in a `json` format.
|
||||
- The `folder` and `file` do not have to share the same name
|
||||
- The model `id` is made up of `folder_name/filename` and is thus always unique.
|
||||
|
||||
```sh
|
||||
/janroot
|
||||
/models
|
||||
azure-openai/ # Folder name
|
||||
azure-openai-gpt3-5.json # File name
|
||||
|
||||
llama2-70b/
|
||||
model.json
|
||||
.gguf
|
||||
```
|
||||
|
||||
### Default ./model folder
|
||||
- Jan ships with a default model folders containing recommended models
|
||||
- Only the Model Object `json` files are included
|
||||
- Users must later explicitly download the model binaries
|
||||
```sh
|
||||
models/
|
||||
mistral-7b/
|
||||
mistral-7b.json
|
||||
hermes-7b/
|
||||
hermes-7b.json
|
||||
```
|
||||
### Multiple quantizations
|
||||
|
||||
- Each quantization has its own `Jan Model Object` file
|
||||
|
||||
```sh
|
||||
llama2-7b-gguf/
|
||||
llama2-7b-gguf-Q2.json
|
||||
llama2-7b-gguf-Q3_K_L.json
|
||||
.bin
|
||||
```
|
||||
### Multiple model partitions
|
||||
|
||||
- A Model that is partitioned into several binaries use just 1 file
|
||||
|
||||
```sh
|
||||
llava-ggml/
|
||||
llava-ggml-Q5.json
|
||||
.proj
|
||||
ggml
|
||||
```
|
||||
### Your locally fine-tuned model
|
||||
|
||||
- ??
|
||||
|
||||
```sh
|
||||
llama-70b-finetune/
|
||||
llama-70b-finetune-q5.json
|
||||
.bin
|
||||
```
|
||||
## Jan API
|
||||
### Model API Object
|
||||
- OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/retrieve
|
||||
- OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/object
|
||||
- The `Jan Model Object` maps into the `OpenAI Model Object`.
|
||||
- Properties marked with `*` are compatible with the [OpenAI `model` object](https://platform.openai.com/docs/api-reference/models)
|
||||
- Note: The `Jan Model Object` has additional properties when retrieved via its API endpoint.
|
||||
> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/object
|
||||
|
||||
### Model lifecycle
|
||||
Model has 4 states (enum)
|
||||
- `to_download`
|
||||
- `downloading`
|
||||
- `ready`
|
||||
- `running`
|
||||
#### Request
|
||||
|
||||
### Get Model
|
||||
> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/retrieve
|
||||
- Example request
|
||||
```shell
|
||||
curl {JAN_URL}/v1/models/{model_id}
|
||||
```
|
||||
- Example response
|
||||
|
||||
#### Response
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "model-zephyr-7B",
|
||||
@ -273,14 +256,19 @@ curl {JAN_URL}/v1/models/{model_id}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List models
|
||||
Lists the currently available models, and provides basic information about each one such as the owner and availability.
|
||||
> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/list
|
||||
- Example request
|
||||
|
||||
#### Request
|
||||
|
||||
```shell=
|
||||
curl {JAN_URL}/v1/models
|
||||
```
|
||||
- Example response
|
||||
|
||||
#### Response
|
||||
|
||||
```json
|
||||
{
|
||||
"object": "list",
|
||||
@ -310,13 +298,18 @@ curl {JAN_URL}/v1/models
|
||||
"object": "list"
|
||||
}
|
||||
```
|
||||
|
||||
### Delete Model
|
||||
> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/delete
|
||||
`- Example request
|
||||
|
||||
#### Request
|
||||
|
||||
```shell
|
||||
curl -X DELETE {JAN_URL}/v1/models/{model_id}
|
||||
```
|
||||
- Example response
|
||||
|
||||
#### Response
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "model-zephyr-7B",
|
||||
@ -325,14 +318,19 @@ curl -X DELETE {JAN_URL}/v1/models/{model_id}
|
||||
"state": "to_download"
|
||||
}
|
||||
```
|
||||
|
||||
### Start Model
|
||||
> Jan-only endpoint
|
||||
The request to start `model` by changing model state from `ready` to `running`
|
||||
- Example request
|
||||
|
||||
#### Request
|
||||
|
||||
```shell
|
||||
curl -X PUT {JAN_URL}/v1/models{model_id}/start
|
||||
```
|
||||
- Example response
|
||||
|
||||
#### Response
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "model-zephyr-7B",
|
||||
@ -340,14 +338,19 @@ curl -X PUT {JAN_URL}/v1/models{model_id}/start
|
||||
"state": "running"
|
||||
}
|
||||
```
|
||||
|
||||
### Stop Model
|
||||
> Jan-only endpoint
|
||||
The request to start `model` by changing model state from `running` to `ready`
|
||||
- Example request
|
||||
|
||||
#### Request
|
||||
|
||||
```shell
|
||||
curl -X PUT {JAN_URL}/v1/models/{model_id}/stop
|
||||
```
|
||||
- Example response
|
||||
|
||||
#### Response
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "model-zephyr-7B",
|
||||
@ -355,18 +358,95 @@ curl -X PUT {JAN_URL}/v1/models/{model_id}/stop
|
||||
"state": "ready"
|
||||
}
|
||||
```
|
||||
|
||||
### Download Model
|
||||
> Jan-only endpoint
|
||||
The request to download `model` by changing model state from `to_download` to `downloading` then `ready`once it's done.
|
||||
- Example request
|
||||
|
||||
#### Request
|
||||
```shell
|
||||
curl -X POST {JAN_URL}/v1/models/
|
||||
```
|
||||
- Example response
|
||||
|
||||
#### Response
|
||||
```json
|
||||
{
|
||||
"id": "model-zephyr-7B",
|
||||
"object": "model",
|
||||
"state": "downloading"
|
||||
}
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
### Pre-loaded Models
|
||||
|
||||
- Jan ships with a default model folders containing recommended models
|
||||
- Only the Model Object `json` files are included
|
||||
- Users must later explicitly download the model binaries
|
||||
-
|
||||
```sh
|
||||
models/
|
||||
mistral-7b/
|
||||
mistral-7b.json
|
||||
hermes-7b/
|
||||
hermes-7b.json
|
||||
```
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
- Using a remote API to access model `model-azure-openai-gpt4-turbo.json`
|
||||
- See [source](https://learn.microsoft.com/en-us/azure/ai-services/openai/quickstart?tabs=command-line%2Cpython&pivots=rest-api)
|
||||
|
||||
```json
|
||||
"source_url": "https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo",
|
||||
"parameters": {
|
||||
"init" {
|
||||
"API-KEY": "",
|
||||
"DEPLOYMENT-NAME": "",
|
||||
"api-version": "2023-05-15"
|
||||
},
|
||||
"runtime": {
|
||||
"temperature": "0.7",
|
||||
"max_tokens": "2048",
|
||||
"presence_penalty": "0",
|
||||
"top_p": "1",
|
||||
"stream": "true"
|
||||
}
|
||||
}
|
||||
"metadata": {
|
||||
"engine": "api",
|
||||
}
|
||||
```
|
||||
|
||||
### Multiple quantizations
|
||||
|
||||
- Each quantization has its own `Jan Model Object` file
|
||||
|
||||
```sh
|
||||
llama2-7b-gguf/
|
||||
llama2-7b-gguf-Q2.json
|
||||
llama2-7b-gguf-Q3_K_L.json
|
||||
.bin
|
||||
```
|
||||
|
||||
### Multiple model partitions
|
||||
|
||||
- A Model that is partitioned into several binaries use just 1 file
|
||||
|
||||
```sh
|
||||
llava-ggml/
|
||||
llava-ggml-Q5.json
|
||||
.proj
|
||||
ggml
|
||||
```
|
||||
|
||||
### Your locally fine-tuned model
|
||||
|
||||
- ??
|
||||
|
||||
```sh
|
||||
llama-70b-finetune/
|
||||
llama-70b-finetune-q5.json
|
||||
.bin
|
||||
```
|
||||
7
docs/docs/specs/prompts.md
Normal file
7
docs/docs/specs/prompts.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
title: Prompts
|
||||
---
|
||||
|
||||
- [ ] /prompts folder
|
||||
- [ ] How to add to prompts
|
||||
- [ ] Assistants can have suggested Prompts
|
||||
5
docs/docs/specs/settings.md
Normal file
5
docs/docs/specs/settings.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
title: Settings
|
||||
---
|
||||
|
||||
- [ ] .jan folder in jan root
|
||||
@ -103,7 +103,7 @@ const config = {
|
||||
{
|
||||
specs: [
|
||||
{
|
||||
spec: "openapi/OpenAIAPI.yaml", // can be local file, url, or parsed json object
|
||||
spec: "openapi/jan.yaml", // can be local file, url, or parsed json object
|
||||
route: "/api-reference", // path where to render docs
|
||||
},
|
||||
],
|
||||
@ -144,9 +144,8 @@ const config = {
|
||||
label: "Documentation",
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "apiSidebar",
|
||||
position: "left",
|
||||
to: "/api-reference",
|
||||
label: "API Reference",
|
||||
},
|
||||
// Navbar right
|
||||
|
||||
@ -19,7 +19,7 @@ const sidebars = {
|
||||
label: "Introduction",
|
||||
link: { type: "doc", id: "intro/introduction" },
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
collapsed: true,
|
||||
items: ["intro/quickstart", "intro/how-jan-works"],
|
||||
},
|
||||
{
|
||||
@ -34,19 +34,15 @@ const sidebars = {
|
||||
label: "Using Jan",
|
||||
collapsible: true,
|
||||
collapsed: true,
|
||||
items: ["guide/models", "guide/server"],
|
||||
items: ["docs/models", "docs/server"],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Extending Jan",
|
||||
link: { type: "doc", id: "docs/extensions" },
|
||||
collapsible: true,
|
||||
collapsed: true,
|
||||
items: [
|
||||
"guide/assistants",
|
||||
"guide/themes",
|
||||
"guide/tools",
|
||||
"guide/modules",
|
||||
],
|
||||
items: ["docs/assistants", "docs/themes", "docs/tools", "docs/modules"],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
@ -71,6 +67,8 @@ const sidebars = {
|
||||
"specs/files",
|
||||
"specs/jan",
|
||||
"specs/fine-tuning",
|
||||
"specs/settings",
|
||||
"specs/prompts",
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
162
docs/yarn.lock
162
docs/yarn.lock
@ -304,7 +304,7 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.23.0"
|
||||
|
||||
"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5":
|
||||
"@babel/helper-module-imports@^7.22.15":
|
||||
version "7.22.15"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
|
||||
integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
|
||||
@ -1208,7 +1208,7 @@
|
||||
"@babel/parser" "^7.22.15"
|
||||
"@babel/types" "^7.22.15"
|
||||
|
||||
"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3", "@babel/traverse@^7.4.5":
|
||||
"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3":
|
||||
version "7.23.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b"
|
||||
integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==
|
||||
@ -1731,7 +1731,7 @@
|
||||
url-loader "^4.1.1"
|
||||
webpack "^5.73.0"
|
||||
|
||||
"@emotion/is-prop-valid@^1.1.0":
|
||||
"@emotion/is-prop-valid@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc"
|
||||
integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==
|
||||
@ -1743,15 +1743,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17"
|
||||
integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
|
||||
|
||||
"@emotion/stylis@^0.8.4":
|
||||
version "0.8.5"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04"
|
||||
integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==
|
||||
|
||||
"@emotion/unitless@^0.7.4":
|
||||
version "0.7.5"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
|
||||
integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
|
||||
"@emotion/unitless@^0.8.0":
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3"
|
||||
integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==
|
||||
|
||||
"@exodus/schemasafe@^1.0.0-rc.2":
|
||||
version "1.3.0"
|
||||
@ -1932,10 +1927,10 @@
|
||||
require-from-string "^2.0.2"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
"@redocly/openapi-core@1.0.0-beta.123":
|
||||
version "1.0.0-beta.123"
|
||||
resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.0.0-beta.123.tgz#0c29ae9fabe5f143f571caf608a7d025f41125db"
|
||||
integrity sha512-W6MbUWpb/VaV+Kf0c3jmMIJw3WwwF7iK5nAfcOS+ZwrlbxtIl37+1hEydFlJ209vCR9HL12PaMwdh2Vpihj6Jw==
|
||||
"@redocly/openapi-core@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.4.0.tgz#d1ce8e391b32452082f754315c8eb265690b784f"
|
||||
integrity sha512-M4f0H3XExPvJ0dwbEou7YKLzkpz2ZMS9JoNvrbEECO7WCwjGZ4AjbiUjp2p0ZzFMNIiNgTVUJJmkxGxsXW471Q==
|
||||
dependencies:
|
||||
"@redocly/ajv" "^8.11.0"
|
||||
"@types/node" "^14.11.8"
|
||||
@ -1948,7 +1943,7 @@
|
||||
pluralize "^8.0.0"
|
||||
yaml-ast-parser "0.0.43"
|
||||
|
||||
"@redocly/openapi-core@^1.0.0-beta.104":
|
||||
"@redocly/openapi-core@^1.0.0-rc.2":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.4.1.tgz#0620a5e204159626a1d99b88f758e23ef0cb5740"
|
||||
integrity sha512-oAhnG8MKocM9LuP++NGFxdniNKWSLA7hzHPQoOK92LIP/DdvXx8pEeZ68UTNxIXhKonoUcO6s86I3L0zj143zg==
|
||||
@ -2267,9 +2262,9 @@
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/node@*":
|
||||
version "20.9.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.1.tgz#9d578c610ce1e984adda087f685ace940954fe19"
|
||||
integrity sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==
|
||||
version "20.9.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.2.tgz#002815c8e87fe0c9369121c78b52e800fadc0ac6"
|
||||
integrity sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
@ -2391,6 +2386,11 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/stylis@^4.0.2":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.3.tgz#0dff504fc23487a02a29209b162249070e83a0da"
|
||||
integrity sha512-86XLCVEmWagiUEbr2AjSbeY4qHN9jMm3pgM3PuBYfLIbT0MpDSnA3GA/4W7KoH/C/eeK77kNaeIxZzjhKYIBgw==
|
||||
|
||||
"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3":
|
||||
version "2.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc"
|
||||
@ -2853,17 +2853,6 @@ babel-plugin-polyfill-regenerator@^0.5.3:
|
||||
dependencies:
|
||||
"@babel/helper-define-polyfill-provider" "^0.4.3"
|
||||
|
||||
"babel-plugin-styled-components@>= 1.12.0":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092"
|
||||
integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.22.5"
|
||||
"@babel/helper-module-imports" "^7.22.5"
|
||||
"@babel/plugin-syntax-jsx" "^7.22.5"
|
||||
lodash "^4.17.21"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
bail@^1.0.0:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
|
||||
@ -3623,7 +3612,7 @@ css-select@^5.1.0:
|
||||
domutils "^3.0.1"
|
||||
nth-check "^2.0.1"
|
||||
|
||||
css-to-react-native@^3.0.0:
|
||||
css-to-react-native@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32"
|
||||
integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==
|
||||
@ -3718,7 +3707,7 @@ csso@^4.2.0:
|
||||
dependencies:
|
||||
css-tree "^1.1.2"
|
||||
|
||||
csstype@^3.0.2:
|
||||
csstype@^3.0.2, csstype@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
|
||||
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
|
||||
@ -4176,13 +4165,13 @@ dns-packet@^5.2.2:
|
||||
dependencies:
|
||||
"@leichtgewicht/ip-codec" "^2.0.1"
|
||||
|
||||
docusaurus-plugin-redoc@1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-1.6.0.tgz#a3d07bb10a99e9195aab3e2ae4296f49a1530e4a"
|
||||
integrity sha512-bvOmVcJ9Lo6ymyaHCoXTjN6Ck7/Dog1KRsJgZilB6ukHQ7d6nJrAwAEoDF1rXto8tOvIUqVb6Zzy7qDPvBQA1Q==
|
||||
docusaurus-plugin-redoc@2.0.0, docusaurus-plugin-redoc@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-2.0.0.tgz#2f7b2ee9fd4beb86cdc2d88efd9ba87b76752484"
|
||||
integrity sha512-+cUy/wnQVQmuygMxP0gAWODzo502QruhyUTHShxMEBhkL57dOx0COMgd8Iu4BlqiW9RGzN3hEZEpLzGTaGFOtQ==
|
||||
dependencies:
|
||||
"@redocly/openapi-core" "1.0.0-beta.123"
|
||||
redoc "2.0.0"
|
||||
"@redocly/openapi-core" "1.4.0"
|
||||
redoc "2.1.3"
|
||||
|
||||
docusaurus-plugin-sass@^0.2.5:
|
||||
version "0.2.5"
|
||||
@ -4191,18 +4180,18 @@ docusaurus-plugin-sass@^0.2.5:
|
||||
dependencies:
|
||||
sass-loader "^10.1.1"
|
||||
|
||||
docusaurus-theme-redoc@1.6.4:
|
||||
version "1.6.4"
|
||||
resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-1.6.4.tgz#29736f5590c0b04f3538087ab6e17d3d06d7e099"
|
||||
integrity sha512-dEKh/HYWGqGG2Qoy2CgXon28Z32Z/LdNzZvreAQqeYtiXb7Ey9gZFwSstpU4jEcoUa347NCYseLPn8bkxlemCw==
|
||||
docusaurus-theme-redoc@2.0.0, docusaurus-theme-redoc@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-2.0.0.tgz#2cbae0f51f1c1f9527069e54173cfdb184d4a995"
|
||||
integrity sha512-BOew0bVJvc8LV+zMMURx/2pWkk8VQNY2Wow2AFVSCGCkHi4UMwpq50VFL42t0MF6EnoSY9hqArqNfofpUFiiOw==
|
||||
dependencies:
|
||||
"@redocly/openapi-core" "1.0.0-beta.123"
|
||||
"@redocly/openapi-core" "1.4.0"
|
||||
clsx "^1.2.1"
|
||||
copyfiles "^2.4.1"
|
||||
lodash "^4.17.21"
|
||||
mobx "^6.8.0"
|
||||
redoc "2.0.0"
|
||||
styled-components "^5.3.6"
|
||||
mobx "^6.10.2"
|
||||
redoc "2.1.3"
|
||||
styled-components "^6.1.0"
|
||||
|
||||
dom-converter@^0.2.0:
|
||||
version "0.2.0"
|
||||
@ -5125,7 +5114,7 @@ history@^4.9.0:
|
||||
tiny-warning "^1.0.0"
|
||||
value-equal "^1.0.1"
|
||||
|
||||
hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0:
|
||||
hoist-non-react-statics@^3.1.0:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
|
||||
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
|
||||
@ -6139,7 +6128,7 @@ mobx-react@^7.2.0:
|
||||
dependencies:
|
||||
mobx-react-lite "^3.4.0"
|
||||
|
||||
mobx@^6.8.0:
|
||||
mobx@^6.10.2:
|
||||
version "6.11.0"
|
||||
resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.11.0.tgz#8a748b18c140892d1d0f28b71315f1f639180006"
|
||||
integrity sha512-qngYCmr0WJiFRSAtYe82DB7SbzvbhehkJjONs8ydynUwoazzUQHZdAlaJqUfks5j4HarhWsZrMRhV7HtSO9HOQ==
|
||||
@ -6410,7 +6399,7 @@ open@^8.0.9, open@^8.4.0:
|
||||
is-docker "^2.1.1"
|
||||
is-wsl "^2.2.0"
|
||||
|
||||
openapi-sampler@^1.3.0:
|
||||
openapi-sampler@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.3.1.tgz#eebb2a1048f830cc277398bc8022b415f887e859"
|
||||
integrity sha512-Ert9mvc2tLPmmInwSyGZS+v4Ogu9/YoZuq9oP3EdUklg2cad6+IGndP9yqJJwbgdXwZibiq5fpv6vYujchdJFg==
|
||||
@ -6993,7 +6982,7 @@ postcss-zindex@^5.1.0:
|
||||
resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff"
|
||||
integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==
|
||||
|
||||
postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.30:
|
||||
postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.30, postcss@^8.4.31:
|
||||
version "8.4.31"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
|
||||
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
|
||||
@ -7325,10 +7314,10 @@ react-simple-code-editor@^0.10.0:
|
||||
resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373"
|
||||
integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA==
|
||||
|
||||
react-tabs@^3.2.2:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.2.3.tgz#ccbb3e1241ad3f601047305c75db661239977f2f"
|
||||
integrity sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg==
|
||||
react-tabs@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-4.3.0.tgz#9f4db0fd209ba4ab2c1e78993ff964435f84af62"
|
||||
integrity sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q==
|
||||
dependencies:
|
||||
clsx "^1.1.0"
|
||||
prop-types "^15.5.0"
|
||||
@ -7415,12 +7404,12 @@ recursive-readdir@^2.2.2:
|
||||
dependencies:
|
||||
minimatch "^3.0.5"
|
||||
|
||||
redoc@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0.tgz#8b3047ca75b84d31558c6c92da7f84affef35c3e"
|
||||
integrity sha512-rU8iLdAkT89ywOkYk66Mr+IofqaMASlRvTew0dJvopCORMIPUcPMxjlJbJNC6wsn2vvMnpUFLQ/0ISDWn9BWag==
|
||||
redoc@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.1.3.tgz#612c9fed744993d5fc99cbf39fe9056bd1034fa5"
|
||||
integrity sha512-d7F9qLLxaiFW4GC03VkwlX9wuRIpx9aiIIf3o6mzMnqPfhxrn2IRKGndrkJeVdItgCfmg9jXZiFEowm60f1meQ==
|
||||
dependencies:
|
||||
"@redocly/openapi-core" "^1.0.0-beta.104"
|
||||
"@redocly/openapi-core" "^1.0.0-rc.2"
|
||||
classnames "^2.3.1"
|
||||
decko "^1.2.0"
|
||||
dompurify "^2.2.8"
|
||||
@ -7430,26 +7419,25 @@ redoc@2.0.0:
|
||||
mark.js "^8.11.1"
|
||||
marked "^4.0.15"
|
||||
mobx-react "^7.2.0"
|
||||
openapi-sampler "^1.3.0"
|
||||
openapi-sampler "^1.3.1"
|
||||
path-browserify "^1.0.1"
|
||||
perfect-scrollbar "^1.5.5"
|
||||
polished "^4.1.3"
|
||||
prismjs "^1.27.0"
|
||||
prop-types "^15.7.2"
|
||||
react-tabs "^3.2.2"
|
||||
react-tabs "^4.3.0"
|
||||
slugify "~1.4.7"
|
||||
stickyfill "^1.1.1"
|
||||
style-loader "^3.3.1"
|
||||
swagger2openapi "^7.0.6"
|
||||
url-template "^2.0.8"
|
||||
|
||||
redocusaurus@^1.6.3:
|
||||
version "1.6.4"
|
||||
resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-1.6.4.tgz#0aaa49cf68056a958b4fac5f93259c85b4ae0f75"
|
||||
integrity sha512-0o7bDrs5eLOiMR7BLjdZ6nYEQBNvle/MrUJsvfaKShkZHvbelAJPmH7muoiL+JWcxGCiI8vuh9EKTDDqqRkE9A==
|
||||
redocusaurus@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-2.0.0.tgz#83481ff4f5c6f2a00df901e359850bef3a7c43c6"
|
||||
integrity sha512-wRSpkY+PwkqAj98RD+1ec6U8KDKySH6GT0jahWY+dPlpckyHj7D5i3ipXdTiJ6jXXCyM2qUwimX5PZJEdooDhA==
|
||||
dependencies:
|
||||
docusaurus-plugin-redoc "1.6.0"
|
||||
docusaurus-theme-redoc "1.6.4"
|
||||
docusaurus-plugin-redoc "2.0.0"
|
||||
docusaurus-theme-redoc "2.0.0"
|
||||
|
||||
reftools@^1.1.9:
|
||||
version "1.1.9"
|
||||
@ -8262,11 +8250,6 @@ strip-json-comments@~2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
|
||||
|
||||
style-loader@^3.3.1:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff"
|
||||
integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==
|
||||
|
||||
style-to-object@0.3.0, style-to-object@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
|
||||
@ -8274,21 +8257,20 @@ style-to-object@0.3.0, style-to-object@^0.3.0:
|
||||
dependencies:
|
||||
inline-style-parser "0.1.1"
|
||||
|
||||
styled-components@^5.3.6:
|
||||
version "5.3.11"
|
||||
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8"
|
||||
integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==
|
||||
styled-components@^6.1.0:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.1.tgz#a5414ada07fb1c17b96a26a05369daa4e2ad55e5"
|
||||
integrity sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.0.0"
|
||||
"@babel/traverse" "^7.4.5"
|
||||
"@emotion/is-prop-valid" "^1.1.0"
|
||||
"@emotion/stylis" "^0.8.4"
|
||||
"@emotion/unitless" "^0.7.4"
|
||||
babel-plugin-styled-components ">= 1.12.0"
|
||||
css-to-react-native "^3.0.0"
|
||||
hoist-non-react-statics "^3.0.0"
|
||||
"@emotion/is-prop-valid" "^1.2.1"
|
||||
"@emotion/unitless" "^0.8.0"
|
||||
"@types/stylis" "^4.0.2"
|
||||
css-to-react-native "^3.2.0"
|
||||
csstype "^3.1.2"
|
||||
postcss "^8.4.31"
|
||||
shallowequal "^1.1.0"
|
||||
supports-color "^5.5.0"
|
||||
stylis "^4.3.0"
|
||||
tslib "^2.5.0"
|
||||
|
||||
stylehacks@^5.1.1:
|
||||
version "5.1.1"
|
||||
@ -8298,7 +8280,7 @@ stylehacks@^5.1.1:
|
||||
browserslist "^4.21.4"
|
||||
postcss-selector-parser "^6.0.4"
|
||||
|
||||
stylis@^4.1.2:
|
||||
stylis@^4.1.2, stylis@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c"
|
||||
integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==
|
||||
@ -8316,7 +8298,7 @@ sucrase@^3.32.0:
|
||||
pirates "^4.0.1"
|
||||
ts-interface-checker "^0.1.9"
|
||||
|
||||
supports-color@^5.3.0, supports-color@^5.5.0:
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
||||
@ -8540,7 +8522,7 @@ ts-interface-checker@^0.1.9:
|
||||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||
|
||||
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
|
||||
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
|
||||
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user