跳转至

Jan AI 本地助手

为什么要学

Jan 是一款开源的本地 ChatGPT 替代品,专注于离线使用和隐私保护:

  • 完全离线:所有数据和推理都在本地,不需要互联网
  • 开源透明:代码完全开放,可审计安全性
  • 插件生态:通过扩展支持 RAG、工具调用等高级功能
  • 多模型支持:兼容 GGUF、TensorRT-LLM 等多种格式
  • 跨平台:Windows/macOS/Linux 均可使用
  • API 兼容:提供 OpenAI 兼容 API,易于集成

如果你关心数据隐私、需要离线AI助手、或想要一个可定制的本地 ChatGPT 体验,Jan 是最佳选择之一。

核心概念

白话解释

把 Jan 想象成一个"私有的 ChatGPT": - 本地推理引擎:就像在你电脑里安装了一个迷你版 OpenAI - 对话管理:类似 ChatGPT 的对话历史功能,但数据存本地 - 扩展系统:像浏览器插件一样,给 AI 添加新能力 - 模型中心:内置的"应用商店",一键下载各种模型

核心概念对照表

概念说明类比
Thread对话线程,一个独立对话ChatGPT中的一个对话
AssistantAI助手配置(模型+提示+参数)GPTs自定义助手
Model Hub内置模型下载中心应用商店
Extension插件/扩展功能Chrome扩展
Engine推理后端(llama.cpp/TensorRT)不同的引擎品牌
Jan Data Folder本地数据存储目录应用的文档文件夹
NitroJan的推理服务器组件本地API服务

安装配置

下载安装

# 方法1: 官网下载
# 访问 https://jan.ai 下载对应平台安装包

# 方法2: Linux命令行
# Debian/Ubuntu
wget https://github.com/janhq/jan/releases/latest/download/jan-linux-amd64.deb
sudo dpkg -i jan-linux-amd64.deb

# AppImage
wget https://github.com/janhq/jan/releases/latest/download/jan-linux-x86_64.AppImage
chmod +x jan-linux-x86_64.AppImage
./jan-linux-x86_64.AppImage

系统要求

组件最低推荐
RAM8GB16GB+
存储5GB + 模型空间SSD 100GB+
GPU可选NVIDIA 8GB+ / Apple M系列
OSWin10/macOS 12/Ubuntu 20最新LTS版本

首次配置

  1. 启动 Jan
  2. 进入 Settings → Advanced
  3. 设置数据目录路径(存放模型和对话历史)
  4. 确认 GPU 加速状态:
  5. NVIDIA:需要安装 CUDA toolkit
  6. Apple Silicon:默认启用 Metal
  7. 选择默认推理引擎

快速上手

下载模型

  1. 点击左侧 Hub
  2. 浏览推荐模型或搜索
  3. 推荐初始模型:
  4. Llama 3.2 3B(小而快)
  5. Mistral 7B(通用平衡)
  6. Qwen2.5 7B(中文优秀)
  7. 点击 Download,等待完成

开始对话

  1. 点击左侧 Thread(对话)
  2. 创建新对话
  3. 选择模型
  4. 设置系统提示词(可选):
你是一位专业的编程助手,精通Python和数据科学。
请用中文回答,提供简洁实用的代码示例。
  1. 开始聊天

配置助手(Assistant)

创建专属 AI 助手:

  1. 进入 Assistants 面板
  2. 创建新 Assistant
  3. 配置:
  4. 名称:如"代码助手"
  5. 模型:选择要使用的模型
  6. 系统提示:定义角色和行为
  7. 参数:temperature、max_tokens 等

启动 API 服务

Jan 内置 OpenAI 兼容 API:

  1. 进入 Settings → Local API Server
  2. 启动服务器(默认 localhost:1337
  3. 测试:
curl http://localhost:1337/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama-3.2-3b-instruct",
    "messages": [{"role": "user", "content": "Hello"}],
    "temperature": 0.7
  }'

进阶用法

1. 扩展(Extensions)系统

Jan 通过扩展添加功能:

# 查看已安装扩展
Settings  Extensions

# 核心扩展
- inference-nitro-extension  # llama.cpp推理
- inference-tensorrt-extension  # TensorRT加速
- conversational-extension  # 对话管理
- model-extension  # 模型管理

2. 自定义模型导入

// 在Jan数据目录下创建模型配置
// ~/jan/models/my-custom-model/model.json
{
  "id": "my-custom-model",
  "object": "model",
  "name": "My Custom Model",
  "version": "1.0",
  "description": "自定义模型",
  "format": "gguf",
  "settings": {
    "ctx_len": 4096,
    "ngl": 33,
    "embedding": false,
    "n_parallel": 1
  },
  "parameters": {
    "temperature": 0.7,
    "top_p": 0.95,
    "max_tokens": 2048
  },
  "engine": "nitro"
}

将 GGUF 文件放入同一目录即可。

3. 远程模型代理

Jan 也可以连接远程 API:

// 配置OpenAI远程模型
{
  "id": "gpt-4-remote",
  "object": "model",
  "name": "GPT-4 (Remote)",
  "engine": "openai",
  "settings": {
    "api_key": "sk-...",
    "base_url": "https://api.openai.com/v1"
  }
}

4. RAG 知识库

通过扩展实现文档问答:

  1. 安装 RAG 扩展
  2. 上传文档(PDF、TXT、MD)
  3. 在对话中引用文档知识
  4. 模型会根据文档内容回答

5. 多引擎支持

# 引擎选项
nitro:        # 默认, llama.cpp后端
  优点: 兼容性好, 支持CPU
  适合: 通用场景

tensorrt-llm: # NVIDIA TensorRT加速
  优点: 推理速度快2-3倍
  适合: NVIDIA GPU用户

external:     # 外部API
  优点: 无需本地资源
  适合: 连接远程服务

6. 数据目录结构

~/jan/
├── models/           # 模型文件
│   ├── llama-3.2-3b/
│   │   ├── model.json
│   │   └── model.gguf
│   └── mistral-7b/
├── threads/          # 对话历史
│   └── thread-001/
│       └── messages.json
├── assistants/       # 助手配置
│   └── code-helper/
│       └── assistant.json
└── extensions/       # 扩展

7. Python 集成示例

from openai import OpenAI

# 连接Jan本地服务
client = OpenAI(
    base_url="http://localhost:1337/v1",
    api_key="jan"
)

# 流式对话
def chat_stream(prompt, system="你是一个有帮助的助手"):
    stream = client.chat.completions.create(
        model="llama-3.2-3b-instruct",
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": prompt}
        ],
        stream=True,
        temperature=0.7
    )

    full_response = ""
    for chunk in stream:
        content = chunk.choices[0].delta.content
        if content:
            full_response += content
            print(content, end="", flush=True)
    return full_response

response = chat_stream("用Python实现二分查找")

常见问题

Q1: 模型下载速度很慢?

  • Jan 从 HuggingFace 下载,可能需要代理
  • 手动下载 GGUF 文件后放入 ~/jan/models/ 目录
  • 确保有足够的磁盘空间

Q2: GPU 未被识别?

# NVIDIA用户确认CUDA安装
nvidia-smi

# 在Jan设置中确认GPU加速已启用
# Settings → Advanced → GPU Acceleration → ON

# 重启Jan后重新加载模型

Q3: 模型加载后立即崩溃?

  • 内存不足:选择更小的模型或更高量化压缩
  • 减小上下文长度:修改 model.json 中的 ctx_len
  • 减少 GPU layers:降低 ngl

Q4: 如何备份/迁移数据?

# 整个Jan数据目录可以直接复制
cp -r ~/jan ~/jan-backup

# 迁移到新机器
# 复制jan目录到新机器相同路径即可

Q5: 与 Ollama 对比如何选择?

特性JanOllama
GUI完整图形界面命令行为主
易用性适合新手需要终端经验
扩展性插件系统Modelfile定制
API兼容OpenAI兼容OpenAI兼容
性能良好良好
社区增长中较大

参考资源