LocalAI
LocalAI 是一个免费开源的 OpenAI API 替代品,用于在本地运行 AI 推理服务。它不仅支持文本生成,还支持图像生成、语音合成(TTS)和语音识别(STT),提供完整的多模态 AI 能力。LocalAI 可在消费级硬件上运行,无需 GPU 即可使用,是构建本地 AI 应用的理想后端。
前置要求
- Docker(推荐):安装方法参见 Docker 指南
- 内存:8GB 以上(推荐 16GB+,取决于模型大小)
- 存储:至少 20GB 可用空间(用于模型存储)
- GPU(可选):NVIDIA GPU 可显著加速推理
安装
方法 1:Docker 运行(推荐)
bash
# 基本运行(CPU 模式)
docker run -d --name localai \
-p 8080:8080 \
-v localai-models:/models \
localai/localai:latest
# 验证服务已启动
curl http://localhost:8080/readyz方法 2:Docker Compose
bash
# 创建工作目录
mkdir -p ~/localai && cd ~/localai
# 下载 Docker Compose 配置文件
wget https://raw.githubusercontent.com/mudler/LocalAI/master/docker-compose.yaml
# 启动服务
docker compose up -d
# 查看日志
docker compose logs -f方法 3:带 GPU 支持(NVIDIA CUDA)
bash
# 确认 NVIDIA Container Toolkit 已安装
# 参见:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker
# 运行带 GPU 支持的 LocalAI
docker run -d --name localai \
--gpus all \
-p 8080:8080 \
-v localai-models:/models \
localai/localai:latest-gpu-nvidia-cuda-12
# 验证 GPU 是否被识别
curl http://localhost:8080/system提示
Docker 方式是最简单的安装方式,推荐所有用户使用。GPU 版本需要先安装 NVIDIA Container Toolkit。
模型管理
从模型库安装
LocalAI 提供内置的模型库,可直接下载常用模型:
bash
# 访问 LocalAI 模型库
# 浏览器打开 http://localhost:8080 即可看到模型库界面
# 通过 API 安装模型
curl http://localhost:8080/models/apply -d '{
"id": "huggingface@thebloke__llama-2-7b-chat-gguf__llama-2-7b-chat.Q4_K_M.gguf"
}'
# 列出已安装的模型
curl http://localhost:8080/v1/models手动添加模型
bash
# 将 GGUF 模型文件复制到模型目录
docker cp your-model.gguf localai:/models/
# 或挂载本地目录
docker run -d --name localai \
-p 8080:8080 \
-v /path/to/your/models:/models \
localai/localai:latestAPI 使用
LocalAI 提供与 OpenAI 完全兼容的 API 接口,可作为 OpenAI API 的直接替代。
文本生成(Chat Completions)
bash
# 对话生成
curl http://localhost:8080/v1/chat/completions -d '{
"model": "llama-2-7b-chat",
"messages": [
{"role": "system", "content": "你是一个有帮助的 AI 助手。"},
{"role": "user", "content": "请介绍一下 Debian 操作系统"}
],
"temperature": 0.7
}'
# 流式输出
curl http://localhost:8080/v1/chat/completions -d '{
"model": "llama-2-7b-chat",
"messages": [
{"role": "user", "content": "你好"}
],
"stream": true
}'文本嵌入(Embeddings)
bash
# 生成文本嵌入向量
curl http://localhost:8080/v1/embeddings -d '{
"model": "text-embedding-ada-002",
"input": "Debian 是一个自由的操作系统"
}'图像生成
bash
# 安装图像生成模型后,调用 API 生成图像
curl http://localhost:8080/v1/images/generations -d '{
"prompt": "a beautiful landscape of mountains",
"size": "512x512"
}'语音合成(TTS)
bash
# 文字转语音
curl http://localhost:8080/v1/audio/speech -d '{
"model": "tts-1",
"input": "你好,欢迎使用 LocalAI",
"voice": "alloy"
}' --output speech.mp3语音识别(STT)
bash
# 语音转文字
curl http://localhost:8080/v1/audio/transcriptions \
-F [email protected] \
-F model=whisper-1与其他工具集成
由于 LocalAI 完全兼容 OpenAI API,任何支持自定义 OpenAI API 端点的工具都可以使用 LocalAI 作为后端:
bash
# 在支持 OpenAI API 的工具中,将 API 地址设置为:
# http://localhost:8080/v1
# 示例:使用 Python OpenAI 库
# pip install openaipython
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed" # LocalAI 不需要 API Key
)
response = client.chat.completions.create(
model="llama-2-7b-chat",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)管理与监控
bash
# 查看容器状态
docker ps | grep localai
# 查看日志
docker logs -f localai
# 重启服务
docker restart localai
# 停止服务
docker stop localai
# 删除容器(模型数据保留在 volume 中)
docker rm localai
# 更新到最新版本
docker pull localai/localai:latest
docker stop localai && docker rm localai
docker run -d --name localai \
-p 8080:8080 \
-v localai-models:/models \
localai/localai:latest更新
bash
# Docker 方式更新
docker pull localai/localai:latest
docker stop localai && docker rm localai
# 使用相同的参数重新创建容器
docker run -d --name localai \
-p 8080:8080 \
-v localai-models:/models \
localai/localai:latest
# Docker Compose 方式更新
cd ~/localai
docker compose pull
docker compose up -d常见问题
容器启动后 API 无响应
bash
# 查看容器日志确认是否仍在初始化
docker logs -f localai
# 检查端口是否正确映射
docker port localai
# 确认服务已就绪
curl http://localhost:8080/readyz模型加载失败
bash
# 查看日志中的错误信息
docker logs localai | tail -50
# 确认模型文件格式正确(需要 GGUF 格式)
# 确认模型文件权限正确
docker exec localai ls -la /models/GPU 未被检测到
bash
# 确认 NVIDIA Container Toolkit 已安装
nvidia-container-cli info
# 确认 Docker 能访问 GPU
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
# 使用正确的 GPU 镜像标签
docker run -d --name localai \
--gpus all \
-p 8080:8080 \
-v localai-models:/models \
localai/localai:latest-gpu-nvidia-cuda-12内存不足导致容器被 OOM 终止
bash
# 查看容器是否被 OOM 终止
docker inspect localai | grep -i oom
# 限制容器内存使用
docker run -d --name localai \
-p 8080:8080 \
-v localai-models:/models \
--memory=8g \
localai/localai:latest
# 使用更小的模型以减少内存占用相关链接
LocalAI 配置好了吗? 返回 AI 工具总览 ->