SimpleAI: 开放AI世界的新选择 🚀
在人工智能快速发展的今天,越来越多的开发者和企业希望能够掌握自己的AI模型和API。SimpleAI应运而生,为用户提供了一个强大而灵活的自托管AI API解决方案。本文将深入探讨SimpleAI的特性、安装使用方法以及它在AI领域中的重要意义。
SimpleAI简介
SimpleAI是一个专注于复制主要大语言模型(LLM)端点的自托管AI API替代方案。它的设计理念是让用户能够快速轻松地实验不同的AI模型,同时保持与OpenAI客户端的兼容性。这个项目不仅为开发者提供了更多的自由和控制权,还为那些需要在特定场景下完全掌控AI服务的用户提供了理想的解决方案。
主要特性
SimpleAI目前支持以下主要功能:
-
文本补全 (
/completions
)- 支持非流式响应
- 支持流式响应
-
聊天 (
/chat/completions
)- 支持非流式响应
- 支持流式响应
-
编辑 (
/edits
) -
嵌入 (
/embeddings
)
值得注意的是,SimpleAI目前尚未支持图像、音频、文件、微调和内容审核等功能,但这些可能会在未来的版本中加入。
为什么选择SimpleAI?
SimpleAI的创建者认为,这个项目不仅仅是一个有趣的小项目,更是一个能够带来实际价值的工具。以下几点解释了为什么SimpleAI值得我们关注:
-
实验新模型:SimpleAI允许用户轻松尝试和比较不同的AI模型,减少对特定API提供商的依赖。
-
创建基准测试:通过SimpleAI,用户可以快速建立基准测试,以确定哪种方法最适合自己的需求。
-
特定用例处理:在某些情况下,用户可能无法完全依赖外部服务。SimpleAI提供了一种方式,让用户能够在不需要重写所有代码的情况下处理这些特殊用例。
-
开源灵活性:作为一个开源项目,SimpleAI允许开发者根据自己的需求进行定制和扩展。
安装和设置
SimpleAI的安装过程相对简单。用户可以选择从源代码安装或通过PyPI安装。以下是安装步骤:
-
从源代码安装(最新版本):
pip install git+https://github.com/lhenault/simpleAI
-
从PyPI安装:
pip install simple_ai_server
安装完成后,用户需要创建一个配置文件来声明他们的模型。这可以通过创建models.toml
文件来实现。然后,用户可以使用以下命令启动服务器:
simple_ai serve [--host 127.0.0.1] [--port 8080]
启动服务器后,用户可以访问http://127.0.0.1:8080/docs#/
来查看API文档并尝试不同的端点。
模型集成和声明
SimpleAI使用gRPC来查询模型,这种方式可以将API与模型推理分离,并通过这种协议支持Python之外的多种语言。
模型集成
以嵌入模型为例,用户只需导入必要的组件并实现EmbeddingModel
类的.embed()
方法即可:
import logging
from dataclasses import dataclass
from simple_ai.api.grpc.embedding.server import serve, LanguageModelServicer
@dataclass(unsafe_hash=True)
class EmbeddingModel:
def embed(self,
inputs: list=[],
) -> list:
# TODO : implements the embed method
return [[]]
if __name__ == '__main__':
model_servicer = LanguageModelServicer(model=EmbedingModel())
serve(address='[::]:50051', model_servicer=model_servicer)
声明模型
一旦部署了gRPC服务,用户只需在models.toml
配置文件中添加模型即可。例如,如果在本地部署了一个llama.cpp模型,可以这样添加:
[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
SimpleAI的使用非常直观。用户可以通过Swagger UI界面或直接使用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
}'
SimpleAI还兼容OpenAI的Python客户端,使得从OpenAI迁移到SimpleAI变得非常简单:
import openai
# 设置API密钥(可以是任意值)
openai.api_key = 'Free the models'
# 指向SimpleAI服务器
openai.api_base = "http://127.0.0.1:8080"
# 使用方式与OpenAI客户端相同
print(openai.Model.list())
completion = openai.Completion.create(model="llama-7B", prompt="Hello everyone this is")
常见问题解决
在使用SimpleAI的过程中,用户可能会遇到一些常见问题。以下是一些解决方案:
-
添加CORS中间件:如果遇到CORS问题,可以创建一个自定义脚本来添加CORS配置。
-
添加
/v1
前缀:某些项目可能需要在端点中包含/v1
前缀,可以通过自定义脚本来实现。 -
添加自定义端点:如果需要添加自定义端点,可以使用FastAPI的路由功能来实现。
贡献和开发
SimpleAI是一个正在进行中的项目,欢迎社区成员的贡献。无论是提交PR、报告问题、改进文档,还是设计酷炫的logo,所有的贡献都是受欢迎的。
对于想要设置开发环境的贡献者,SimpleAI提供了详细的指南。确保系统中安装了make和poetry后,可以运行以下命令来设置开发环境:
make install
这将安装所有开发依赖并配置pre-commit钩子。
结语
SimpleAI为AI开发者和企业提供了一个强大而灵活的工具,使他们能够更好地控制和定制自己的AI服务。通过提供与OpenAI兼容的API,SimpleAI不仅简化了从闭源解决方案到开源替代品的过渡,还为整个AI生态系统带来了更多的创新可能性。
随着AI技术的不断发展,像SimpleAI这样的项目将在推动AI民主化和开放性方面发挥越来越重要的作用。无论你是想要实验新的AI模型,还是需要为特定用例定制AI解决方案,SimpleAI都为你提供了一个理想的起点。
让我们一起拥抱开源AI的未来,探索SimpleAI带来的无限可能性!🌟