01_AI应用开发入门 - 从Web开发到AI开发的思维转变

本课程帮助Python Web开发者理解AI应用开发的思维方式。通过对比传统Web开发和AI开发的差异,用通俗易懂的类比解释LangChain的作用和价值。学完本课,你将建立起AI应用开发的基本认知,理解为什么需要LangChain,以及如何用新的思维方式来构建AI应用。

🎯 学习目标

  • 理解AI应用和传统Web应用的区别
  • 了解LangChain是什么,为什么需要它
  • 建立AI应用开发的基本思维模型

📖 核心概念

1. AI应用 vs Web应用:一个类比

传统Web开发(你熟悉的)

想象你在开发一个餐厅点餐系统:

1
2
3
用户输入 → 路由判断 → 业务逻辑处理 → 数据库操作 → 返回结果
例如:
"查询菜单" → /api/menu → 查询数据库 → 返回JSON → 展示菜单

特点:

  • ✅ 逻辑确定:你写什么代码,就执行什么
  • ✅ 结果可控:同样的输入,总是得到同样的输出
  • ✅ 流程固定:if-else、循环、函数调用
  • ✅ 数据结构化:数据库、JSON、明确的字段

AI应用开发(新的世界)

现在想象你雇了一个聪明的服务员(AI):

1
2
3
用户输入 → AI理解意图 → AI思考 → AI生成回答 → 返回结果
例如:
"我想吃点辣的" → AI理解 → AI推荐 → "建议您试试麻婆豆腐"

特点:

  • 🤔 逻辑不确定:AI会”思考”,每次回答可能不同
  • 🎲 结果概率性:同样的问题,可能得到不同答案
  • 🧠 需要引导:通过提示词(Prompt)引导AI
  • 💬 处理非结构化数据:自然语言、图片、文本

2. 为什么需要LangChain?

问题1:直接调用AI模型很麻烦

不用LangChain(原始方式):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests

# 需要自己构造请求
response = requests.post(
"https://api.example.com/chat",
headers={"Authorization": "Bearer xxx"},
json={
"model": "qwen-plus",
"messages": [
{"role": "system", "content": "你是一个助手"},
{"role": "user", "content": "你好"}
]
}
)
# 需要自己解析响应
result = response.json()["choices"][0]["message"]["content"]

用LangChain(简化方式):

1
2
3
4
5
6
7
8
9
10
11
from langchain_openai import ChatOpenAI

# 简单配置
llm = ChatOpenAI(
base_url="https://api.example.com",
api_key="xxx",
model="qwen-plus"
)

# 直接调用
result = llm.invoke("你好")

问题2:复杂应用需要多个步骤

假设你要做一个”智能文章写手”:

传统思路(Web开发):

1
2
3
4
5
6
7
8
9
10
11
# 步骤1: 生成标题
title = generate_title(topic)

# 步骤2: 生成大纲
outline = generate_outline(title)

# 步骤3: 根据大纲生成内容
content = generate_content(outline)

# 步骤4: 润色
final = polish(content)

每一步都要自己调用API、处理响应、传递数据,很繁琐。

LangChain思路:

1
2
3
4
5
6
7
from langchain.chains import SequentialChain

# 定义链,LangChain自动处理数据流转
chain = title_chain | outline_chain | content_chain | polish_chain

# 一行调用
result = chain.invoke({"topic": "人工智能"})

问题3:需要给AI添加”能力”

AI默认只能”说话”,不能:

  • ❌ 查询数据库
  • ❌ 调用API
  • ❌ 搜索网页
  • ❌ 读取文件

LangChain提供了工具(Tools)Agent,让AI可以:

  • ✅ 自己决定是否需要查询数据
  • ✅ 自己调用工具获取信息
  • ✅ 组合多个工具完成复杂任务

3. LangChain的核心思想:乐高积木

把LangChain想象成乐高积木系统

1
2
3
4
5
6
7
8
9
10
11
基础积木(组件):
├── 模型(LLM) → AI的大脑
├── 提示词(Prompt) → 和AI沟通的方式
├── 输出解析器 → 格式化AI的回答
├── 工具(Tools) → AI的能力扩展
└── 记忆(Memory) → AI的记忆系统

高级组合:
├── 链(Chain) → 把积木串联起来
├── Agent → 让AI自己决定用哪些积木
└── RAG → 给AI外接知识库

