diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index a4372656c..2d49f0d6e 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,5 +3,5 @@ blank_issues_enabled: true contact_links: - name: "\1F4AC Jan Discussions" - url: "https://github.com/orgs/janhq/discussions/categories/q-a" + url: "https://github.com/orgs/menloresearch/discussions/categories/q-a" about: "Get help, discuss features & roadmap, and share your projects" \ No newline at end of file diff --git a/.github/workflows/nightly-integrate-cortex-cpp.yml b/.github/workflows/nightly-integrate-cortex-cpp.yml index 8ddc40a11..52b042aeb 100644 --- a/.github/workflows/nightly-integrate-cortex-cpp.yml +++ b/.github/workflows/nightly-integrate-cortex-cpp.yml @@ -18,67 +18,67 @@ jobs: pr_created: ${{ steps.check-update.outputs.pr_created }} steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - submodules: recursive - ref: dev - fetch-depth: 0 - token: ${{ secrets.PAT_SERVICE_ACCOUNT }} + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: recursive + ref: dev + fetch-depth: 0 + token: ${{ secrets.PAT_SERVICE_ACCOUNT }} - - name: Configure Git - run: | - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' + - name: Configure Git + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' - - name: Update submodule to latest release - id: check-update - env: - GITHUB_TOKEN: ${{ secrets.PAT_SERVICE_ACCOUNT }} - run: | - curl -s https://api.github.com/repos/janhq/cortex/releases > /tmp/github_api_releases.json - latest_prerelease_name=$(cat /tmp/github_api_releases.json | jq -r '.[] | select(.prerelease) | .name' | head -n 1) + - name: Update submodule to latest release + id: check-update + env: + GITHUB_TOKEN: ${{ secrets.PAT_SERVICE_ACCOUNT }} + run: | + curl -s https://api.github.com/repos/menloresearch/cortex/releases > /tmp/github_api_releases.json + latest_prerelease_name=$(cat /tmp/github_api_releases.json | jq -r '.[] | select(.prerelease) | .name' | head -n 1) - get_asset_count() { - local version_name=$1 - cat /tmp/github_api_releases.json | jq -r --arg version_name "$version_name" '.[] | select(.name == $version_name) | .assets | length' - } + get_asset_count() { + local version_name=$1 + cat /tmp/github_api_releases.json | jq -r --arg version_name "$version_name" '.[] | select(.name == $version_name) | .assets | length' + } - cortex_cpp_version_file_path="extensions/inference-nitro-extension/bin/version.txt" - current_version_name=$(cat "$cortex_cpp_version_file_path" | head -n 1) + cortex_cpp_version_file_path="extensions/inference-nitro-extension/bin/version.txt" + current_version_name=$(cat "$cortex_cpp_version_file_path" | head -n 1) - current_version_asset_count=$(get_asset_count "$current_version_name") - latest_prerelease_asset_count=$(get_asset_count "$latest_prerelease_name") + current_version_asset_count=$(get_asset_count "$current_version_name") + latest_prerelease_asset_count=$(get_asset_count "$latest_prerelease_name") - if [ "$current_version_name" = "$latest_prerelease_name" ]; then - echo "cortex cpp remote repo doesn't have update today, skip update cortex.cpp for today nightly build" - echo "::set-output name=pr_created::false" - exit 0 - fi + if [ "$current_version_name" = "$latest_prerelease_name" ]; then + echo "cortex cpp remote repo doesn't have update today, skip update cortex.cpp for today nightly build" + echo "::set-output name=pr_created::false" + exit 0 + fi - if [ "$current_version_asset_count" != "$latest_prerelease_asset_count" ]; then - echo "Latest prerelease version has different number of assets, somethink went wrong, skip update cortex.cpp for today nightly build" - echo "::set-output name=pr_created::false" - exit 1 - fi + if [ "$current_version_asset_count" != "$latest_prerelease_asset_count" ]; then + echo "Latest prerelease version has different number of assets, somethink went wrong, skip update cortex.cpp for today nightly build" + echo "::set-output name=pr_created::false" + exit 1 + fi - echo $latest_prerelease_name > $cortex_cpp_version_file_path - echo "Updated version from $current_version_name to $latest_prerelease_name." - echo "::set-output name=pr_created::true" + echo $latest_prerelease_name > $cortex_cpp_version_file_path + echo "Updated version from $current_version_name to $latest_prerelease_name." + echo "::set-output name=pr_created::true" - git add -f $cortex_cpp_version_file_path - git commit -m "Update cortex cpp nightly to version $latest_prerelease_name" - branch_name="update-nightly-$(date +'%Y-%m-%d-%H-%M')" - git checkout -b $branch_name - git push origin $branch_name + git add -f $cortex_cpp_version_file_path + git commit -m "Update cortex cpp nightly to version $latest_prerelease_name" + branch_name="update-nightly-$(date +'%Y-%m-%d-%H-%M')" + git checkout -b $branch_name + git push origin $branch_name - pr_title="Update cortex cpp nightly to version $latest_prerelease_name" - pr_body="This PR updates the Update cortex cpp nightly to version $latest_prerelease_name" + pr_title="Update cortex cpp nightly to version $latest_prerelease_name" + pr_body="This PR updates the Update cortex cpp nightly to version $latest_prerelease_name" - gh pr create --title "$pr_title" --body "$pr_body" --head $branch_name --base dev --reviewer Van-QA + gh pr create --title "$pr_title" --body "$pr_body" --head $branch_name --base dev --reviewer Van-QA - pr_number=$(gh pr list --head $branch_name --json number --jq '.[0].number') - echo "::set-output name=pr_number::$pr_number" + pr_number=$(gh pr list --head $branch_name --json number --jq '.[0].number') + echo "::set-output name=pr_number::$pr_number" check-and-merge-pr: needs: update-submodule @@ -89,39 +89,39 @@ jobs: pull-requests: write steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - token: ${{ secrets.PAT_SERVICE_ACCOUNT }} + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: recursive + fetch-depth: 0 + token: ${{ secrets.PAT_SERVICE_ACCOUNT }} - - name: Wait for CI to pass - env: + - name: Wait for CI to pass + env: GITHUB_TOKEN: ${{ secrets.PAT_SERVICE_ACCOUNT }} - run: | - pr_number=${{ needs.update-submodule.outputs.pr_number }} - while true; do - ci_completed=$(gh pr checks $pr_number --json completedAt --jq '.[].completedAt') - if echo "$ci_completed" | grep -q "0001-01-01T00:00:00Z"; then - echo "CI is still running, waiting..." - sleep 60 - else - echo "CI has completed, checking states..." - ci_states=$(gh pr checks $pr_number --json state --jq '.[].state') - if echo "$ci_states" | grep -vqE "SUCCESS|SKIPPED"; then - echo "CI failed, exiting..." - exit 1 + run: | + pr_number=${{ needs.update-submodule.outputs.pr_number }} + while true; do + ci_completed=$(gh pr checks $pr_number --json completedAt --jq '.[].completedAt') + if echo "$ci_completed" | grep -q "0001-01-01T00:00:00Z"; then + echo "CI is still running, waiting..." + sleep 60 else - echo "CI passed, merging PR..." - break + echo "CI has completed, checking states..." + ci_states=$(gh pr checks $pr_number --json state --jq '.[].state') + if echo "$ci_states" | grep -vqE "SUCCESS|SKIPPED"; then + echo "CI failed, exiting..." + exit 1 + else + echo "CI passed, merging PR..." + break + fi fi - fi - done + done - - name: Merge the PR - env: + - name: Merge the PR + env: GITHUB_TOKEN: ${{ secrets.PAT_SERVICE_ACCOUNT }} - run: | - pr_number=${{ needs.update-submodule.outputs.pr_number }} - gh pr merge $pr_number --merge --admin + run: | + pr_number=${{ needs.update-submodule.outputs.pr_number }} + gh pr merge $pr_number --merge --admin diff --git a/.github/workflows/template-get-update-version.yml b/.github/workflows/template-get-update-version.yml index 24cfe4a03..97340be81 100644 --- a/.github/workflows/template-get-update-version.yml +++ b/.github/workflows/template-get-update-version.yml @@ -13,46 +13,46 @@ jobs: outputs: new_version: ${{ steps.version_update.outputs.new_version }} steps: - - name: Install jq - uses: dcarbone/install-jq-action@v2.0.1 + - name: Install jq + uses: dcarbone/install-jq-action@v2.0.1 - - name: Get tag - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') - id: tag - uses: dawidd6/action-get-tag@v1 + - name: Get tag + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + id: tag + uses: dawidd6/action-get-tag@v1 - - name: Update app version based on latest release tag with build number - id: version_update - run: | - # Function to get the latest release tag - get_latest_tag() { - local retries=0 - local max_retries=3 - local tag - while [ $retries -lt $max_retries ]; do - tag=$(curl -s https://api.github.com/repos/janhq/jan/releases/latest | jq -r .tag_name) - if [ -n "$tag" ] && [ "$tag" != "null" ]; then - echo $tag - return - else - let retries++ - echo "Retrying... ($retries/$max_retries)" - sleep 2 - fi - done - echo "Failed to fetch latest tag after $max_retries attempts." - exit 1 - } + - name: Update app version based on latest release tag with build number + id: version_update + run: | + # Function to get the latest release tag + get_latest_tag() { + local retries=0 + local max_retries=3 + local tag + while [ $retries -lt $max_retries ]; do + tag=$(curl -s https://api.github.com/repos/menloresearch/jan/releases/latest | jq -r .tag_name) + if [ -n "$tag" ] && [ "$tag" != "null" ]; then + echo $tag + return + else + let retries++ + echo "Retrying... ($retries/$max_retries)" + sleep 2 + fi + done + echo "Failed to fetch latest tag after $max_retries attempts." + exit 1 + } - if ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}; then - echo "Tag detected, set output follow tag" - echo "::set-output name=new_version::${{ steps.tag.outputs.tag }}" - else - # Get the latest release tag from GitHub API - LATEST_TAG=$(get_latest_tag) - - # Remove the 'v' and append the build number to the version - new_version="${LATEST_TAG#v}-${GITHUB_RUN_NUMBER}" - echo "New version: $new_version" - echo "::set-output name=new_version::$new_version" - fi \ No newline at end of file + if ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}; then + echo "Tag detected, set output follow tag" + echo "::set-output name=new_version::${{ steps.tag.outputs.tag }}" + else + # Get the latest release tag from GitHub API + LATEST_TAG=$(get_latest_tag) + + # Remove the 'v' and append the build number to the version + new_version="${LATEST_TAG#v}-${GITHUB_RUN_NUMBER}" + echo "New version: $new_version" + echo "::set-output name=new_version::$new_version" + fi diff --git a/.github/workflows/template-noti-discord-and-update-url-readme.yml b/.github/workflows/template-noti-discord-and-update-url-readme.yml index 59ad3c7be..282e0aa76 100644 --- a/.github/workflows/template-noti-discord-and-update-url-readme.yml +++ b/.github/workflows/template-noti-discord-and-update-url-readme.yml @@ -34,7 +34,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 with: - fetch-depth: "0" + fetch-depth: '0' token: ${{ secrets.PAT_SERVICE_ACCOUNT }} ref: ${{ inputs.ref }} @@ -51,6 +51,6 @@ jobs: - macOS Universal: https://delta.jan.ai/nightly/jan-nightly-mac-universal-{{ VERSION }}.dmg - Linux Deb: https://delta.jan.ai/nightly/jan-nightly-linux-amd64-{{ VERSION }}.deb - Linux AppImage: https://delta.jan.ai/nightly/jan-nightly-linux-x86_64-{{ VERSION }}.AppImage - - Github action run: https://github.com/janhq/jan/actions/runs/{{ GITHUB_RUN_ID }} + - Github action run: https://github.com/menloresearch/jan/actions/runs/{{ GITHUB_RUN_ID }} env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} \ No newline at end of file + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6ea90e69c..2a254fb49 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,8 +6,8 @@ First off, thank you for considering contributing to jan. It's people like you t ### Reporting Bugs -- **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/janhq/jan/issues). -- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/janhq/jan/issues/new). +- **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/menloresearch/jan/issues). +- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/menloresearch/jan/issues/new). ### Suggesting Enhancements @@ -29,4 +29,4 @@ First off, thank you for considering contributing to jan. It's people like you t ## Additional Notes -Thank you for contributing to jan! \ No newline at end of file +Thank you for contributing to jan! diff --git a/README.md b/README.md index 8052a34dc..fb820ddf9 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,18 @@

- GitHub commit activity - Github Last Commit - Github Contributors - GitHub closed issues + GitHub commit activity + Github Last Commit + Github Contributors + GitHub closed issues Discord

Getting Started - Docs - - Changelog - - Bug reports + - Changelog + - Bug reports - Discord

@@ -23,10 +23,9 @@ ⚠️ Jan is currently in Development: Expect breaking changes and bugs!

