Aris-ai
[Anglais | 简体中文]
Introduction
Il s'agit d'un projet qui fournit des services de modèles de grande langue privés , visant à accéder rapidement à des grands modèles généraux (GPT3.5, GPT4) et aux modèles privés (QWEN1.5, chatGLM3, LLAMA2, BAICHUAN2, etc.), fournissant une interface API unifiée. S'appuyant sur le cadre de Langchain pour fournir des services de dialogue multi-tours (CHAT) et de récupération de génération augmentée (RAG), le nom du projet provient du personnage ARIS dans Blue Archive, comme le montre la figure ci-dessous
ARIS: Archive bleue 中的角色
Modifier le journal
[2024-07-13] Nous avons ouvert le serveur ARIS-AI-Model, qui intègre les services de déploiement LLM, d'intégration et de re-RERANKER, et fournit une interface API compatible OpenAI pour faciliter les utilisateurs pour déployer des modèles privés.
[2024-06-23] Nous libérons le modèle de série ARIS-14B-CHAT que SFT et DPO par QWEN1.5-14B-CHAT sur notre ensemble de données privés. Veuillez obéir à l'accord open source QWEN lors de son utilisation.
[2024-06-15] Utilisez Neo4j comme base de données pour stocker les bases de connaissances
Pile technologique
Réglage fin
- Transformateurs
- Pivot
- Pytorch
- Vitesse profonde
Déploiement de modèle privé
Service de modèle de grande langue
Backend API
- Fastapi
- Sqlalchemy
- JWT
- Mysql
- Redis
- Néo4j
Ui Web
Déploiement du projet
Implémentation de la fonction
Lié à l'API
- Enregistrement des utilisateurs, connexion, gestion de l'autorisation
- Gestion des dialogues, gestion de l'histoire
- Gestion du modèle (LLM, intégration), préréglé (système) Gestion rapide
- Gestion de la base de données vectorielle, insertion de la base de données vectorielle, support:
- Fichiers: PDF, Markdown, HTML, Jupyter, TXT, Python, C ++, Java et autres fichiers de code
- Liens: Arxiv, Git, URL non authentifiée (prend en charge la rampe récursive, l'outil automatisé rampant)
Modèle lié au service
- CHAT: prend en charge le dialogue multi-ronde
- Retriever QA: prend en charge la réponse aux questions avec (RAG) Génération améliorée de récupération
Interface Web
- Fournir une interface pour télécharger les bases de connaissances
- Fournir une interface de dialogue
Structure du projet
.
├── assets
├── confs
│ ├── deployment
│ └── local
├── docker
│ ├── deployment
│ └── local
├── envs
│ ├── deployment
│ └── local
├── kubernetes
├── logs
├── pages
└── src
├── api
│ ├── auth
│ ├── model
│ └── router
│ └── v1
│ ├── model
│ └── oauth2
├── config
├── langchain_aris
├── logger
├── middleware
│ ├── jwt
│ ├── logger
│ ├── mysql
│ │ └── models
│ └── redis
└── webui
Déploiement local
Cloner le référentiel
git clone https://github.com/hcd233/Aris-AI
cd Aris-AI
Créer un environnement virtuel (facultatif)
Vous pouvez ignorer cette étape, mais vous devez vous assurer que l'environnement Python est 3.11
conda create -n aris python=3.11.0
conda activate aris
Installer des dépendances
pip install poetry
poetry install
Configurer Conf et Env (omis)
Voir le fichier de modèle
Démarrez MySQL et Redis
docker-compose -f docker/local/docker-compose.yml up -d
Démarrer le serveur API
Notez que vous devez spécifier local / api.env comme variable d'environnement dans l'IDE
Démarrez le webui
Notez que vous devez spécifier local / webui.env comme variable d'environnement dans l'IDE
streamlit run aris_webui.py
Accéder à Swaggerui et webui
- Swaggerui: http: // localhost: $ {api_port} / docs
- Webui: http: // localhost: 8501
Déploiement de Docker
Configurer Conf et Env (comme ci-dessus)
Voir le fichier de modèle
Créer des volumes
docker volume create mysql-data
docker volume create redis-data
docker volume create neo4j-data
Démarrer le conteneur
docker-compose -f docker/deployment/docker-compose.yml up -d --no-build
Instructions de fonctionnement
Opération utilisateur
- Pour les opérations de connexion, je n'ai fait que la vérification simple du nom d'utilisateur et du mot de passe, et je n'ai pas fourni de fonction d'enregistrement dans le webui. Veuillez appeler vous-même l'interface API et définir l'état de l'administrateur (IS_ADMIN = 1) dans l'opération de la base de données pour accéder aux modèles privés
- Après la connexion, vous devez transporter un jeton JWT pour faire fonctionner la clé secrète, qui est utilisée pour appeler le service de modèle privé
Fonctionnement du modèle
- Appelez le Service général de grand modèle, qui ne prend actuellement en charge que les modèles de la série OpenAI (ou des agents avec des interfaces de type OpenAI). Vous pouvez y accéder directement dans l'API. Vous devez stocker des informations telles que Base, Key, Max_Tokens dans la base de données, et vous pouvez personnaliser l'invite système
- Appelez le service de modèle privé, veuillez déployer le modèle en tant que service API avec une API de type OpenAI (vous pouvez utiliser ARIS-AI-Model-Server) et le configurer en conséquence.
Outlook du projet
Objectifs
- Prise en charge l'accès à plus de modèles (azureopenai, gemini, huggingfaceendpoint, llama.cpp)
- Plus de stratégies de chiffon (fusion de chiffon, réarrangement, rappel multi-chemin, etc.)
- Prise en charge du chat et du chiffon multimodal
- Soutenir le maintien d'un pool clé pour le même modèle pour obtenir l'équilibrage de la charge
- Agent d'assistance et appels d'outils
- Libérer des modèles privés affinés
Statut de l'auteur
En raison de mon horaire de travail chargé, les progrès du projet peuvent être relativement lents et je le mettrai à jour occasionnellement. Les PR et les problèmes sont les bienvenus