核心优势:

  1. 标准化:统一的接口调用不同模型
  2. 组件化:可重用、可组合
  3. 简化开发:不需要关心底层细节
  4. 生态丰富:大量现成的工具和集成

🌰 通俗类比

类比1:AI应用 = 雇佣助手

传统Web开发:

  • 你是老板,写了详细的操作手册(代码)
  • 员工(程序)严格按手册执行
  • 结果完全可预测

AI应用开发:

  • 你雇了一个聪明的助手(AI)
  • 你给他任务说明(提示词)
  • 他自己理解并完成,可能用不同方法
  • LangChain就是助手的工作流管理系统

类比2:LangChain = 智能家居系统

不用LangChain:

  • 每个设备(模型、工具)都要单独控制
  • 需要记住每个设备的遥控器怎么用
  • 组合使用很麻烦

用LangChain:

  • 统一的控制面板
  • 一键场景模式(链)
  • 自动化流程(Agent)

🔄 思维转变对照表

方面Web开发思维AI应用开发思维
输入结构化参数自然语言描述
处理确定的逻辑AI理解和生成
输出精确的结果概率性的答案
调试看日志、断点调整提示词、观察输出
优化优化算法、SQL优化提示词、选择模型
测试单元测试、固定结果评估质量、多样本测试
错误处理try-catch提示词引导、输出验证

💡 实际应用场景

场景1:智能客服

传统方式:

1
2
3
4
5
6
7
def handle_customer_query(query: str) -> str:
if "退货" in query:
return get_refund_policy()
elif "物流" in query:
return get_logistics_info()
else:
return "请联系人工客服"

问题:

  • 需要穷举所有情况
  • 用户问法稍有不同就识别不了
  • 维护成本高

AI方式(用LangChain):

1
2
3
4
5
6
7
8
9
10
11
12
13
from langchain.agents import create_agent

agent = create_agent(
llm=your_model,
tools=[
查询订单工具,
查询物流工具,
退货政策工具
]
)

# AI自己理解意图,选择工具
response = agent.invoke("我3天前买的东西怎么还没到?")

优势:

  • AI理解各种问法
  • 自动选择合适的工具
  • 可以组合多个步骤

场景2:文档分析

传统方式:

  • 关键词搜索
  • 正则表达式匹配
  • 固定的规则提取

AI方式(RAG):

1
2
3
# 让AI理解文档内容,智能回答问题
qa_system = create_rag_system(documents)
answer = qa_system.invoke("这个合同的违约金条款是什么?")

场景3:数据转换

传统方式:

1
2
3
4
5
6
7
# 需要为每种格式写转换逻辑
def parse_date(text: str) -> datetime:
if re.match(r"\d{4}-\d{2}-\d{2}", text):
return datetime.strptime(text, "%Y-%m-%d")
elif re.match(r"\d{2}/\d{2}/\d{4}", text):
return datetime.strptime(text, "%m/%d/%Y")
# ... 更多格式

AI方式:

1
2
3
4
5
# AI理解各种表达方式
result = llm_with_parser.invoke(
"把'2023年10月28日'转换为ISO格式"
)
# 输出:2023-10-28

🎓 关键要点总结

  1. AI应用是”概率性”的

    • 不像传统代码那样确定
    • 需要通过提示词”引导”而不是”控制”
  2. LangChain是工具箱,不是魔法

    • 它简化了AI应用开发
    • 但仍需要理解底层原理
  3. 从”编程”到”提示工程”

    • Web开发:写精确的代码逻辑
    • AI开发:设计有效的提示词
  4. 组件化思维

    • 像搭积木一样组合组件
    • 重用和组合是关键
  5. 测试和调试方式不同

    • 需要评估质量而不是验证正确性
    • 需要多样本测试而不是单一测试用例

📚 下一步

现在你已经理解了AI应用开发的基本思维,接下来我们将:

  1. 第2课:搭建环境,配置国内可用的AI模型
  2. 第3课:学习LangChain的核心组件
  3. 第4课:开始构建实际的AI应用

🤔 思考题

在进入下一课之前,思考这些问题:

  1. 你目前的工作中,哪些场景可以用AI来优化?
  2. 这些场景更适合传统方式还是AI方式?
  3. 如果用AI,可能会遇到什么挑战?

准备好了吗? 继续第2课:环境搭建 →