news 2026/9/10 4:35:36

「AI Agent 全栈开发 50 讲」——从本地模型部署到多智能体系统,一年省 87 万 第4节

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
「AI Agent 全栈开发 50 讲」——从本地模型部署到多智能体系统,一年省 87 万 第4节

第 04 课 | 本地模型部署:用 Ollama 在 RTX 3090 上运行 Llama 3 和 Qwen2

从今天开始,你的电脑有了一个「大脑」。不用给 OpenAI 交钱,不用担心 API 限额,数据完全留在本地。这节课我们把本地大模型跑起来。


为什么要在本地跑模型

在开始之前,你可能有个疑问:现在 OpenAI、通义千问的 API 都挺方便的,为什么还要费劲在本地跑模型?

说实话,如果你只是写个小 demo 玩玩,用云端 API 确实够了。但如果你要做一套真正能上线的产品,本地部署有三个绕不开的优势:

第一,零费用。云端 API 按 token 计费,跑一个多 Agent 系统,一天下来几十上百块很正常。本地模型跑在你的显卡上,电费可以忽略不计。对于我们要做的 50 课教程来说,这意味着你不需要花一分钱 API 费用就能学完全部课程。

第二,数据不出本地。如果你要处理的竞品数据、业务数据涉及商业机密,你肯定不想把它们发到云端 API 上。本地模型完全在你的机器上运行,数据从网卡都不走。

第三,无速率限制。云端 API 通常有 QPM(每分钟请求数)限制。当你跑多 Agent 系统的时候,一个任务可能同时发十几个请求,很容易触发限流。本地模型你想怎么调就怎么调。

当然,本地模型也有局限:受显存限制,目前能跑的最大模型大概在 14B 左右(量化后)。但 7B-14B 的模型对于我们的教程场景已经完全够用了。

你的 RTX 3090 有 24GB 显存,这是本地跑大模型的黄金配置。7B 模型全精度加载大概需要 14GB 显存,14B 模型量化后也能塞进去。


安装 Ollama

Ollama 是目前最流行的本地模型运行工具,一行命令就能跑起一个大模型。

打开浏览器,访问 ollama.com,点击 Download,下载 Windows 安装包。

安装过程很简单,一路 Next 就行。安装完成后,Ollama 会自动在后台启动一个服务。

打开 PowerShell,验证一下:

ollama--version

如果看到版本号输出(比如ollama version 0.x.x),就说明安装成功了。

Ollama 的架构很简单:一个后台服务(server)负责加载和管理模型,一个命令行客户端(client)负责跟服务交互。你在 PowerShell 里敲的命令,其实都是在跟后台服务通信。


下载第一个模型:Qwen2 7B

我们来下载第一个模型。为什么选 Qwen2 7B?因为它的中文能力在同级别模型里是最强的。我们的教程主要处理中文场景,Qwen2 是最佳选择。

ollama pull qwen2:7b

这个模型大概 4.4GB,取决于你的网速,下载可能需要几分钟到十几分钟。

下载完成后,验证一下:

ollama list

你应该能看到qwen2:7b在列表里。


用 Ollama 对话:命令行体验

在正式写代码之前,先用命令行体验一下模型的效果。

ollama run qwen2:7b

进入对话模式后,试试问几个问题:

>>> 你好,请介绍一下你自己 >>> 用 Python 写一个快速排序算法 >>> 分析一下最近 AI Agent 领域的发展趋势

你会发现 Qwen2 7B 的中文回答质量相当不错,逻辑清晰,代码也能写对。

试试调整 temperature 参数,感受不同输出风格的差异:

ollama run qwen2:7b--temperature 0.1# 低 temperature:回答更确定、更保守ollama run qwen2:7b--temperature 0.9# 高 temperature:回答更多样、更有创意

对于我们的竞品分析、数据问答场景,建议用 0.3-0.7 的 temperature。太低了回答太死板,太高了容易胡说八道。

输入/bye退出对话模式。


下载 Llama 3 8B:对比测试

再来下载一个 Llama 3 8B,跟 Qwen2 做个对比。

ollama pull llama3:8b

Llama 3 8B 大概 4.7GB。下载完成后,用同样的问题测试一下:

ollama run llama3:8b
>>> 你好,请介绍一下你自己 >>> 用 Python 写一个快速排序算法 >>> 分析一下最近 AI Agent 领域的发展趋势

