☰
零基础学AI应用开发:双非二本生的第7天实战记录与踩坑指南
2026/10/6 3:07:38 网站建设 项目流程

今天正好是Day7,先自报家门:我,双非二本,软件工程大三,零项目经验、零论文、零实习。3个月逆袭计划走到第7天,不求一步登天,但这个节点必须做个总结,因为第一个周末是天然的里程碑。前6天我一直在“喂”自己基础知识,今天的目标很明确:不整虚的,直接上手写一个能跑起来的AI应用。一天下来,确实踩了不少坑,也把之前零散的知识串成了线。这篇就把Day7的全部过程、代码、踩坑和思考都记录下来,给和我类似起点的朋友一个参考。

1. 一周复盘:先想清楚“3个月学AI”到底在学什么

1.1 前6天我都干了什么

先交代前6天的具体安排,不然单独看Day7会断片。

  • Day1-3:补Python基础。我不是没学过Python,但水平停留在“能看懂、写不利索”。这三天把变量、流程控制、函数、列表字典、文件读写又重新过了一遍,重点练习了类与对象、装饰器、异常处理这几个高频考点。没追求把语法手册啃完,只要求自己能独立写出脚本解题。
  • Day4:花一个晚上扫盲线性代数的核心概念。向量、矩阵、点乘、矩阵乘法、转置。目标不是会推导证明,而是看到公式里的符号不慌,知道它们是“干什么用的”。事实证明这在后面理解网络结构时非常有帮助。
  • Day5:装环境。Anaconda + PyTorch CPU版 + Jupyter Notebook,然后用官方教程跑通了一个手写数字识别的小demo。虽然只是把官方代码复制下来跑了一遍,但亲眼看到训练准确率从80%往上涨的那一瞬间,心里那根弦终于松了:原来所谓的深度学习,落地也没有那么神秘。
  • Day6:梳理知识地图。我用一个下午把AI相关的大方向全部列出来:大语言模型(LLM)、多模态、AI绘画、AI Agent、RAG、向量数据库、微调、推理部署。然后挨个去查“是什么、解决什么问题、需要什么前置知识”。这一步非常重要,直接决定了后续的学习路径。

1.2 双非二本的现实约束与路径取舍

学AI最怕的不是基础差,而是路径选错。网上铺天盖地的说法是“学好数学、读论文、从零手写Transformer”。问题是,我没有保研压力但也没有科研资源,没有导师带,学校也没有GPU服务器可用。如果一头扎进算法原理里,大概率三个月什么都没做出来就放弃了。

所以我给自己定的路径是:LLM应用开发为主线,本地部署为副线,算法原理只做了解。

为什么这么选?

  • LLM应用开发需要的数学门槛低,重点是工程能力、API调用、提示词工程、数据整理;
  • 这个方向在招聘市场上的岗位数量明显更多,哪怕双非毕业生,只要有能跑的项目作品,也有入行机会;
  • 应用开发天然适合“边做边学”,每个小项目都是一个可展示的成果;
  • 底层原理不懂可以先用起来,先建立正向反馈,再回头补知识,比一上来啃论文靠谱得多。

这个路径个人觉得适配大多数“双非但想转AI”的朋友。当然如果你有考研打算、或者目标就是算法工程师,那就另说——但那种路线的周期是以年为单位的,和“3个月逆袭”不是一个话题。

2. 核心理论关卡:从“AI会聊天”到“AI其实是概率预测机”

2.1 大模型是怎么“听懂”人话的

Day6我大致知道了大模型是个什么东西,但Day7动手之前,还是花了半小时认真想了一个问题:为什么它能“懂”我在说什么?

答案其实有点反直觉:它并不真正理解语义,它只是根据上文预测下一个最可能出现的词。比如你说“今天天气”,它预测后面跟着的很大概率是“怎么样”。它见过海量的文本,把这些文本切碎成token(可以理解为一个词或一个字的小片段),然后用几百亿个参数记住了“什么样的词倾向于跟在什么样的词后面”。

这就是为什么大模型被称为“概率预测机”。它对着一句话输出下文的每一个词,本质上都是在做一次概率采样。既然是概率采样,就有随机性——同一个问题问两次,答案不完全一样;温度参数调高一点,它就会“更敢说”,调低一点就更保守。

想通这一点,后面的很多现象都好解释了:为什么它一本正经地胡说八道?因为那是概率最高的组合,但不代表事实。为什么你换个说法它就不会了?因为触发它“预测路径”的上下文变了。理解这一点后,我写提示词的态度都变了——不是在“问”AI,而是在“引导”它的预测路径。

