【Agent开发速成笔记】一、从0到1基础Python学习

张开发
2026/5/30 7:41:12 15 分钟阅读
【Agent开发速成笔记】一、从0到1基础Python学习
文章目录前言AI生成的学习路线一、Python 工程基础1.1 venv、pip机制1.1.1 venv 的核心机制虚拟环境1.1.2 pip 的核心机制包管理1.1.3 总结1.2 包管理requirements.txt、pip 源配置1.2.1 requirements.txt 环境清单1.2.2 pip 源配置 —— 解决下载慢、被墙的问题1.3 Python项目实践方案1.3.1 Python项目结构1.3.2 模块、包1.3.3 导入规则最佳实践二、Web 开发核心(FastAPI)2.1 什么是 FastAPI2.2 基础运行2.3 fastAPI关键点1.路由路径定义2.Pydantic 模型数据校验与序列化3、依赖注入Dependency Injection4、中间件与异常处理写到最后前言AI冲击太快作为一个web前端公司业务也在进行Agent开发从此小小web前端转Agent工程师开发要开发Agent就得先学习python。这篇笔记用于记录从0到1入门学习过程以及关键点方便后续复盘学习业务不等人挑简单的先学习深入原理和规则的这些事边开发边补吧。AI生成的学习路线AI的学习计划很详细时长也很长但是实际业务不等人按这个计划挑关键点去学习先入门实践再深入。阶段1Python 工程基础1-2周主题学习内容推荐资源虚拟环境venv、pip 机制Python官方文档 - venv包管理requirements.txt、pip 源配置pip 用户指南项目结构模块、包、导入规则Python项目最佳实践类型提示Type hints、Pydantic 模型FastAPI 官方教程 - Python类型阶段2Web 开发核心2-3周主题为什么学推荐资源FastAPI你项目用的框架FastAPI 官方教程中英双语异步编程async/await、事件循环Real Python - Async IOREST API 设计路由、请求响应、状态码RESTful API 设计指南阶段3AI/Agent 工程化3-4周主题与你项目的关联学习资源LangChain项目依赖的基础LangChain 官方文档LangGraphagent-supervisor 核心框架LangGraph 教程SSE 流式项目中的实时对话FastAPI Streaming Response阶段4工程部署1-2周主题解决你遇到的问题推荐资源Docker 基础端口映射、容器网络Docker 官方教程Nginx 反向代理前后端分离部署Nginx 入门指南环境变量管理.env、配置分离python-dotenv其他中文学习资源更易上手fastApi官方示例项目https://github.com/tiangolo/full-stack-fastapi-template一、Python 工程基础1.1 venv、pip机制venv 负责创建隔离的 Python 运行环境。pip 负责在该环境中安装、升级、删除第三方包。1.1.1 venv 的核心机制虚拟环境作用解决不同项目依赖同一个包的不同版本时的冲突问题。工作原理执行python -m venv myenv后会在当前目录生成一个 myenv 文件夹内部复制或链接了系统 Python 解释器的可执行文件并创建了独立的 Lib/site-packages 目录。当你激活环境Windows 运行myenv\Scripts\activateLinux/Mac 运行 source myenv/bin/activate时它仅仅是临时修改了终端会话的 PATH 环境变量把 myenv/bin 或 myenv\Scripts 放到了最前面。结果终端输入 python 指向虚拟环境里的解释器输入 pip 指向虚拟环境里的包管理器。安装的任何包都会落入 myenv/Lib/site-packages与系统全局环境完全隔绝。1.1.2 pip 的核心机制包管理作用从 Python Package Index 或其他源下载、解压、安装 .whl 或 .tar.gz 格式的包。工作流程解析依赖读取包名和版本约束计算需要安装的依赖树。下载从配置的镜像源下载 .whl预编译的二进制包安装快或源代码包。安装将包内的文件解压/复制到当前激活环境的 site-packages 目录下。生成元数据在 site-packages 同级目录写入 dist-info 文件夹记录版本和文件清单供 pip uninstall 使用。1.1.3 总结venv决定了你把包“装在哪里”pip决定了“装什么”以及“怎么装”。1.2 包管理requirements.txt、pip 源配置1.2.1 requirements.txt 环境清单作用将当前虚拟环境中安装的所有包及精确版本冻结成一个文本文件方便在其他机器或服务器上一键还原完全相同的依赖环境。生成与使用# 冻结当前环境生成文件pip freezerequirements.txt# 根据文件批量安装依赖pipinstall-rrequirements.txtrequirements.txt示例# LangGraph LangChainlanggraph1.1.0 langchain1.2.0 langchain-openai1.1.0 langchain-core1.2.0# API Frameworkfastapi0.115.0 uvicorn[standard]0.32.0 pydantic2.0.0# NLPjieba0.42.0手动维护时通常只写顶层依赖直接 import 的包由 pip 自动解析子依赖避免文件臃肿pip freeze 会包含所有间接依赖适合追求绝对一致性的生产部署。1.2.2 pip 源配置 —— 解决下载慢、被墙的问题默认源https://pypi.org/simple/国内访问可能很慢。更换为国内镜像源能显著提升下载速度。常用国内镜像源地址:阿里云https://mirrors.aliyun.com/pypi/simple/清华https://pypi.tuna.tsinghua.edu.cn/simple/中科大https://pypi.mirrors.ustc.edu.cn/simple/常用命令# 查看版本pip--version# 安装pipinstall包名 pipinstall包名版本号# 从 requirements.txt 安装多个包pipinstall-rrequirements.txt# 使用国内镜像源加速pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple 包名# 卸载pip uninstall 包名# 批量卸载pip uninstall-rrequirements.txt-y# 查看搜索# 列出已安装的包pip list# 查看包的详细信息pip show 包名# 导出当前环境的所有依赖到文件pip freezerequirements.txt# 升级pip自身python-mpipinstall--upgradepip# 升级某个包pipinstall-U包名# 配置镜像源pip configsetglobal.index-url https://pypi.tuna.tsinghua.edu.cn/simple1.3 Python项目实践方案1.3.1 Python项目结构典型的项目结构如下my_project/ ├── pyproject.toml # 现代构建配置替代 setup.py ├── README.md ├── requirements.txt # 开发依赖可选若使用 Poetry/Flit 可省略 ├── setup.py # 打包和发布管理 ├── src/ │ └── my_package/ # 主包目录避免顶层直接放模块 │ ├── __init__.py │ ├── core/ │ │ ├── __init__.py │ │ └── engine.py │ └── utils/ │ ├── __init__.py │ └── helpers.py ├── tests/ # 测试目录与 src 同级 │ ├── __init__.py │ └── test_core.py └── scripts/ # 运行脚本如启动脚本 └── run.py1.3.2 模块、包模块Module单个 .py 文件。包Package包含__init__.py的目录Python 3.3 支持无init.py 的命名空间包但显式声明更清晰。init.py 作用标识目录为包控制from package import *的行为通过all可用于简化导入路径如from .core import Engine。1.3.3 导入规则最佳实践# 优先使用绝对导入frommy_pkg.core.enginimportEngine# 谨慎使用相对导入(适用于包内模块间引用)from.engineimportEnginefrom..utils.helpersimporthelper_func避免import *除非在_init_.py中明确定义_all_否则容易命名冲突二、Web 开发核心(FastAPI)2.1 什么是 FastAPIFastAPI 是一个现代、快速高性能的Python Web 框架专为构建 API 而设计。核心优势✅ 基于 Python 类型提示Type Hints用 pydantic 自动校验请求/响应数据✅ 自动生成交互式 API 文档支持 Swagger UI/docs和 ReDoc/redoc✅ 原生异步支持async/await高性能适合 I/O 密集型任务如数据库、HTTP 请求✅ 依赖注入系统灵活管理共享逻辑如数据库连接、认证✅ 与 Starlette Pydantic 深度集成底层高性能上层易用。2.2 基础运行1、 安装pipinstallfastapi uvicorn[standard]fastapi:用于创建 API 应用提供装饰器、类型提示、路由等功能uvicorn ASGI 服务器用于运行 FastAPI 应用将 FastAPI 应用部署到服务器上。[standard]代表标准安装2、运行main.py基础代码fromfastapiimportFastAPI appFastAPI()app.get(/)defread_root():return{Hello:World}运行uvicorn main:app--reload访问http://localhost:8000和http://localhost:8000/docs查看文档。localhost:8000效果localhost:8000/docs效果2.3 fastAPI关键点1.路由路径定义使用装饰器定义HTTP方法app.get(...):符号是 Python 的装饰器语法它的作用是把下面紧跟着的函数“注册”到 app 的路由表中。app是你通过 app FastAPI() 创建的 FastAPI 应用实例。.get()是 FastAPI 实例上的方法表示这个接口只接受 HTTP GET 请求。app.get(/items/{item_id})defread_item(item_id:int,q:strNone):return{item_id:item_id,q:q}2.Pydantic 模型数据校验与序列化Pydantic 是 FastAPI 背后的数据校验与序列化引擎。功能自动数据校验序列化.model_dump()自动生成 JSON Schema 与文档一句话总结用类型注解来自动校验和转换原始数据确保数据格式完全符合预期并支持零代码生成 API 文档。自动校验类型、必填字段、默认值自动生成 JSON Schema用于文档和前端对接。fromfastapiimportFastAPIfrompydanticimportBaseModel# 创建 FastAPI 应用实例appFastAPI()# 定义 Item模型classItem(BaseModel):name:strprice:floatis_offer:boolFalse# 定义创建 Item的路由app.post(/items/)defcreate_item(item:Item):returnitem测试接口 访问http://localhost:8000/docs#/对应的swaggerUI文档try_it运行对应接口修改参数看返回值。3、依赖注入Dependency Injection依赖注入Dependency Injection简称 DI是一种设计模式核心思想是函数或类不要自己“创建”依赖的资源而是由外部“注入”进来。这样做最大的好处是解耦和方便测试。用于数据库连接、认证、权限检查等共享逻辑。fromfastapiimportFastAPI,DependsfrompydanticimportBaseModel# 定义依赖函数defcommon_parameters(q:strNone,skip:int0,limit:int100):return{q:q,skip:skip,limit:limit}# 使用依赖注入的路由app.get(/users/)defread_users(commons:dictDepends(common_parameters)):return{users:[],params:commons}4、中间件与异常处理添加 CORS、日志、认证中间件自定义错误响应fromfastapiimportFastAPI,HTTPException appFastAPI()# 模拟数据库fake_items_db{1:苹果,2:香蕉}app.get(/items/{item_id})defread_item(item_id:str):# 尝试从数据库中查找itemfake_items_db.get(item_id)# 如果没找到直接返回 404 错误ifnotitem:raiseHTTPException(status_code404,detailfID为{item_id}的商品不存在)# 找到了正常返回return{item_id:item_id,item_name:item}HTTPException 是 FastAPI 内置的异常类。当你的业务逻辑发现出了问题可以主动抛出这个异常FastAPI 会自动把它转换成标准的 HTTP 错误响应返回给客户端。在swagger UI中调用传入id:3示例写到最后以上只是基础中的基础内容目前看真实项目中还有很多关于python中间件数据库集成测试部署等功能后面看实操代码继续记录。

更多文章