第 1 课
装好 DeepTutor,接上本地模型跑第一次问答
用 llama serve 起本地 OpenAI 兼容模型,在虚拟环境里安装 deeptutor[full]==1.7.0,用 init --non-interactive 初始化运行目录、module list 查看模块,写 setup.json 接上 llama_cpp 并用 config apply --check 校验,再用 doctor --online 体检、run chat 跑通第一次问答,看清小模型的错误。
课程目录第 1 / 3 课
学习位置仅保存在当前浏览器,有效期 180 天。
图文教材
本课对照的官方页面:从 PyPI 安装、仅 CLI 安装、Provider 配置、AGENT_SETUP.md。命令与输出均在 Linux(Python 3.13、DeepTutor 1.7.0)上实测,输出为节选。
这一课把 DeepTutor 1.7.0 装进独立的虚拟环境,用 --non-interactive 方式初始化,再通过一份 setup.json 接上本机 llama.cpp 跑的小模型。全程不需要任何云端 API Key。如果你已有 OpenAI、DeepSeek 等 Key,第 4 步写明了换成云端模型要改哪几行。
第 1 步:准备一个本地 OpenAI 兼容模型
DeepTutor 自己不带模型,它调用的是任意 OpenAI 兼容接口。本课使用 llama.cpp 官方的 llama serve(安装方法见 llama.cpp README),加载 Gemma 4 E2B 的 4-bit 量化版本:
llama serve -hf unsloth/gemma-4-E2B-it-GGUF:Q4_K_M \
--port 8080 -c 32768 --alias gemma-4-e2b --jinja
另开一个终端确认服务已就绪:
curl -s http://localhost:8080/v1/models
返回的 JSON 里能看到 gemma-4-e2b 就可以了。--alias 决定了接口里的模型名,后面写配置时要和它一致。
实测说明:本课使用的就是这个模型文件(本机已缓存,用
-m直接指向 GGUF 文件启动)。2B 级小模型足够跑通流程,但第 3 课会看到它在复杂智能体任务上的局限。
第 2 步:安装 DeepTutor 1.7.0
官方要求 Python 3.11–3.14。1.7.0 起改成模块化分发:deeptutor 只含核心 CLI/SDK,deeptutor[full] 才包含 Web 应用和全部功能模块。本课装完整版:
mkdir -p my-deeptutor && cd my-deeptutor
python3 -m venv .venv
source .venv/bin/activate
python -m pip install "deeptutor[full]==1.7.0"
pip show deeptutor | head -n 2
对照结果:
Name: deeptutor
Version: 1.7.0
实测在普通云主机上安装耗时约 1 分钟。注意 1.7.0 没有 deeptutor --version 选项,查版本请用 pip show。
第 3 步:非交互初始化运行目录
DeepTutor 把所有设置和数据放在「运行目录」(runtime home)里。官方默认是你启动命令的当前目录,也可以用环境变量 DEEPTUTOR_HOME 显式指定。这里用显式写法,免得在别的目录执行命令时找不到配置:
export DEEPTUTOR_HOME="$PWD"
deeptutor init --non-interactive
对照结果(节选):
Seeded default personas: peer, research-assistant, teacher
{
"ok": true,
"status": "initialized",
"next_step": "deeptutor config apply setup.json"
}
不加 --non-interactive 时,deeptutor init 会逐项询问端口、LLM、Embedding 和搜索服务。下面改用配置文件的方式,便于复制和复现。
先看看装了哪些功能模块:
deeptutor module list
实测 [full] 安装后,chat、knowledge、questions、solve、research、memory、notebook 等模块都显示为 installed 且 ready。parser-docling、parser-markitdown 等文档解析扩展和 renderer-manim 默认不安装,要用时再按官方文档另行安装。
第 4 步:用 setup.json 接上本地模型
列出 DeepTutor 认识的 Provider:
deeptutor config providers
在 llm 一栏里能找到 llama_cpp,它的默认地址是 http://localhost:8080/v1,认证方式为 local,也就是不需要 Key。新建 setup.json:
{
"llm": {
"provider": "llama_cpp",
"model": "gemma-4-e2b",
"base_url": "http://localhost:8080/v1"
}
}
先校验,再写入:
deeptutor config apply setup.json --check
deeptutor config apply setup.json
对照结果:
{ "ok": true, "status": "validated", "sections": ["llm"] }
{ "ok": true, "status": "applied", "sections": ["llm"] }
(输出原本是多行 JSON,这里压成了一行。)
如果要换成云端模型,按 AGENT_SETUP.md 的规则改两处:provider 和 model 换成对应的值,再加一行 "api_key_env": "OPENAI_API_KEY",写的是环境变量的名字。setup.json 里不能直接写 Key,写了会被拒绝。另外,DeepTutor 不读取 .env 文件,配置统一存放在 data/user/settings/ 下。
第 5 步:体检,然后问第一个问题
deeptutor config show
deeptutor doctor --online
config show 会显示当前的 LLM、Embedding 和搜索配置,API Key 打码显示。doctor --online 的对照结果(表格边框省略):
PASS LLM configuration Active model: gemma-4-e2b (llama_cpp).
PASS LLM credentials The selected local provider does not
require an API key.
PASS LLM endpoint http://localhost:8080
PASS Runtime storage Writable: .../my-deeptutor
SKIP RAG prerequisites No knowledge bases are configured.
PASS Provider response The model returned a response.
Required checks passed.
去掉 --online 时只做本地检查,不会真的调用模型。接着用 run 发起一轮对话,-l zh 指定用中文回答:
deeptutor run chat "用三句话解释什么是导数,最后给一个生活中的例子。" -l zh
实测输出(节选,约 27 秒,公式两侧的 $ 已省略):
导数是用来衡量函数在某一点的瞬时变化率的数学概念。……
生活中的例子:想象你正在开车……那么在某一时刻的导数 v'(t)
就是你那一刻的瞬时速度……
session=unified_1793…_6558f4d7 capability=chat rounds=1 tokens=3.2k
注意这里的错误:速度函数 v(t) 的导数是加速度,不是速度。小模型「张口就来」是常态,下一课就用知识库让它按你的笔记作答。最后一行的 session= 是会话 ID,第 3 课会用它接着聊。
小结
- 1.7.0 要装
deeptutor[full]才有完整功能,版本用pip show deeptutor查。 init --non-interactive加上config apply setup.json可以完全脚本化配置;Key 只能通过api_key_env写环境变量名。doctor --online能一次确认配置、连通性和模型是否有响应。
本课资料
适用环境
- 网页
- Linux
- macOS
- Windows
