本地跑个大模型,这事我琢磨了大半年。不是装不上,是装完了发现——诶,怎么跟我想的不太一样。
聊天挺溜,一问正经问题就开始跟你绕。倒不全是模型拉胯,更多是缺了层包装。折腾 Ollama 这几个月,踩过的坑和找到的路子,今天一股脑说说。
装完模型不是终点,是麻烦的开始
很多人觉得本地部署就是下个 Ollama,跑个 ollama run 然后开个网页聊天。但装完你就懵了——然后呢?
小团队每天调 GPT-4 处理内部文档,一个月两千多。数据还得从别人服务器过,签了保密协议也不踏实。Ollama 真正值钱的不是省那点钱,是把模型变成你自己的东西,不是租来的。
模型跑起来之后,第一关是 Prompt。本地模型跟 GPT-4 完全是两码事。GPT-4 你随便写两句它就能猜你意思,本地模型不行,写得不清楚它就给你瞎编。我一开始用默认系统提示词,让它「总结合同风险点」,它给我回了一篇抒情散文。后来才发现,本地模型你得给它画好格子,它才知道往哪跳。
再往后才是 Skills 插件。Ollama 去年推了这个功能,可以用 Python 写脚本让模型调外部工具。我写了个读本地 SQLite 的 Skills,让它直接查库出报表,不用复制粘贴。到这一步,模型才算从聊天玩具变成能干活的东西。
安装和选模型这事,没那么简单
安装本身没啥难度,官网下安装包就行。但我得说几个容易忽略的点。
端口冲突是个隐藏坑。Ollama 默认占 11434,你要是本地跑了别的服务占了这个口,启动直接就报错。改端口很简单,设环境变量 OLLAMA_HOST=0.0.0.0:11435 就行。Windows 下记得右键管理员运行,不然符号链接创建不了。
模型选择看硬件。我笔记本 16GB 内存,跑 Llama 3.3 8B 量化版挺顺,DeepSeek-R1 14B 也能跑但会卡。32GB 以上的机器可以试试 DeepSeek-R1 32B 或者 Phi-4 14B。Phi-4 数学推理不错,但中文差点意思。
下载模型慢是老问题了。官方源在国内不太稳,可以用镜像源。我让同事先下好模型然后局域网传,省得每个人重下一遍。模型文件在 ~/.ollama/models 下,拷过去就能用。
ollama pull llama3.3:8b-q4_K_M --mirror https://你的镜像地址
量化版本选 Q4 还是 Q8?我一般用 Q4,速度快体积小,精度损失能接受。代码生成或数学推理这种对精度敏感的场景才换 Q8。
写 Prompt 像教新人干活,得把规矩说清楚
本地模型最让人头疼的就是输出不稳定。同一个问题问三遍能给你三个答案。问题出在系统提示词写得太「佛系」了。
我试了几种写法,最管用的是三段式:角色定义、输出格式、行为约束。举个例子:
你是资深法律助理,专注于合同风险分析。
输出必须遵循以下格式:
- 风险点:一行为一句话
- 严重程度:高/中/低
- 建议修改:具体修改方案
禁止输出无关内容,不要添加解释。
这样写出来的答案结构稳定,不会跑偏。另外 Few-shot 例子特别管用。我在系统提示词后面贴 3 到 5 个示例,模型会照着你的格式来。比单纯说「请按格式输出」效果好得多。
链式思考(CoT)在本地模型上也有用,但别指望它像 GPT-4 那样一步一步推。7B 到 14B 的小模型开 CoT 有时候反而让答案编得更离谱。我只在代码生成和数学题上开,日常文本处理不开。
调 Prompt 这事没有捷径。我花了差不多两周,针对不同任务建了一套 Prompt 模板库。合同分析用合同模板,代码审查用代码模板,效果稳多了。
让模型自己干活,才算是真落地
Prompt 调好了,但每次都要手动粘贴复制还是累。Ollama 的 Skills 插件就是干这个的。你可以写 Python 脚本注册成模型能调的工具。
我写了个会议纪要生成器。流程是模型收到录音转写文本后,调用 Skills 提取要点、生成待办事项,然后写入本地 Markdown 文件。代码量不大:
import ollama
def generate_meeting_notes(transcript):
response = ollama.chat(
model='llama3.3:8b-q4_K_M',
messages=[
{'role': 'system', 'content': '你是会议纪要助手,提取要点和待办事项,输出 Markdown 格式。'},
{'role': 'user', 'content': transcript}
]
)
with open('meeting_notes.md', 'w') as f:
f.write(response['message']['content'])
然后把这个函数注册成 Skills,模型就能在对话里自动调用。社区已经有了不少现成的 Skills,读取 PDF、查天气、发邮件都有。建议先去 Ollama 官网的 Skills 市场看看,别重复造轮子。
LangChain 搭 Agent 其实挺直接的——Ollama 暴露的是 OpenAI 兼容 API,所以 LangChain 拿它当后端几乎不用改代码。我自己试了一把,让 Agent 自己判断“这会儿该调搜索还是查本地数据库”,跑下来效果能看,但说实话,本地模型在 Function Calling 这块跟 GPT-4 比还是差一截。遇到逻辑绕一点的任务,我的建议是干脆把 Tool 调用条件写死在代码里,别指望模型自己选,省得到时候乱跳。
本地部署这事,真别指望一上来就整全套。先把一个模型跑通,Prompt 调到能干活,再加个 Skills,慢慢往外扩就行。我从配环境到真正用上 Agent,前前后后磨了两个月出头。但等你真跑顺了——数据在自己手里、不用看云厂商脸色——那种踏实感,多少钱都换不来。
评论