以前的Blog我都懒到AI写的,今天决定亲自写一篇。
这个暑假,我的学习重点逐渐从单纯的编程基础,转向了Python(谁曾想Python我5年前学过)、人工智能应用开发、API、机器人和完整软件项目实践。回头看这段时间,我最大的变化并不是学会了多少语法,而是开始真正理解一个程序、一个AI应用,甚至一个完整软件项目是怎样一步一步搭建起来的。
这个暑假,我做的事情有点杂。
学了Python,折腾了AI模型和API,参加了机器人夏令营,还一直在做自己的AI编程学习助手。
如果只看这些关键词,可能会显得有点“什么都学了一点”。但回头看,我觉得它们其实慢慢连成了一条线:
我开始不满足于“会写几道代码题”,而是更想知道,一个真正能用的程序到底是怎么做出来的。
暑假刚开始的时候,我主要还是在补Python基础。
一开始学的是字符串、循环、列表这些比较基础的东西。后面慢慢学到了函数、字典、文件读写、异常处理和模块。
这段时间我写了不少小练习。
比如手机号隐藏、登录验证、列表操作、成绩统计等等。
这些东西单独看都不复杂,但它们让我开始习惯自己写代码、自己运行、自己看报错,而不是只看别人写好的程序。
后来我开始学面向对象。
第一次接触class、self、__init__这些东西的时候,其实还是有点绕的。
尤其是“类”和“对象”到底是什么,一开始很容易只记语法。
后来我做了一个学生成绩管理系统,把学生做成对象,再加上成绩、查询、平均分、统计、文件保存这些功能之后,我才慢慢感觉到:
面向对象其实是在想办法让程序里的东西更像现实中的“对象”。
这个项目也是我第一次感觉自己不只是在做练习题,而是真的在做一个小程序。
中间也踩了不少坑。
比如文件明明写入成功了,却发现写到了另一个目录;成绩文件格式写错,最后算出了离谱的平均分;用户输入文字的时候程序直接报错;空数据的时候统计功能又会出问题。
以前看到报错会觉得“程序坏了”。
现在会更习惯去想:到底是哪一层出问题了?是输入?路径?数据格式?还是逻辑?
我觉得这种变化挺重要的。
后来我开始接触自己很感兴趣的一块:大语言模型API。
以前我也经常使用各种AI工具和API,但更多时候只是“填地址、填Key、然后调用”。
这次我开始自己用Python调用本地Ollama里的Qwen模型。
也是从这个时候开始,我真正搞懂了一些以前经常听到、但并没有认真理解的东西。
比如:
什么是客户端,什么是服务器。
localhost是什么。
为什么一台电脑上会有不同端口。
GET和POST有什么区别。
JSON为什么经常出现在API里。
Python里的requests.post到底在干什么。
还有LLM里的system、user和assistant三种消息角色。
我印象比较深的一点是:
AI聊天里的“记忆”,很多时候并不是模型真的把前面的内容记住了。
而是程序自己把之前的聊天记录保存下来,然后下一次请求时重新发给模型。
知道这个之后,我第一次感觉很多AI应用没那么“神秘”了。
它们当然很强,但背后依然是非常具体的程序逻辑。
后来我又开始做流式输出。
就是像ChatGPT一样,不是等整个回答生成完才一次显示,而是一个字、一小段一小段地出来。
为了实现这个效果,我开始处理流式返回的数据,用iter_lines逐段读取,再把每段JSON解析出来,从里面提取模型真正回答的文字。
然后再把这些碎片拼起来,最后保存成完整的assistant消息。
到目前为止,我已经基本做出了一个最基础的本地AI连续聊天程序。
虽然它还非常简单,但这件事情对我来说很有意思。
因为以前我是AI聊天软件的使用者,现在开始慢慢站到“做这个东西的人”的角度去看它。
除了这些,我暑假还参加了一个机器人和AI方向的夏令营。
在那里接触了Linux、ROS2、机器人小车、激光雷达和视觉识别。
我们还做了红绿灯识别。
从采集图片、给图片标注,到训练YOLO模型,再把模型放到程序里识别红灯和绿灯,最后控制小车运动。
很多代码其实是老师提前准备好的,我现在还不能说自己已经掌握ROS2或者YOLO。
但是这次经历让我第一次看到一个AI模型到底是怎么“落地”的。
它不是训练完就结束了。
而是:
先采数据。
然后标注。
再训练。
得到模型。
把模型接进程序。
程序根据识别结果做判断。
最后再控制真实的小车运动。
这个过程比单纯看到一个“识别成功”的结果有意思得多。
因为我开始知道背后每一层大概在做什么。
这个暑假我花时间最多的另一个东西,是我自己的AI编程学习助手。
这个项目最开始就是一个想法:
我想做一个可以在电脑上帮助用户学编程的软件。
不是单纯问AI问题,而是希望它能结合本地代码、运行程序、做练习、判题,再慢慢加入AI学习功能。
于是我开始把整个项目拆成一个个Milestone来做。
目前已经开发到了Milestone 15。
项目里用了Tauri、React、TypeScript、Rust和Python。
也做了代码编辑器、本地工作区、Python运行、判题等功能。
当然,这里面有一个很重要的事实:
这个项目的复杂度,其实已经超过了我现在完全手写代码的水平。
很多功能都是我借助AI编程工具完成的。
所以我不会说“我已经会React、Rust、Tauri”。
这明显不准确。
但我觉得这个项目还是让我学到了很多“只学语法学不到”的东西。
比如怎么把一个很大的想法拆成小目标。
怎么写清楚需求。
怎么告诉AI“这一步只做什么,不要提前做到下一步”。
怎么测试功能。
怎么发现Bug。
怎么把错误现象描述清楚。
怎么判断一个功能到底是真的做好了,还是只是表面能跑。
我发现,使用AI编程也不是单纯一句“帮我写”。
如果自己完全不知道要做什么,AI写出来的项目也很容易越来越乱。
反过来,如果自己能把目标、模块、边界和测试方式说清楚,AI就会更像一个真正的开发工具。
这也是我这个暑假比较有意思的一种体验。
现在回头看,我觉得自己的学习路线也开始慢慢清晰了。
Python基础已经差不多学完。
面向对象还要继续补封装、property、继承、super、方法重写、组合和多态。
AI这边,我现在刚走到LLM API这一层。
接下来我想继续学HTTP、FastAPI,然后再往Tool Calling、Agent和RAG走。
我现在反而不太想一上来就直接套各种Agent框架。
因为自己做过最基础的API聊天程序之后,我越来越觉得:
知道底层在干什么,真的很重要。
不然最后可能只是会“调用一个框架”,但不知道它为什么能工作。
如果让我总结这个暑假,我觉得最大的变化不是“我学会了多少技术”。
而是我开始从:
“这个代码怎么写?”
慢慢变成:
“这个东西到底是怎么工作的?”
以及:
“我能不能自己把它做出来?”
可能我现在做出来的很多东西还比较粗糙。
很多技术也只是刚入门。
但这个暑假至少让我越来越确定,我以后想继续往AI应用开发和软件开发这个方向走。
能写代码当然很重要。
但我现在更喜欢的,是把代码、AI、API,甚至真实硬件连接起来,然后真的做出一个东西。
目前EECO Python Tutor这个项目我通过vibecoding已经完成到Milestone15 ,更多agent开发方面的知识还需要多加学习。
我目前也在尝试AI剪辑之类的
接下来就是高中了,务必加快落实天越计划(估计没人能看懂我说的是么)。
Comments NOTHING