2.2 API调用的本质:把“求字”这件事外包出去

理论搞明白,接下来就是怎么用。大模型少则几十亿参数,多则上千亿,本地CPU根本跑不动,所以我先用API。

打个比方:API调用就像打电话订外卖。你不需要在自己家开个厨房(本地训练模型),只需要整理好你要什么菜(写好提示词),打电话给商家(调用API),商家在后厨做完通过骑手送上门(返回结果)。你付的是“做这顿饭”的钱(按token计费),而不是买下整个厨房。

这个比喻帮我迅速建立了一个概念:我要做的事,不是教AI怎么做饭,而是告诉它今天想吃什么、口味偏辣还是偏淡。这就是应用开发的日常。

3. 实操:用Python跑通第一个“AI编程助手”

3.1 环境准备与依赖安装

Day7上午的事做完,下午直接开干。

我选用了一个国内可以直接访问的大模型API平台(具体是哪家不重要,重要的是流程通用),兼容OpenAI的接口格式,所以用Python的openai库就能调。Python版本3.10,直接pip安装:

pip install openai

然后去平台申请一个API Key,这个Key就是你调用AI的“身份证”,一定要保存好,不要泄露。拿到Key之后新建一个Python文件,把Key和基础URL配置好:

from openai import OpenAI client = OpenAI( api_key="你的API_KEY", base_url="https://api.你的服务商.com/v1" )

这里有个坑:不同的API服务商base_url长得不一样,有些是/v1结尾有些不是。我在这一块浪费了差不多20分钟,因为看到别人代码里没有base_url就照抄了,结果一直报Unauthorized。所以写代码前,一定先看自己用的平台的官方文档,确认接口地址和认证方式。

3.2 代码实现:一个50行的对话助手

环境通了之后,我直接写了一个完整的对话助手。先不整复杂逻辑,就是一个能记住上下文的简单循环:

from openai import OpenAI client = OpenAI( api_key="你的API_KEY", base_url="https://api.你的服务商.com/v1" ) messages = [ {"role": "system", "content": "你是一个严谨、耐心的编程助教,擅长帮初学者理解代码。"} ] print("AI编程助手已启动,输入 exit 退出") while True: user_input = input("你:") if user_input.strip().lower() == "exit": break messages.append({"role": "user", "content": user_input}) response = client.chat.completions.create( model="你的模型ID", messages=messages, temperature=0.7, max_tokens=1024 ) reply = response.choices[0].message.content print("AI:" + reply) messages.append({"role": "assistant", "content": reply})

代码逻辑很简单:

  • messages列表用来存对话记录,里面有几个角色:system是系统设定,user是用户说的话,assistant是AI的回答。
  • 每次把整个对话历史发给API,AI就能“记得”刚才聊过什么。
  • temperature=0.7控制回答随机性,0.7是个比较平衡的值,让它有创造力又不至于离谱。
  • max_tokens=1024限制回答的最大长度,防止AI话痨刷爆额度。

第一次运行成功打印出回答的那一刻,说实话有点激动。因为这是我自己亲手写出来的AI应用,不是什么demo教程,是我一行一行敲出来、能被对话程序调用的应用。

3.3 实测效果与参数调优

跑通之后,我做了几组对比实验,验证参数的作用。

实验1:让AI写一段快速排序。

你:用Python写一个快速排序,并加注释

AI的回复质量令人惊讶——不仅代码逻辑正确,注释也写得很清晰,还主动解释了时间复杂度。这说明模型本身的能力足够,只要提示词给得明确,直接当编程助手是完全可行的。

实验2:测试temperature的影响。

我把温度设为0.1,问同一个问题:“Python中列表和元组有什么区别?”连续问三次,答案高度相似,永远是“可变/不可变、性能、用途”几个点。然后把温度调到1.5,再问三次,答案开始出现差异,甚至有一次AI提到了“内存分配”相关的表述,虽然对,但偏了。

这组对比让我直观理解了温度的本质:温度越低,越倾向选概率最高的词,答案越稳定;温度越高,越愿意探索概率较低的词,表达更多样但也更容易跑偏。在编程助手的场景下,温度设到0.2-0.4就够了,不需要太高的创造性。

实验3:测试system prompt的影响。

我把system prompt改成:“你是一个只会回答‘我不会’的复读机。”然后问它:“1+1等于几?”AI真的老老实实回答“我不会”。再改回编程助教设定,它又恢复正常。