- Jan is a ChatGPT-alternative that runs 100% offline on your device. Our goal is to make it easy for a layperson to download and run LLMs and use AI with **full control** and **privacy**. -Jan is powered by [Cortex](https://github.com/janhq/cortex.cpp), our embeddable local AI engine that runs on any hardware. +Jan is powered by [Cortex](https://github.com/menloresearch/cortex.cpp), our embeddable local AI engine that runs on any hardware. From PCs to multi-GPU clusters, Jan & Cortex supports universal architectures: - [x] NVIDIA GPUs (fast) @@ -36,7 +35,8 @@ From PCs to multi-GPU clusters, Jan & Cortex supports universal architectures: - [x] Windows x64 #### Features: -- [Model Library](https://jan.ai/docs/models/manage-models#add-models) with popular LLMs like Llama, Gemma, Mistral, or Qwen + +- [Model Library](https://jan.ai/docs/models/manage-models#add-models) with popular LLMs like Llama, Gemma, Mistral, or Qwen - Connect to [Remote AI APIs](https://jan.ai/docs/remote-models/openai) like Groq and OpenRouter - Local API Server with OpenAI-equivalent API - [Extensions](https://jan.ai/docs/extensions) for customizing Jan @@ -54,25 +54,25 @@ From PCs to multi-GPU clusters, Jan & Cortex supports universal architectures: Stable (Recommended) - + jan.exe - + jan.dmg - + jan.deb - + jan.AppImage @@ -81,25 +81,25 @@ From PCs to multi-GPU clusters, Jan & Cortex supports universal architectures: Beta (Preview) - + jan.exe - + jan.dmg - + jan.deb - + jan.AppImage @@ -108,59 +108,59 @@ From PCs to multi-GPU clusters, Jan & Cortex supports universal architectures: Nightly Build (Experimental) - + jan.exe - + jan.dmg - + jan.deb - + jan.AppImage -Download the latest version of Jan at https://jan.ai/ or visit the [GitHub Releases](https://github.com/janhq/jan/releases) to download any previous release. +Download the latest version of Jan at https://jan.ai/ or visit the [GitHub Releases](https://github.com/menloresearch/jan/releases) to download any previous release. ## Demo https://github.com/user-attachments/assets/c3592fa2-c504-4d9d-a885-7e00122a50f3 -*Real-time Video: Jan v0.5.7 on a Mac M2, 16GB Sonoma 14.2* +_Real-time Video: Jan v0.5.7 on a Mac M2, 16GB Sonoma 14.2_ ## Quicklinks ### Jan - [Jan Website](https://jan.ai/) -- [Jan GitHub](https://github.com/janhq/jan) +- [Jan GitHub](https://github.com/menloresearch/jan) - [Documentation](https://jan.ai/docs) - [Jan Changelog](https://jan.ai/changelog) - [Jan Blog](https://jan.ai/blog) ### Cortex.cpp + Jan is powered by **Cortex.cpp**. It is a C++ command-line interface (CLI) designed as an alternative to [Ollama](https://ollama.com/). By default, it runs on the llama.cpp engine but also supports other engines, including ONNX and TensorRT-LLM, making it a multi-engine platform. - - [Cortex Website](https://cortex.so/) -- [Cortex GitHub](https://github.com/janhq/cortex.cpp) +- [Cortex GitHub](https://github.com/menloresearch/cortex.cpp) - [Documentation](https://cortex.so/docs/) - [Models Library](https://cortex.so/models) -- API Reference: *Under development* - +- API Reference: _Under development_ + ## Requirements for running Jan - **MacOS**: 13 or higher @@ -179,17 +179,17 @@ Jan is powered by **Cortex.cpp**. It is a C++ command-line interface (CLI) desig ## Troubleshooting As Jan is in development mode, you might get stuck on a some common issues: + - [Troubleshooting a broken build](https://jan.ai/docs/troubleshooting#broken-build) - [Troubleshooting NVIDIA GPU](https://jan.ai/docs/troubleshooting#troubleshooting-nvidia-gpu) - [Troubleshooting Something's Amiss](https://jan.ai/docs/troubleshooting#somethings-amiss) - If you can't find what you need in our troubleshooting guide, feel free reach out to us for extra help: + 1. Copy your [error logs & device specifications](https://jan.ai/docs/troubleshooting#how-to-get-error-logs). 2. Go to our [Discord](https://discord.com/invite/FTk2MvZwJH) & send it to **#🆘|get-help** channel for further support. -*Check the logs to ensure the information is what you intend to send. Note that we retain your logs for only 24 hours, so report any issues promptly.* - +_Check the logs to ensure the information is what you intend to send. Note that we retain your logs for only 24 hours, so report any issues promptly._ ## Contributing @@ -206,7 +206,7 @@ Contributions are welcome! Please read the [CONTRIBUTING.md](CONTRIBUTING.md) fi 1. **Clone the repository and prepare:** ```bash - git clone https://github.com/janhq/jan + git clone https://github.com/menloresearch/jan cd jan git checkout -b DESIRED_BRANCH ``` @@ -219,8 +219,6 @@ Contributions are welcome! Please read the [CONTRIBUTING.md](CONTRIBUTING.md) fi This will start the development server and open the desktop app. - - ### For production build ```bash @@ -244,7 +242,7 @@ Jan builds on top of other open-source projects: - Bugs & requests: file a GitHub ticket - For discussion: join our Discord [here](https://discord.gg/FTk2MvZwJH) -- For business inquiries: email hello@jan.ai +- For business inquiries: email hello@jan.ai - For jobs: please email hr@jan.ai ## Trust & Safety @@ -254,7 +252,7 @@ Beware of scams! - We will never request your personal information. - Our product is completely free; no paid version exists. - We do not have a token or ICO. -- We are a [bootstrapped company](https://en.wikipedia.org/wiki/Bootstrapping), and don't have any external investors (*yet*). We're open to exploring opportunities with strategic partners want to tackle [our mission](https://jan.ai/about#mission) together. +- We are a [bootstrapped company](https://en.wikipedia.org/wiki/Bootstrapping), and don't have any external investors (_yet_). We're open to exploring opportunities with strategic partners want to tackle [our mission](https://jan.ai/about#mission) together. ## License diff --git a/ai.menlo.jan.metainfo.xml b/ai.menlo.jan.metainfo.xml index 713471d26..ba17914e9 100644 --- a/ai.menlo.jan.metainfo.xml +++ b/ai.menlo.jan.metainfo.xml @@ -28,7 +28,7 @@ https://jan.ai/ - https://github.com/janhq/jan/issues + https://github.com/menloresearch/jan/issues diff --git a/core/README.md b/core/README.md index 925ffaf7b..e22bed42d 100644 --- a/core/README.md +++ b/core/README.md @@ -8,37 +8,38 @@ ```js // Web / extension runtime -import * as core from "@janhq/core"; +import * as core from '@janhq/core' // Node runtime -import * as node from "@janhq/core/node"; +import * as node from '@janhq/core/node' ``` ## Build an Extension -1. Download an extension template, for example, [https://github.com/janhq/extension-template](https://github.com/janhq/extension-template). +1. Download an extension template, for example, [https://github.com/menloresearch/extension-template](https://github.com/menloresearch/extension-template). 2. Update the source code: + 1. Open `index.ts` in your code editor. 2. Rename the extension class from `SampleExtension` to your preferred extension name. 3. Import modules from the core package. ```ts - import * as core from "@janhq/core"; + import * as core from '@janhq/core' ``` 4. In the `onLoad()` method, add your code: + ```ts // Example of listening to app events and providing customized inference logic: - import * as core from "@janhq/core"; + import * as core from '@janhq/core' export default class MyExtension extends BaseExtension { // On extension load onLoad() { - core.events.on(MessageEvent.OnMessageSent, (data) => MyExtension.inference(data, this)); + core.events.on(MessageEvent.OnMessageSent, (data) => MyExtension.inference(data, this)) } // Customized inference logic private static inference(incomingMessage: MessageRequestData) { - // Prepare customized message content const content: ThreadContent = { type: ContentType.Text, @@ -46,16 +47,17 @@ import * as node from "@janhq/core/node"; value: "I'm Jan Assistant!", annotations: [], }, - }; + } // Modify message and send out const outGoingMessage: ThreadMessage = { ...incomingMessage, - content - }; + content, + } } } ``` + 3. Build the extension: 1. Navigate to the extension directory. 2. Install dependencies. @@ -66,4 +68,4 @@ import * as node from "@janhq/core/node"; ```bash yarn build ``` - 4. Select the generated .tgz from Jan > Settings > Extension > Manual Installation. \ No newline at end of file + 4. Select the generated .tgz from Jan > Settings > Extension > Manual Installation. diff --git a/docs/README.md b/docs/README.md index 11b68f26b..4a5e45f4e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,7 +18,7 @@ We try to **keep routes consistent** to maintain SEO. ## How to Contribute -Refer to the [Contributing Guide](https://github.com/janhq/jan/blob/main/CONTRIBUTING.md) for more comprehensive information on how to contribute to the Jan project. +Refer to the [Contributing Guide](https://github.com/menloresearch/jan/blob/main/CONTRIBUTING.md) for more comprehensive information on how to contribute to the Jan project. ### Pre-requisites and Installation diff --git a/docs/public/openapi/jan.json b/docs/public/openapi/jan.json index c3abaf760..787105ea8 100644 --- a/docs/public/openapi/jan.json +++ b/docs/public/openapi/jan.json @@ -1,2131 +1,1972 @@ { - "openapi": "3.0.0", - "paths": { - "/messages": { - "post": { - "operationId": "MessagesController_create", - "summary": "Create message", - "description": "Creates a message in a thread.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateMessageDto" - } - } - } - }, - "responses": { - "201": { - "description": "The message has been successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateMessageDto" - } - } - } - } - }, - "tags": [ - "Messages" - ] - }, - "get": { - "operationId": "MessagesController_findAll", - "summary": "List messages", - "description": "Retrieves all the messages in a thread.", - "parameters": [], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListMessagesResponseDto" - } - } - } - } - }, - "tags": [ - "Messages" - ] + "openapi": "3.0.0", + "paths": { + "/messages": { + "post": { + "operationId": "MessagesController_create", + "summary": "Create message", + "description": "Creates a message in a thread.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMessageDto" + } } + } }, - "/messages/{id}": { - "get": { - "operationId": "MessagesController_findOne", - "summary": "Retrieve message", - "description": "Retrieves a specific message defined by a message's `id`.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the message.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetMessageResponseDto" - } - } - } - } - }, - "tags": [ - "Messages" - ] - }, - "patch": { - "operationId": "MessagesController_update", - "summary": "Update message", - "description": "Updates a specific message defined by a message's `id`.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the message.", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateMessageDto" - } - } - } - }, - "responses": { - "200": { - "description": "The message has been successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateMessageDto" - } - } - } - } - }, - "tags": [ - "Messages" - ] - }, - "delete": { - "operationId": "MessagesController_remove", - "summary": "Delete message", - "description": "Deletes a specific message defined by a message's `id`.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the message.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successfully deleted the message.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteMessageResponseDto" - } - } - } - } - }, - "tags": [ - "Messages" - ] - } - }, - "/threads": { - "post": { - "operationId": "ThreadsController_create", - "summary": "Create thread", - "description": "Creates a new thread.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateThreadDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThreadEntity" - } - } - } - } - }, - "tags": [ - "Threads" - ] - }, - "get": { - "operationId": "ThreadsController_findAll", - "summary": "List threads", - "description": "Lists all the available threads along with its configurations.", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ThreadEntity" - } - } - } - } - } - }, - "tags": [ - "Threads" - ] - } - }, - "/threads/{id}": { - "get": { - "operationId": "ThreadsController_findOne", - "summary": "Get thread", - "description": "Retrieves a thread along with its configurations.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the thread.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetThreadResponseDto" - } - } - } - } - }, - "tags": [ - "Threads" - ] - }, - "patch": { - "operationId": "ThreadsController_update", - "summary": "Update thread", - "description": "Updates a thread's configurations.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the thread.", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateThreadDto" - } - } - } - }, - "responses": { - "200": { - "description": "The thread has been successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateThreadDto" - } - } - } - } - }, - "tags": [ - "Threads" - ] - }, - "delete": { - "operationId": "ThreadsController_remove", - "summary": "Delete thread", - "description": "Deletes a specific thread defined by a thread `id` .", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the thread.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The thread has been successfully deleted.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteThreadResponseDto" - } - } - } - } - }, - "tags": [ - "Threads" - ] - } - }, - "/models": { - "post": { - "operationId": "ModelsController_create", - "summary": "Create model", - "description": "Creates a model `.json` instance file manually.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateModelDto" - } - } - } - }, - "responses": { - "201": { - "description": "The model has been successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartModelSuccessDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - }, - "get": { - "operationId": "ModelsController_findAll", - "summary": "List models", - "description": "Lists the currently available models, and provides basic information about each one such as the owner and availability. [Equivalent to OpenAI's list model](https://platform.openai.com/docs/api-reference/models/list).", - "parameters": [], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListModelsResponseDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - } - }, - "/models/{modelId}/start": { - "post": { - "operationId": "ModelsController_startModel", - "summary": "Start model", - "description": "Starts a model operation defined by a model `id`.", - "parameters": [ - { - "name": "modelId", - "required": true, - "in": "path", - "description": "The unique identifier of the model.", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelSettingParamsDto" - } - } - } - }, - "responses": { - "200": { - "description": "The model has been successfully started.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartModelSuccessDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - } - }, - "/models/{modelId}/stop": { - "post": { - "operationId": "ModelsController_stopModel", - "summary": "Stop model", - "description": "Stops a model operation defined by a model `id`.", - "parameters": [ - { - "name": "modelId", - "required": true, - "in": "path", - "description": "The unique identifier of the model.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The model has been successfully stopped.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartModelSuccessDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - } - }, - "/models/download/{modelId}": { - "get": { - "operationId": "ModelsController_downloadModel", - "summary": "Download model", - "description": "Downloads a specific model instance.", - "parameters": [ - { - "name": "modelId", - "required": true, - "in": "path", - "description": "The unique identifier of the model.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DownloadModelResponseDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - } - }, - "/models/{id}": { - "get": { - "operationId": "ModelsController_findOne", - "summary": "Get model", - "description": "Retrieves a model instance, providing basic information about the model such as the owner and permissions. [Equivalent to OpenAI's list model](https://platform.openai.com/docs/api-reference/models/retrieve).", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the model.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - }, - "patch": { - "operationId": "ModelsController_update", - "summary": "Update model", - "description": "Updates a model instance defined by a model's `id`.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the model.", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateModelDto" - } - } - } - }, - "responses": { - "200": { - "description": "The model has been successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateModelDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - }, - "delete": { - "operationId": "ModelsController_remove", - "summary": "Delete model", - "description": "Deletes a model. [Equivalent to OpenAI's delete model](https://platform.openai.com/docs/api-reference/models/delete).", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the model.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The model has been successfully deleted.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteModelResponseDto" - } - } - } - } - }, - "tags": [ - "Models" - ] - } - }, - "/chat/completions": { - "post": { - "operationId": "ChatController_create", - "summary": "Create chat completion", - "description": "Creates a model response for the given conversation.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateChatCompletionDto" - } - } - } - }, - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChatCompletionResponseDto" - } - } - } - } - }, - "tags": [ - "Inference" - ] - } - }, - "/assistants": { - "post": { - "operationId": "AssistantsController_create", - "summary": "Create assistant", - "description": "Creates a new assistant.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAssistantDto" - } - } - } - }, - "responses": { - "201": { - "description": "The assistant has been successfully created." - } - }, - "tags": [ - "Assistants" - ] - }, - "get": { - "operationId": "AssistantsController_findAll", - "summary": "List assistants", - "description": "Retrieves all the available assistants along with their settings.", - "parameters": [], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantEntity" - } - } - } - } - } - }, - "tags": [ - "Assistants" - ] - } - }, - "/assistants/{id}": { - "get": { - "operationId": "AssistantsController_findOne", - "summary": "Get assistant", - "description": "Retrieves a specific assistant defined by an assistant's `id`.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the assistant.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssistantEntity" - } - } - } - } - }, - "tags": [ - "Assistants" - ] - }, - "delete": { - "operationId": "AssistantsController_remove", - "summary": "Delete assistant", - "description": "Deletes a specific assistant defined by an assistant's `id`.", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "description": "The unique identifier of the assistant.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The assistant has been successfully deleted.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteAssistantResponseDto" - } - } - } - } - }, - "tags": [ - "Assistants" - ] - } - } - }, - "info": { - "title": "Cortex API", - "description": "Cortex API provides a command-line interface (CLI) for seamless interaction with large language models (LLMs). Fully compatible with the [OpenAI API](https://platform.openai.com/docs/api-reference), it enables straightforward command execution and management of LLM interactions.", - "version": "1.0", - "contact": {} - }, - "tags": [ - { - "name": "Inference", - "description": "This endpoint initiates interaction with a Language Learning Model (LLM)." - }, - { - "name": "Assistants", - "description": "These endpoints manage the lifecycle of an Assistant within a conversation thread." - }, - { - "name": "Models", - "description": "These endpoints provide a list and descriptions of all available models within the Cortex framework." - }, - { - "name": "Messages", - "description": "These endpoints manage the retrieval and storage of conversation content, including responses from LLMs and other metadata related to chat interactions." - }, - { - "name": "Threads", - "description": "These endpoints handle the creation, retrieval, updating, and deletion of conversation threads." - } - ], - "servers": [ - { - "url": "http://localhost:1337" - }, - { - "url": "http://localhost:1337/v1" - } - ], - "components": { - "schemas": { - "ContentValueDto": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "The text's value." - }, - "annotations": { - "description": "The text's annotation that categorize the text.", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string", - "description": "The name or title of the text." - }, - "size": { - "type": "number", - "description": "The text's size in bytes." - } - }, - "required": [ - "value", - "annotations" - ] - }, - "ThreadContentDto": { - "type": "object", - "properties": { - "type": { - "enum": [ - "text", - "image", - "pdf" - ], - "type": "string", - "description": "The type of content." - }, - "text": { - "description": "The content details.", - "allOf": [ - { - "$ref": "#/components/schemas/ContentValueDto" - } - ] - } - }, - "required": [ - "type", - "text" - ] - }, - "CreateMessageDto": { - "type": "object", - "properties": { - "thread_id": { - "type": "string", - "description": "The ID of the thread to which the message will be posted." - }, - "assistant_id": { - "type": "string", - "description": "The assistant's unique identifier." - }, - "role": { - "enum": [ - "system", - "assistant", - "user" - ], - "type": "string", - "description": "The sources of the messages." - }, - "content": { - "description": "The content of the messages.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ThreadContentDto" - } - }, - "status": { - "enum": [ - "ready", - "pending", - "error", - "stopped" - ], - "type": "string", - "description": "Current status of the message." - }, - "metadata": { - "type": "object", - "description": "Optional dictionary for additional unstructured message information." - }, - "type": { - "type": "string", - "description": "Type of the message." - }, - "error_code": { - "enum": [ - "invalid_api_key", - "insufficient_quota", - "invalid_request_error", - "unknown" - ], - "type": "string", - "description": "Specifies the cause of any error." - } - }, - "required": [ - "thread_id", - "role", - "content", - "status" - ] - }, - "ListMessageObjectDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "msg_abc123", - "description": "The identifier of the message." - }, - "object": { - "type": "string", - "example": "thread.message", - "description": "Type of the object, indicating it's a thread message." - }, - "created_at": { - "type": "integer", - "example": 1699017614, - "description": "Unix timestamp representing the creation time of the message." - }, - "thread_id": { - "type": "string", - "example": "thread_abc123", - "description": "Identifier of the thread to which this message belongs." - }, - "role": { - "type": "string", - "example": "user", - "description": "Role of the sender, either 'user' or 'assistant'." - }, - "file_ids": { - "description": "Array of file IDs associated with the message, if any.", - "example": [], - "type": "array", - "items": { - "type": "string" - } - }, - "assistant_id": { - "type": "string", - "nullable": true, - "description": "Identifier of the assistant involved in the message, if applicable.", - "example": null - }, - "run_id": { - "type": "string", - "nullable": true, - "description": "Run ID associated with the message, if applicable.", - "example": null - }, - "metadata": { - "type": "object", - "example": {}, - "description": "Metadata associated with the message." - } - }, - "required": [ - "id", - "object", - "created_at", - "thread_id", - "role", - "file_ids", - "assistant_id", - "run_id", - "metadata" - ] - }, - "ListMessagesResponseDto": { - "type": "object", - "properties": { - "object": { - "type": "string", - "example": "list", - "description": "Type of the object, indicating it's a list." - }, - "data": { - "description": "Array of message objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ListMessageObjectDto" - } - }, - "first_id": { - "type": "string", - "example": "msg_abc123", - "description": "Identifier of the first message in the list." - }, - "last_id": { - "type": "string", - "example": "msg_abc456", - "description": "Identifier of the last message in the list." - }, - "has_more": { - "type": "boolean", - "example": false, - "description": "Indicates whether there are more messages to retrieve." - } - }, - "required": [ - "object", - "data", - "first_id", - "last_id", - "has_more" - ] - }, - "ContentDto": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "text", - "description": "Type of content, e.g., \"text\"." - }, - "text": { - "type": "object", - "example": { - "value": "How does AI work? Explain it in simple terms.", - "annotations": [] - }, - "description": "Text content of the message along with any annotations." - } - }, - "required": [ - "type", - "text" - ] - }, - "GetMessageResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "msg_abc123", - "description": "The identifier of the message." - }, - "object": { - "type": "string", - "example": "thread.message", - "description": "Type of the object, indicating it's a thread message.", - "default": "thread.message" - }, - "created_at": { - "type": "integer", - "example": 1699017614, - "description": "Unix timestamp representing the creation time of the message." - }, - "thread_id": { - "type": "string", - "example": "thread_abc123", - "description": "Identifier of the thread to which this message belongs." - }, - "role": { - "type": "string", - "example": "user", - "description": "Role of the sender, either 'user' or 'assistant'." - }, - "content": { - "description": "Array of content objects detailing the message content.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ContentDto" - } - }, - "file_ids": { - "example": [], - "description": "Array of file IDs associated with the message, if any.", - "type": "array", - "items": { - "type": "string" - } - }, - "assistant_id": { - "type": "string", - "nullable": true, - "example": null, - "description": "Identifier of the assistant involved in the message, if applicable." - }, - "run_id": { - "type": "string", - "nullable": true, - "example": null, - "description": "Run ID associated with the message, if applicable." - }, - "metadata": { - "type": "object", - "example": {}, - "description": "Metadata associated with the message." - } - }, - "required": [ - "id", - "object", - "created_at", - "thread_id", - "role", - "content", - "file_ids", - "assistant_id", - "run_id", - "metadata" - ] - }, - "UpdateMessageDto": { - "type": "object", - "properties": {} - }, - "DeleteMessageResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "message_123", - "description": "The identifier of the message that was deleted." - }, - "object": { - "type": "string", - "example": "message", - "description": "Type of the object, indicating it's a message.", - "default": "message" - }, - "deleted": { - "type": "boolean", - "example": true, - "description": "Indicates whether the message was successfully deleted." - } - }, - "required": [ - "id", - "object", - "deleted" - ] - }, - "ModelSettingParamsDto": { - "type": "object", - "properties": { - "ctx_len": { - "type": "number", - "description": "Sets the maximum input the model can use to generate a response, it varies with the model used." - }, - "ngl": { - "type": "number", - "description": "Determines GPU layer usage." - }, - "embedding": { - "type": "boolean", - "description": "Enables embedding utilization for tasks like document-enhanced chat in RAG-based applications." - }, - "n_parallel": { - "type": "number", - "description": "Number of parallel processing units to use." - }, - "cpu_threads": { - "type": "number", - "description": "Determines CPU inference threads, limited by hardware and OS. " - }, - "prompt_template": { - "type": "string", - "description": "A predefined text or framework that guides the AI model's response generation." - }, - "system_prompt": { - "type": "string", - "description": "Specific prompt used by the system for generating model outputs." - }, - "ai_prompt": { - "type": "string", - "description": "The prompt fed into the AI, typically to guide or specify the nature of the content it should generate." - }, - "user_prompt": { - "type": "string", - "description": "Customizable prompt input by the user to direct the model’s output generation." - }, - "llama_model_path": { - "type": "string", - "description": "File path to a specific llama model." - }, - "mmproj": { - "type": "string", - "description": "The mmproj is a projection matrix that is used to project the embeddings from CLIP into tokens usable by llama/mistral." - }, - "cont_batching": { - "type": "boolean", - "description": "Controls continuous batching, enhancing throughput for LLM inference." - }, - "vision_model": { - "type": "boolean", - "description": "Specifies if a vision-based model (for image processing) should be used." - }, - "text_model": { - "type": "boolean", - "description": "Specifies if a text-based model is to be utilized, for tasks like text generation or analysis." - } + "responses": { + "201": { + "description": "The message has been successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMessageDto" } - }, - "ModelRuntimeParamsDto": { - "type": "object", - "properties": { - "temperature": { - "type": "number", - "description": "Influences the randomness of the model's output." - }, - "token_limit": { - "type": "number", - "description": "Sets the maximum number of pieces (like words or characters) the model will produce at one time." - }, - "top_k": { - "type": "number", - "description": "Limits the model's choices when it's deciding what to write next." - }, - "top_p": { - "type": "number", - "description": "Sets probability threshold for more relevant outputs." - }, - "stream": { - "type": "boolean", - "description": "Determines the format for output generation. If set to `true`, the output is generated continuously, allowing for real-time streaming of responses. If set to `false`, the output is delivered in a single JSON file." - }, - "max_tokens": { - "type": "number", - "description": "Sets the upper limit on the number of tokens the model can generate in a single output." - }, - "stop": { - "description": "Defines specific tokens or phrases that signal the model to stop producing further output.", - "type": "array", - "items": { - "type": "string" - } - }, - "frequency_penalty": { - "type": "number", - "description": "Modifies the likelihood of the model repeating the same words or phrases within a single output." - }, - "presence_penalty": { - "type": "number", - "description": "Reduces the likelihood of repeating tokens, promoting novelty in the output." - }, - "engine": { - "type": "string", - "description": "The engine used to run the model." - } - } - }, - "CreateThreadModelInfoDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the thread." - }, - "settings": { - "description": "The settings of the thread.", - "allOf": [ - { - "$ref": "#/components/schemas/ModelSettingParamsDto" - } - ] - }, - "parameters": { - "description": "The parameters of the thread.", - "allOf": [ - { - "$ref": "#/components/schemas/ModelRuntimeParamsDto" - } - ] - }, - "engine": { - "type": "string", - "description": "The engine used in the thread to operate the model." - } - }, - "required": [ - "id", - "settings", - "parameters" - ] - }, - "AssistantToolDto": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "The type of the assistant's tool." - }, - "enabled": { - "type": "boolean", - "description": "Enable or disable the assistant's tool." - }, - "settings": { - "type": "object", - "description": "The setting of the assistant's tool." - } - }, - "required": [ - "type", - "enabled", - "settings" - ] - }, - "CreateThreadAssistantDto": { - "type": "object", - "properties": { - "assistant_id": { - "type": "string", - "description": "The unique identifier of the assistant." - }, - "assistant_name": { - "type": "string", - "description": "The name of the assistant." - }, - "model": { - "description": "The model's unique identifier and settings.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateThreadModelInfoDto" - } - ] - }, - "instructions": { - "type": "string", - "description": "The assistant's specific instructions." - }, - "tools": { - "description": "The thread's tool(Knowledge Retrieval) configurations.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantToolDto" - } - } - }, - "required": [ - "assistant_id", - "assistant_name", - "model" - ] - }, - "CreateThreadDto": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the thread." - }, - "assistants": { - "description": "The details of the thread's settings.", - "type": "array", - "items": { - "$ref": "#/components/schemas/CreateThreadAssistantDto" - } - } - }, - "required": [ - "title", - "assistants" - ] - }, - "ThreadEntity": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "object": { - "type": "string" - }, - "title": { - "type": "string" - }, - "assistants": { - "type": "array", - "items": { - "type": "object" - } - }, - "createdAt": { - "type": "number" - }, - "updatedAt": { - "type": "number" - }, - "metadata": { - "type": "object" - } - }, - "required": [ - "id", - "object", - "title", - "assistants", - "createdAt" - ] - }, - "GetThreadResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "thread_abc123", - "description": "The identifier of the thread." - }, - "object": { - "type": "string", - "example": "thread", - "description": "Type of the object" - }, - "created_at": { - "type": "integer", - "example": 1699014083, - "description": "Unix timestamp representing the creation time of the thread." - }, - "assistants": { - "example": [ - "assistant-001" - ], - "description": "List of assistants involved in the thread.", - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "type": "object", - "example": {}, - "description": "Metadata associated with the thread." - }, - "messages": { - "example": [], - "description": "List of messages within the thread.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "id", - "object", - "created_at", - "assistants", - "metadata", - "messages" - ] - }, - "UpdateThreadDto": { - "type": "object", - "properties": {} - }, - "DeleteThreadResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "thread_123", - "description": "The identifier of the thread that was deleted." - }, - "object": { - "type": "string", - "example": "thread", - "description": "Type of the object, indicating it's a thread.", - "default": "thread" - }, - "deleted": { - "type": "boolean", - "example": true, - "description": "Indicates whether the thread was successfully deleted." - } - }, - "required": [ - "id", - "object", - "deleted" - ] - }, - "ModelArtifactDto": { - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "The URL source of the model." - } - }, - "required": [ - "url" - ] - }, - "ModelMetadataDto": { - "type": "object", - "properties": { - "author": { - "type": "string", - "description": "The author of the model." - }, - "tags": { - "description": "The model's tags.", - "type": "array", - "items": { - "type": "string" - } - }, - "size": { - "type": "number", - "description": "The model's size." - }, - "cover": { - "type": "string", - "description": "The model's cover." - } - }, - "required": [ - "author", - "tags", - "size" - ] - }, - "CreateModelDto": { - "type": "object", - "properties": { - "version": { - "type": "string", - "description": "The version of the model." - }, - "format": { - "enum": [ - "gguf", - "api" - ], - "type": "string", - "description": "The state format of the model." - }, - "sources": { - "description": "The URL sources from which the model downloaded or accessed.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ModelArtifactDto" - } - }, - "id": { - "type": "string", - "description": "The unique identifier of the model." - }, - "name": { - "type": "string", - "description": "The name of the model." - }, - "description": { - "type": "string", - "description": "A brief description of the model." - }, - "settings": { - "description": "The settings parameters of the model.", - "allOf": [ - { - "$ref": "#/components/schemas/ModelSettingParamsDto" - } - ] - }, - "parameters": { - "description": "The parameters configuration of the model.", - "allOf": [ - { - "$ref": "#/components/schemas/ModelRuntimeParamsDto" - } - ] - }, - "metadata": { - "description": "The metadata of the model.", - "allOf": [ - { - "$ref": "#/components/schemas/ModelMetadataDto" - } - ] - }, - "engine": { - "type": "string", - "description": "The engine used to run the model." - } - }, - "required": [ - "version", - "format", - "sources", - "id", - "name", - "description", - "settings", - "parameters", - "metadata", - "engine" - ] - }, - "StartModelSuccessDto": { - "type": "object", - "properties": { - "message": { - "type": "string", - "description": "The success or error message displayed when a model is successfully loaded or fails to load." - }, - "modelId": { - "type": "string", - "description": "The unique identifier of the model." - } - }, - "required": [ - "message", - "modelId" - ] - }, - "DownloadModelResponseDto": { - "type": "object", - "properties": { - "message": { - "type": "string", - "example": "Starting download mistral-ins-7b-q4", - "description": "Message indicates Jan starting download corresponding model." - } - }, - "required": [ - "message" - ] - }, - "ModelDto": { - "type": "object", - "properties": { - "source_url": { - "type": "string", - "example": "https://huggingface.co/janhq/trinity-v1.2-GGUF/resolve/main/trinity-v1.2.Q4_K_M.gguf", - "description": "URL to the source of the model." - }, - "id": { - "type": "string", - "example": "trinity-v1.2-7b", - "description": "Unique identifier used in chat-completions model_name, matches folder name." - }, - "object": { - "type": "string", - "example": "model" - }, - "name": { - "type": "string", - "example": "Trinity-v1.2 7B Q4", - "description": "Name of the model." - }, - "version": { - "type": "string", - "default": "1.0", - "description": "The version number of the model." - }, - "description": { - "type": "string", - "example": "Trinity is an experimental model merge using the Slerp method. Recommended for daily assistance purposes.", - "description": "Description of the model." - }, - "format": { - "type": "string", - "example": "gguf", - "description": "State format of the model, distinct from the engine." - }, - "ctx_len": { - "type": "number", - "description": "Context length.", - "example": 4096 - }, - "prompt_template": { - "type": "string", - "example": "system\n{system_message}\nuser\n{prompt}\nassistant" - }, - "temperature": { - "type": "number", - "example": 0.7 - }, - "top_p": { - "type": "number", - "example": 0.95 - }, - "stream": { - "type": "boolean", - "example": true - }, - "max_tokens": { - "type": "number", - "example": 4096 - }, - "stop": { - "example": [], - "type": "array", - "items": { - "type": "string" - } - }, - "frequency_penalty": { - "type": "number", - "example": 0 - }, - "presence_penalty": { - "type": "number", - "example": 0 - }, - "author": { - "type": "string", - "example": "Jan" - }, - "tags": { - "example": [ - "7B", - "Merged", - "Featured" - ], - "type": "array", - "items": { - "type": "string" - } - }, - "size": { - "type": "number", - "example": 4370000000 - }, - "cover": { - "type": "string", - "example": "https://raw.githubusercontent.com/janhq/jan/main/models/trinity-v1.2-7b/cover.png" - }, - "engine": { - "type": "string", - "example": "cortex" - } - }, - "required": [ - "source_url", - "id", - "object", - "name", - "version", - "description", - "format", - "ctx_len", - "prompt_template", - "temperature", - "top_p", - "stream", - "max_tokens", - "stop", - "frequency_penalty", - "presence_penalty", - "author", - "tags", - "size", - "cover", - "engine" - ] - }, - "ListModelsResponseDto": { - "type": "object", - "properties": { - "object": { - "type": "string", - "example": "list", - "enum": [ - "list" - ] - }, - "data": { - "description": "List of models", - "type": "array", - "items": { - "$ref": "#/components/schemas/ModelDto" - } - } - }, - "required": [ - "object", - "data" - ] - }, - "UpdateModelDto": { - "type": "object", - "properties": {} - }, - "DeleteModelResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "mistral-ins-7b-q4", - "description": "The identifier of the model that was deleted." - }, - "object": { - "type": "string", - "example": "model", - "description": "Type of the object, indicating it's a model.", - "default": "model" - }, - "deleted": { - "type": "boolean", - "example": true, - "description": "Indicates whether the model was successfully deleted." - } - }, - "required": [ - "id", - "object", - "deleted" - ] - }, - "ChatCompletionMessage": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The Content of the chat message." - }, - "role": { - "enum": [ - "system", - "assistant", - "user" - ], - "type": "string", - "description": "The role of the entity in the chat completion." - } - }, - "required": [ - "content", - "role" - ] - }, - "CreateChatCompletionDto": { - "type": "object", - "properties": { - "messages": { - "description": "Array of chat messages to be used for generating the chat completion.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ChatCompletionMessage" - } - }, - "model": { - "type": "string", - "description": "The unique identifier of the model." - }, - "stream": { - "type": "boolean", - "description": "Determines the format for output generation. If set to `true`, the output is generated continuously, allowing for real-time streaming of responses. If set to `false`, the output is delivered in a single JSON file." - }, - "max_tokens": { - "type": "number", - "description": "Sets the upper limit on the number of tokens the model can generate in a single output." - }, - "stop": { - "description": "Defines specific tokens or phrases that signal the model to stop producing further output.", - "type": "array", - "items": { - "type": "string" - } - }, - "frequency_penalty": { - "type": "number", - "description": "Modifies the likelihood of the model repeating the same words or phrases within a single output." - }, - "presence_penalty": { - "type": "number", - "description": "Reduces the likelihood of repeating tokens, promoting novelty in the output." - }, - "temperature": { - "type": "number", - "description": "Influences the randomness of the model's output." - }, - "top_p": { - "type": "number", - "description": "Sets probability threshold for more relevant outputs." - } - }, - "required": [ - "messages", - "model", - "stream", - "max_tokens", - "stop", - "frequency_penalty", - "presence_penalty", - "temperature", - "top_p" - ] - }, - "MessageDto": { - "type": "object", - "properties": { - "content": { - "type": "string", - "description": "The textual content of the chat message or completion generated by the model." - }, - "role": { - "type": "string", - "description": "The role of the participant in the chat, such as 'user' or 'system', indicating who is the sender of the message." - } - }, - "required": [ - "content", - "role" - ] - }, - "ChoiceDto": { - "type": "object", - "properties": { - "finish_reason": { - "type": "string", - "description": "The reason the chat completion ended, typically indicating whether the model completed the text naturally or was cut off." - }, - "index": { - "type": "number", - "description": "The index of the completion relative to other generated completions, useful for identifying its order in a batch request." - }, - "message": { - "description": "An object representing the message details involved in the chat completion, encapsulated within a MessageDto.", - "allOf": [ - { - "$ref": "#/components/schemas/MessageDto" - } - ] - } - }, - "required": [ - "finish_reason", - "index", - "message" - ] - }, - "UsageDto": { - "type": "object", - "properties": { - "completion_tokens": { - "type": "number", - "description": "The number of tokens used in the completion part of the response generated by the model." - }, - "prompt_tokens": { - "type": "number", - "description": "The number of tokens used in the prompt part of the chat input, which is provided to the model." - }, - "total_tokens": { - "type": "number", - "description": "The total number of tokens used in both the prompt and the completion, summarizing the entire token count of the chat operation." - } - }, - "required": [ - "completion_tokens", - "prompt_tokens", - "total_tokens" - ] - }, - "ChatCompletionResponseDto": { - "type": "object", - "properties": { - "choices": { - "description": "A list of choices generated by the chat model.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ChoiceDto" - } - }, - "created": { - "type": "number", - "description": "The timestamp of when the chat completion was created, expressed as a Unix timestamp." - }, - "id": { - "type": "string", - "description": "The unique identifier for the chat completion." - }, - "model": { - "type": "string", - "description": "The identifier of the model used to generate the chat completion." - }, - "object": { - "type": "string", - "description": "The type of object, typically set to 'chat_completion' to denote the nature of the API response." - }, - "system_fingerprint": { - "type": "string", - "description": "A unique fingerprint that identifies the system configuration used during the chat completion." - }, - "usage": { - "description": "An object representing the usage statistics of the model for the current completion.", - "allOf": [ - { - "$ref": "#/components/schemas/UsageDto" - } - ] - } - }, - "required": [ - "choices", - "created", - "id", - "model", - "object", - "system_fingerprint", - "usage" - ] - }, - "CreateAssistantDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the assistant." - }, - "avatar": { - "type": "string", - "description": "The avatar of the assistant." - }, - "name": { - "type": "string", - "description": "The name of the assistant." - }, - "description": { - "type": "string", - "description": "The description of the assistant." - }, - "model": { - "type": "string", - "description": "The model of the assistant." - }, - "instructions": { - "type": "string", - "description": "The instructions for the assistant." - }, - "tools": { - "description": "The tools associated with the assistant.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantToolDto" - } - }, - "file_ids": { - "description": "The identifiers of the files that have been uploaded to the thread.", - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "type": "object", - "description": "The metadata of the assistant." - } - }, - "required": [ - "id", - "avatar", - "name", - "description", - "model", - "instructions", - "tools", - "file_ids" - ] - }, - "AssistantEntity": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "thread_location": { - "type": "string" - }, - "object": { - "type": "string" - }, - "created_at": { - "type": "number" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "model": { - "type": "string" - }, - "instructions": { - "type": "string" - }, - "tools": { - "type": "array", - "items": { - "type": "object" - } - }, - "file_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "type": "object" - } - }, - "required": [ - "id", - "avatar", - "object", - "created_at", - "name", - "model", - "file_ids" - ] - }, - "DeleteAssistantResponseDto": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "assistant_123", - "description": "The identifier of the assistant that was deleted." - }, - "object": { - "type": "string", - "example": "assistant", - "description": "Type of the object, indicating it's a assistant.", - "default": "assistant" - }, - "deleted": { - "type": "boolean", - "example": true, - "description": "Indicates whether the assistant was successfully deleted." - } - }, - "required": [ - "id", - "object", - "deleted" - ] + } } - } + } + }, + "tags": ["Messages"] + }, + "get": { + "operationId": "MessagesController_findAll", + "summary": "List messages", + "description": "Retrieves all the messages in a thread.", + "parameters": [], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListMessagesResponseDto" + } + } + } + } + }, + "tags": ["Messages"] + } + }, + "/messages/{id}": { + "get": { + "operationId": "MessagesController_findOne", + "summary": "Retrieve message", + "description": "Retrieves a specific message defined by a message's `id`.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the message.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetMessageResponseDto" + } + } + } + } + }, + "tags": ["Messages"] + }, + "patch": { + "operationId": "MessagesController_update", + "summary": "Update message", + "description": "Updates a specific message defined by a message's `id`.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the message.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMessageDto" + } + } + } + }, + "responses": { + "200": { + "description": "The message has been successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMessageDto" + } + } + } + } + }, + "tags": ["Messages"] + }, + "delete": { + "operationId": "MessagesController_remove", + "summary": "Delete message", + "description": "Deletes a specific message defined by a message's `id`.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the message.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully deleted the message.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteMessageResponseDto" + } + } + } + } + }, + "tags": ["Messages"] + } + }, + "/threads": { + "post": { + "operationId": "ThreadsController_create", + "summary": "Create thread", + "description": "Creates a new thread.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateThreadDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThreadEntity" + } + } + } + } + }, + "tags": ["Threads"] + }, + "get": { + "operationId": "ThreadsController_findAll", + "summary": "List threads", + "description": "Lists all the available threads along with its configurations.", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ThreadEntity" + } + } + } + } + } + }, + "tags": ["Threads"] + } + }, + "/threads/{id}": { + "get": { + "operationId": "ThreadsController_findOne", + "summary": "Get thread", + "description": "Retrieves a thread along with its configurations.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the thread.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetThreadResponseDto" + } + } + } + } + }, + "tags": ["Threads"] + }, + "patch": { + "operationId": "ThreadsController_update", + "summary": "Update thread", + "description": "Updates a thread's configurations.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the thread.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateThreadDto" + } + } + } + }, + "responses": { + "200": { + "description": "The thread has been successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateThreadDto" + } + } + } + } + }, + "tags": ["Threads"] + }, + "delete": { + "operationId": "ThreadsController_remove", + "summary": "Delete thread", + "description": "Deletes a specific thread defined by a thread `id` .", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the thread.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The thread has been successfully deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteThreadResponseDto" + } + } + } + } + }, + "tags": ["Threads"] + } + }, + "/models": { + "post": { + "operationId": "ModelsController_create", + "summary": "Create model", + "description": "Creates a model `.json` instance file manually.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateModelDto" + } + } + } + }, + "responses": { + "201": { + "description": "The model has been successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartModelSuccessDto" + } + } + } + } + }, + "tags": ["Models"] + }, + "get": { + "operationId": "ModelsController_findAll", + "summary": "List models", + "description": "Lists the currently available models, and provides basic information about each one such as the owner and availability. [Equivalent to OpenAI's list model](https://platform.openai.com/docs/api-reference/models/list).", + "parameters": [], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListModelsResponseDto" + } + } + } + } + }, + "tags": ["Models"] + } + }, + "/models/{modelId}/start": { + "post": { + "operationId": "ModelsController_startModel", + "summary": "Start model", + "description": "Starts a model operation defined by a model `id`.", + "parameters": [ + { + "name": "modelId", + "required": true, + "in": "path", + "description": "The unique identifier of the model.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelSettingParamsDto" + } + } + } + }, + "responses": { + "200": { + "description": "The model has been successfully started.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartModelSuccessDto" + } + } + } + } + }, + "tags": ["Models"] + } + }, + "/models/{modelId}/stop": { + "post": { + "operationId": "ModelsController_stopModel", + "summary": "Stop model", + "description": "Stops a model operation defined by a model `id`.", + "parameters": [ + { + "name": "modelId", + "required": true, + "in": "path", + "description": "The unique identifier of the model.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The model has been successfully stopped.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartModelSuccessDto" + } + } + } + } + }, + "tags": ["Models"] + } + }, + "/models/download/{modelId}": { + "get": { + "operationId": "ModelsController_downloadModel", + "summary": "Download model", + "description": "Downloads a specific model instance.", + "parameters": [ + { + "name": "modelId", + "required": true, + "in": "path", + "description": "The unique identifier of the model.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadModelResponseDto" + } + } + } + } + }, + "tags": ["Models"] + } + }, + "/models/{id}": { + "get": { + "operationId": "ModelsController_findOne", + "summary": "Get model", + "description": "Retrieves a model instance, providing basic information about the model such as the owner and permissions. [Equivalent to OpenAI's list model](https://platform.openai.com/docs/api-reference/models/retrieve).", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the model.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelDto" + } + } + } + } + }, + "tags": ["Models"] + }, + "patch": { + "operationId": "ModelsController_update", + "summary": "Update model", + "description": "Updates a model instance defined by a model's `id`.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the model.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateModelDto" + } + } + } + }, + "responses": { + "200": { + "description": "The model has been successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateModelDto" + } + } + } + } + }, + "tags": ["Models"] + }, + "delete": { + "operationId": "ModelsController_remove", + "summary": "Delete model", + "description": "Deletes a model. [Equivalent to OpenAI's delete model](https://platform.openai.com/docs/api-reference/models/delete).", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the model.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The model has been successfully deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteModelResponseDto" + } + } + } + } + }, + "tags": ["Models"] + } + }, + "/chat/completions": { + "post": { + "operationId": "ChatController_create", + "summary": "Create chat completion", + "description": "Creates a model response for the given conversation.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateChatCompletionDto" + } + } + } + }, + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChatCompletionResponseDto" + } + } + } + } + }, + "tags": ["Inference"] + } + }, + "/assistants": { + "post": { + "operationId": "AssistantsController_create", + "summary": "Create assistant", + "description": "Creates a new assistant.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAssistantDto" + } + } + } + }, + "responses": { + "201": { + "description": "The assistant has been successfully created." + } + }, + "tags": ["Assistants"] + }, + "get": { + "operationId": "AssistantsController_findAll", + "summary": "List assistants", + "description": "Retrieves all the available assistants along with their settings.", + "parameters": [], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AssistantEntity" + } + } + } + } + } + }, + "tags": ["Assistants"] + } + }, + "/assistants/{id}": { + "get": { + "operationId": "AssistantsController_findOne", + "summary": "Get assistant", + "description": "Retrieves a specific assistant defined by an assistant's `id`.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the assistant.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssistantEntity" + } + } + } + } + }, + "tags": ["Assistants"] + }, + "delete": { + "operationId": "AssistantsController_remove", + "summary": "Delete assistant", + "description": "Deletes a specific assistant defined by an assistant's `id`.", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier of the assistant.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The assistant has been successfully deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteAssistantResponseDto" + } + } + } + } + }, + "tags": ["Assistants"] + } } -} \ No newline at end of file + }, + "info": { + "title": "Cortex API", + "description": "Cortex API provides a command-line interface (CLI) for seamless interaction with large language models (LLMs). Fully compatible with the [OpenAI API](https://platform.openai.com/docs/api-reference), it enables straightforward command execution and management of LLM interactions.", + "version": "1.0", + "contact": {} + }, + "tags": [ + { + "name": "Inference", + "description": "This endpoint initiates interaction with a Language Learning Model (LLM)." + }, + { + "name": "Assistants", + "description": "These endpoints manage the lifecycle of an Assistant within a conversation thread." + }, + { + "name": "Models", + "description": "These endpoints provide a list and descriptions of all available models within the Cortex framework." + }, + { + "name": "Messages", + "description": "These endpoints manage the retrieval and storage of conversation content, including responses from LLMs and other metadata related to chat interactions." + }, + { + "name": "Threads", + "description": "These endpoints handle the creation, retrieval, updating, and deletion of conversation threads." + } + ], + "servers": [ + { + "url": "http://localhost:1337" + }, + { + "url": "http://localhost:1337/v1" + } + ], + "components": { + "schemas": { + "ContentValueDto": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The text's value." + }, + "annotations": { + "description": "The text's annotation that categorize the text.", + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string", + "description": "The name or title of the text." + }, + "size": { + "type": "number", + "description": "The text's size in bytes." + } + }, + "required": ["value", "annotations"] + }, + "ThreadContentDto": { + "type": "object", + "properties": { + "type": { + "enum": ["text", "image", "pdf"], + "type": "string", + "description": "The type of content." + }, + "text": { + "description": "The content details.", + "allOf": [ + { + "$ref": "#/components/schemas/ContentValueDto" + } + ] + } + }, + "required": ["type", "text"] + }, + "CreateMessageDto": { + "type": "object", + "properties": { + "thread_id": { + "type": "string", + "description": "The ID of the thread to which the message will be posted." + }, + "assistant_id": { + "type": "string", + "description": "The assistant's unique identifier." + }, + "role": { + "enum": ["system", "assistant", "user"], + "type": "string", + "description": "The sources of the messages." + }, + "content": { + "description": "The content of the messages.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ThreadContentDto" + } + }, + "status": { + "enum": ["ready", "pending", "error", "stopped"], + "type": "string", + "description": "Current status of the message." + }, + "metadata": { + "type": "object", + "description": "Optional dictionary for additional unstructured message information." + }, + "type": { + "type": "string", + "description": "Type of the message." + }, + "error_code": { + "enum": [ + "invalid_api_key", + "insufficient_quota", + "invalid_request_error", + "unknown" + ], + "type": "string", + "description": "Specifies the cause of any error." + } + }, + "required": ["thread_id", "role", "content", "status"] + }, + "ListMessageObjectDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "msg_abc123", + "description": "The identifier of the message." + }, + "object": { + "type": "string", + "example": "thread.message", + "description": "Type of the object, indicating it's a thread message." + }, + "created_at": { + "type": "integer", + "example": 1699017614, + "description": "Unix timestamp representing the creation time of the message." + }, + "thread_id": { + "type": "string", + "example": "thread_abc123", + "description": "Identifier of the thread to which this message belongs." + }, + "role": { + "type": "string", + "example": "user", + "description": "Role of the sender, either 'user' or 'assistant'." + }, + "file_ids": { + "description": "Array of file IDs associated with the message, if any.", + "example": [], + "type": "array", + "items": { + "type": "string" + } + }, + "assistant_id": { + "type": "string", + "nullable": true, + "description": "Identifier of the assistant involved in the message, if applicable.", + "example": null + }, + "run_id": { + "type": "string", + "nullable": true, + "description": "Run ID associated with the message, if applicable.", + "example": null + }, + "metadata": { + "type": "object", + "example": {}, + "description": "Metadata associated with the message." + } + }, + "required": [ + "id", + "object", + "created_at", + "thread_id", + "role", + "file_ids", + "assistant_id", + "run_id", + "metadata" + ] + }, + "ListMessagesResponseDto": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "list", + "description": "Type of the object, indicating it's a list." + }, + "data": { + "description": "Array of message objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ListMessageObjectDto" + } + }, + "first_id": { + "type": "string", + "example": "msg_abc123", + "description": "Identifier of the first message in the list." + }, + "last_id": { + "type": "string", + "example": "msg_abc456", + "description": "Identifier of the last message in the list." + }, + "has_more": { + "type": "boolean", + "example": false, + "description": "Indicates whether there are more messages to retrieve." + } + }, + "required": ["object", "data", "first_id", "last_id", "has_more"] + }, + "ContentDto": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "text", + "description": "Type of content, e.g., \"text\"." + }, + "text": { + "type": "object", + "example": { + "value": "How does AI work? Explain it in simple terms.", + "annotations": [] + }, + "description": "Text content of the message along with any annotations." + } + }, + "required": ["type", "text"] + }, + "GetMessageResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "msg_abc123", + "description": "The identifier of the message." + }, + "object": { + "type": "string", + "example": "thread.message", + "description": "Type of the object, indicating it's a thread message.", + "default": "thread.message" + }, + "created_at": { + "type": "integer", + "example": 1699017614, + "description": "Unix timestamp representing the creation time of the message." + }, + "thread_id": { + "type": "string", + "example": "thread_abc123", + "description": "Identifier of the thread to which this message belongs." + }, + "role": { + "type": "string", + "example": "user", + "description": "Role of the sender, either 'user' or 'assistant'." + }, + "content": { + "description": "Array of content objects detailing the message content.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ContentDto" + } + }, + "file_ids": { + "example": [], + "description": "Array of file IDs associated with the message, if any.", + "type": "array", + "items": { + "type": "string" + } + }, + "assistant_id": { + "type": "string", + "nullable": true, + "example": null, + "description": "Identifier of the assistant involved in the message, if applicable." + }, + "run_id": { + "type": "string", + "nullable": true, + "example": null, + "description": "Run ID associated with the message, if applicable." + }, + "metadata": { + "type": "object", + "example": {}, + "description": "Metadata associated with the message." + } + }, + "required": [ + "id", + "object", + "created_at", + "thread_id", + "role", + "content", + "file_ids", + "assistant_id", + "run_id", + "metadata" + ] + }, + "UpdateMessageDto": { + "type": "object", + "properties": {} + }, + "DeleteMessageResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "message_123", + "description": "The identifier of the message that was deleted." + }, + "object": { + "type": "string", + "example": "message", + "description": "Type of the object, indicating it's a message.", + "default": "message" + }, + "deleted": { + "type": "boolean", + "example": true, + "description": "Indicates whether the message was successfully deleted." + } + }, + "required": ["id", "object", "deleted"] + }, + "ModelSettingParamsDto": { + "type": "object", + "properties": { + "ctx_len": { + "type": "number", + "description": "Sets the maximum input the model can use to generate a response, it varies with the model used." + }, + "ngl": { + "type": "number", + "description": "Determines GPU layer usage." + }, + "embedding": { + "type": "boolean", + "description": "Enables embedding utilization for tasks like document-enhanced chat in RAG-based applications." + }, + "n_parallel": { + "type": "number", + "description": "Number of parallel processing units to use." + }, + "cpu_threads": { + "type": "number", + "description": "Determines CPU inference threads, limited by hardware and OS. " + }, + "prompt_template": { + "type": "string", + "description": "A predefined text or framework that guides the AI model's response generation." + }, + "system_prompt": { + "type": "string", + "description": "Specific prompt used by the system for generating model outputs." + }, + "ai_prompt": { + "type": "string", + "description": "The prompt fed into the AI, typically to guide or specify the nature of the content it should generate." + }, + "user_prompt": { + "type": "string", + "description": "Customizable prompt input by the user to direct the model’s output generation." + }, + "llama_model_path": { + "type": "string", + "description": "File path to a specific llama model." + }, + "mmproj": { + "type": "string", + "description": "The mmproj is a projection matrix that is used to project the embeddings from CLIP into tokens usable by llama/mistral." + }, + "cont_batching": { + "type": "boolean", + "description": "Controls continuous batching, enhancing throughput for LLM inference." + }, + "vision_model": { + "type": "boolean", + "description": "Specifies if a vision-based model (for image processing) should be used." + }, + "text_model": { + "type": "boolean", + "description": "Specifies if a text-based model is to be utilized, for tasks like text generation or analysis." + } + } + }, + "ModelRuntimeParamsDto": { + "type": "object", + "properties": { + "temperature": { + "type": "number", + "description": "Influences the randomness of the model's output." + }, + "token_limit": { + "type": "number", + "description": "Sets the maximum number of pieces (like words or characters) the model will produce at one time." + }, + "top_k": { + "type": "number", + "description": "Limits the model's choices when it's deciding what to write next." + }, + "top_p": { + "type": "number", + "description": "Sets probability threshold for more relevant outputs." + }, + "stream": { + "type": "boolean", + "description": "Determines the format for output generation. If set to `true`, the output is generated continuously, allowing for real-time streaming of responses. If set to `false`, the output is delivered in a single JSON file." + }, + "max_tokens": { + "type": "number", + "description": "Sets the upper limit on the number of tokens the model can generate in a single output." + }, + "stop": { + "description": "Defines specific tokens or phrases that signal the model to stop producing further output.", + "type": "array", + "items": { + "type": "string" + } + }, + "frequency_penalty": { + "type": "number", + "description": "Modifies the likelihood of the model repeating the same words or phrases within a single output." + }, + "presence_penalty": { + "type": "number", + "description": "Reduces the likelihood of repeating tokens, promoting novelty in the output." + }, + "engine": { + "type": "string", + "description": "The engine used to run the model." + } + } + }, + "CreateThreadModelInfoDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the thread." + }, + "settings": { + "description": "The settings of the thread.", + "allOf": [ + { + "$ref": "#/components/schemas/ModelSettingParamsDto" + } + ] + }, + "parameters": { + "description": "The parameters of the thread.", + "allOf": [ + { + "$ref": "#/components/schemas/ModelRuntimeParamsDto" + } + ] + }, + "engine": { + "type": "string", + "description": "The engine used in the thread to operate the model." + } + }, + "required": ["id", "settings", "parameters"] + }, + "AssistantToolDto": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The type of the assistant's tool." + }, + "enabled": { + "type": "boolean", + "description": "Enable or disable the assistant's tool." + }, + "settings": { + "type": "object", + "description": "The setting of the assistant's tool." + } + }, + "required": ["type", "enabled", "settings"] + }, + "CreateThreadAssistantDto": { + "type": "object", + "properties": { + "assistant_id": { + "type": "string", + "description": "The unique identifier of the assistant." + }, + "assistant_name": { + "type": "string", + "description": "The name of the assistant." + }, + "model": { + "description": "The model's unique identifier and settings.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateThreadModelInfoDto" + } + ] + }, + "instructions": { + "type": "string", + "description": "The assistant's specific instructions." + }, + "tools": { + "description": "The thread's tool(Knowledge Retrieval) configurations.", + "type": "array", + "items": { + "$ref": "#/components/schemas/AssistantToolDto" + } + } + }, + "required": ["assistant_id", "assistant_name", "model"] + }, + "CreateThreadDto": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The title of the thread." + }, + "assistants": { + "description": "The details of the thread's settings.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CreateThreadAssistantDto" + } + } + }, + "required": ["title", "assistants"] + }, + "ThreadEntity": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "object": { + "type": "string" + }, + "title": { + "type": "string" + }, + "assistants": { + "type": "array", + "items": { + "type": "object" + } + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "metadata": { + "type": "object" + } + }, + "required": ["id", "object", "title", "assistants", "createdAt"] + }, + "GetThreadResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "thread_abc123", + "description": "The identifier of the thread." + }, + "object": { + "type": "string", + "example": "thread", + "description": "Type of the object" + }, + "created_at": { + "type": "integer", + "example": 1699014083, + "description": "Unix timestamp representing the creation time of the thread." + }, + "assistants": { + "example": ["assistant-001"], + "description": "List of assistants involved in the thread.", + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "example": {}, + "description": "Metadata associated with the thread." + }, + "messages": { + "example": [], + "description": "List of messages within the thread.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "id", + "object", + "created_at", + "assistants", + "metadata", + "messages" + ] + }, + "UpdateThreadDto": { + "type": "object", + "properties": {} + }, + "DeleteThreadResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "thread_123", + "description": "The identifier of the thread that was deleted." + }, + "object": { + "type": "string", + "example": "thread", + "description": "Type of the object, indicating it's a thread.", + "default": "thread" + }, + "deleted": { + "type": "boolean", + "example": true, + "description": "Indicates whether the thread was successfully deleted." + } + }, + "required": ["id", "object", "deleted"] + }, + "ModelArtifactDto": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The URL source of the model." + } + }, + "required": ["url"] + }, + "ModelMetadataDto": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The author of the model." + }, + "tags": { + "description": "The model's tags.", + "type": "array", + "items": { + "type": "string" + } + }, + "size": { + "type": "number", + "description": "The model's size." + }, + "cover": { + "type": "string", + "description": "The model's cover." + } + }, + "required": ["author", "tags", "size"] + }, + "CreateModelDto": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "The version of the model." + }, + "format": { + "enum": ["gguf", "api"], + "type": "string", + "description": "The state format of the model." + }, + "sources": { + "description": "The URL sources from which the model downloaded or accessed.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelArtifactDto" + } + }, + "id": { + "type": "string", + "description": "The unique identifier of the model." + }, + "name": { + "type": "string", + "description": "The name of the model." + }, + "description": { + "type": "string", + "description": "A brief description of the model." + }, + "settings": { + "description": "The settings parameters of the model.", + "allOf": [ + { + "$ref": "#/components/schemas/ModelSettingParamsDto" + } + ] + }, + "parameters": { + "description": "The parameters configuration of the model.", + "allOf": [ + { + "$ref": "#/components/schemas/ModelRuntimeParamsDto" + } + ] + }, + "metadata": { + "description": "The metadata of the model.", + "allOf": [ + { + "$ref": "#/components/schemas/ModelMetadataDto" + } + ] + }, + "engine": { + "type": "string", + "description": "The engine used to run the model." + } + }, + "required": [ + "version", + "format", + "sources", + "id", + "name", + "description", + "settings", + "parameters", + "metadata", + "engine" + ] + }, + "StartModelSuccessDto": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The success or error message displayed when a model is successfully loaded or fails to load." + }, + "modelId": { + "type": "string", + "description": "The unique identifier of the model." + } + }, + "required": ["message", "modelId"] + }, + "DownloadModelResponseDto": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "Starting download mistral-ins-7b-q4", + "description": "Message indicates Jan starting download corresponding model." + } + }, + "required": ["message"] + }, + "ModelDto": { + "type": "object", + "properties": { + "source_url": { + "type": "string", + "example": "https://huggingface.co/janhq/trinity-v1.2-GGUF/resolve/main/trinity-v1.2.Q4_K_M.gguf", + "description": "URL to the source of the model." + }, + "id": { + "type": "string", + "example": "trinity-v1.2-7b", + "description": "Unique identifier used in chat-completions model_name, matches folder name." + }, + "object": { + "type": "string", + "example": "model" + }, + "name": { + "type": "string", + "example": "Trinity-v1.2 7B Q4", + "description": "Name of the model." + }, + "version": { + "type": "string", + "default": "1.0", + "description": "The version number of the model." + }, + "description": { + "type": "string", + "example": "Trinity is an experimental model merge using the Slerp method. Recommended for daily assistance purposes.", + "description": "Description of the model." + }, + "format": { + "type": "string", + "example": "gguf", + "description": "State format of the model, distinct from the engine." + }, + "ctx_len": { + "type": "number", + "description": "Context length.", + "example": 4096 + }, + "prompt_template": { + "type": "string", + "example": "system\n{system_message}\nuser\n{prompt}\nassistant" + }, + "temperature": { + "type": "number", + "example": 0.7 + }, + "top_p": { + "type": "number", + "example": 0.95 + }, + "stream": { + "type": "boolean", + "example": true + }, + "max_tokens": { + "type": "number", + "example": 4096 + }, + "stop": { + "example": [], + "type": "array", + "items": { + "type": "string" + } + }, + "frequency_penalty": { + "type": "number", + "example": 0 + }, + "presence_penalty": { + "type": "number", + "example": 0 + }, + "author": { + "type": "string", + "example": "Jan" + }, + "tags": { + "example": ["7B", "Merged", "Featured"], + "type": "array", + "items": { + "type": "string" + } + }, + "size": { + "type": "number", + "example": 4370000000 + }, + "cover": { + "type": "string", + "example": "https://raw.githubusercontent.com/menloresearch/jan/main/models/trinity-v1.2-7b/cover.png" + }, + "engine": { + "type": "string", + "example": "cortex" + } + }, + "required": [ + "source_url", + "id", + "object", + "name", + "version", + "description", + "format", + "ctx_len", + "prompt_template", + "temperature", + "top_p", + "stream", + "max_tokens", + "stop", + "frequency_penalty", + "presence_penalty", + "author", + "tags", + "size", + "cover", + "engine" + ] + }, + "ListModelsResponseDto": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "list", + "enum": ["list"] + }, + "data": { + "description": "List of models", + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelDto" + } + } + }, + "required": ["object", "data"] + }, + "UpdateModelDto": { + "type": "object", + "properties": {} + }, + "DeleteModelResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "mistral-ins-7b-q4", + "description": "The identifier of the model that was deleted." + }, + "object": { + "type": "string", + "example": "model", + "description": "Type of the object, indicating it's a model.", + "default": "model" + }, + "deleted": { + "type": "boolean", + "example": true, + "description": "Indicates whether the model was successfully deleted." + } + }, + "required": ["id", "object", "deleted"] + }, + "ChatCompletionMessage": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "The Content of the chat message." + }, + "role": { + "enum": ["system", "assistant", "user"], + "type": "string", + "description": "The role of the entity in the chat completion." + } + }, + "required": ["content", "role"] + }, + "CreateChatCompletionDto": { + "type": "object", + "properties": { + "messages": { + "description": "Array of chat messages to be used for generating the chat completion.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ChatCompletionMessage" + } + }, + "model": { + "type": "string", + "description": "The unique identifier of the model." + }, + "stream": { + "type": "boolean", + "description": "Determines the format for output generation. If set to `true`, the output is generated continuously, allowing for real-time streaming of responses. If set to `false`, the output is delivered in a single JSON file." + }, + "max_tokens": { + "type": "number", + "description": "Sets the upper limit on the number of tokens the model can generate in a single output." + }, + "stop": { + "description": "Defines specific tokens or phrases that signal the model to stop producing further output.", + "type": "array", + "items": { + "type": "string" + } + }, + "frequency_penalty": { + "type": "number", + "description": "Modifies the likelihood of the model repeating the same words or phrases within a single output." + }, + "presence_penalty": { + "type": "number", + "description": "Reduces the likelihood of repeating tokens, promoting novelty in the output." + }, + "temperature": { + "type": "number", + "description": "Influences the randomness of the model's output." + }, + "top_p": { + "type": "number", + "description": "Sets probability threshold for more relevant outputs." + } + }, + "required": [ + "messages", + "model", + "stream", + "max_tokens", + "stop", + "frequency_penalty", + "presence_penalty", + "temperature", + "top_p" + ] + }, + "MessageDto": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "The textual content of the chat message or completion generated by the model." + }, + "role": { + "type": "string", + "description": "The role of the participant in the chat, such as 'user' or 'system', indicating who is the sender of the message." + } + }, + "required": ["content", "role"] + }, + "ChoiceDto": { + "type": "object", + "properties": { + "finish_reason": { + "type": "string", + "description": "The reason the chat completion ended, typically indicating whether the model completed the text naturally or was cut off." + }, + "index": { + "type": "number", + "description": "The index of the completion relative to other generated completions, useful for identifying its order in a batch request." + }, + "message": { + "description": "An object representing the message details involved in the chat completion, encapsulated within a MessageDto.", + "allOf": [ + { + "$ref": "#/components/schemas/MessageDto" + } + ] + } + }, + "required": ["finish_reason", "index", "message"] + }, + "UsageDto": { + "type": "object", + "properties": { + "completion_tokens": { + "type": "number", + "description": "The number of tokens used in the completion part of the response generated by the model." + }, + "prompt_tokens": { + "type": "number", + "description": "The number of tokens used in the prompt part of the chat input, which is provided to the model." + }, + "total_tokens": { + "type": "number", + "description": "The total number of tokens used in both the prompt and the completion, summarizing the entire token count of the chat operation." + } + }, + "required": ["completion_tokens", "prompt_tokens", "total_tokens"] + }, + "ChatCompletionResponseDto": { + "type": "object", + "properties": { + "choices": { + "description": "A list of choices generated by the chat model.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ChoiceDto" + } + }, + "created": { + "type": "number", + "description": "The timestamp of when the chat completion was created, expressed as a Unix timestamp." + }, + "id": { + "type": "string", + "description": "The unique identifier for the chat completion." + }, + "model": { + "type": "string", + "description": "The identifier of the model used to generate the chat completion." + }, + "object": { + "type": "string", + "description": "The type of object, typically set to 'chat_completion' to denote the nature of the API response." + }, + "system_fingerprint": { + "type": "string", + "description": "A unique fingerprint that identifies the system configuration used during the chat completion." + }, + "usage": { + "description": "An object representing the usage statistics of the model for the current completion.", + "allOf": [ + { + "$ref": "#/components/schemas/UsageDto" + } + ] + } + }, + "required": [ + "choices", + "created", + "id", + "model", + "object", + "system_fingerprint", + "usage" + ] + }, + "CreateAssistantDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the assistant." + }, + "avatar": { + "type": "string", + "description": "The avatar of the assistant." + }, + "name": { + "type": "string", + "description": "The name of the assistant." + }, + "description": { + "type": "string", + "description": "The description of the assistant." + }, + "model": { + "type": "string", + "description": "The model of the assistant." + }, + "instructions": { + "type": "string", + "description": "The instructions for the assistant." + }, + "tools": { + "description": "The tools associated with the assistant.", + "type": "array", + "items": { + "$ref": "#/components/schemas/AssistantToolDto" + } + }, + "file_ids": { + "description": "The identifiers of the files that have been uploaded to the thread.", + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "The metadata of the assistant." + } + }, + "required": [ + "id", + "avatar", + "name", + "description", + "model", + "instructions", + "tools", + "file_ids" + ] + }, + "AssistantEntity": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "thread_location": { + "type": "string" + }, + "object": { + "type": "string" + }, + "created_at": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "model": { + "type": "string" + }, + "instructions": { + "type": "string" + }, + "tools": { + "type": "array", + "items": { + "type": "object" + } + }, + "file_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object" + } + }, + "required": [ + "id", + "avatar", + "object", + "created_at", + "name", + "model", + "file_ids" + ] + }, + "DeleteAssistantResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "assistant_123", + "description": "The identifier of the assistant that was deleted." + }, + "object": { + "type": "string", + "example": "assistant", + "description": "Type of the object, indicating it's a assistant.", + "default": "assistant" + }, + "deleted": { + "type": "boolean", + "example": true, + "description": "Indicates whether the assistant was successfully deleted." + } + }, + "required": ["id", "object", "deleted"] + } + } + } +} diff --git a/docs/src/components/APIReference/index.tsx b/docs/src/components/APIReference/index.tsx index c18e522c4..1fe029e7a 100644 --- a/docs/src/components/APIReference/index.tsx +++ b/docs/src/components/APIReference/index.tsx @@ -27,7 +27,7 @@ export const APIReference = () => { {

Latest release updates from the Jan team. Check out our  Roadmap @@ -150,7 +150,7 @@ const Changelog = () => {

diff --git a/docs/src/components/Download/CardDownload.tsx b/docs/src/components/Download/CardDownload.tsx index f61f9f462..d8730593c 100644 --- a/docs/src/components/Download/CardDownload.tsx +++ b/docs/src/components/Download/CardDownload.tsx @@ -86,7 +86,7 @@ export default function CardDownload({ lastRelease }: Props) { .replace('{tag}', tag) return { ...system, - href: `https://github.com/janhq/jan/releases/download/${lastRelease.tag_name}/${downloadUrl}`, + href: `https://github.com/menloresearch/jan/releases/download/${lastRelease.tag_name}/${downloadUrl}`, } }) diff --git a/docs/src/components/DropdownDownload/index.tsx b/docs/src/components/DropdownDownload/index.tsx index c0cdfb73b..5eb66e151 100644 --- a/docs/src/components/DropdownDownload/index.tsx +++ b/docs/src/components/DropdownDownload/index.tsx @@ -149,7 +149,7 @@ const DropdownDownload = ({ lastRelease }: Props) => { .replace('{tag}', tag) return { ...system, - href: `https://github.com/janhq/jan/releases/download/${lastRelease.tag_name}/${downloadUrl}`, + href: `https://github.com/menloresearch/jan/releases/download/${lastRelease.tag_name}/${downloadUrl}`, } }) setSystems(updatedSystems) diff --git a/docs/src/components/FooterMenu/index.tsx b/docs/src/components/FooterMenu/index.tsx index eb24f40d7..f2b934bbb 100644 --- a/docs/src/components/FooterMenu/index.tsx +++ b/docs/src/components/FooterMenu/index.tsx @@ -26,7 +26,7 @@ const socials = [ icon: ( ), - href: 'https://github.com/janhq/jan', + href: 'https://github.com/menloresearch/jan', }, { icon: , @@ -62,7 +62,7 @@ const menus = [ child: [ { menu: 'Github', - path: 'https://github.com/janhq/jan', + path: 'https://github.com/menloresearch/jan', external: true, }, { diff --git a/docs/src/components/Home/BuiltWithLove/index.tsx b/docs/src/components/Home/BuiltWithLove/index.tsx index b84fb3634..5624e82e1 100644 --- a/docs/src/components/Home/BuiltWithLove/index.tsx +++ b/docs/src/components/Home/BuiltWithLove/index.tsx @@ -23,7 +23,7 @@ const BuiltWithLove = () => {
diff --git a/docs/src/components/Home/Hero/index.tsx b/docs/src/components/Home/Hero/index.tsx index 99d8c6995..009681197 100644 --- a/docs/src/components/Home/Hero/index.tsx +++ b/docs/src/components/Home/Hero/index.tsx @@ -44,7 +44,7 @@ const Hero = () => {
diff --git a/docs/src/pages/about/handbook.mdx b/docs/src/pages/about/handbook.mdx index fc2775364..264d6d36d 100644 --- a/docs/src/pages/about/handbook.mdx +++ b/docs/src/pages/about/handbook.mdx @@ -26,19 +26,19 @@ Jan operates on open-source principles, giving everyone the freedom to adjust, p We embrace open development, showcasing our progress and upcoming features on GitHub, and we encourage your input and contributions: -- [Jan Framework](https://github.com/janhq/jan) (AGPLv3) +- [Jan Framework](https://github.com/menloresearch/jan) (AGPLv3) - [Jan Desktop Client & Local server](https://jan.ai) (AGPLv3, built on Jan Framework) -- [Nitro: run Local AI](https://github.com/janhq/nitro) (AGPLv3) +- [Nitro: run Local AI](https://github.com/menloresearch/nitro) (AGPLv3) ## Build in Public We use GitHub to build in public and welcome anyone to join in. -- [Jan's Kanban](https://github.com/orgs/janhq/projects/5) -- [Jan's Roadmap](https://github.com/orgs/janhq/projects/5/views/29) +- [Jan's Kanban](https://github.com/orgs/menloresearch/projects/5) +- [Jan's Roadmap](https://github.com/orgs/menloresearch/projects/5/views/29) ## Collaboration Our team spans the globe, working remotely to bring Jan to life. We coordinate through Discord and GitHub, valuing asynchronous communication and minimal, purposeful meetings. For collaboration and brainstorming, we utilize tools like [Excalidraw](https://excalidraw.com/) and [Miro](https://miro.com/), ensuring alignment and shared vision through visual storytelling and detailed documentation on [HackMD](https://hackmd.io/). -Check out the [Jan Framework](https://github.com/janhq/jan) and our desktop client & local server at [jan.ai](https://jan.ai), both licensed under AGPLv3 for maximum openness and user freedom. +Check out the [Jan Framework](https://github.com/menloresearch/jan) and our desktop client & local server at [jan.ai](https://jan.ai), both licensed under AGPLv3 for maximum openness and user freedom. diff --git a/docs/src/pages/about/handbook/engineering.mdx b/docs/src/pages/about/handbook/engineering.mdx index dcfa2a32e..3038ead76 100644 --- a/docs/src/pages/about/handbook/engineering.mdx +++ b/docs/src/pages/about/handbook/engineering.mdx @@ -19,5 +19,5 @@ keywords: ## Prerequisites -- [Requirements](https://github.com/janhq/jan?tab=readme-ov-file#requirements-for-running-jan) -- [Setting up local env](https://github.com/janhq/jan?tab=readme-ov-file#contributing) +- [Requirements](https://github.com/menloresearch/jan?tab=readme-ov-file#requirements-for-running-jan) +- [Setting up local env](https://github.com/menloresearch/jan?tab=readme-ov-file#contributing) diff --git a/docs/src/pages/about/handbook/project-management.mdx b/docs/src/pages/about/handbook/project-management.mdx index aa43b1ddd..d6c64318d 100644 --- a/docs/src/pages/about/handbook/project-management.mdx +++ b/docs/src/pages/about/handbook/project-management.mdx @@ -20,7 +20,7 @@ import { Callout } from 'nextra/components' # Project Management -We use the [Jan Monorepo Project](https://github.com/orgs/janhq/projects/5) in Github to manage our roadmap and sprint Kanbans. +We use the [Jan Monorepo Project](https://github.com/orgs/menloresearch/projects/5) in Github to manage our roadmap and sprint Kanbans. As much as possible, everyone owns their respective `epics` and `tasks`. @@ -30,37 +30,37 @@ As much as possible, everyone owns their respective `epics` and `tasks`. ## Quicklinks -- [High-level roadmap](https://github.com/orgs/janhq/projects/5/views/16): view used at at strategic level, for team wide alignment. Start & end dates reflect engineering implementation cycles. Typically product & design work preceeds these timelines. -- [Standup Kanban](https://github.com/orgs/janhq/projects/5/views/25): view used during daily standup. Sprints should be up to date. +- [High-level roadmap](https://github.com/orgs/menloresearch/projects/5/views/16): view used at at strategic level, for team wide alignment. Start & end dates reflect engineering implementation cycles. Typically product & design work preceeds these timelines. +- [Standup Kanban](https://github.com/orgs/menloresearch/projects/5/views/25): view used during daily standup. Sprints should be up to date. ## Organization -[`Roadmap Labels`](https://github.com/janhq/jan/labels?q=roadmap) +[`Roadmap Labels`](https://github.com/menloresearch/jan/labels?q=roadmap) - `Roadmap Labels` tag large, long-term, & strategic projects that can span multiple teams and multiple sprints - Example label: `roadmap: Jan has Mobile` - `Roadmaps` contain `epics` -[`Epics`](https://github.com/janhq/jan/issues?q=is%3Aissue+is%3Aopen+label%3A%22type%3A+epic%22) +[`Epics`](https://github.com/menloresearch/jan/issues?q=is%3Aissue+is%3Aopen+label%3A%22type%3A+epic%22) - `Epics` track large stories that span 1-2 weeks, and it outlines specs, architecture decisions, designs - `Epics` contain `tasks` - `Epics` should always have 1 owner -[`Milestones`](https://github.com/janhq/jan/milestones) +[`Milestones`](https://github.com/menloresearch/jan/milestones) - `Milestones` track release versions. We use [semantic versioning](https://semver.org/) - `Milestones` span ~2 weeks and have deadlines - `Milestones` usually fit within 2-week sprint cycles -[`Tasks`](https://github.com/janhq/jan/issues) +[`Tasks`](https://github.com/menloresearch/jan/issues) - Tasks are individual issues (feats, bugs, chores) that can be completed within a few days - Tasks, except for critical bugs, should always belong to an `epic` (and thus fit into our roadmap) - Tasks are usually named per [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) - Tasks should always have 1 owner -We aim to always sprint on `tasks` that are a part of the [current roadmap](https://github.com/orgs/janhq/projects/5/views/16). +We aim to always sprint on `tasks` that are a part of the [current roadmap](https://github.com/orgs/menloresearch/projects/5/views/16). ## Kanban @@ -80,4 +80,4 @@ We aim to always sprint on `tasks` that are a part of the [current roadmap](http As a result, our feature prioritization can feel a bit black box at times. -We'd appreciate high quality insights and volunteers for user interviews through [Discord](https://discord.gg/af6SaTdzpx) and [Github](https://github.com/janhq). +We'd appreciate high quality insights and volunteers for user interviews through [Discord](https://discord.gg/af6SaTdzpx) and [Github](https://github.com/menloresearch). diff --git a/docs/src/pages/about/handbook/website-docs.mdx b/docs/src/pages/about/handbook/website-docs.mdx index 9ab2c2e10..773fcceea 100644 --- a/docs/src/pages/about/handbook/website-docs.mdx +++ b/docs/src/pages/about/handbook/website-docs.mdx @@ -37,7 +37,7 @@ We try to **keep routes consistent** to maintain SEO. ## How to Contribute -Refer to the [Contributing Guide](https://github.com/janhq/jan/blob/dev/CONTRIBUTING.md) for more comprehensive information on how to contribute to the Jan project. +Refer to the [Contributing Guide](https://github.com/menloresearch/jan/blob/dev/CONTRIBUTING.md) for more comprehensive information on how to contribute to the Jan project. ## Pre-requisites and Installation diff --git a/docs/src/pages/about/index.mdx b/docs/src/pages/about/index.mdx index af88de01e..46cb930e6 100644 --- a/docs/src/pages/about/index.mdx +++ b/docs/src/pages/about/index.mdx @@ -81,7 +81,7 @@ Our products are designed with [Extension APIs](/docs/extensions), and we do our We are part of a larger open-source community and are committed to being a good jigsaw puzzle piece. We credit and actively contribute to upstream projects. -We adopt a public-by-default approach to [Project Management](https://github.com/orgs/janhq/projects/5), [Roadmaps](https://github.com/orgs/janhq/projects/5/views/31), and Helpdesk for our products. +We adopt a public-by-default approach to [Project Management](https://github.com/orgs/menloresearch/projects/5), [Roadmaps](https://github.com/orgs/menloresearch/projects/5/views/31), and Helpdesk for our products. ## Inspirations diff --git a/docs/src/pages/changelog/2024-02-10-jan-is-more-stable.mdx b/docs/src/pages/changelog/2024-02-10-jan-is-more-stable.mdx index 59e78a0a7..5410d86a9 100644 --- a/docs/src/pages/changelog/2024-02-10-jan-is-more-stable.mdx +++ b/docs/src/pages/changelog/2024-02-10-jan-is-more-stable.mdx @@ -24,4 +24,4 @@ Fixes 💫 Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.5). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.5). \ No newline at end of file diff --git a/docs/src/pages/changelog/2024-03-06-ui-revamp-settings.mdx b/docs/src/pages/changelog/2024-03-06-ui-revamp-settings.mdx index e2ba0c6be..037d21a8f 100644 --- a/docs/src/pages/changelog/2024-03-06-ui-revamp-settings.mdx +++ b/docs/src/pages/changelog/2024-03-06-ui-revamp-settings.mdx @@ -24,4 +24,4 @@ Jan now supports Mistral's new model Codestral. Thanks [Bartowski](https://huggi More GGUF models can run in Jan - we rebased to llama.cpp b3012.Big thanks to [ggerganov](https://github.com/ggerganov) -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.0). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.0). diff --git a/docs/src/pages/changelog/2024-04-25-llama3-command-r-hugginface.mdx b/docs/src/pages/changelog/2024-04-25-llama3-command-r-hugginface.mdx index 8998b9a8a..7c6b01a3e 100644 --- a/docs/src/pages/changelog/2024-04-25-llama3-command-r-hugginface.mdx +++ b/docs/src/pages/changelog/2024-04-25-llama3-command-r-hugginface.mdx @@ -28,4 +28,4 @@ Jan now understands LaTeX, allowing users to process and understand complex math ![Latex](/assets/images/changelog/jan_update_latex.gif) -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.4.12). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.4.12). diff --git a/docs/src/pages/changelog/2024-05-20-llamacpp-upgrade-new-remote-models.mdx b/docs/src/pages/changelog/2024-05-20-llamacpp-upgrade-new-remote-models.mdx index 11e8013ac..c3ecb905d 100644 --- a/docs/src/pages/changelog/2024-05-20-llamacpp-upgrade-new-remote-models.mdx +++ b/docs/src/pages/changelog/2024-05-20-llamacpp-upgrade-new-remote-models.mdx @@ -28,4 +28,4 @@ Users can now connect to OpenAI's new model GPT-4o. ![GPT4o](/assets/images/changelog/jan_v0_4_13_openai_gpt4o.gif) -For more details, see the [GitHub release notes.](https://github.com/janhq/jan/releases/tag/v0.4.13) +For more details, see the [GitHub release notes.](https://github.com/menloresearch/jan/releases/tag/v0.4.13) diff --git a/docs/src/pages/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium.mdx b/docs/src/pages/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium.mdx index 3d628afd7..a6823050e 100644 --- a/docs/src/pages/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium.mdx +++ b/docs/src/pages/changelog/2024-05-28-cohere-aya-23-8b-35b-phi-3-medium.mdx @@ -16,4 +16,4 @@ More GGUF models can run in Jan - we rebased to llama.cpp b2961. Huge shoutouts to [ggerganov](https://github.com/ggerganov) and contributors for llama.cpp, and [Bartowski](https://huggingface.co/bartowski) for GGUF models. -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.4.14). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.4.14). diff --git a/docs/src/pages/changelog/2024-06-21-nvidia-nim-support.mdx b/docs/src/pages/changelog/2024-06-21-nvidia-nim-support.mdx index ee7e7282f..27ead7ff2 100644 --- a/docs/src/pages/changelog/2024-06-21-nvidia-nim-support.mdx +++ b/docs/src/pages/changelog/2024-06-21-nvidia-nim-support.mdx @@ -26,4 +26,4 @@ We've updated to llama.cpp b3088 for better performance - thanks to [GG](https:/ - Reduced chat font weight (back to normal!) - Restored the maximize button -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.1). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.1). diff --git a/docs/src/pages/changelog/2024-07-15-claude-3-5-support.mdx b/docs/src/pages/changelog/2024-07-15-claude-3-5-support.mdx index b3d8854e3..b80c31cfe 100644 --- a/docs/src/pages/changelog/2024-07-15-claude-3-5-support.mdx +++ b/docs/src/pages/changelog/2024-07-15-claude-3-5-support.mdx @@ -32,4 +32,4 @@ We've restored the tooltip hover functionality, which makes it easier to access The right-click options for thread settings are now fully operational again. You can now manage your threads with this fix. -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.2). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.2). diff --git a/docs/src/pages/changelog/2024-09-01-llama3-1-gemma2-support.mdx b/docs/src/pages/changelog/2024-09-01-llama3-1-gemma2-support.mdx index 4f869cd0c..413a7380a 100644 --- a/docs/src/pages/changelog/2024-09-01-llama3-1-gemma2-support.mdx +++ b/docs/src/pages/changelog/2024-09-01-llama3-1-gemma2-support.mdx @@ -23,4 +23,4 @@ We've been working on stability issues over the last few weeks. Jan is now more - Fixed the GPU memory utilization bar - Some UX and copy improvements -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.3). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.3). diff --git a/docs/src/pages/changelog/2024-09-17-improved-cpu-performance.mdx b/docs/src/pages/changelog/2024-09-17-improved-cpu-performance.mdx index 9bf0def6e..da2d31e2a 100644 --- a/docs/src/pages/changelog/2024-09-17-improved-cpu-performance.mdx +++ b/docs/src/pages/changelog/2024-09-17-improved-cpu-performance.mdx @@ -32,4 +32,4 @@ Switching between threads used to reset your instruction settings. That’s fixe ### Minor UI Tweaks & Bug Fixes We’ve also resolved issues with the input slider on the right panel and tackled several smaller bugs to keep everything running smoothly. -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.4). +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.4). diff --git a/docs/src/pages/changelog/2024-10-24-jan-stable.mdx b/docs/src/pages/changelog/2024-10-24-jan-stable.mdx index 7c24d51ee..3abdd568e 100644 --- a/docs/src/pages/changelog/2024-10-24-jan-stable.mdx +++ b/docs/src/pages/changelog/2024-10-24-jan-stable.mdx @@ -23,4 +23,4 @@ Fixes 💫 Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.7). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.7). \ No newline at end of file diff --git a/docs/src/pages/changelog/2024-11-22-jan-bugs.mdx b/docs/src/pages/changelog/2024-11-22-jan-bugs.mdx index 2b7462d1d..413d32876 100644 --- a/docs/src/pages/changelog/2024-11-22-jan-bugs.mdx +++ b/docs/src/pages/changelog/2024-11-22-jan-bugs.mdx @@ -22,4 +22,4 @@ Jan v0.5.9 is here: fixing what needed fixing Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.9). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.9). \ No newline at end of file diff --git a/docs/src/pages/changelog/2024-11.14-jan-supports-qwen-coder.mdx b/docs/src/pages/changelog/2024-11.14-jan-supports-qwen-coder.mdx index b4589e8d6..72f650021 100644 --- a/docs/src/pages/changelog/2024-11.14-jan-supports-qwen-coder.mdx +++ b/docs/src/pages/changelog/2024-11.14-jan-supports-qwen-coder.mdx @@ -22,4 +22,4 @@ and various UI/UX enhancements 💫 Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.8). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.8). \ No newline at end of file diff --git a/docs/src/pages/changelog/2024-12-03-jan-is-faster.mdx b/docs/src/pages/changelog/2024-12-03-jan-is-faster.mdx index 119758234..9eca1ed86 100644 --- a/docs/src/pages/changelog/2024-12-03-jan-is-faster.mdx +++ b/docs/src/pages/changelog/2024-12-03-jan-is-faster.mdx @@ -19,4 +19,4 @@ Jan v0.5.10 is live: Jan is faster, smoother, and more reliable. Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.10). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.10). \ No newline at end of file diff --git a/docs/src/pages/changelog/2024-12-05-jan-hot-fix-mac.mdx b/docs/src/pages/changelog/2024-12-05-jan-hot-fix-mac.mdx index b38b506ec..25283118e 100644 --- a/docs/src/pages/changelog/2024-12-05-jan-hot-fix-mac.mdx +++ b/docs/src/pages/changelog/2024-12-05-jan-hot-fix-mac.mdx @@ -23,4 +23,4 @@ Jan v0.5.11 is here - critical issues fixed, Mac installation updated. Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.11). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.11). \ No newline at end of file diff --git a/docs/src/pages/changelog/2024-12-30-jan-new-privacy.mdx b/docs/src/pages/changelog/2024-12-30-jan-new-privacy.mdx index c5a737e02..4c80579d2 100644 --- a/docs/src/pages/changelog/2024-12-30-jan-new-privacy.mdx +++ b/docs/src/pages/changelog/2024-12-30-jan-new-privacy.mdx @@ -25,4 +25,4 @@ Jan v0.5.11 is here - critical issues fixed, Mac installation updated. Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.12). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.12). \ No newline at end of file diff --git a/docs/src/pages/changelog/2025-01-06-key-issues-resolved.mdx b/docs/src/pages/changelog/2025-01-06-key-issues-resolved.mdx index 108ce4b8d..044d0aa32 100644 --- a/docs/src/pages/changelog/2025-01-06-key-issues-resolved.mdx +++ b/docs/src/pages/changelog/2025-01-06-key-issues-resolved.mdx @@ -20,4 +20,4 @@ import ChangelogHeader from "@/components/Changelog/ChangelogHeader" Update your product or download the latest: https://jan.ai -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.13). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.13). \ No newline at end of file diff --git a/docs/src/pages/changelog/2025-01-23-deepseek-r1-jan.mdx b/docs/src/pages/changelog/2025-01-23-deepseek-r1-jan.mdx index ebea46acf..004646fd2 100644 --- a/docs/src/pages/changelog/2025-01-23-deepseek-r1-jan.mdx +++ b/docs/src/pages/changelog/2025-01-23-deepseek-r1-jan.mdx @@ -33,4 +33,4 @@ Llama Update your Jan or [download the latest](https://jan.ai/). -For more details, see the [GitHub release notes](https://github.com/janhq/jan/releases/tag/v0.5.14). \ No newline at end of file +For more details, see the [GitHub release notes](https://github.com/menloresearch/jan/releases/tag/v0.5.14). \ No newline at end of file diff --git a/docs/src/pages/cortex/cortex-llamacpp.mdx b/docs/src/pages/cortex/cortex-llamacpp.mdx index e4d5faa90..b8e121a35 100644 --- a/docs/src/pages/cortex/cortex-llamacpp.mdx +++ b/docs/src/pages/cortex/cortex-llamacpp.mdx @@ -40,7 +40,7 @@ If you already use [Jan](/docs) or [Cortex](/cortex), cortex.llamacpp is bundled ## Usage -To include cortex.llamacpp in your own server implementation, follow this [server example](https://github.com/janhq/cortex.llamacpp/tree/main/examples/server). +To include cortex.llamacpp in your own server implementation, follow this [server example](https://github.com/menloresearch/cortex.llamacpp/tree/main/examples/server). ## Interface @@ -140,4 +140,4 @@ The future plans for Cortex.llamacpp are focused on enhancing performance and ex - Performance Enhancements: Optimizing speed and reducing memory usage to ensure efficient processing of tasks. - Multimodal Model Compatibility: Expanding support to include a variety of multimodal models, enabling a broader range of applications and use cases. -To follow the latest developments, see the [cortex.llamacpp GitHub](https://github.com/janhq/cortex.llamacpp) \ No newline at end of file +To follow the latest developments, see the [cortex.llamacpp GitHub](https://github.com/menloresearch/cortex.llamacpp) \ No newline at end of file diff --git a/docs/src/pages/cortex/installation/linux.mdx b/docs/src/pages/cortex/installation/linux.mdx index 2d49f2714..90f396811 100644 --- a/docs/src/pages/cortex/installation/linux.mdx +++ b/docs/src/pages/cortex/installation/linux.mdx @@ -152,7 +152,7 @@ cortex -h To install Cortex from the source, follow the steps below: -1. Clone the Cortex repository [here](https://github.com/janhq/cortex/tree/dev). +1. Clone the Cortex repository [here](https://github.com/menloresearch/cortex/tree/dev). 2. Navigate to the `cortex-js` folder. 3. Open the terminal and run the following command to build the Cortex project: diff --git a/docs/src/pages/cortex/installation/mac.mdx b/docs/src/pages/cortex/installation/mac.mdx index 9e5bd7e72..e3afaaf5d 100644 --- a/docs/src/pages/cortex/installation/mac.mdx +++ b/docs/src/pages/cortex/installation/mac.mdx @@ -118,7 +118,7 @@ cortex -h To install Cortex from the source, follow the steps below: -1. Clone the Cortex repository [here](https://github.com/janhq/cortex/tree/dev). +1. Clone the Cortex repository [here](https://github.com/menloresearch/cortex/tree/dev). 2. Navigate to the `cortex-js` folder. 3. Open the terminal and run the following command to build the Cortex project: diff --git a/docs/src/pages/cortex/installation/windows.mdx b/docs/src/pages/cortex/installation/windows.mdx index 600ae0b07..326288bfd 100644 --- a/docs/src/pages/cortex/installation/windows.mdx +++ b/docs/src/pages/cortex/installation/windows.mdx @@ -168,7 +168,7 @@ cortex -h To install Cortex from the source, follow the steps below: -1. Clone the Cortex repository [here](https://github.com/janhq/cortex/tree/dev). +1. Clone the Cortex repository [here](https://github.com/menloresearch/cortex/tree/dev). 2. Navigate to the `cortex-js` folder. 3. Open the terminal and run the following command to build the Cortex project: diff --git a/docs/src/pages/docs/index.mdx b/docs/src/pages/docs/index.mdx index c3f0ad2ef..f247b76a9 100644 --- a/docs/src/pages/docs/index.mdx +++ b/docs/src/pages/docs/index.mdx @@ -46,7 +46,7 @@ You'll be able to use it with [Continue.dev](https://jan.ai/integrations/coding/ ### Philosophy Jan is built to be [user-owned](about#-user-owned): -- Open source via the [AGPLv3 license](https://github.com/janhq/jan/blob/dev/LICENSE) +- Open source via the [AGPLv3 license](https://github.com/menloresearch/jan/blob/dev/LICENSE) - [Local-first](https://www.inkandswitch.com/local-first/), with all data stored locally - Runs 100% offline, with privacy by default - Free choice of AI models, both local and cloud-based @@ -134,7 +134,7 @@ Jan has an extensible architecture like VSCode and Obsidian - you can build cust - Contributions can be made through [GitHub](https://github.com/janhq/jan) and [Discord](https://discord.gg/Exe46xPMbK), where you can also suggest features and make pull requests. No need to ask for permission. We're fully open-source! + Contributions can be made through [GitHub](https://github.com/menloresearch/jan) and [Discord](https://discord.gg/Exe46xPMbK), where you can also suggest features and make pull requests. No need to ask for permission. We're fully open-source! @@ -150,7 +150,7 @@ Jan has an extensible architecture like VSCode and Obsidian - you can build cust Yes! We love the self-hosted movement. You can: - [Download Jan](./download.mdx) and run it directly. - - Fork and build from our [GitHub](https://github.com/janhq/jan) repository. + - Fork and build from our [GitHub](https://github.com/menloresearch/jan) repository. diff --git a/docs/src/pages/docs/install-extensions.mdx b/docs/src/pages/docs/install-extensions.mdx index d5b27013c..53d535da4 100644 --- a/docs/src/pages/docs/install-extensions.mdx +++ b/docs/src/pages/docs/install-extensions.mdx @@ -96,7 +96,7 @@ my-extension/ ### Example Extension Template -You can find a template for creating Jan extensions in our [example repository](https://github.com/janhq/extension-template). +You can find a template for creating Jan extensions in our [example repository](https://github.com/menloresearch/extension-template). ## Install Extensions To install a custom extension in Jan: diff --git a/docs/src/pages/download.mdx b/docs/src/pages/download.mdx index 54f68001f..be5684824 100644 --- a/docs/src/pages/download.mdx +++ b/docs/src/pages/download.mdx @@ -19,7 +19,7 @@ keywords: import Download from "@/components/Download" export const getStaticProps = async() => { - const resRelease = await fetch('https://api.github.com/repos/janhq/jan/releases/latest') + const resRelease = await fetch('https://api.github.com/repos/menloresearch/jan/releases/latest') const release = await resRelease.json() return { diff --git a/docs/src/pages/index.mdx b/docs/src/pages/index.mdx index ef3484297..bb97f123e 100644 --- a/docs/src/pages/index.mdx +++ b/docs/src/pages/index.mdx @@ -19,9 +19,9 @@ keywords: import Home from "@/components/Home" export const getStaticProps = async() => { - const resReleaseLatest = await fetch('https://api.github.com/repos/janhq/jan/releases/latest') - const resRelease = await fetch('https://api.github.com/repos/janhq/jan/releases?per_page=500') - const resRepo = await fetch('https://api.github.com/repos/janhq/jan') + const resReleaseLatest = await fetch('https://api.github.com/repos/menloresearch/jan/releases/latest') + const resRelease = await fetch('https://api.github.com/repos/menloresearch/jan/releases?per_page=500') + const resRepo = await fetch('https://api.github.com/repos/menloresearch/jan') const repo = await resRepo.json() const latestRelease = await resReleaseLatest.json() const release = await resRelease.json() diff --git a/docs/src/pages/post/benchmarking-nvidia-tensorrt-llm.mdx b/docs/src/pages/post/benchmarking-nvidia-tensorrt-llm.mdx index cb384e553..fca8ed526 100644 --- a/docs/src/pages/post/benchmarking-nvidia-tensorrt-llm.mdx +++ b/docs/src/pages/post/benchmarking-nvidia-tensorrt-llm.mdx @@ -14,12 +14,12 @@ import CTABlog from '@/components/Blog/CTA' Jan now supports [NVIDIA TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM) in addition to [llama.cpp](https://github.com/ggerganov/llama.cpp), making Jan multi-engine and ultra-fast for users with Nvidia GPUs. -We've been excited for TensorRT-LLM for a while, and [had a lot of fun implementing it](https://github.com/janhq/nitro-tensorrt-llm). As part of the process, we've run some benchmarks, to see how TensorRT-LLM fares on consumer hardware (e.g. [4090s](https://www.nvidia.com/en-us/geforce/graphics-cards/40-series/), [3090s](https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/)) we commonly see in the [Jan's hardware community](https://discord.com/channels/1107178041848909847/1201834752206974996). +We've been excited for TensorRT-LLM for a while, and [had a lot of fun implementing it](https://github.com/menloresearch/nitro-tensorrt-llm). As part of the process, we've run some benchmarks, to see how TensorRT-LLM fares on consumer hardware (e.g. [4090s](https://www.nvidia.com/en-us/geforce/graphics-cards/40-series/), [3090s](https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/)) we commonly see in the [Jan's hardware community](https://discord.com/channels/1107178041848909847/1201834752206974996). **Give it a try!** Jan's [TensorRT-LLM extension](/docs/built-in/tensorrt-llm) is available in Jan v0.4.9 and up ([see more](/docs/built-in/tensorrt-llm)). We precompiled some TensorRT-LLM models for you to try: `Mistral 7b`, `TinyLlama-1.1b`, `TinyJensen-1.1b` 😂 - Bugs or feedback? Let us know on [GitHub](https://github.com/janhq/jan) or via [Discord](https://discord.com/channels/1107178041848909847/1201832734704795688). + Bugs or feedback? Let us know on [GitHub](https://github.com/menloresearch/jan) or via [Discord](https://discord.com/channels/1107178041848909847/1201832734704795688). diff --git a/docs/src/pages/post/rag-is-not-enough.mdx b/docs/src/pages/post/rag-is-not-enough.mdx index 699954f58..36cf50e2d 100644 --- a/docs/src/pages/post/rag-is-not-enough.mdx +++ b/docs/src/pages/post/rag-is-not-enough.mdx @@ -13,7 +13,7 @@ import CTABlog from '@/components/Blog/CTA' ## Abstract -We present a straightforward approach to customizing small, open-source models using fine-tuning and RAG that outperforms GPT-3.5 for specialized use cases. With it, we achieved superior Q&A results of [technical documentation](https://nitro.jan.ai/docs) for a small codebase [codebase](https://github.com/janhq/nitro). +We present a straightforward approach to customizing small, open-source models using fine-tuning and RAG that outperforms GPT-3.5 for specialized use cases. With it, we achieved superior Q&A results of [technical documentation](https://nitro.jan.ai/docs) for a small codebase [codebase](https://github.com/menloresearch/nitro). In short, (1) extending a general foundation model like [Mistral](https://huggingface.co/mistralai/Mistral-7B-v0.1) with strong math and coding, and (2) training it over a high-quality, synthetic dataset generated from the intended corpus, and (3) adding RAG capabilities, can lead to significant accuracy improvements. @@ -93,11 +93,11 @@ This final model can be found [here on Huggingface](https://huggingface.co/jan-h As an additional step, we also added [Retrieval Augmented Generation (RAG)](https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/) as an experiment parameter. -A simple RAG setup was done using **[Llamaindex](https://www.llamaindex.ai/)** and the **[bge-en-base-v1.5 embedding](https://huggingface.co/BAAI/bge-base-en-v1.5)** model for efficient documentation retrieval and question-answering. You can find the RAG implementation [here](https://github.com/janhq/open-foundry/blob/main/rag-is-not-enough/rag/nitro_rag.ipynb). +A simple RAG setup was done using **[Llamaindex](https://www.llamaindex.ai/)** and the **[bge-en-base-v1.5 embedding](https://huggingface.co/BAAI/bge-base-en-v1.5)** model for efficient documentation retrieval and question-answering. You can find the RAG implementation [here](https://github.com/menloresearch/open-foundry/blob/main/rag-is-not-enough/rag/nitro_rag.ipynb). ## Benchmarking the Results -We curated a new set of [50 multiple-choice questions](https://github.com/janhq/open-foundry/blob/main/rag-is-not-enough/rag/mcq_nitro.csv) (MCQ) based on the Nitro docs. The questions had varying levels of difficulty and had trick components that challenged the model's ability to discern misleading information. +We curated a new set of [50 multiple-choice questions](https://github.com/menloresearch/open-foundry/blob/main/rag-is-not-enough/rag/mcq_nitro.csv) (MCQ) based on the Nitro docs. The questions had varying levels of difficulty and had trick components that challenged the model's ability to discern misleading information. ![image](https://hackmd.io/_uploads/By9vaE1Ta.png) @@ -121,7 +121,7 @@ We conclude that this combination of model merging + finetuning + RAG yields pro Anecdotally, we’ve had some success using this model in practice to onboard new team members to the Nitro codebase. -A full research report with more statistics can be found [here](https://github.com/janhq/open-foundry/blob/main/rag-is-not-enough/README.md). +A full research report with more statistics can be found [here](https://github.com/menloresearch/open-foundry/blob/main/rag-is-not-enough/README.md). # References diff --git a/docs/src/pages/support.mdx b/docs/src/pages/support.mdx index ef3c90e7f..13f6d9f85 100644 --- a/docs/src/pages/support.mdx +++ b/docs/src/pages/support.mdx @@ -4,7 +4,7 @@ title: Support - Jan # Support -- Bugs & requests: file a GitHub ticket [here](https://github.com/janhq/jan/issues) +- Bugs & requests: file a GitHub ticket [here](https://github.com/menloresearch/jan/issues) - For discussion: join our Discord [here](https://discord.gg/FTk2MvZwJH) - For business inquiries: email hello@jan.ai - For jobs: please email hr@jan.ai \ No newline at end of file diff --git a/docs/theme.config.tsx b/docs/theme.config.tsx index d0c15a704..b030fb97c 100644 --- a/docs/theme.config.tsx +++ b/docs/theme.config.tsx @@ -30,7 +30,7 @@ const config: DocsThemeConfig = {
), - docsRepositoryBase: 'https://github.com/janhq/jan/tree/dev/docs', + docsRepositoryBase: 'https://github.com/menloresearch/jan/tree/dev/docs', feedback: { content: 'Question? Give us feedback →', labels: 'feedback', @@ -59,7 +59,7 @@ const config: DocsThemeConfig = {
- +
diff --git a/electron/package.json b/electron/package.json index 660a5e264..8b673114b 100644 --- a/electron/package.json +++ b/electron/package.json @@ -5,7 +5,7 @@ "author": "Jan ", "license": "MIT", "productName": "Jan", - "homepage": "https://github.com/janhq/jan/tree/main/electron", + "homepage": "https://github.com/menloresearch/jan/tree/main/electron", "description": "Use offline LLMs with your own data. Run open source models like Llama2 or Falcon on your internal computers/servers.", "build": { "appId": "jan.ai.app", diff --git a/extensions/assistant-extension/README.md b/extensions/assistant-extension/README.md index f9690da09..b9595b6e1 100644 --- a/extensions/assistant-extension/README.md +++ b/extensions/assistant-extension/README.md @@ -70,6 +70,6 @@ There are a few things to keep in mind when writing your extension code: ``` For more information about the Jan Extension Core module, see the - [documentation](https://github.com/janhq/jan/blob/main/core/README.md). + [documentation](https://github.com/menloresearch/jan/blob/main/core/README.md). So, what are you waiting for? Go ahead and start customizing your extension! diff --git a/extensions/inference-cortex-extension/README.md b/extensions/inference-cortex-extension/README.md index f9690da09..b9595b6e1 100644 --- a/extensions/inference-cortex-extension/README.md +++ b/extensions/inference-cortex-extension/README.md @@ -70,6 +70,6 @@ There are a few things to keep in mind when writing your extension code: ``` For more information about the Jan Extension Core module, see the - [documentation](https://github.com/janhq/jan/blob/main/core/README.md). + [documentation](https://github.com/menloresearch/jan/blob/main/core/README.md). So, what are you waiting for? Go ahead and start customizing your extension! diff --git a/extensions/inference-cortex-extension/download.bat b/extensions/inference-cortex-extension/download.bat index 045bb3cf3..ca2930bdd 100644 --- a/extensions/inference-cortex-extension/download.bat +++ b/extensions/inference-cortex-extension/download.bat @@ -5,11 +5,11 @@ set /p CORTEX_VERSION=<./bin/version.txt set ENGINE_VERSION=0.1.55 @REM Download cortex.llamacpp binaries -set DOWNLOAD_URL=https://github.com/janhq/cortex.llamacpp/releases/download/v%ENGINE_VERSION%/cortex.llamacpp-%ENGINE_VERSION%-windows-amd64 -set CUDA_DOWNLOAD_URL=https://github.com/janhq/cortex.llamacpp/releases/download/v%ENGINE_VERSION% +set DOWNLOAD_URL=https://github.com/menloresearch/cortex.llamacpp/releases/download/v%ENGINE_VERSION%/cortex.llamacpp-%ENGINE_VERSION%-windows-amd64 +set CUDA_DOWNLOAD_URL=https://github.com/menloresearch/cortex.llamacpp/releases/download/v%ENGINE_VERSION% set SUBFOLDERS=windows-amd64-noavx-cuda-12-0 windows-amd64-noavx-cuda-11-7 windows-amd64-avx2-cuda-12-0 windows-amd64-avx2-cuda-11-7 windows-amd64-noavx windows-amd64-avx windows-amd64-avx2 windows-amd64-avx512 windows-amd64-vulkan -call .\node_modules\.bin\download -e --strip 1 -o %BIN_PATH% https://github.com/janhq/cortex.cpp/releases/download/v%CORTEX_VERSION%/cortex-%CORTEX_VERSION%-windows-amd64.tar.gz +call .\node_modules\.bin\download -e --strip 1 -o %BIN_PATH% https://github.com/menloresearch/cortex.cpp/releases/download/v%CORTEX_VERSION%/cortex-%CORTEX_VERSION%-windows-amd64.tar.gz call .\node_modules\.bin\download %DOWNLOAD_URL%-avx2-cuda-12-0.tar.gz -e --strip 1 -o %SHARED_PATH%/engines/cortex.llamacpp/windows-amd64-avx2-cuda-12-0/v%ENGINE_VERSION% call .\node_modules\.bin\download %DOWNLOAD_URL%-avx2-cuda-11-7.tar.gz -e --strip 1 -o %SHARED_PATH%/engines/cortex.llamacpp/windows-amd64-avx2-cuda-11-7/v%ENGINE_VERSION% call .\node_modules\.bin\download %DOWNLOAD_URL%-noavx-cuda-12-0.tar.gz -e --strip 1 -o %SHARED_PATH%/engines/cortex.llamacpp/windows-amd64-noavx-cuda-12-0/v%ENGINE_VERSION% diff --git a/extensions/inference-cortex-extension/download.sh b/extensions/inference-cortex-extension/download.sh index c88dffc72..3476708bb 100755 --- a/extensions/inference-cortex-extension/download.sh +++ b/extensions/inference-cortex-extension/download.sh @@ -3,9 +3,9 @@ # Read CORTEX_VERSION CORTEX_VERSION=$(cat ./bin/version.txt) ENGINE_VERSION=0.1.55 -CORTEX_RELEASE_URL="https://github.com/janhq/cortex.cpp/releases/download" -ENGINE_DOWNLOAD_URL="https://github.com/janhq/cortex.llamacpp/releases/download/v${ENGINE_VERSION}/cortex.llamacpp-${ENGINE_VERSION}" -CUDA_DOWNLOAD_URL="https://github.com/janhq/cortex.llamacpp/releases/download/v${ENGINE_VERSION}" +CORTEX_RELEASE_URL="https://github.com/menloresearch/cortex.cpp/releases/download" +ENGINE_DOWNLOAD_URL="https://github.com/menloresearch/cortex.llamacpp/releases/download/v${ENGINE_VERSION}/cortex.llamacpp-${ENGINE_VERSION}" +CUDA_DOWNLOAD_URL="https://github.com/menloresearch/cortex.llamacpp/releases/download/v${ENGINE_VERSION}" BIN_PATH=./bin SHARED_PATH="../../electron/shared" # Detect platform diff --git a/extensions/model-extension/README.md b/extensions/model-extension/README.md index f9690da09..b9595b6e1 100644 --- a/extensions/model-extension/README.md +++ b/extensions/model-extension/README.md @@ -70,6 +70,6 @@ There are a few things to keep in mind when writing your extension code: ``` For more information about the Jan Extension Core module, see the - [documentation](https://github.com/janhq/jan/blob/main/core/README.md). + [documentation](https://github.com/menloresearch/jan/blob/main/core/README.md). So, what are you waiting for? Go ahead and start customizing your extension! diff --git a/server/cortex.json b/server/cortex.json index 9d62a8b03..ecf94952b 100644 --- a/server/cortex.json +++ b/server/cortex.json @@ -2668,7 +2668,7 @@ }, "url": { "type": "string", - "example": "https://api.github.com/repos/janhq/cortex.llamacpp/releases/186479804" + "example": "https://api.github.com/repos/menloresearch/cortex.llamacpp/releases/186479804" } } } @@ -4561,11 +4561,11 @@ "type": "string", "enum": ["text", "audio"] }, - "description": "Specifies the modalities (types of input) supported by the model. Currently, cortex only support text modalities. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582).", + "description": "Specifies the modalities (types of input) supported by the model. Currently, cortex only support text modalities. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582).", "example": ["text"] }, "audio": { - "description": "Parameters for audio output. Required when audio output is requested with `modalities: ['audio']`. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582).", + "description": "Parameters for audio output. Required when audio output is requested with `modalities: ['audio']`. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582).", "type": "object", "properties": { "voice": { @@ -4582,13 +4582,13 @@ }, "store": { "type": "boolean", - "description": "Whether or not to store the output of this chat completion request for use in our model distillation or evals products. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582).", + "description": "Whether or not to store the output of this chat completion request for use in our model distillation or evals products. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582).", "default": false, "example": false }, "metadata": { "type": "object", - "description": "Developer-defined tags and values used for filtering completions in the dashboard. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582).", + "description": "Developer-defined tags and values used for filtering completions in the dashboard. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582).", "example": { "type": "conversation" } @@ -4620,7 +4620,7 @@ }, "response_format": { "type": "object", - "description": "An object specifying the format that the model must output. Setting to { \"type\": \"json_object\" } enables JSON mode, which guarantees the message the model generates is valid JSON. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582).", + "description": "An object specifying the format that the model must output. Setting to { \"type\": \"json_object\" } enables JSON mode, which guarantees the message the model generates is valid JSON. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582).", "properties": { "type": { "type": "string", @@ -4638,7 +4638,7 @@ }, "service_tier": { "type": "string", - "description": "Specifies the latency tier to use for processing the request. This parameter is relevant for customers subscribed to the scale tier service:\n\n - If set to 'auto', and the Project is Scale tier enabled, the system will utilize scale tier credits until they are exhausted.\n- If set to 'auto', and the Project is not Scale tier enabled, the request will be processed using the default service tier with a lower uptime SLA and no latency guarentee.\n- If set to 'default', the request will be processed using the default service tier with a lower uptime SLA and no latency guarentee.\nWhen not set, the default behavior is 'auto'.\nWhen this parameter is set, the response body will include the service_tier utilized.\n\n We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582)." + "description": "Specifies the latency tier to use for processing the request. This parameter is relevant for customers subscribed to the scale tier service:\n\n - If set to 'auto', and the Project is Scale tier enabled, the system will utilize scale tier credits until they are exhausted.\n- If set to 'auto', and the Project is not Scale tier enabled, the request will be processed using the default service tier with a lower uptime SLA and no latency guarentee.\n- If set to 'default', the request will be processed using the default service tier with a lower uptime SLA and no latency guarentee.\nWhen not set, the default behavior is 'auto'.\nWhen this parameter is set, the response body will include the service_tier utilized.\n\n We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582)." }, "stream_options": { "type": "object", @@ -4704,7 +4704,7 @@ }, "user": { "type": "string", - "description": "A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/janhq/cortex.cpp/issues/1582)." + "description": "A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. We are actively working on this feature to bring cortex as fully OpenAI compatible platform. Planning and roadmap for this feature can be found [**here**](https://github.com/menloresearch/cortex.cpp/issues/1582)." }, "dynatemp_range": { "type": "number", diff --git a/specs/QA-checklist.md b/specs/QA-checklist.md index 8bb5168dd..ddfee32d2 100644 --- a/specs/QA-checklist.md +++ b/specs/QA-checklist.md @@ -26,7 +26,6 @@ - [ ] :key::warning: Uninstallation process removes the app successfully from the system. - [ ] Clean the data folder and open the app to check if it creates all the necessary folders, especially models and extensions. - ## B. Overview ### 1. Shortcut key @@ -38,7 +37,7 @@ - [ ] :key: The app correctly displays the state of the loading model (e.g., loading, ready, error). - [ ] :key: Confirm that the app allows users to switch between models if multiple are available. - [ ] Check that the app provides feedback or instructions if the model fails to load. -- [ ] Verify the troubleshooting assistant correctly capture hardware / log info [#1784](https://github.com/janhq/jan/issues/1784) +- [ ] Verify the troubleshooting assistant correctly capture hardware / log info [#1784](https://github.com/menloresearch/jan/issues/1784) ## C. Thread @@ -70,26 +69,29 @@ - [ ] :key: Users switch between threads with different models, the app can handle it. ### 3. Model dropdown + - :key: Model list should highlight recommended based on user RAM (this is not really correct, I think it's based on static formula) - [ ] Model size should display (for both installed and imported models) ### 4. Users can click on a history thread + - [ ] Chat window displays the entire conversation from the selected history thread without any missing messages. - [ ] Historical threads reflect the exact state of the chat at that time, including settings. - [ ] :key: Ability to delete or clean old threads. - [ ] Changing the title of the thread updates correctly. ### 5. Users can config instructions for the assistant. + - [ ] Instructions set by the user are being followed by the assistant in subsequent conversations. - [ ] :key: Changes to instructions are updated in real time and do not require a restart of the application or session. - [ ] :key: Ability to reset instructions to default or clear them completely. - [ ] :key: RAG - Users can import documents and the system should process queries about the uploaded file, providing accurate and appropriate responses in the conversation thread. -- [ ] :key: Jan can see - Users can import image and Model with vision can generate responses (e.g. LLaVa model). [#294](https://github.com/janhq/jan/issues/294) - +- [ ] :key: Jan can see - Users can import image and Model with vision can generate responses (e.g. LLaVa model). [#294](https://github.com/menloresearch/jan/issues/294) ## D. Hub ### 1. Users can discover recommended models + - :key: Each model's recommendations are consistent with the user’s activity and preferences. - [ ] Search models and verify results / action on the results @@ -99,10 +101,10 @@ - [ ] :key: Ensure that models are labeled with RAM requirements. - [ ] :key: Check the download model functionality and validate if the cancel download feature works correctly. -### 3. Users can download models via a HuggingFace URL [#1740](https://github.com/janhq/jan/issues/1740) +### 3. Users can download models via a HuggingFace URL [#1740](https://github.com/menloresearch/jan/issues/1740) - [ ] :key: Import via Hugging Face Id / full HuggingFace URL, check the progress bar reflects the download process -- [ ] :key: Test deeplink import [#2876](https://github.com/janhq/jan/issues/2876) +- [ ] :key: Test deeplink import [#2876](https://github.com/menloresearch/jan/issues/2876) - [ ] :key: Users can use / remove the imported model. ### 4. Users can import new models to the Hub @@ -112,16 +114,16 @@ - [ ] Users can add more info to the imported model / edit name - [ ] :key: Ensure the new model updates after restarting the app. - ### 5. Users can use the model as they want -- [ ] :key: Check `start` / `stop` / `delete` button response exactly what it does. +- [ ] :key: Check `start` / `stop` / `delete` button response exactly what it does. - [ ] Check if starting another model stops the other model entirely. - [ ] :rocket: Navigate to `hub` > Click `Use` button to use model. Expect to jump to thread and see the model in dropdown model selector. - [ ] :key: Check when deleting a model it will delete all the files on the user's computer. - [ ] :warning:The recommended tags should present right for the user's hardware. ### 6. Users can Integrate With a Remote Server + - [ ] :key: Import openAI GPT model https://jan.ai/guides/using-models/integrate-with-remote-server/ and the model displayed in Hub / Thread dropdown - [ ] Users can use the remote model properly (openAI GPT, Groq) @@ -129,7 +131,7 @@ ### 1. Users can see disk and RAM utilization -- [ ] :key: Verify that the RAM and VRAM utilization graphs accurately reported in real time. +- [ ] :key: Verify that the RAM and VRAM utilization graphs accurately reported in real time. - [ ] :key: Validate that the utilization percentages reflect the actual usage compared to the system's total available resources. - [ ] :key: Ensure that the system monitors updates dynamically as the models run and stop. @@ -157,21 +159,21 @@ - [ ] :key: Users can set valid Endpoint and API Key to use remote models - [ ] Monitoring extension should allow users to enable / disable log and set log Cleaning Interval - ### 4. Advanced settings - [ ] :key: Test the `Experimental Mode` toggle to confirm it enables or disables experimental features as intended. - [ ] :key: Check the functionality of `Open App Directory` to ensure it opens the correct folder in the system file explorer. - [ ] Users can move **Jan data folder** - [ ] Validate that changes in advanced settings are applied immediately or provide appropriate instructions if a restart is needed. -- [ ] Attemp to test downloading model from hub using **HTTP Proxy** [guideline](https://github.com/janhq/jan/pull/1562) +- [ ] Attemp to test downloading model from hub using **HTTP Proxy** [guideline](https://github.com/menloresearch/jan/pull/1562) - [ ] Logs that are older than 7 days or exceed 1MB in size will be automatically cleared upon starting the application. - [ ] Users can click on Reset button to **factory reset** app settings to its original state & delete all usage data. - - [ ] Keep the current app data location - - [ ] Reset the current app data location + - [ ] Keep the current app data location + - [ ] Reset the current app data location - [ ] Users can enable the setting and chat using quick ask. ### 5. Engine + - [ ] :key: TensorRT Engine - Users able to chat with the model - [ ] :key: Onnx Engine - Users able to chat with the model - [ ] :key: Other remote Engine - Users able to chat with the model @@ -179,9 +181,10 @@ ## G. Local API server ### 1. Local Server Usage with Server Options + - [ ] :key: Explore API Reference: Swagger API for sending/receiving requests - - [ ] Use default server option - - [ ] Configure and use custom server options + - [ ] Use default server option + - [ ] Configure and use custom server options - [ ] Test starting/stopping the local API server with different Model/Model settings - [ ] Server logs captured with correct Server Options provided - [ ] Verify functionality of Open logs/Clear feature diff --git a/web/containers/Layout/BottomPanel/UpdateFailedModal/index.tsx b/web/containers/Layout/BottomPanel/UpdateFailedModal/index.tsx index 8021a63e0..3591b4c6a 100644 --- a/web/containers/Layout/BottomPanel/UpdateFailedModal/index.tsx +++ b/web/containers/Layout/BottomPanel/UpdateFailedModal/index.tsx @@ -21,7 +21,7 @@ const UpdatedFailedModal = () => { {error}. We appreciate your help with{' '} @@ -35,7 +35,10 @@ const UpdatedFailedModal = () => { { - window.open('https://github.com/janhq/jan#download', '_blank') + window.open( + 'https://github.com/menloresearch/jan#download', + '_blank' + ) setError(undefined) }} > diff --git a/web/containers/Layout/BottomPanel/index.tsx b/web/containers/Layout/BottomPanel/index.tsx index 90d9d84ba..4dd4a742c 100644 --- a/web/containers/Layout/BottomPanel/index.tsx +++ b/web/containers/Layout/BottomPanel/index.tsx @@ -23,7 +23,7 @@ const menuLinks = [ { name: 'Github', icon: , - link: 'https://github.com/janhq/jan', + link: 'https://github.com/menloresearch/jan', }, ] diff --git a/web/hooks/useGetLatestRelease.ts b/web/hooks/useGetLatestRelease.ts index 3b76c2127..58de2ddb8 100644 --- a/web/hooks/useGetLatestRelease.ts +++ b/web/hooks/useGetLatestRelease.ts @@ -2,7 +2,9 @@ import useSWR from 'swr' const fetchLatestRelease = async (includeBeta: boolean) => { - const res = await fetch('https://api.github.com/repos/janhq/jan/releases') + const res = await fetch( + 'https://api.github.com/repos/menloresearch/jan/releases' + ) if (!res.ok) throw new Error('Failed to fetch releases') const releases = await res.json()