chat-ai
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
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
Metadata Files
README.md
A Seamless Slurm-Native Solution for HPC-Based Services
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
Together these repos provide the entire underyling mechanism for Chat AI, which can be generalized as a slurm-native HPC web service.
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.
Ensure that Docker is installed. Follow the guides to install Docker on your operating system.
bash docker --versionClone this repository and navigate to the root folder.
bash git clone https://github.com/gwdg/chat-ai cd chat-aiIn the
secretsdirectory, renamefront.json.sampletofront.jsonandback.json.sampletoback.json, and configure them accordingly. For a local installation with a valid Chat AI API key, you only need to replace the value ofapiKeyinback.json:bash { "port": 8081, "apiEndpoint": "https://chat-ai.academiccloud.de/v1", "apiKey": "<your_chat_ai_api_key>", "serviceName": "Custom Chat AI" }Run the components using
docker-compose:bash docker compose upOpen 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
- Website: https://www.gwdg.de
- Repositories: 159
- Profile: https://github.com/gwdg
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
Pull Request Labels
Dependencies
- node latest build
- node latest build
- chat-ai-arcana latest
- chat-ai-back latest
- chat-ai-front latest
- node latest build
- 121 dependencies
- 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
- 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
- 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
- 646 dependencies
- @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