这个实验很关键——它证明了system prompt的指令优先级非常高。你设定的角色语气、范围、风格,AI会严格执行。所以写好一个system prompt,比纠结问法更重要。我最后的设定是:

你是一个严谨、耐心的编程助教。你擅长用通俗易懂的语言解释代码,回答时会先给出结论,再解释原因。如果用户的问题是英文,用中文回答。

4. 进阶探索:把“AI Agent”这个概念落地

4.1 Agent和聊天机器人的本质区别

晚上我决定迈出舒适区,去看看最近热度极高的AI Agent到底是怎么一回事。之前看热搜词里到处都是AI Agent、多AI协作、agent搭建,但一直没搞懂它的核心区别。

看了一圈资料,我的理解是:传统的聊天机器人是“你说什么,我答什么”,回答完就结束了;而Agent是“你说目标,我自己拆解任务、想办法完成”。

打个比方:聊天机器人像一个只会背课本的学霸,你问它题它给你答案,但你说“帮我把那杯水拿过来”,它只会告诉你“水在桌子上”,然后就没了。Agent则像一个小助手,你说拿水,它会自己去厨房、找到杯子、接水、端到你面前。区别在于有没有“行动能力”。

AI行业里通常把这个“行动能力”叫工具调用。Agent跟大模型最大的不同,就是它可以调用外部工具、接收外部返回的结果、再根据这个结果继续下一步。

4.2 手写一个最简单的“工具调用”Demo

我原以为Agent很复杂,结果今天写了个极简版之后发现,核心逻辑比想象中简单。我把代码简化后记录如下:

def get_weather(city): # 假设这是从天气API获取的真实数据 return f"城市{city}的天气为:多云,22℃,东南风3级" def get_time(): # 假设这是从时钟API获取的真实时间 return "现在是北京时间 14:30" tools = [ {"name": "get_weather", "description": "查询城市天气", "parameters": {"city": "城市名称"}}, {"name": "get_time", "description": "获取当前时间", "parameters": {}} ] messages = [ {"role": "system", "content": "你是智能助手,可以根据用户问题选择调用合适的工具。"}, {"role": "user", "content": "帮忙看下北京现在天气怎么样?"} ] # 发送给大模型,要求它返回要调用的工具和参数 response = client.chat.completions.create( model="你的模型ID", messages=messages, tools=tools ) tool_call = response.choices[0].message.tool_calls[0] print(f"AI决定调用工具:{tool_call.function.name}") print(f"参数:{tool_call.function.arguments}")

这段代码跑出来的结果我贴一下:

AI决定调用工具:get_weather 参数:{"city": "北京"}

注意,这里的AI并没有真正执行查询,它只是“决定”了应该调用哪个工具、参数是什么。真正去执行get_weather这个函数、拿到结果、再拼接成回答返回给用户,还需要再写几行代码把结果塞回给模型。所以Agent的完整链路是:用户提问 → 模型决定调工具 → 代码执行工具 → 拿到结果 → 再喂给模型 → 模型生成最终回答。

理解这个链路之后,我突然明白为什么AI Agent是当前的热门方向了:它把大模型从“嘴替”变成了“手脚”,能力半径从文字扩大到整个数字世界。比如让它查资料然后写报告、让它定时调用API拉取股市数据然后生成摘要,本质上都是这个模式。

4.3 下一步方向:多AI协作、RAG与长文本处理

今天只是跑通了Agent的最基本原理,下一步我要深入的方向还挺明确:

  • RAG(检索增强生成):让AI能读取我本地的文档/PDF,然后基于这些内容回答问题。原理就是把文档切块、向量化、存进向量数据库,用户提问时先把匹配的文档片段搜出来,再连同问题一起发给大模型。这样AI就不再是“路过的百科全书”,而是能读你资料的私人顾问。
  • 多AI协作:一个大模型负责拆解任务,多个“工具型AI”分别执行子任务,最后汇总结果。这类架构已经在实际工作流里很有价值了。
  • 并发与稳定性:AI Agent要扛住真实场景,就涉及并发调用、请求队列、错误处理、超时重试这些问题。我这周还没到这一步,但它已经在我的待学列表里了。

5. 常见问题与避坑记录(Day1-7合集)

这7天踩过的坑还不少,很多是网上教程不会跟你说的。趁今天整理出来,希望后来者少走弯路。

5.1 新手最容易踩的七个技术坑

