simpleAI 项目介绍
项目概述
simpleAI 是一个面向自托管的替代方案,专注于提供与大型语言模型(LLM)相关的主要 API 端点。它旨在复制一些主要的功能,包括文本生成、聊天、编辑以及嵌入等。虽然目前还不支持图像、音频、文件、微调和内容管理等功能,但它的设计使得用户可以快速、简便地进行各种实验,以便找到最适合的解决方案。
项目背景
此项目的开发不仅是因为有趣,还因为它能够帮助用户:
- 试验新的模型,减少对特定 API 服务商的依赖。
- 创建基准测试,以决定哪种方法最适合特定需求。
- 在某些特定情况下,提供无需完全依赖外部服务的解决方案,无需重新编写所有代码。
如果您找到了有趣的使用场景,欢迎分享您的经验。
安装和配置
用户需要在具备 Python 3.9 或更新版本的机器上安装 simpleAI。可以选择从源码安装或通过 Pypi 安装:
pip install git+https://github.com/lhenault/simpleAI
或
pip install simple_ai_server
安装后,用户需要创建一个配置文件来声明需要使用的模型:
simple_ai init
生成的 models.toml
文件用于声明不同的模型,然后启动服务器:
simple_ai serve [--host 127.0.0.1] [--port 8080]
模型集成和声明
simpleAI 使用 gRPC 协议来查询模型,从而实现 API 与模型推理之间的分离,并支持 Python 之外的多种语言。
例如,要在 Python 中公开一个嵌入模型,用户只需导入相关库并实现 EmbeddingModel
类的 .embed()
方法即可。对于完成任务,只需类似地导入完成服务器模块,并实现相应的方法。
在部署了 gRPC 服务后,可以将其添加至 models.toml
配置文件。举例如下:
[llama-7B-4b]
[llama-7B-4b.metadata]
owned_by = 'Meta / ggerganov'
permission = []
description = 'C++ implementation of LlaMA model, 7B parameters, 4-bit quantization'
[llama-7B-4b.network]
url = 'localhost:50051'
type = 'gRPC'
使用说明
simpleAI 支持通过 Swagger UI 查看和测试不同的 API 端点,也可以使用您喜欢的工具直接使用 API。例如,通过 cURL 命令进行编辑请求:
curl -X 'POST' \
'http://127.0.0.1:8080/edits' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "alpaca-lora-7B",
"instruction": "Make this message nicer and more formal",
"input": "This meeting was useless and should have been a bloody email",
"top_p": 1,
"n": 1,
"temperature": 1,
"max_tokens": 256
}'
同时,它也兼容 OpenAI 的 Python 客户端,可以按照常规方法进行 API 请求。
常见问题及解决方案
- CORS 问题:建议通过自定义脚本配置 CORS 中间件,而非直接使用
simple_ai serve
命令。 - 需要
/v1
前缀:某些项目需要此前缀,可以通过自定义脚本实现。 - 添加自定义端点:用户可以通过编写自己的 Python 脚本轻松实现。
贡献
这个项目仍在不断发展,欢迎通过 Pull Request、问题报告、文档编写或设计酷炫的 Logo 等方式进行贡献。
开发环境
要安装开发环境,需要确保系统上已安装 make
和 poetry
。执行以下命令可安装开发环境:
make install-dev
这将安装所有开发依赖项并配置预提交助手。