Aris-ai
[Inglés | 简体中文]
Introducción
Este es un proyecto que proporciona servicios privados de modelos de idiomas grandes , con el objetivo de acceder rápidamente a modelos generales generales (GPT3.5, GPT4) y modelos privados (QWEN1.5, CHATGLM3, LLAMA2, Baichuan2, etc.), proporcionando una interfaz API unificada. Confiando en el marco de Langchain para proporcionar servicios de diálogo múltiple (CHAT) y de recuperación de la generación aumentada (RAG), el nombre del proyecto proviene del personaje Aris en el archivo azul, como se muestra en la figura a continuación
Aris: Archivo azul 中的角色
Registro de cambio
[2024-07-13] Abierto de código abierto el servidor ARIS-AI-Model, que integra los servicios de implementación de LLM, Incrustación y Reranker, y proporciona una interfaz API compatible con OpenAI para facilitar a los usuarios desplegar modelos privados.
[2024-06-23] Lanzamos el modelo ARIS-14B-Chat Series que SFT y DPO por QWEN1.5-14B-CHAT en nuestro conjunto de datos privado. Obedezca el acuerdo de código abierto QWEN mientras lo usa.
[2024-06-15] Use Neo4J como la base de datos para almacenar bases de conocimiento
Pila de tecnología
Sintonia FINA
- Transformadores
- Peft
- Pytorch
- Velocidad profunda
Despliegue de modelo privado
- llama.cpp
- llama-cpp-python
Servicio de modelos de idiomas grandes
Backend de la API
- Fastapi
- Sqlalquímica
- Jwt
- Mysql
- Rehacer
- Neo4J
Ui web
Implementación del proyecto
Implementación de funciones
Relacionado con la API
- Registro de usuarios, inicio de sesión, gestión de permisos
- Gestión del diálogo, gestión de la historia
- Modelo (LLM, Incrustación) Gestión, Gestión de inmediato Preset (Sistema)
- Gestión de bases de datos de vectores, inserción de la base de datos vectorial, soporte:
- Archivos: PDF, Markdown, HTML, Jupyter, TXT, Python, C ++, Java y otros archivos de código
- Enlaces: ARXIV, GIT, URL no autenticada (admite rastreo recursivo y rastreo automático de herramientas)
Servicio de modelo relacionado
- Chat: admite un diálogo de múltiples rondas
- Retriever QA: Apoya la respuesta a las preguntas con la generación mejorada de recuperación (trapo)
Interfaz web
- Proporcione una interfaz para cargar bases de conocimiento
- Proporcionar una interfaz de diálogo
Estructura de proyectos
.
├── 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
Despliegue local
Clonar el repositorio
git clone https://github.com/hcd233/Aris-AI
cd Aris-AI
Crear un entorno virtual (opcional)
Puede omitir este paso, pero debe asegurarse de que el entorno de Python sea 3.11
conda create -n aris python=3.11.0
conda activate aris
Instalar dependencias
pip install poetry
poetry install
Configurar conf y env (omitir)
Ver el archivo de plantilla
Comienza mysql y redis
docker-compose -f docker/local/docker-compose.yml up -d
Inicie el servidor API
Tenga en cuenta que necesita especificar local/api.env como la variable de entorno en el IDE
Iniciar la webui
Tenga en cuenta que necesita especificar local/webui.env como la variable de entorno en el IDE
streamlit run aris_webui.py
Acceder a Swaggerui y Webui
- Swaggerui: http: // localhost: $ {api_port}/docs
- Webui: http: // localhost: 8501
Implementación de Docker
Configurar conf y env (como arriba)
Ver el archivo de plantilla
Crear volúmenes
docker volume create mysql-data
docker volume create redis-data
docker volume create neo4j-data
Comience el contenedor
docker-compose -f docker/deployment/docker-compose.yml up -d --no-build
Instrucciones de operación
Operación de usuario
- Para las operaciones de inicio de sesión, solo hice una verificación simple de nombre de usuario y contraseña, y no proporcioné una función de registro en WebUI. Llame a la interfaz API usted mismo y establezca el estado del administrador (is_admin = 1) en la operación de la base de datos para acceder a modelos privados
- Después de iniciar sesión, debe llevar un token JWT para operar la clave secreta, que se utiliza para llamar al servicio de modelo privado
Operación modelo
- Llame al servicio general de modelo grande, que actualmente solo admite los modelos de la serie Operai (o agentes con interfaces similares a OpenAI). Puede acceder a él directamente en la API. Debe almacenar información como Base, Key, Max_Tokens en la base de datos, y puede personalizar la solicitud del sistema
- Llame al servicio de modelo privado, implementa el modelo como un servicio de API con una API similar a OpenAI (puede usar ARIS-AI-Model-Model-Merver) y configurarlo en consecuencia.
Perspectiva del proyecto
Objetivos
- Apoya el acceso a más modelos (AzureOpenai, Gemini, HuggingFaceEndpoint, Llama.cpp)
- Más estrategias de trapo (RAG Fusion, reorganización, retiro de múltiples vías, etc.)
- Soporte de chat multimodal y trapo
- Apoya el mantenimiento de un grupo clave para el mismo modelo para lograr el equilibrio de carga
- Soporte de agentes y llamadas de herramientas
- Libere modelos privados sintonizados
Estado del autor
Debido a mi apretada agenda de trabajo, el progreso del proyecto puede ser relativamente lento, y lo actualizaré ocasionalmente. PRS y los problemas son bienvenidos