跳转至

LocalAI 一键部署本地 AI

一句话概述

LocalAI 是一个免费、开源的 AI 引擎,兼容 OpenAI/Anthropic API,可以在消费级硬件上(不需要 GPU)运行 LLM 文本生成、图像生成、语音转文字、文字转语音等 36+ 种 AI 能力,真正做到"AI 不出门,数据不上云"。

核心知识点表格

知识点说明
项目地址https://github.com/mudler/LocalAI
最新版本v3.11.0(2026年)
核心特点不需要 GPU、兼容 OpenAI API、一键 Docker 部署
API 兼容OpenAI、Anthropic、ElevenLabs
支持后端llama.cpp、vLLM、transformers、whisper、diffusers、MLX 等 36+
支持功能文本生成、图像生成、TTS、STT、嵌入、视觉、视频
硬件要求最低 8GB 内存(CPU 即可运行)
许可证MIT
GPU 支持NVIDIA CUDA、AMD ROCm、Intel SYCL、Apple Metal、Vulkan

安装与配置

方式一:Docker 一键启动(最简单)

# 最简单的启动方式,一行命令搞定
docker run -ti \
  --name local-ai \         # 容器名称
  -p 8080:8080 \             # 映射端口(本机 8080 → 容器 8080)
  localai/localai:latest     # 使用最新版镜像

# 带 GPU 加速(NVIDIA)
docker run -ti \
  --name local-ai \
  --gpus all \               # 挂载所有 NVIDIA GPU
  -p 8080:8080 \
  localai/localai:latest-gpu-nvidia-cuda-12  # CUDA 12 版镜像

# AIO(All-in-One)版本:自带预装模型,开箱即用
docker run -ti \
  --name local-ai \
  -p 8080:8080 \
  localai/localai:latest-aio-cpu  # CPU 版 AIO 镜像

# AIO + GPU 版本
docker run -ti \
  --name local-ai \
  --gpus all \
  -p 8080:8080 \
  localai/localai:latest-aio-gpu-nvidia-cuda-12  # GPU 版 AIO

方式二:macOS 安装

# macOS 用户可以下载 DMG 安装包
# 从 GitHub Releases 页面下载:
# https://github.com/mudler/LocalAI/releases

# 安装后需要解除 macOS 安全限制
sudo xattr -d com.apple.quarantine /Applications/LocalAI.app  # 移除隔离标记

方式三:Docker Compose(生产环境推荐)

# docker-compose.yml
version: '3.8'

services:
  localai:
    image: localai/localai:latest-aio-gpu-nvidia-cuda-12  # GPU AIO 版
    ports:
      - "8080:8080"           # API 端口
    volumes:
      - ./models:/build/models  # 模型目录持久化
    environment:
      - THREADS=8              # CPU 线程数
      - CONTEXT_SIZE=4096      # 上下文窗口大小
      - DEBUG=false            # 关闭调试模式
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all       # 使用所有 GPU
              capabilities: [gpu]
    restart: unless-stopped    # 崩溃后自动重启
docker compose up -d  # 后台启动

基本使用

安装模型(通过 Web UI)

# 启动后打开浏览器访问 http://localhost:8080
# 在 Web UI 的模型库中可以一键安装各种模型

# 或者通过 API 安装模型
curl http://localhost:8080/models/apply \
  -H "Content-Type: application/json" \
  -d '{
    "url": "github:go-skynet/model-gallery/llama3.1-8b-instruct.yaml"
  }'
# url 指定模型库中的模型定义文件

文本对话(兼容 OpenAI API)

import openai  # 直接使用 OpenAI 官方 SDK

# 把 API 地址指向本地 LocalAI
client = openai.Client(
    base_url="http://localhost:8080/v1",  # LocalAI 地址
    api_key="not-needed"                   # 不需要 API Key
)

# 发送对话请求(和 OpenAI 用法完全一样)
response = client.chat.completions.create(
    model="llama-3.1-8b-instruct",  # 已安装的模型名
    messages=[
        {"role": "system", "content": "你是一个有帮助的AI助手。"},
        {"role": "user", "content": "什么是微生物组学?"}
    ],
    temperature=0.7  # 控制回答的随机性
)

print(response.choices[0].message.content)  # 输出回答

生成文本嵌入(用于 RAG)

# 生成文本向量(embedding),用于语义搜索
response = client.embeddings.create(
    model="text-embedding-ada-002",  # 嵌入模型名
    input="宏基因组学是研究环境样本中所有微生物基因组的学科"  # 要编码的文本
)

embedding = response.data[0].embedding  # 获取向量
print(f"向量维度: {len(embedding)}")    # 打印维度数

图像生成

# 生成图像(需要先安装 Stable Diffusion 模型)
response = client.images.generate(
    model="stablediffusion",     # 图像生成模型
    prompt="a cute cat sitting on a laptop, digital art",  # 描述
    size="512x512",              # 图像尺寸
    n=1                          # 生成 1 张
)