问题表现原因与解决方案
API Key填错401 UnauthorizedKey经常以sk-开头,复制时注意前后空格,确认不要把自己的Key发到任何共享代码仓库里
base_url末尾路径不对404 Not Found不同服务商的API路径不同,有的是/v1,有的是整个地址都不带后缀。以官方文档为准,别照抄别人的代码
Python版本不对装包失败/报错部分AI库要求Python 3.8+甚至3.10+,先检查python --version再装依赖
包版本冲突各种ImportError如果在同一个环境里装了很多包,很可能互相踩;建议直接为AI学习创建独立虚拟环境:conda create -n ai python=3.10
上下文过长报错400 Bad Request大模型有上下文窗口限制,比如8K tokens。你传入的历史记录太长就会超限。解决方案是截断历史或只保留最近几轮对话
回答跑偏/敷衍输出莫名其妙大概率是system prompt写得太宽泛。试着把角色、风格、限制条件写得具体,比如“你是Python专家,面向新手解释问题”
免费额度用超突然无法访问每个平台都有额度限制,开发调试建议用小参数模型或降低max_tokens值,不然很容易烧完额度

5.2 比技术更难的是心态问题

技术坑都好解决,看文档、查报错就行。但这7天里更折磨人的是心态问题。

首先是信息过载。AI领域日更月新,今天看到AI绘画能出图,明天看到AI生成视频能短剧化,后天又冒出AI Agent搭建教程,每个方向都有无数人告诉你“必须学这个”。如果你注意力被带跑,一天换一个方向,一个月后你还是零。我的办法是给自己列了一个“禁入清单”,明确3个月内不碰的方向(比如微调大模型、训练高清图片模型),然后把精力锁定在LLM应用开发这一条线上。

其次是完美主义陷阱。从Day1到Day5,我每天都会怀疑:Python基础是不是还没补完?线性代数是不是还差很多?这个坑我自己的解法是:把“学完”改为“够用”。需要用到跟什么,就补什么,不要顺着教程目录往下刷。比如写API调用时遇到异常处理不熟,就去查那一个知识点,而不是返回去整章重看。

最后也是最重要的:保持每天有产出。纯输入没有输出的学习是无效的。Day1到Day6我每天都会写一个超级小的脚本,比如用Python统计一段话的词频、把列表转换成字典。这些微不足道的小产出积累到今天,才构成了我能独立写对话助手的底气。

6. 下周计划与个人体会

6.1 Day8-14的主线任务

下周的计划我已经定好了,还是延续“边做边学”的路线:

  • 主线:做一个RAG问答机器人。让AI读取我指定的几篇技术文章(我打算放一份Python教程和一份LangChain文档进去),然后基于这些文章内容回答问题。核心环节包括文档加载、文本切块、embedding向量化、向量存储、检索与回答。
  • 支线:把Agent的工具调用再深入一步,做一个能调用三个以上工具的“学习助手Agent”。比如查时间、查天气、查单词释义,把今天的极简demo扩成一个真的能“干活”的工具。
  • 每日节奏:白天完成主线项目,晚上复习当天用到的API、概念,周末做一周总结并写一篇记录。

6.2 给和我同起点的人几句真心话

今天这篇Day7写到这里,很多内容回头看其实不难,但走过来的路确实是一步步踩实的。有几个体会想分享给和我一样的人:

第一,双非二本不是原罪。如果你非要去考研、走学术路线,学历确实是个硬门槛。但如果目标是做AI应用开发,这个行业更在意你能交出什么东西。今天这个50行的对话助手,放进作品集里,已经比“我看完了吴恩达课程”这种描述有说服力多了。

第二,不要在“准备”阶段花费超过两周。很多人花了三个月“打基础”,结果连一个能跑的项目都没有。我的原则是:最迟第7天,你必须跑通一个看得见摸得着的demo,哪怕是调用API的那种。先跑起来,再补充原理,这样你才知道哪些原理是真正用得上的。

第三,记录很重要。Day1到Day7我都留有笔记和报错记录,今天写这篇复盘的时候,翻笔记很快就找回了当时的各种细节。等到三个月后写总结的时候,这些记录就是最可信的“逆袭证据”。

第四,如果没有方向感,就盯着一个最小可用的作品去做。比如“做一个能回答我本地文档问题的AI助手”,把它当作第一个里程碑。一切学习都围绕这个目标去补,这样你不会被热搜词牵着走。

好,Day7到这里就结束了。明天开始进入RAG的学习日程,后面每一天我都会继续更新到三个月逆袭计划完成。如果你也在从零学AI,欢迎一起交流进度,互相看着走,总比自己闷头踩坑强。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询