01-Python AI Agent 大纲
课程内容:
- 每日主题
- 教学目标,Agent组件理论
- 可运行的 Python 代码
- 代码分析
- 代码功能单元模仿拓展(课堂练习 + 课后作业)
✅ 操作系统:Ubuntu24.04(推荐)、Windows、MAC
✅ 所有代码基于 Python 3.9+
✅ 默认使用 OpenAI API(若无,可用 Ollama +ollama包本地替代,文末附说明)
✅ 确保代码能理解、能改、能跑

| 组件 | 说明 | 关键特性/示例 |
|---|---|---|
| Agent(智能体) | 核心决策单元,负责协调记忆、工具、规划与行动 | 可执行复杂任务,支持多种代理类型(>15种) |
| Memory(记忆) | 存储上下文信息,分为短期和长期记忆 | - 短期:缓冲区(Buffers),如对话历史- 长期:向量数据库(>40种),用于知识检索 |
| Tools(工具) | 外部功能接口,供Agent调用执行任务 | >60个工具和工具包,如:Pandas、Google Search、Gmail等 |
| Plan(规划) | 决定下一步行动的策略模块 | 支持多步推理与任务分解 |
| Action(行动) | 执行具体操作,包括调用工具或LLM | 可能是模拟环境中的动作,也可能是真实世界交互 |
| LLMs(大语言模型) | 提供语言理解和生成能力 | >60种集成,如GPT、Claude、Llama等 |
| Agents 类型 | 不同行为模式的智能体 | 包括:自主型(Autonomous)、模拟型(Simulation)、如AutoGPT等 |
LangChain Agent Ecosystem 是一个模块化框架,
通过 Agent + Memory + Tools + Plan + Action + LLMs 的协同工作,
实现 AI 智能体的自主决策与任务执行。
📦 前置准备
1. 创建项目目录方法
agent-course/
├── .env
├── day01/
├── day02/
...
└── utils.py # 可选工具函数
# 创建工作目录
mkdir day4 && cd day4
# 创建虚拟环境
python3 -m venv day4-robust
# 激活虚拟环境
source day4-robust/bin/activate
# 关闭虚拟环境,使用时去掉“#”
# deactivate
# 升级 pip
pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
2. .env 文件(填自己的 key)
# 填自己的 key
echo 'DASHSCOPE_API_KEY=sk-6adfyyyyyy4374b32c720xxxxxxce5' > .env
3. 安装依赖(统一命令)
# 示例
pip install langchain openai python-dotenv requests beautifulsoup4 faiss-cpu
🗓️ 每日教学包
Day 1:Hello Agent! —— 你的第一个智能体
目标:让学生看到“智能体”能做事,建立信心
技能:调用 LLM、理解 Agent = LLM + 工具
📄 代码模板 day01/hello_agent.py
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
load_dotenv()
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个乐于助人的AI助手。"),
("human", "{input}")
])
chain = prompt | llm
response = chain.invoke({"input": "今天北京天气怎么样?"})
print(response.content)
✅ 实验任务
- [课后] 尝试问一个需要查外部信息的问题(如“现在美元兑人民币汇率?”),观察 AI 是否会编造答案 → 引出“工具”的必要性
Day 2:给智能体装上“手”——Tool 工具开发
目标:学会定义和调用工具函数
技能:编写 Tool、理解函数即能力
📄 代码模板 day02/tool_example.py
import requests
from datetime import datetime
def get_current_time() -> str:
"""获取当前时间"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def get_weather(city: str) -> str:
"""模拟天气查询(实际项目可用 API)"""
return f"{city}今天晴,25°C"
# 测试
print(get_current_time())
print(get_weather("上海"))
✅ 实验任务
- [课后] 思考:如果 AI 要自动选择调用哪个工具,怎么办?
Day 3:让 AI 自己决定用哪个工具(ReAct Agent)
目标:构建第一个自主决策的智能体
技能:使用 LangChain 的 ReAct Agent
📄 代码模板 day03/react_agent.py
from langchain.agents import tool, AgentExecutor, create_react_agent
from langchain_openai import ChatOpenAI
from langchain import hub
@tool
def get_time():
"""获取当前时间"""
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d %H:%M")
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
tools = [get_time]
prompt = hub.pull("hwchase17/react") # 官方 ReAct 提示词
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({"input": "现在几点了?"})
print(result["output"])
✅ 实验任务
- [课后] 尝试问一个无法回答的问题,看 Agent 如何处理
Day 4:多工具协作 + 错误处理
目标:构建更鲁棒的智能体
技能:工具组合、异常捕获
📄 代码模板 day04/robust_agent.py
@tool
def search_web(query: str) -> str:
"""简单网页抓取(演示用)"""
try:
import requests
from bs4 import BeautifulSoup
url = f"https://www.google.com/search?q={query}"
# 注意:真实项目需用合法 API,此处仅为演示结构
return "搜索结果摘要(模拟)"
except Exception as e:
return f"搜索失败: {str(e)}"
# 把 search_web 加入 tools 列表,重复 Day3 流程
✅ 实验任务
- [课后] 讨论:为什么不能直接让 LLM 算?→ 强调“确定性计算交给工具”
Day 5:记忆!让 Agent 记住你说过的话
目标:添加对话记忆能力
技能:使用 Memory 组件
📄 代码模板 day05/memory_agent.py
from langchain.memory import ConversationBufferMemory
from langchain.agents import initialize_agent
memory = ConversationBufferMemory(memory_key="chat_history")
llm = ChatOpenAI(temperature=0)
agent = initialize_agent(
tools=[get_time],
llm=llm,
agent="conversational-react-description",
memory=memory,
verbose=True
)
agent.run("我叫小明")
agent.run("我叫什么名字?") # 应该回答“小明”
✅ 实验任务
- [课后] 思考:如何记住长期信息?→ 引出向量数据库(Day6)
Day 6:长期记忆 —— 向量数据库入门
目标:实现“记住用户偏好”
技能:FAISS + 文本嵌入
📄 代码模板 day06/vector_memory.py
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
texts = ["用户喜欢喝美式咖啡", "用户住在杭州"]
vectorstore = FAISS.from_texts(texts, embeddings)
retriever = vectorstore.as_retriever()
docs = retriever.get_relevant_documents("用户喜欢什么饮料?")
print(docs[0].page_content)
✅ 实验任务
- [课后] 尝试将检索结果注入到 Agent 的 prompt 中(为 Day7 铺垫)
Day 7:任务分解 —— 让 Agent 做复杂事
目标:处理多步骤任务
技能:Plan-and-Execute 思想
📄 代码模板 day07/planner.py
# 简化版:手动拆解任务
def plan_and_execute(task: str):
steps = [
"1. 查今天日期",
"2. 查杭州天气",
"3. 生成出行建议"
]
print("计划:", steps)
# 模拟执行
for step in steps:
if "查今天日期" in step:
print("执行:", get_time())
elif "查杭州天气" in step:
print("执行:", get_weather("杭州"))
return "建议:今天晴,适合出门!"
print(plan_and_execute("给我今天的出行建议"))
✅ 实验任务
- [课后] (挑战)尝试用 LLM 自动生成步骤列表(提示词:“把以下任务拆成3步:...”)
Day 8:多智能体初探 —— 两个 AI 协作
目标:理解多 Agent 架构
技能:角色扮演 + 消息传递
📄 代码模板 day08/multi_agent.py
def run_conversation(user_input: str):
researcher = ChatOpenAI(temperature=0.7)
editor = ChatOpenAI(temperature=0.2)
research = researcher.invoke(f"研究主题: {user_input}。用3句话总结。").content
article = editor.invoke(f"润色以下内容,使其专业简洁:\n{research}").content
return article
print(run_conversation("人工智能对教育的影响"))
✅ 实验任务
- [课后] 讨论:多 Agent vs 单 Agent 的优劣
Day 9:项目开发日(选题 + 编码)
提供 3 个可选项目模板(任选其一):
- 智能客服:能查订单、回答 FAQ、记录投诉
- 学习助手:解释代码、生成练习题、总结知识点
- 旅行规划师:查天气、推荐景点、估算预算
📄 项目骨架 project_template.py
# 学生在此基础上扩展
from your_tools import *
from langchain.agents import ...
# 定义专属工具
# 构建 Agent
# 添加记忆
# 实现主循环
✅ 任务
Day 10:展示 + 复盘
- 每组 5 分钟演示
- 教师点评:亮点 + 改进建议
- 发放“结业证书”(可自制)
💡 无 OpenAI API?用 Ollama 本地替代!
如果学生没有 API Key,全部代码可改用 Ollama + Llama 3:
- 安装 Ollama
- 运行:
ollama pull llama3 - 替换 LLM 初始化代码:
# 原来
# llm = ChatOpenAI(model="gpt-3.5-turbo")
# 改为
from langchain_community.chat_models import ChatOllama
llm = ChatOllama(model="llama3", temperature=0)
⚠️ 注意:部分高级功能(如精确工具调用)在开源模型上效果较弱,但教学足够
📎 最后建议
- 每天课前 10 分钟:发 ZIP 包(含当日代码 + 任务说明)
- 强调“能跑就行”:不要求完美,只要求动手
- 你作为讲师:重点讲“为什么这样设计”,而不是 API 细节
如果你需要,我可以打包所有代码为 GitHub 仓库结构,或生成 PDF 讲义。是否需要?这对你找工作展示教学能力也很有帮助。
浙公网安备 33010602011771号