print(response.data[0].url)  # 获取生成图像的 URL

语音转文字(STT)

# 语音转文字(需要 whisper 模型)
with open("audio.wav", "rb") as audio_file:  # 打开音频文件
    transcript = client.audio.transcriptions.create(
        model="whisper-1",       # Whisper 语音识别模型
        file=audio_file,         # 音频文件
        language="zh"            # 指定中文
    )

print(transcript.text)  # 输出识别结果

高级用法

Function Calling(函数调用)

import json  # JSON 处理

# 定义可调用的工具/函数
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_gene_info",           # 函数名
            "description": "查询基因信息",      # 描述
            "parameters": {
                "type": "object",
                "properties": {
                    "gene_name": {
                        "type": "string",
                        "description": "基因名称,如 BRCA1"
                    }
                },
                "required": ["gene_name"]       # 必填参数
            }
        }
    }
]

# 发送带工具的请求
response = client.chat.completions.create(
    model="llama-3.1-8b-instruct",
    messages=[{"role": "user", "content": "查一下 TP53 基因的信息"}],
    tools=tools,            # 传入工具定义
    tool_choice="auto"      # 让模型自动决定是否调用
)

# 检查模型是否调用了函数
if response.choices[0].message.tool_calls:
    call = response.choices[0].message.tool_calls[0]
    print(f"模型调用了: {call.function.name}")            # 函数名
    print(f"参数: {json.loads(call.function.arguments)}")  # 参数

多节点分布式推理

# LocalAI 支持 P2P 联邦模式,多台机器组成集群

# 节点 1(主节点)
docker run -ti \
  -p 8080:8080 \
  -e LOCALAI_P2P=true \           # 启用 P2P 模式
  -e LOCALAI_P2P_TOKEN=my-token \ # 集群令牌(所有节点必须相同)
  localai/localai:latest

# 节点 2(工作节点,在另一台机器上)
docker run -ti \
  -p 8080:8080 \
  -e LOCALAI_P2P=true \
  -e LOCALAI_P2P_TOKEN=my-token \  # 与主节点相同的令牌
  localai/localai:latest

# 集群会自动发现对方,智能路由请求

MCP 支持(Agent 能力)

# LocalAI v3.10.0+ 支持 MCP 协议
# 让 AI Agent 可以调用外部工具

# 在配置文件中启用 MCP
# models/my-agent.yaml
# name: my-agent
# backend: llama-cpp
# parameters:
#   mcp:
#     - tool: web_search
#       endpoint: http://searxng:8080

常见报错与解决

报错信息原因解决方法
model not found模型未安装或名称错误在 Web UI 安装模型,或检查模型名是否正确
out of memory内存/显存不足使用更小的模型或增加内存/显存
connection refused at 8080服务未启动检查 Docker 容器是否在运行:docker ps
slow inferenceCPU 模式速度慢正常现象,建议使用 GPU 加速或量化模型
macOS 无法打开苹果安全限制运行 sudo xattr -d com.apple.quarantine /Applications/LocalAI.app
GPU not detectedDocker 未配置 GPU确保安装了 nvidia-container-toolkit 并使用 --gpus all

速查表

# === LocalAI 常用命令速查 ===

# Docker 一键启动(CPU)
docker run -p 8080:8080 localai/localai:latest

# Docker 启动(GPU)
docker run --gpus all -p 8080:8080 localai/localai:latest-gpu-nvidia-cuda-12

# AIO 预装模型版
docker run -p 8080:8080 localai/localai:latest-aio-cpu

# 查看已安装模型
curl http://localhost:8080/v1/models

# 对话 API
curl http://localhost:8080/v1/chat/completions \
  -d '{"model":"llama-3.1-8b-instruct","messages":[{"role":"user","content":"Hello"}]}'

# 嵌入 API
curl http://localhost:8080/v1/embeddings \
  -d '{"model":"text-embedding-ada-002","input":"hello world"}'

# 安装模型
curl http://localhost:8080/models/apply \
  -d '{"url":"github:go-skynet/model-gallery/llama3.1-8b-instruct.yaml"}'

# Web UI
# 浏览器打开 http://localhost:8080

与同类工具对比

特性LocalAIOllamaLM StudiovLLM
核心定位全能 AI 引擎轻量 LLM 运行器桌面 LLM 应用高性能推理服务
API 兼容OpenAI + Anthropic + ElevenLabsOpenAIOpenAIOpenAI
多模态文本+图像+语音+视频文本+图像文本+图像文本
GPU 要求不需要不需要不需要推荐
分布式P2P 联邦不支持不支持支持
图像生成支持(Stable Diffusion)不支持不支持不支持
TTS/STT支持不支持不支持不支持
上手难度中等非常简单非常简单较难

选择建议:如果你只需要跑 LLM 聊天,Ollama 最简单。如果你需要文本+图像+语音的全能方案,LocalAI 是唯一选择。生产环境高并发推荐 vLLM 或 SGLang。