你会发现一个有趣的现象:Llama 3 在英文任务上表现更好,但中文回答有时候会「夹带」英文,或者中文表达不够自然。这是因为 Llama 3 的训练数据以英文为主。

下面这张表对比了两个模型在几个维度上的表现:

对比维度Qwen2 7BLlama 3 8B
模型大小4.4 GB4.7 GB
中文能力强,表达自然中等,偶尔夹英文
英文能力很强
代码能力
推理速度约 45 tokens/s约 40 tokens/s
显存占用约 5.5 GB约 6.2 GB
推荐场景中文为主的任务英文为主的任务

结论:对于我们的教程场景(中文竞品分析、中文数据问答),Qwen2 7B 是更好的选择。

但两个模型都下载下来没坏处。后面我们会根据任务类型灵活切换模型。


用 Python 调用 Ollama

命令行体验完了,现在用 Python 来调用模型。

Ollama 提供了一个OpenAI 兼容的 API 接口,这意味着你写的代码可以无缝切换 Ollama 和 OpenAI。这个设计非常重要,后面我们会反复用到。

Ollama 的 API 默认运行在http://localhost:11434

# ollama_chat.py - 用 Python 调用 Ollama# AI Agent 全栈开发 50 讲 - 第 04 课importrequestsimportjsondefchat(model:str,messages:list,temperature:float=0.7)->str:"""调用 Ollama 的 OpenAI 兼容 API Args: model: 模型名称,如 "qwen2:7b" messages: 消息列表,格式为 [{"role": "user", "content": "..."}] temperature: 温度参数,0-1 之间 Returns: 模型的回复文本 """url="http://localhost:11434/v1/chat/completions"payload={"model":model,"messages":messages,"temperature":temperature,"stream":False}response=requests.post(url,json=payload,timeout=120)response.raise_for_status()result=response.json()returnresult["choices"][0]["message"]["content"]defmain():# 测试 Qwen2print("="*50)print("测试 Qwen2 7B")print("="*50)messages=[{"role":"system","content":"你是一个专业的市场分析师,擅长竞品分析和行业洞察。"},{"role":"user","content":"用 3 句话总结一下 AI Agent 的核心价值。"}]reply=chat("qwen2:7b",messages)print(f"\nQwen2 回复:\n{reply}")# 测试 Llama 3print("\n"+"="*50)print("测试 Llama 3 8B")print("="*50)reply=chat("llama3:8b",messages)print(f"\nLlama 3 回复:\n{reply}")if__name__=="__main__":main()

运行:

uv run python ollama_chat.py

你应该能看到两个模型分别输出了回复。注意看中文表达质量的差异——Qwen2 明显更自然。

这段代码虽然简单,但它奠定了整个教程的基础。后面所有的 Agent 调用、Tool Calling、ReAct 推理,底层都是通过类似的 API 调用完成的。


显存监控与性能测试

跑模型的时候,你得知道显存够不够用、速度够不够快。

打开一个新的 PowerShell 窗口,运行:

nvidia-smi

你会看到类似这样的输出:

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 560.94 Driver Version: 560.94 CUDA Version: 12.6 | |-------------------------------+----------------------+----------------------+ | GPU Name Display Use | Memory-Usage | GPU-Util | |-------------------------------+----------------------+----------------------+ | 0 NVIDIA GeForce Off | 5500 MiB / 24576 MiB | 85% | | RTX 3090 | | | +-------------------------------+----------------------+----------------------+

关键看两个数字:

  • Memory-Usage:当前显存占用。跑 Qwen2 7B 大概占 5.5GB,跑 Llama 3 8B 大概占 6.2GB。
  • GPU-Util:GPU 利用率。模型在推理的时候会接近 100%。

你的 3090 有 24GB 显存,跑一个 7B 模型还剩 18GB,完全可以再跑一个嵌入模型(后面会用到)。

下面这个脚本可以测试模型的推理速度:

