不再停留在函数这一节
最初学 LangChain 时,函数和代码结构看不懂,我选择回头补 Python。后来整理的主笔记已经覆盖函数、类、JSON、异常、环境变量、HTTP、异步与项目组织。这些内容开始在后续 FastAPI 和 Agent 练习中一起发挥作用。
阶段完成,不等于掌握全部 Python原笔记中的“100%”仅指面向 Agent 的最少必要基础,并非整门语言的完成率。本页不把它转换成能力评分;独立复现、排错和测试仍需要持续练习。
先弄清楚数据怎样流动
函数负责接收输入并返回结果,list 保存有顺序的一组消息,dict 描述每条消息的角色与正文。理解它们之后,多轮对话就不再只是一串陌生的 API 参数。
独立数据结构示例:不调用模型
history = [{"role": "user", "content": "你好"}]
messages = []
messages.extend(history)
messages.append({"role": "user", "content": "继续讲讲 Agent"})- append 加入一条消息;extend 把历史中的每条消息接进来。
- print 是显示给人看;return 是把结果交给程序中的调用者。
- json.loads 把 JSON 文本转为 Python 数据;文本看起来像字典,不等于它已经是 dict。
类、配置和模块,让代码有明确职责
self 是当前对象,函数参数只是本次调用收到的值;把 model 保存为 self.model,才是在对象上保留状态。模块拆分也不是把一个长文件平均切开,而是让每个文件负责一类事情。
| 模块 | 职责 |
|---|---|
| config.py | 读取配置,不在公开代码中写密钥。 |
| model.py | 隔离模型调用细节。 |
| memory.py | 负责历史的读取与保存。 |
| main.py | 组织输入、处理顺序与输出。 |
这是入门时形成的职责模型。后续 Agent 整合的课堂版本仍有直接在 agent.py 中调用模型的实现,模型层统一重构尚未完成。
异步不是加一个 async 就完成了
我需要区分的是“函数怎样写”和“任务怎样被安排”。顺序 await 通常仍是依次等待;多个独立协程经 gather 安排后,才可能在 I/O 等待期间共同推进。
- 同步网络请求不会因为放进 async def 就自动非阻塞。
- 并发表示共同推进,不等于多个 CPU 核心同时计算。
- 本阶段 Agent 的模型与数据库调用仍采用同步方案,不宣称已完成异步高并发服务。
原理可对照 Python 协程与任务文档;复习旧项目时以其已验证的运行环境为准。
下一次复习,用输出验证理解
- 不照抄笔记,写一个接收消息列表并返回结果的函数。
- 解释 list、dict、JSON 字符串三者分别出现在数据链路的哪里。
- 在独立虚拟环境中根据依赖清单重建项目,不复制整份虚拟环境。
- 给一个失败调用加入明确的异常处理,能说明错误传给谁。
以上是后续自测清单,不代表本次已重新运行。下一篇从这些基础进入真正的 HTTP 服务。
来源
本页依据个人笔记整理:《Python AI Agent 学习主笔记》第 7—25、27—30 节(原笔记更新于 2026-09-03)。
试着做一个小练习
写一个接收历史列表、返回新上下文的函数;解释为什么不直接修改原列表。