Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.3%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: gwdg
  • License: gpl-3.0
  • Language: JavaScript
  • Default Branch: main
  • Size: 4.07 MB
Statistics
  • Stars: 54
  • Watchers: 8
  • Forks: 5
  • Open Issues: 16
  • Releases: 12
Created almost 2 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

Chat AI

A Seamless Slurm-Native Solution for HPC-Based Services

Documentation | Paper

This repository contains the stand-alone web interface of Chat AI. The implementation of the remaining components of the complete architecture can be found in two other repos: - Server components, incl. API gateway and SSH proxy: https://github.com/gwdg/saia-hub - HPC components, incl. scheduler and slurm scripts: https://github.com/gwdg/saia-hpc

Chat AI architecture

Together these repos provide the entire underyling mechanism for Chat AI, which can be generalized as a slurm-native HPC web service.

Web Interface

Quick Installation Guide

Note that Chat AI's web interface provided in this repository can be set up on any device independently from the rest of the architecture, to act solely as a wrapper for an OpenAI-compatible API endpoint.

  1. Ensure that Docker is installed. Follow the guides to install Docker on your operating system. bash docker --version

  2. Clone this repository and navigate to the root folder. bash git clone https://github.com/gwdg/chat-ai cd chat-ai

  3. In the secrets directory, rename front.json.sample to front.json and back.json.sample to back.json, and configure them accordingly. For a local installation with a valid Chat AI API key, you only need to replace the value of apiKey in back.json: bash { "port": 8081, "apiEndpoint": "https://chat-ai.academiccloud.de/v1", "apiKey": "<your_chat_ai_api_key>", "serviceName": "Custom Chat AI" }

  4. Run the components using docker-compose: bash docker compose up

  5. Open your browser and navigate to http://localhost:8080/, or whichever path and port number you have configured.

Getting Started

The web interface consists of two Docker containers, front and back. The front service is a ReactJS app served by ViteJS and runs entirely on the client's browser. The back service is simply a wrapper for message requests which gives the developer more control over the requests and prevents CORS errors on the user's browser.

Make sure you have docker installed and docker compose.

For Ubuntu 24.04, install docker compose with: bash aptitude install docker-compose-v2

To build the images, run:

bash docker compose build front docker compose build back

To start either of the two components, run: bash docker compose up front -d docker compose up back -d

You should then be able to access the web interface via the path and port number specified in the config file.


To apply any changes in the configuration and/or source code, run: bash docker compose restart front docker compose restart back

Note that in some cases rebuilding the docker image might be necessary.

Configuration

You can set the port numbers for both the front and back services in the front.json and back.json files.

The front service uses the following configurable attributes in front.json: - mode: Set to dev to enable development environment and prod for production. - port: Port number to listen on. Default: 8080 - backendPath: Path to back service, used for sending messages and processing PDF files, e.g. http://localhost:8081/ or /backend - modelsPath: Path to get list of available models from. Simply set to <backendPath>/models if unsure - userDataPath: (Optional) Path to get user data. Simply set to <backendPath>/user if unsure - defaultSettings: Default settings for new conversations, including default model, modelName, top_p, and temperature. This default model will also be used for title generation and memory updates.

The back service listens to requests from front and interacts with an OpenAI-compatible API endpoint to produce responses. It uses the following configurable attributes in back.json: - port: Port number to listen on. Default: 8081 - apiEndpoint: Endpoint of your API provider. If you have a Chat AI API key, set this to https://chat-ai.academiccloud.de/v1 - apiKey: Your valid API key - serviceName: (Optional) A custom service name to be sent as a header in API requests to your provider. Will not be visible in the interface

If you wish to avoid using different ports for the front and back services, you must set up a reverse proxy or virtual host to route paths such as /models and /backend to the backend service listening on its own distinguished port. This can be done with popular server software such as Apache or Nginx.

Also, if you wish to customize the list of available models, you must create a path that returns an OpenAI-style JSON response containing the model ids and names, and set the modelsPath in front.json accordingly. If configured correctly, your custom list will be displayed in the dropdown menu in the interface instead of what you get from your API provider.

Acknowledgements

We thank Priyeshkumar Chikhaliya p.chikhaliya@stud.uni-goettingen.de for the design and implementation of the web interface.

We thank all colleagues and partners involved in this project.

Citation

If you use Chat AI in your research or services, please cite us as follows:

@misc{doosthosseiniSAIASeamlessSlurmNative2025, title = {{{SAIA}}: {{A Seamless Slurm-Native Solution}} for {{HPC-Based Services}}}, shorttitle = {{{SAIA}}}, author = {Doosthosseini, Ali and Decker, Jonathan and Nolte, Hendrik and Kunkel, Julian}, year = {2025}, month = jul, publisher = {Research Square}, issn = {2693-5015}, doi = {10.21203/rs.3.rs-6648693/v1}, url = {https://www.researchsquare.com/article/rs-6648693/v1}, urldate = {2025-07-29}, archiveprefix = {Research Square} }

Owner

  • Name: Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen
  • Login: gwdg
  • Kind: organization
  • Email: github@gwdg.de
  • Location: Göttingen

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: SAIA
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Ali
    family-names: Doosthosseini
    email: ali.doosthosseini@uni-goettingen.de
    affiliation: University of Göttingen
    orcid: 'https://orcid.org/0000-0002-0654-1268'
  - given-names: Jonathan
    family-names: Decker
    email: jonathan.decker@uni-goettingen.de
    affiliation: University of Göttingen
    orcid: 'https://orcid.org/0000-0002-7384-7304'
  - given-names: Hendrik
    family-names: Nolte
    email: hendrik.nolte@gwdg.de
    affiliation: GWDG
    orcid: 'https://orcid.org/0000-0003-2138-8510'
  - given-names: Julian
    name-particle: M.
    family-names: Kunkel
    email: julian.kunkel@gwdg.de
    affiliation: GWDG
    orcid: 'https://orcid.org/0000-0002-6915-1179'
identifiers:
  - type: doi
    value: 10.21203/rs.3.rs-6648693/v1
  - type: url
    value: 'https://www.researchsquare.com/article/rs-6648693/v1'
repository-code: 'https://github.com/gwdg/chat-ai'
url: 'https://chat-ai.academiccloud.de'
abstract: >-
  Recent developments indicate a shift toward web services
  that employ ever larger AI models, e.g., Large Language
  Models (LLMs), requiring powerful hardware for inference.
  High-Performance Computing (HPC) systems are commonly
  equipped with such hardware for the purpose of large scale
  computation tasks. However, HPC infrastructure is
  inherently unsuitable for hosting real-time web services
  due to network, security and scheduling constraints. While
  various efforts exist to integrate external scheduling
  solutions, these often require compromises in terms of
  security or usability for existing HPC users. In this
  paper, we present SAIA, a Slurm-native platform consisting
  of a scheduler and a proxy. The scheduler interacts with
  Slurm to ensure the availability and scalability of
  services, while the proxy provides external access, which
  is secured via confined SSH commands. We have demonstrated
  SAIA’s applicability by deploying a large-scale LLM web
  service that has served over 50,000 users.
keywords:
  - AI
  - HPC
  - Slurm
license: GPL-3.0
version: v0.8.1
date-released: '2024-02-22'

GitHub Events

Total
  • Create event: 43
  • Issues event: 36
  • Release event: 13
  • Watch event: 40
  • Delete event: 32
  • Member event: 2
  • Issue comment event: 26
  • Push event: 237
  • Pull request event: 75
  • Fork event: 5
Last Year
  • Create event: 43
  • Issues event: 36
  • Release event: 13
  • Watch event: 40
  • Delete event: 32
  • Member event: 2
  • Issue comment event: 26
  • Push event: 237
  • Pull request event: 75
  • Fork event: 5

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 24
  • Total pull requests: 46
  • Average time to close issues: 16 days
  • Average time to close pull requests: about 4 hours
  • Total issue authors: 8
  • Total pull request authors: 6
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.04
  • Merged pull requests: 33
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 24
  • Pull requests: 46
  • Average time to close issues: 16 days
  • Average time to close pull requests: about 4 hours
  • Issue authors: 8
  • Pull request authors: 6
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.04
  • Merged pull requests: 33
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • buczek (8)
  • JulianKunkel (6)
  • m-hew (4)
  • adoosth (2)
  • C1aas (1)
  • gnagster (1)
  • glor (1)
  • DamilolaDecarls (1)
Pull Request Authors
  • adoosth (30)
  • Priyeshchikhaliya (7)
  • C1aas (3)
  • JulianKunkel (2)
  • mahdics68 (1)
Top Labels
Issue Labels
bug (5) feature request (2) visual improvement (1)
Pull Request Labels

Dependencies

arcana/Dockerfile docker
  • node latest build
back/Dockerfile docker
  • node latest build
docker-compose.yml docker
  • chat-ai-arcana latest
  • chat-ai-back latest
  • chat-ai-front latest
front/Dockerfile docker
  • node latest build
arcana/package-lock.json npm
  • 121 dependencies
arcana/package.json npm
  • nodemon ^3.1.4 development
  • axios ^1.7.5
  • cors ^2.8.5
  • dotenv ^16.4.5
  • express ^4.19.2
  • multer ^1.4.5-lts.1
back/package-lock.json npm
  • JSONStream 1.3.5
  • accepts 1.3.8
  • array-flatten 1.1.1
  • body-parser 1.20.2
  • busboy 1.6.0
  • bytes 3.1.2
  • call-bind 1.0.7
  • content-disposition 0.5.4
  • content-type 1.0.5
  • cookie 0.6.0
  • cookie-signature 1.0.6
  • cors 2.8.5
  • debug 2.6.9
  • define-data-property 1.1.4
  • depd 2.0.0
  • destroy 1.2.0
  • dotenv 16.4.5
  • duplexer 0.1.2
  • ee-first 1.1.1
  • encodeurl 1.0.2
  • es-define-property 1.0.0
  • es-errors 1.3.0
  • escape-html 1.0.3
  • etag 1.8.1
  • event-stream 4.0.1
  • express 4.19.2
  • express-fileupload 1.5.1
  • finalhandler 1.2.0
  • forwarded 0.2.0
  • fresh 0.5.2
  • from 0.1.7
  • function-bind 1.1.2
  • get-intrinsic 1.2.4
  • gopd 1.0.1
  • has-property-descriptors 1.0.2
  • has-proto 1.0.3
  • has-symbols 1.0.3
  • hasown 2.0.2
  • http-errors 2.0.0
  • iconv-lite 0.4.24
  • inherits 2.0.4
  • ipaddr.js 1.9.1
  • jsonparse 1.3.1
  • map-stream 0.0.7
  • media-typer 0.3.0
  • merge-descriptors 1.0.1
  • methods 1.1.2
  • mime 1.6.0
  • mime-db 1.52.0
  • mime-types 2.1.35
  • ms 2.0.0
  • ms 2.1.3
  • negotiator 0.6.3
  • node-fetch 2.7.0
  • object-assign 4.1.1
  • object-inspect 1.13.1
  • on-finished 2.4.1
  • parseurl 1.3.3
  • path-to-regexp 0.1.7
  • pause-stream 0.0.11
  • proxy-addr 2.0.7
  • qs 6.11.0
  • range-parser 1.2.1
  • raw-body 2.5.2
  • safe-buffer 5.2.1
  • safer-buffer 2.1.2
  • send 0.18.0
  • serve-static 1.15.0
  • set-function-length 1.2.2
  • setprototypeof 1.2.0
  • side-channel 1.0.6
  • split 1.0.1
  • statuses 2.0.1
  • stream-combiner 0.2.2
  • streamsearch 1.1.0
  • through 2.3.8
  • toidentifier 1.0.1
  • tr46 0.0.3
  • type-is 1.6.18
  • unpipe 1.0.0
  • utils-merge 1.0.1
  • vary 1.1.2
  • webidl-conversions 3.0.1
  • whatwg-url 5.0.0
back/package.json npm
  • JSONStream ^1.3.5
  • body-parser ^1.20.2
  • cors ^2.8.5
  • dotenv ^16.4.5
  • event-stream ^4.0.1
  • express ^4.19.2
  • express-fileupload ^1.5.1
  • form-data ^4.0.1
  • node-fetch ^2.7.0
front/package-lock.json npm
  • 646 dependencies
front/package.json npm
  • @types/react ^18.2.56 development
  • @types/react-dom ^18.2.19 development
  • @vitejs/plugin-react ^4.2.1 development
  • autoprefixer ^10.4.18 development
  • eslint ^8.56.0 development
  • eslint-plugin-react ^7.33.2 development
  • eslint-plugin-react-hooks ^4.6.0 development
  • eslint-plugin-react-refresh ^0.4.5 development
  • postcss ^8.4.35 development
  • tailwindcss ^3.4.1 development
  • vite ^5.1.4 development
  • @emotion/react ^11.11.4
  • @emotion/styled ^11.11.5
  • @reduxjs/toolkit ^2.2.1
  • caniuse-lite ^1.0.30001679
  • formik ^2.4.5
  • i18next ^23.10.1
  • i18next-browser-languagedetector ^7.2.0
  • jspdf ^2.5.1
  • katex ^0.16.15
  • lucide-react ^0.474.0
  • papaparse ^5.5.2
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-i18next ^14.1.0
  • react-loading-skeleton ^3.4.0
  • react-markdown ^8.0.7
  • react-redux ^9.1.0
  • react-router-dom ^6.22.3
  • react-speech-recognition ^3.10.0
  • react-syntax-highlighter ^15.6.1
  • react-table ^7.8.0
  • react-toastify ^10.0.6
  • redux ^5.0.1
  • redux-persist ^6.0.0
  • regenerator-runtime ^0.14.1
  • rehype-katex ^7.0.1
  • remark-gfm ^4.0.0
  • remark-math ^5.1.1
  • uuid ^11.0.2
  • yup ^1.4.0