news 2026/8/26 13:46:12

基于本地模型的AI编程学习:从Prompt设计到Agent实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于本地模型的AI编程学习:从Prompt设计到Agent实践

在实际开发中,把 AI 当作学习工具,已经不再是“要不要用”的问题,而是“怎么用才不会变成复制粘贴”。Hacker News 上经常有开发者发起同一个讨论:How are you using AI to learn? 翻看评论区会发现,真正能坚持下来的人很少直接让 AI 念答案,更多是让 AI 参与需求拆解、代码生成、测试验证和源码阅读。二者区别在于:前者把 AI 当成“答案搜索框”,后者把 AI 当成“可交互的结对开发者”。学习效果的差异,来自“有没有验证”。

接下来按一条可复现主线展开:先用本地模型和 IDE 插件搭一个 AI 学习工作台,再写一个“AI 学习助手”命令行工具,接着用开源项目练习 AI Agent 开发,最后补充常见的幻觉问题和排查路径。整条路线适合已经会一点编程、想用 AI 加速学习新技术的开发者,也适合正在准备 AI 工程实践的人。

1. 先想清楚:AI 学习工具应该解决哪一层问题

在动手写代码之前,先明确 AI 在学习流程里的定位,否则后面容易变成“AI 写一段、人复制一段、项目跑不起来”。

1.1 三种典型用法:问答、结对、Agent

第一种是问答式学习。用户向 AI 提问,AI 返回概念解释。这种方式适合入门,但如果不要求 AI 结构化输出,很容易得到又长又空的说明。很多人在用 AI 学编程时,只问一句“什么是装饰器”,得到的回答往往是教科书式定义,看完还是不会用。

第二种是结对式学习。用户给 AI 一个具体需求,AI 生成代码和测试,用户在本地运行、观察结果、根据报错继续追问。这种方式的重点不是代码本身,而是“运行 + 修改”的循环。比如让 AI 写一个解析 JSON 文件的脚本,然后自己改路径、跑测试、看日志,理解每一步为什么成立。

第三种是 Agent 式学习。用户给 AI 一个目标,AI 调用脚本、读写文件、执行命令,自动完成一个小任务。适合练习工具链和工程化能力。比如构造一个定时抓取本地笔记、生成复习卡片的流程,需要文件读写、进程管理、模型调用和异常处理,一套下来能学到很多工程细节。

用法典型输入典型输出适合阶段主要风险
问答式“什么是依赖注入?”概念解释入门容易堆概念,没有动手
结对式“用 Python 写一个读取 CSV 并生成统计结果的脚本”代码 + 运行说明动手阶段代码需要验证
Agent 式“定时抓取本地笔记,生成复习卡片”自动化脚本或工具进阶链路长,难排查

1.2 为什么“可验证结果”比“直接告诉你”更重要

AI 是概率模型,输出看起来流畅,不代表内容正确。尤其在学习编程时,AI 可能会给出一个旧版本 API 的写法,也可能把两个框架的概念糅在一起。如果只读答案不运行,你无法发现错误;如果每次拿到代码就运行,你会立刻看到错误信息,然后带着具体问题再问 AI,这样更容易学到东西。

一个最小验证闭环是:

  1. 把需求写清楚:输入是什么,输出是什么。
  2. 让 AI 给出可运行的代码或命令。
  3. 在本地执行。
  4. 拿到实际输出或报错。
  5. 把报错重新交给 AI,进入下一次循环。

把“AI 说了什么”替换成“程序实际输出了什么”,是 AI 学习最重要的心法。很多开发者学得快,不是因为天赋,而是他们愿意让代码多跑几次,让报错信息多出现几次。

1.3 给 AI 设置边界:它是草案生成器,不是最终答案

不要在最开始就要求 AI“一次写对”。更合理的做法是:把 AI 输出视为第一版草案,自己负责审查依赖、运行、边界条件。学习 Java 时,让 AI 生成 Spring Boot 项目的同时,你自己看pom.xml的版本;学习 Python 时,让 AI 给出装饰器示例,自己再写一个带参数的装饰器验证理解。