# benchmark.py - 模型性能测试# AI Agent 全栈开发 50 讲 - 第 04 课importrequestsimporttimedefbenchmark(model:str,prompt:str)->dict:"""测试模型推理速度"""url="http://localhost:11434/v1/chat/completions"payload={"model":model,"messages":[{"role":"user","content":prompt}],"temperature":0.7,"stream":False}start=time.time()response=requests.post(url,json=payload,timeout=120)elapsed=time.time()-start result=response.json()content=result["choices"][0]["message"]["content"]tokens=len(content)# 粗略估算 token 数(中文约 1 字 = 1.5 token)return{"model":model,"output_length":len(content),"elapsed_seconds":round(elapsed,2),"tokens_per_second":round(tokens/elapsed,1),}defmain():prompt="用 200 字介绍一下人工智能的发展历程。"print("模型性能测试")print("="*50)print(f"测试 Prompt:{prompt}")print("="*50)formodelin["qwen2:7b","llama3:8b"]:print(f"\n测试模型:{model}")result=benchmark(model,prompt)print(f" 输出长度:{result['output_length']}字符")print(f" 耗时:{result['elapsed_seconds']}秒")print(f" 推理速度:{result['tokens_per_second']}tokens/s")if__name__=="__main__":main()

运行:

uv run python benchmark.py

在我的 RTX 3090 上,测试结果大概是:

模型输出长度耗时推理速度
Qwen2 7B~200 字符~4.5 秒~45 tokens/s
Llama 3 8B~200 字符~5.0 秒~40 tokens/s

这个速度对于我们的场景完全够用。一个竞品分析报告可能需要调用模型 10-20 次,总耗时也就 1-2 分钟。


多模型管理

你下载的模型都存在 Ollama 的默认目录里。Windows 上通常是C:\Users\你的用户名\.ollama\models

常用管理命令:

# 查看已下载的模型ollama list# 删除不需要的模型(释放磁盘空间)ollamarmllama3:8b# 查看模型详情ollama show qwen2:7b

如果你的磁盘空间紧张,可以只保留 Qwen2 7B,后面需要其他模型的时候再下载。


常见问题排查

问题 1:模型下载很慢

Ollama 默认从海外服务器下载,国内可能比较慢。你可以设置代理:

$env:HTTPS_PROXY ="http://127.0.0.1:7890"ollama pull qwen2:7b

或者直接用国内镜像源(如果有的话)。

问题 2:显存不足

如果你同时跑了太多模型,或者其他程序占用了显存,可能会报 OOM 错误。解决方法:

# 查看显存占用nvidia-smi# 关闭不需要的程序(比如游戏、视频编辑软件)# 或者卸载不用的模型ollamarm不需要的模型

问题 3:Ollama 服务没启动

如果 Python 调用报 Connection Refused,可能是 Ollama 服务没启动:

# 手动启动 Ollama 服务ollama serve

通常 Ollama 安装后会设置为开机自启动。如果没有,可以在 Windows 服务管理器里把 Ollama 设置为自动启动。


小结与预告

这节课我们完成了三件重要的事:

  1. 安装了 Ollama,有了本地运行大模型的能力
  2. 下载了 Qwen2 7B 和 Llama 3 8B,对比了它们的中文能力
  3. 用 Python 调用了模型,封装了一个兼容 OpenAI API 的 chat 函数

现在你的 RTX 3090 上有了一个能用的「大脑」。后续所有的 Agent 推理、分析、生成,都会调用这个本地模型。

下一节课,我们会讲解模型量化技术——怎么用 GGUF 量化让 14B 的模型也能在你的 24GB 显存上流畅运行。更大的模型意味着更强的推理能力。

我们下一课见。


系列教程导航

上一篇:第 03 课 | 环境搭建:Python 3.12 + UV 虚拟环境 + 项目骨架

下一篇:第 05 课 | 模型量化与优化:让 14B 模型也能流畅运行

本系列共 50 课,持续更新中。关注我不迷路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 4:34:43

微信里装进Claude Code:Grix实现AI编程与群聊协作实战

# 把 Claude Code 装进“微信”:用 Grix 随时随地指挥 AI 编程与群聊协作实战接触 Claude Code 一段时间后,我最大的感受是:这玩意儿在电脑前确实能打,可一旦离开工位就抓瞎。命令行工具绑死在终端里,手机上没法直接调…

作者头像 李华
网站建设 2026/9/10 4:32:27

Claude Code Router 接入 LINE:AgentClaw 消息接力完整配置指南

Claude Code Router 接入 LINE:AgentClaw 消息接力完整配置指南 【免费下载链接】claude-code-router One local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control. 项目地址: http…

作者头像 李华
网站建设 2026/9/10 4:31:45

基于树莓派与智能算法的空调省电助手实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 4:27:18

Agent开发核心思维:目标驱动、感知-决策-行动循环与反馈迭代

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华