(Français)
CANChat is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline. It supports various LLM runners like Ollama and OpenAI-compatible APIs, with built-in inference engine for RAG, making it a powerful AI deployment solution.
For more information, be sure to check out our Documentation.
-
🚀 Effortless Setup: Install seamlessly using Docker or Kubernetes (kubectl, kustomize or helm) for a hassle-free experience with support for both
:ollamaand:cudatagged images. -
🤝 Ollama/OpenAI API Integration: Effortlessly integrate OpenAI-compatible APIs for versatile conversations alongside Ollama models. Customize the OpenAI API URL to link with LMStudio, GroqCloud, Mistral, OpenRouter, and more.
-
🛡️ Granular Permissions and User Groups: By allowing administrators to create detailed user roles and permissions, we ensure a secure user environment. This granularity not only enhances security but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users.
-
📱 Responsive Design: Enjoy a seamless experience across Desktop PC, Laptop, and Mobile devices.
-
📱 Progressive Web App (PWA) for Mobile: Enjoy a native app-like experience on your mobile device with our PWA, providing offline access on localhost and a seamless user interface.
-
✒️🔢 Full Markdown and LaTeX Support: Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.
-
🎤📹 Hands-Free Voice/Video Call: Experience seamless communication with integrated hands-free voice and video call features, allowing for a more dynamic and interactive chat environment.
-
🛠️ Model Builder: Easily create Ollama models via the Web UI. Create and add custom characters/agents, customize chat elements.
-
🐍 Native Python Function Calling Tool: Enhance your LLMs with built-in code editor support in the tools workspace. Bring Your Own Function (BYOF) by simply adding your pure Python functions, enabling seamless integration with LLMs.
-
📚 Local RAG Integration: Dive into the future of chat interactions with groundbreaking Retrieval Augmented Generation (RAG) support. This feature seamlessly integrates document interactions into your chat experience. You can load documents directly into the chat or add files to your document library, effortlessly accessing them using the
#command before a query. -
🔍 Web Search for RAG: Perform web searches using providers like
SearXNG,Google PSE,Brave Search,serpstack,serper,Serply,DuckDuckGo,TavilySearch,SearchApiandBingand inject the results directly into your chat experience. -
🌐 Web Browsing Capability: Seamlessly integrate websites into your chat experience using the
#command followed by a URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions. -
🎨 Image Generation Integration: Seamlessly incorporate image generation capabilities using options such as AUTOMATIC1111 API or ComfyUI (local), and OpenAI's DALL-E (external), enriching your chat experience with dynamic visual content.
-
⚙️ Many Models Conversations: Effortlessly engage with various models simultaneously, harnessing their unique strengths for optimal responses. Enhance your experience by leveraging a diverse set of models in parallel.
-
🔐 Role-Based Access Control (RBAC): Ensure secure access with restricted permissions; only authorized individuals can access your Ollama, and exclusive model creation/pulling rights are reserved for administrators.
-
🌐🌍 Multilingual Support: Experience CANChat in your preferred language with our internationalization (i18n) support. Join us in expanding our supported languages! We're actively seeking contributors!
-
🧩 Pipelines, Open WebUI Plugin Support: Seamlessly integrate custom logic and Python libraries into CANChat using a pipelines plugin framework. Launch your Pipelines instance, set the OpenAI URL to the Pipelines URL, and explore endless possibilities. Examples include Function Calling, User Rate Limiting to control access, Usage Monitoring with tools like Langfuse, Live Translation with LibreTranslate for multilingual support, Toxic Message Filtering and much more.
-
🌟 Continuous Updates: We are committed to improving CANChat with regular updates, fixes, and new features.
Want to learn more about CANChat's features? Check out our documentation for a comprehensive overview!
Before you begin, ensure your system meets these minimum requirements:
- Operating System: Linux (or WSL on Windows), Windows 11, or macOS. (Recommended for best compatibility)
- Python: Version 3.11 or higher. (Required for backend services)
- Node.js: Version 22.10 or higher. (Required for frontend development)
- IDE (Recommended): We recommend using an IDE like VS Code for code editing, debugging, and integrated terminal access. Feel free to use your favorite IDE if you have one!
We'll set up both the frontend (user interface) and backend (API and server logic).
First, use git clone to download the CANChat V2 repository to your local machine. This will create a local copy of the project on your computer.
-
Open your terminal (or Git Bash if you're on Windows).
-
Navigate to the directory where you want to store the project.
-
Run the following commands:
git clone https://github.com/ssc-dsai/canchat-v2.git cd canchat-v2- The
git clonecommand downloads the project files from GitHub. - The
cd canchat-v2command navigates you into the newly created project directory.
- The
Let's get the user interface (what you see in your browser) up and running first:
Copy the example environment file to .env:
cp -RPp .env.example .env- This command copies the
.env.examplefile to a new file named.env. - The
.envfile is where you'll configure environment variables for the frontend.
Customize .env:
Open the .env file in your code editor (e.g., VS Code). For local development, the default settings in .env.example should suffice, but you can customize them if needed.
Important: If you plan to contribute to the repository, do not commit sensitive information to your
.envfile. Always review your environment variables before pushing changes to ensure no secrets, credentials, or private data are exposed.
Navigate to the frontend directory if you're not already there:
cd canchat-v2Install the required JavaScript packages:
npm installIf you encounter compatibility warnings or errors, try:
npm install --forceLaunch the frontend development server:
npm run dev- If successful, the server will indicate it's running and provide a local URL.
- Open your browser and navigate to http://localhost:5173.
- You should see a message indicating that the frontend is running and is waiting for the backend to be available.
Keep this terminal running; it's serving your frontend!
Run the backend in a separate terminal to manage your workflows cleanly.
-
Open a new terminal in VS Code: go to
Terminal>New Terminalor use the shortcut:- Windows/Linux:
Ctrl + Shift + - macOS:
Cmd + Shift +
- Windows/Linux:
-
Navigate to the backend directory:
cd backend
Now you’ll have two terminals: one for the frontend and one for the backend.
To isolate project dependencies and avoid conflicts, use Conda:
conda create --name canchat-v2 python=3.11
conda activate canchat-v2conda create --name canchat-v2 python=3.11: Creates a Conda environment with Python 3.11.conda activate canchat-v2: Activates the Conda environment. The terminal prompt will change to include(canchat-v2).
If you're not using Conda, ensure you have Python 3.11 or higher installed.
Run the following command in the backend terminal:
pip install -r requirements.txt -U- This installs all the Python libraries required for the backend from
requirements.txt. - The
-Uflag ensures the latest compatible versions are installed.
Run the backend development server script:
sh dev.sh- This will start the backend server, and you should see output in the terminal.
- Access the API documentation in your browser: http://localhost:8080/docs.
🎉 Congratulations! You now have both the frontend and backend running locally:
- Return to the frontend URL: http://localhost:5173.
- Refresh the page.
- You should see the full application connected to the backend!
That's it—you're all set up!
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the maintainers.
If you find a bug, please open an issue on our issue tracker and provide as much detail as possible, including your operating system, browser, and steps to reproduce the bug.
We welcome suggestions for enhancements. Open an issue on the issue tracker and include a detailed description of your proposed enhancement.
- Ensure your code follows our style guide.
- Test your changes thoroughly.
- Submit a pull request to the dev branch of the upstream repository.
Do not post any security issues on the public repository! See SECURITY.md
This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.
If you have any questions, suggestions, or need assistance, please see our Documentation.
CANChat est une plateforme d’intelligence artificielle (IA) auto-hébergée, extensible, riche en fonctionnalités et conviviale, conçue pour fonctionner entièrement hors ligne. Elle prend en charge divers moteurs LLM comme Ollama et les APIs compatibles avec OpenAI, avec un moteur d'inférence intégré pour le RAG, faisant ainsi de CANChat une puissante solution de déploiement IA.
Pour plus d'informations, consultez notre documentation.
-
🚀 Configuration facilitée : Installez facilement avec Docker ou Kubernetes (kubectl, kustomize ou helm) pour une expérience sans souci, avec prise en charge des images marquées
:ollamaet:cuda. -
🤝 Intégration API Ollama/OpenAI : Intégrez facilement des API compatibles avec OpenAI pour des conversations polyvalentes, en plus des modèles d’Ollama. Personnalisez l’URL API OpenAI pour vous connecter à LMStudio, GroqCloud, Mistral, OpenRouter, et plus encore.
-
🛡️ Permissions granulaires et groupes d’utilisateurs : Permettez aux administrateurs de créer des rôles et des permissions détaillés pour garantir un environnement sécurisé. Cette granularité renforce la sécurité et permet des expériences utilisateur personnalisées, favorisant un sentiment de responsabilité chez les utilisateurs.
-
📱 Design réactif : Profitez d'une expérience harmonieuse sur ordinateur de bureau, ordinateur portable et appareils mobiles.
-
📱 Application web progressive (PWA) pour mobile : Profitez d’une expérience semblable à une application native sur votre appareil mobile grâce à notre PWA, offrant un accès hors ligne sur localhost et une interface utilisateur fluide.
-
✒️🔢 Prise en charge complète de Markdown et LaTeX : Élevez votre expérience LLM avec des capacités Markdown et LaTeX complètes pour des interactions enrichies.
-
🎤📹 Appel audio/vidéo mains libres : Expérimentez une communication fluide grâce aux fonctionnalités d’appel audio et vidéo intégrées, permettant un environnement de discussion plus dynamique et interactif.
-
🛠️ Créateur de modèles : Créez facilement des modèles Ollama via l’interface Web. Ajoutez des personnages/agents personnalisés et personnalisez les éléments de discussion.
-
🐍 Outil d’appel de fonctions Python natif : Enrichissez vos LLM grâce à un éditeur de code intégré dans l'espace de travail des outils. Ajoutez vos propres fonctions Python pour une intégration transparente avec les LLM.
-
📚 Intégration RAG locale : Plongez dans l’avenir des interactions de discussion avec le support révolutionnaire du RAG (Recovery Augmented Generation). Cette fonctionnalité intègre des documents dans vos conversations. Chargez des documents directement dans le chat ou ajoutez des fichiers à votre bibliothèque de documents pour les accéder facilement via la commande
#avant une requête. -
🔍 Recherche web pour RAG : Effectuez des recherches web à l'aide de fournisseurs comme
SearXNG,Google PSE,Brave Search,serpstack,serper,Serply,DuckDuckGo,TavilySearch,SearchApietBing, et injectez les résultats directement dans votre discussion. -
🌐 Capacité de navigation web : Intégrez des sites web directement dans votre expérience de chat avec la commande
#suivie d'une URL. Cette fonctionnalité enrichit vos conversations en incorporant du contenu web. -
🎨 Intégration de génération d'images : Profitez des capacités de génération d’images à l’aide d’options telles que l’API AUTOMATIC1111 ou ComfyUI (local), et DALL-E d’OpenAI (externe), enrichissant votre expérience de chat avec du contenu visuel dynamique.
-
⚙️ Conversations multi-modèles : Interagissez facilement avec différents modèles simultanément, en exploitant leurs forces uniques pour des réponses optimales. Améliorez votre expérience en utilisant un ensemble diversifié de modèles en parallèle.
-
🔐 Contrôle d’accès basé sur les rôles (RBAC) : Garantissez un accès sécurisé avec des permissions restreintes : seules les personnes autorisées ont accès à Ollama, et les droits exclusifs de création/téléchargement de modèles sont réservés aux administrateurs.
-
🌐🌍 Support multilingue : Utilisez CANChat dans la langue de votre choix grâce à notre support d’internationalisation (i18n). Participez à l'expansion de nos langues prises en charge ! Nous recherchons activement des contributeurs !
-
🧩 Pipelines et support de plugins Open WebUI : Intégrez facilement une logique personnalisée et des bibliothèques Python dans CANChat en utilisant un cadre de plugins pipelines. Lancez votre instance Pipelines, configurez l'URL OpenAI sur l'URL de Pipelines et explorez des possibilités infinies. Exemples : Appels de fonctions Python, limitation d’usage utilisateur, suivi d'utilisation avec des outils comme Langfuse, traductions en direct avec LibreTranslate, filtrage de messages toxiques et bien plus.
-
🌟 Mises à jour continues : Nous nous engageons à améliorer CANChat avec des mises à jour régulières, des correctifs et de nouvelles fonctionnalités. Vous souhaitez en savoir plus sur les fonctionnalités de CANChat ? Consultez notre documentation pour un aperçu complet !
Avant de commencer, assurez-vous que votre système répond à ces exigences minimales :
- Système d’exploitation : Linux (ou WSL sous Windows), Windows 11 ou macOS. (Recommandé pour une meilleure compatibilité)
- Python : Version 3.11 ou supérieure. (Requis pour les services backend)
- Node.js : Version 22.10 ou supérieure. (Requis pour le développement frontend)
- IDE (recommandé) : Nous recommandons d’utiliser un IDE comme VS Code pour l’édition, le débogage et l’accès au terminal intégré. Si vous le souhaitez, utilisez votre IDE préféré !
Nous allons configurer l'interface utilisateur (frontend) et l'API/serveur (backend).
Pour commencer, utilisez git clone afin de télécharger le dépôt de CANChat V2 sur votre machine locale. Cela créera une copie locale sur votre ordinateur.
- Ouvrez votre terminal (ou Git Bash si vous êtes sous Windows).
- Naviguez vers le répertoire où vous voulez stocker le projet.
- Exécutez les commandes suivantes :
git clone https://github.com/ssc-dsai/canchat-v2.git cd canchat-v2- La commande
git clonetélécharge les fichiers du projet depuis GitHub. - La commande
cd canchat-v2vous permet d’entrer dans le répertoire nouvellement créé.
- La commande
Commençons par mettre en place l’interface utilisateur.
Copiez le fichier d’environnement exemple vers .env :
cp -RPp .env.example .env- Cette commande copie le fichier
.env.exampledans un nouveau fichier nommé.env. - Le fichier
.envest où vous pourrez configurer les variables d’environnement pour le frontend. Personnaliser.env:
Ouvrez le fichier.envdans votre éditeur de code (VS Code, par exemple). Pour le développement local, les paramètres par défaut devraient suffire, mais vous pouvez les personnaliser si nécessaire.Important : Si vous prévoyez de contribuer au dépôt, ne commitez pas d’informations sensibles dans votre fichier
.env. Vérifiez toujours vos variables d’environnement avant d’effectuer un commit pour vous assurer qu’aucune information privée ou confidentielle n'est exposée.
Si ce n’est pas encore fait, allez dans le répertoire du frontend :
cd canchat-v2Installez les paquets JavaScript nécessaires :
npm installEn cas d’avertissements ou d'erreurs de compatibilité, essayez :
npm install --forceLancez le serveur de développement du frontend :
npm run dev- Si tout se passe bien, le serveur indiquera qu'il est en fonctionnement et fournira une URL locale.
- Ouvrez votre navigateur et allez à http://localhost:5173.
- Vous devriez voir un message indiquant que le frontend est opérationnel et attend la connexion avec le backend. Gardez ce terminal ouvert : il sert votre frontend !
Pour le backend, ouvrez un nouveau terminal pour mieux organiser votre workflow.
- Ouvrez un nouveau terminal dans VS Code en allant dans
Terminal>New Terminal, ou utilisez les raccourcis suivants :- Windows/Linux :
Ctrl + Shift + - macOS :
Cmd + Shift +
- Windows/Linux :
- Naviguez vers le répertoire backend :
Vous disposerez maintenant de deux terminaux : un pour le frontend et un pour le backend.
cd backend
Pour isoler les dépendances du projet et éviter les conflits, utilisez Conda :
conda create --name canchat-v2 python=3.11
conda activate canchat-v2conda create --name canchat-v2 python=3.11: Crée un environnement Conda avec Python 3.11.conda activate canchat-v2: Active l’environnement Conda. Le prompt du terminal affichera(canchat-v2).Si vous n’utilisez pas Conda, assurez-vous d’avoir Python 3.11 ou une version plus récente installée.
Exécutez la commande suivante dans le terminal backend :
pip install -r requirements.txt -U- Cela installe toutes les bibliothèques nécessaires au backend en se basant sur le fichier
requirements.txt. - Le flag
-Ugarantit que les versions les plus récentes compatibles seront installées.
Lancez le script du serveur backend :
sh dev.sh- Cela démarrera le serveur backend, et vous devriez voir sa sortie dans le terminal.
- Accédez à la documentation de l'API dans votre navigateur : http://localhost:8080/docs.
🎉 Félicitations ! Vous avez maintenant le frontend et le backend en fonctionnement local :
- Retournez sur l'URL du frontend : http://localhost:5173.
- Actualisez la page.
- Vous devriez voir l’application complète connectée au backend !
C'est tout—vous êtes prêt à utiliser CANChat !
Ce projet, ainsi que tous les participants, est régi par notre Code de conduite. En participant, vous acceptez de respecter ce code. Veuillez signaler tout comportement inacceptable aux mainteneurs.
Si vous trouvez un bogue, ouvrez une issue sur notre traqueur d’issues et fournissez autant de détails que possible, notamment votre système d'exploitation, navigateur et les étapes pour reproduire le bogue.
Nous accueillons avec plaisir vos suggestions d'améliorations. Ouvrez une issue sur le traqueur d’issues et décrivez votre proposition en détail.
- Assurez-vous que votre code respecte notre guide de style.
- Testez minutieusement vos modifications.
- Soumettez une pull request vers la branche
devdu dépôt principal.
Ne postez aucun problème de sécurité sur le dépôt public ! Consultez notre SECURITY.md.
Ce projet est sous licence BSD-3-Clause License - consultez le fichier LICENSE pour plus de détails.
Si vous avez des questions, des suggestions ou avez besoin d'assistance, veuillez consulter notre documentation.