注意:学习场景中,AI 可以帮你缩小问题范围,但“程序能不能跑”“你理解不理解”仍然要由你自己确认。AI 可以写出能运行的代码,但无法替你形成肌肉记忆和问题直觉。

2. 环境准备:用本地模型和 IDE 插件搭一个可调试的学习工作台

如果只想快速体验,可以直接使用在线 AI 服务。但要真正把 AI 嵌入学习流程,推荐在本机准备一套可调试的环境。本地模型的好处是免费、可离线、能看 Prompt 如何影响输出,也更适合练习模型接口调用。

2.1 工具选型

下面这套环境适合 Python 开发者,也适合对本地模型感兴趣的人:

  • Python 3.10 或更高版本。
  • Ollama,用来管理并运行本地大模型。
  • 一个对话模型,例如 qwen2.5:7b。
  • IDE,推荐 VS Code、IntelliJ IDEA 或 PyCharm。
  • 一个 AI 编程插件,例如 Continue、GitHub Copilot,或 Cursor 自带的 AI 能力。

这套方案不是唯一解。如果你正在学习 Spring AI,也可以把 Java 和 Maven 加入环境;如果你更习惯 Cursor,可以跳过插件安装,直接用 Cursor 的对话能力。目标是让“写代码、跑测试、问 AI、看报错”在同一个窗口里完成。

2.2 安装并启动 Ollama,拉取一个可用模型

在 macOS 上,如果安装了 Homebrew,可以执行:

brew install ollama

在 Linux 或 Windows 上,安装方式参考 Ollama 官方文档。安装完成后,先启动服务:

ollama serve

服务默认监听 11434 端口。再打开一个新终端,拉取模型:

ollama pull qwen2.5:7b

这里以 qwen2.5:7b 为例。如果网络或硬件条件不允许,也可以换成 llama3.1:8b 或其它 Ollama 支持的小模型。拉取完成后,检查模型列表:

ollama list

正常输出会包含 qwen2.5:7b。接着验证 HTTP 接口是否可用:

curl http://localhost:11434/api/tags

如果返回 JSON,并且models数组里能看到 qwen2.5:7b,说明本地模型服务已经准备好。

2.3 在 IDE 里接入 AI 编程插件

以 VS Code 为例,打开扩展市场,搜索 Continue,安装后就能在侧边栏打开 AI 对话窗口。这个窗口可以直接读取当前文件内容,适合“选中一段代码,让 AI 解释”的场景。

在 IDEA 或 PyCharm 中,可以安装 AI Assistant 或国内模型厂商提供的插件。不同插件的快捷键不一样,但核心用法一致:把当前代码上下文、报错信息一起发送给 AI,而不是只发一句话。报错信息越完整,AI 回答越有针对性。

Cursor 适合从零写项目,它的 Chat 和 Tab 补全能力也可以用来学习。建议不要同时装太多插件,一个能读代码、能带上下文的就够用。

2.4 学习环境检查清单

在进入下一节之前,逐项确认:

检查项命令或操作预期结果
Python 版本python3 --version3.10 或更高
Ollama 版本ollama --version正常输出版本号
Ollama 服务运行中curl http://localhost:11434/api/tags返回 JSON
模型已拉取ollama list列表包含 qwen2.5:7b
requests 已安装pip install requests成功安装

3. 最小实践:写一个“AI 学习助手”命令行程序

环境准备好了,接下来用一个最小程序实践“让 AI 输出可验证结果”。这个程序的目标是:用户输入一个知识点,AI 返回四部分内容:一句话解释、类比、最小可运行示例、自测题。

3.1 需求拆解与输入输出定义

先不要急着让 AI 生成代码,先自己定义好输入输出:

  • 输入:一个知识点名称,例如Python 装饰器
  • 输出:四段文本,并且必须包含“自测题”。
  • 运行方式:命令行参数,或交互式输入。
  • 技术栈:Python + requests,调用本地 Ollama 接口。

这样的定义可以帮助后续校验 AI 输出是否完整,也方便测试。

3.2 代码实现:用 requests 调用本地模型

创建目录:

mkdir ai-learning-assistant cd ai-learning-assistant

创建requirements.txt

requests>=2.31.0

