ARIS-AI
[Inglês | 简体中文]
Introdução
Este é um projeto que fornece serviços privados de grandes modelos de idiomas , com o objetivo de acessar rapidamente os grandes modelos gerais (GPT3.5, GPT4) e modelos privados (QWEN1.5, Chatglm3, LLAMA2, Baichuan2, etc.), fornecendo uma interface de API unificada. Baseando-se na estrutura de Langchain para fornecer o diálogo de várias turnos (bate-papo) e os serviços de geração aumentada (RAG), o nome do projeto vem do personagem Aris in Blue Archive, como mostrado na figura abaixo
Aris: Blue Archive 中的角色
Alterar log
[2024-07-13] Abra o código-fonte Aris-AI-Model-Server, que integra serviços de implantação de LLM, incorporação e reanranker, e fornece uma interface API compatível com o OpenAI para facilitar os usuários para implantar modelos privados.
[2024-06-23] Lançamos o modelo ARIS-14B-CHAT SERIDE que SFT e DPO por QWEN1.5-14B-BACK em nosso conjunto de dados privado. Obedeça ao contrato de código aberto QWEN ao usá -lo.
[2024-06-15] Use Neo4J como o banco de dados para armazenar bases de conhecimento
Pilha de tecnologia
Afinação
- Transformadores
- Peft
- Pytorch
- DeepSpeed
Implantação de modelo privado
- llama.cpp
- llama-cpp-python
Grande serviço de modelo de idioma
Back -end da API
- FASTAPI
- Sqlalchemy
- JWT
- Mysql
- Redis
- Neo4j
UI da web
Implantação do projeto
Implementação da função
Relacionado à API
- Registro do usuário, login, gerenciamento de permissão
- Gerenciamento de diálogo, gerenciamento de história
- Modelo (LLM, Incorporação) Gerenciamento, Gerenciamento Prompt Preset (System)
- Gerenciamento de banco de dados vetorial, inserção de banco de dados vetorial, suporte:
- Arquivos: PDF, Markdown, HTML, Jupyter, TXT, Python, C ++, Java e outros arquivos de código
- Links: Arxiv, Git, URL não autenticado (suporta rastejamento recursivo, ferramenta automatizada rastejando)
Serviço de modelo relacionado
- Chat: suporta diálogo multi-rodada
- Retriever QA: suporta a resposta de perguntas com a geração aprimorada de recuperação (RAG)
Interface da web
- Forneça uma interface para fazer upload de bases de conhecimento
- Forneça uma interface de diálogo
Estrutura do projeto
.
├── 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
Implantação local
Clone o repositório
git clone https://github.com/hcd233/Aris-AI
cd Aris-AI
Crie um ambiente virtual (opcional)
Você pode pular esta etapa, mas precisa garantir que o ambiente Python seja 3.11
conda create -n aris python=3.11.0
conda activate aris
Instalar dependências
pip install poetry
poetry install
Configurar Conf e Env (omitido)
Veja o arquivo de modelo
Comece Mysql e Redis
docker-compose -f docker/local/docker-compose.yml up -d
Inicie o servidor API
Observe que você precisa especificar local/api.env como variável de ambiente no IDE
Comece o webui
Observe que você precisa especificar local/webui.env como variável de ambiente no IDE
streamlit run aris_webui.py
Acesse swaggerui e webui
- Swaggerui: http: // localhost: $ {api_port}/docs
- Webui: http: // localhost: 8501
Implantação do Docker
Configure Conf e Env (como acima)
Veja o arquivo de modelo
Criar volumes
docker volume create mysql-data
docker volume create redis-data
docker volume create neo4j-data
Inicie o contêiner
docker-compose -f docker/deployment/docker-compose.yml up -d --no-build
Instruções de operação
Operação do usuário
- Para operações de login, fiz apenas o nome de usuário e a verificação de senha simples e não forneci uma função de registro no webui. Ligue para a interface da API e defina o status do administrador (is_admin = 1) na operação do banco de dados para acessar modelos privados
- Após o login, você precisa transportar um token JWT para operar a chave secreta, que é usada para chamar o serviço de modelo privado
Operação do modelo
- Ligue para o Geral Large Model Service, que atualmente suporta apenas os modelos da série Openai (ou agentes com interfaces do tipo OpenAI). Você pode acessá -lo diretamente na API. Você precisa armazenar informações como base, chave, max_tokens no banco de dados, e você pode personalizar o prompt do sistema
- Ligue para o Serviço de Modelo Privado, implante o modelo como um serviço de API com uma API do tipo OpenAI (você pode usar o ARIS-AI-Model-Server) e configurá-lo de acordo.
Projeto Outlook
Metas
- Apoie o acesso a mais modelos (Azureopenai, Gemini, HuggingFaceEndPoint, llama.cpp)
- Mais estratégias de pano (fusão de trapos, rearranjo, recall de vários caminhos, etc.)
- Apoie o bate-papo multimodal e o RAG
- Suporte a manter um pool chave para o mesmo modelo para obter o balanceamento de carga
- Agente de suporte e chamadas de ferramentas
- Libere modelos privados ajustados
Status do autor
Devido ao meu horário de trabalho ocupado, o progresso do projeto pode ser relativamente lento, e eu o atualizei ocasionalmente. PRs e questões são bem -vindos