创建main.py

import sys import requests OLLAMA_URL = "http://localhost:11434/api/chat" MODEL = "qwen2.5:7b" SYSTEM_PROMPT = ( "你是一名技术导师。回答必须包含四个部分:" "1. 一句话解释;" "2. 一个类比;" "3. 一个最小可运行示例;" "4. 两道自测题。" "如果用户要求代码,请给出可以直接运行的代码。" ) def build_messages(topic: str) -> list: return [ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": f"请讲解知识点:{topic}"}, ] def ask_ai(topic: str) -> str: payload = { "model": MODEL, "messages": build_messages(topic), "stream": False, } resp = requests.post(OLLAMA_URL, json=payload, timeout=120) resp.raise_for_status() data = resp.json() return data["message"]["content"].strip() def main(): if len(sys.argv) > 1: topic = " ".join(sys.argv[1:]) else: topic = input("请输入要学习的知识点:") print("AI 正在组织学习材料...\n") content = ask_ai(topic) print(content) if __name__ == "__main__": main()

这段代码做了三件关键事情:

  1. 通过SYSTEM_PROMPT给 AI 设定输出结构,避免回答跑题。
  2. 通过requests.post调用 Ollama 的/api/chat接口,把用户输入放在messages里。
  3. 使用timeout=120,避免本地模型推理太慢时程序无限等待。

如果想让输出更稳定,可以在payload中增加temperature参数,例如:

"temperature": 0.3

temperature越低,输出越保守,适合学习场景;越高越有创造性,适合头脑风暴。

3.3 关键参数说明

参数作用学习场景建议
model指定使用哪个模型先选本地可跑的小模型,再逐步切换
messages传递多条对话消息把 system 指令放到最前面
stream是否流式返回命令行演示先设为False,方便调试
timeout请求超时时间本地模型 7B 推理可能超过 30 秒,设 120
temperature控制输出随机性学习场景建议 0.3 左右,降低幻觉

3.4 运行与验证

运行:

python main.py "Python 装饰器"

预期输出是一个包含四个部分的回答。例如“一句话解释”和“自测题”都会出现。如果只输出了大段概念,说明SYSTEM_PROMPT没生效,可以检查是否传给 Ollama 时被截断。

再运行一个带参数的命令:

python main.py "SQL 索引"

如果程序正常运行,说明输入输出链路通。此时可以继续加入一个最简单的校验脚本test_output.py

from main import ask_ai content = ask_ai("Python 装饰器") assert "自测题" in content, "AI 输出缺少自测题" assert len(content) > 100, "AI 输出太短" print("输出结构符合预期")

注意:运行测试前,确认ollama serve还在运行。

4. 用开源项目学习 AI Agent 开发:my_ai_town 的阅读路径

命令行工具只能训练“调用 API”的技能。想进一步学习 AI Agent 开发,建议找一个真实开源项目,把阅读和修改当成学习材料。材料中的my_ai_town正是一个可以放进这条路径的参考仓库。

4.1 为什么开源项目比教程更适合练习

教程通常会把复杂项目拆成“正确路线”,但真实项目里会有大量兼容代码、历史版本和边界处理。阅读开源项目能训练三件事:

  1. 快速定位关键入口。
  2. 理解模块之间的调用关系。
  3. 在现有代码上做小改动,而不影响整体结构。

对 AI 学习来说,真实开源项目也是最好的验证环境:AI 说的架构,必须和仓库里的文件对得上;AI 给的修改方案,必须在真实代码里跑通。

4.2 先跑起来:克隆、看 README、找入口

克隆仓库:

git clone https://github.com/mewamey/my_ai_town.git cd my_ai_town

不要急着读所有代码,先看 README。README 通常包含项目简介、依赖列表、启动命令。按 README 装好依赖后,执行启动命令。不同项目命令差异很大,如果是 Python 项目,常见流程是:

pip install -r requirements.txt python main.py

如果是 Node 项目,常见流程是:

npm install npm run dev

第一次启动只要能正常起来,就算完成了一部分。启动失败也没关系,报错信息本身就是学习材料。把报错复制给 AI 时,尽量附上操作系统、Python 版本、Node 版本,这样 AI 更容易定位问题。

4.3 让 AI 辅助读源码:总结职责和生成调用关系

一个常见做法是先把某个目录的文件列表发给 AI,让 AI 猜结构,然后打开代码验证。例如:

请根据下面的文件列表,猜测每个文件可能负责什么职责,并用一句话概括。不要编造,打开实际代码后再修改你的判断。

再把某个关键文件内容粘贴给 AI,要求输出:

  • 输入:这个模块接收什么数据。
  • 输出:它产生什么结果。
  • 依赖:它调用了哪些模块。
  • 关键逻辑:最核心的几步。
  • 可能的边界问题。

每次要求都聚焦一个小范围,不要一次性把整个项目丢给 AI,否则上下文太长,回答质量会明显下降。

如果项目里有 AI Agent 相关模块,可以重点关注几个关键词:agentmemoryenvironmentprompttool。阅读时先画出调用链,再带着调用链去问 AI:“这个调用链里哪些是核心路径,哪些是异常分支?” AI 给出的回答可以作为理解路线,但最终要以实际断点和日志为准。

4.4 一个扩展练习:给项目增加一个小功能

读完结构后,选一个小功能做修改。例如“给 Agent 增加一条启动日志”或“在运行时打印当前模型名称”。改动越小,越容易验证。

步骤:

  1. 找到主循环或 Agent 启动位置。
  2. 在 AI 辅助下定位需要修改的函数。
  3. 自己动手加代码。
  4. 运行并观察日志。
  5. 让 AI 帮你审查改动,并指出潜在问题。

这个流程的关键是“让 AI 给方案,自己动手改”。如果你只是让 AI 把代码写好,粘贴进去,你学到的只是“它能写代码”,而不是“你能改项目”。

5. AI 学习中最容易踩的坑和排查链路

AI 学习不是“AI 说什么都对”,下面这些坑在实际过程中很常见。

5.1 常见坑速查表

问题现象常见原因检查方式处理建议
调用本地模型报 ConnectionErrorOllama
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 13:42:15

nginx部署多个项目

前言实现在一台服务器上使用nginx部署多个项目的方法查看并修改nginx安装的默认配置文件 在 Linux 操作系统中,Nginx 在编译安装时默认的配置文件路径是 /usr/local/nginx/conf/nginx.conf。 如果是通过发行版的包管理器安装,则默认的配置文件路径可能会…

作者头像 李华
网站建设 2026/8/26 13:39:36

Vue3瀑布流(Waterfall)

Vue2瀑布流(Waterfall) 瀑布流_百度百科 可自定义设置以下属性: 图片数组(images),类型:Image[],默认 [] 要划分的列数(columnCount),类型&am…

作者头像 李华
网站建设 2026/8/26 13:35:53

OpenAI王冠松动:多模型时代开发者选型与API接入实战

最近这半年,AI 圈最明显的感受不是某个模型又刷了多少分,而是 OpenAI 不再拥有绝对的“王冠”式统治力。Claude 在编程场景里强势反超,Gemini 在长上下文和原生多模态上持续发力,开源模型也在快速逼近闭源第一梯队。标题里说 Open…

作者头像 李华
网站建设 2026/8/26 13:35:26

如何使用界面控件DevExpress WinForms自带的UI模板?其实很简单

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

作者头像 李华
网站建设 2026/8/26 13:34:07

云Agent选型与部署实践:从控制面模型到运维自动化

如果你经常逛 Hacker News,大概率见过一种很典型的提问方式:Ask HN: What cloud agents do you use? 下面密密麻麻的回复里,有人推荐某云厂商的原生 Agent,有人坚持开源方案,也有人直接说“别用 Agent,SSH…

作者头像 李华
网站建设 2026/8/26 13:31:30

Python+Demucs实战:仅凭贝斯声轨识别BEYOND歌曲

之前在整理音频素材时,我冒出一个有点挑战性的想法:把BEYOND的经典歌曲做一次“去人声、去吉他、去鼓”,只保留贝斯轨,然后不看任何提示,只听贝斯声音猜歌。结果发现,这个玩法比想象中难,也比想…

作者头像 李华