第 1 章:LLM 应用基础
章节定位
这一章不直接讲 LangChain API,而是先建立一个正确的应用视角:LLM 应用到底由哪些部分组成,为什么“只会调模型”还不够,以及后面为什么需要 LangChain 这样的框架来组织能力。
如果你跳过这一章,后面学 RAG、Agent、LangGraph 时很容易只记住名词,不理解它们分别解决什么问题。
配套示例
- 目录:
examples/chapter-01 - 入口:
examples/chapter-01/main.py - 依赖:
examples/chapter-01/requirements.txt - 运行:
cd examples/chapter-01 && python3 main.py
示例层级与边界
- 层级:
Toy - 本章重点:先建立 LLM 应用的基本心智模型,理解流程比接真实 API 更重要。
- 不要误判:这里的
ToyLLM只是占位层,不能代表真实模型接入、成本控制或线上可用性。
本章目标
学完这一章,你应该能够:
- 说清楚什么是 LLM 应用,而不是只会调用一个模型接口
- 区分
prompt、message、context、token、structured output这些基础概念 - 理解聊天模型和补全模型的差别
- 知道为什么需要把“提示词、模型、输出解析、流程控制”拆开设计
- 用一个最小问答脚本,开始
AI 学习助手的主项目雏形
前置知识
建议你至少具备以下基础:
- 会写 Python 基础语法
- 知道什么是函数、参数、返回值
- 了解 HTTP 请求的基本概念
- 听说过大模型、ChatGPT、Prompt 这些词
如果你还不熟悉这些,也可以先读下去。本章会尽量把必要概念讲清楚。
1.1 什么是 LLM 应用
很多人一开始会把 LLM 应用理解成“调用一次模型 API”。这个理解不算错,但太窄了。
一个真正的 LLM 应用,通常至少包含下面这些部分:
- 用户输入
- 提示词组织
- 模型推理
- 上下文管理
- 输出格式控制
- 后处理或工具调用
也就是说,LLM 不是最终产品本身,而是产品里的一个推理核心。
以 AI 学习助手 为例:
- 用户输入“我想学 LangChain,先从哪里开始?”
- 系统先把这个问题整理成更明确的任务
- 模型生成学习建议
- 程序把输出整理成更适合阅读的结构
这才是一个最小可用的 LLM 应用链路。
1.2 核心概念
Token
Token 是模型处理文本时的基本单位,不等于字、词或字符。不同语言切分方式不同,所以你不能把“文本长度”简单理解成“字符数”。
为什么要关心 token:
- 输入太长会超出上下文窗口
- token 数量会影响成本和速度
- 后面做 RAG 和文档问答时,切分策略都和 token 相关
Context Window
Context Window 指模型一次能看到的上下文长度。你可以把它理解成模型的“短期记忆容量”。
当上下文太长时,模型可能会:
- 截断早期内容
- 遗漏关键约束
- 让输出质量下降
这也是为什么后面要学检索、摘要和上下文压缩。
Prompt
Prompt 是你给模型的任务说明。它不仅是“问一句话”,还可以包括:
- 任务目标
- 角色设定
- 输出格式要求
- 示例
- 约束条件
写好 Prompt,本质上是在设计模型的工作说明书。
Message
如果你使用聊天模型,输入通常会被拆成多条消息:
system:系统级规则user:用户输入assistant:模型历史回复
这种结构比单一长文本更适合对话式应用,也更适合后续控制行为。
Structured Output
Structured Output 是让模型输出固定结构的数据,例如 JSON。
它的价值在于:
- 更容易被程序继续处理
- 更容易做 UI 展示
- 更容易做校验和调试
例如 AI 学习助手 最终可能不只是输出一段文本,而是输出:
json
{
"topic": "LangChain 入门",
"difficulty": "beginner",
"learning_steps": ["先理解 LLM 应用", "再学核心抽象", "最后做第一个链"]
}1.3 模型调用的基本方式
单轮问答
最简单的方式是只给一个问题,让模型直接回答。
这种方式适合:
- 快速验证模型能力
- 做最小 demo
- 观察 prompt 对输出的影响
但它也有明显问题:
- 逻辑一复杂就不好维护
- 输出格式不稳定
- 没有清晰的流程分层
系统提示词
system prompt 用来定义模型的行为边界。比如你可以要求模型:
- 只用中文回答
- 不要编造事实
- 输出必须分点
- 先给结论,再给解释
这一步是把“模型风格”从用户输入里分离出来。
输出示例观察
你可以用同一个问题试几种不同的 prompt,观察输出变化。
比如问题:
给我一个 LangChain 学习建议
你会发现,单纯提问和加上约束后的输出差异很大。这个观察非常重要,因为后面很多工程优化,本质上都是在控制输入和输出之间的差异。
1.4 为什么需要框架
如果只做一个玩具 demo,直接调用模型 SDK 就够了。但一旦你想做真实产品,问题会迅速变多:
- 提示词越来越长,难以维护
- 输出需要结构化,不能只靠自然语言
- 业务流程会拆成多步
- 要接入文档、工具、搜索、数据库
- 需要调试和复现问题
这就是 LangChain 存在的理由之一:把这些反复出现的工程问题抽象成可组合的组件。
你可以把它理解成:
- 模型负责推理
- 框架负责组织推理过程
- 你的业务代码负责定义任务和边界
1.5 最小示例:第一个问答脚本
下面这个例子不依赖 LangChain,目的是先理解“一个最小 LLM 应用长什么样”。
python
def build_prompt(topic: str) -> str:
return f"""
你是一个中文技术导师。
请用 3 点解释 {topic},每点都要简短、具体、适合初学者。
"""
def mock_model_call(prompt: str) -> str:
# 这里在真实项目中会替换成模型 API 调用
return f"模型收到提示词:{prompt}"
def main() -> None:
topic = "LangChain"
prompt = build_prompt(topic)
answer = mock_model_call(prompt)
print(answer)
if __name__ == "__main__":
main()这个例子说明了最基本的链路:
- 组装提示词
- 调用模型
- 输出结果
后面你会发现,LangChain 只是把这条链路做得更模块化、更可组合。
1.6 AI 学习助手 的第一步
从本章开始,我们把学习内容和主项目绑定起来。
AI 学习助手 V0 可以先定义成一个最简单的能力:
- 输入一个学习主题
- 输出适合初学者的学习顺序
- 给出基础概念和练习建议
它还不需要接文档、不需要工具、不需要工作流,只要能稳定输出一个合理的学习建议就够了。
这一步的意义是把课程和项目统一起来,避免“学一套、做一套”。
1.7 本章实践
请你完成以下练习:
- 用自己的话解释什么是
LLM 应用 - 选一个你熟悉的话题,写一个最小 prompt
- 让同一个模型问题输出三种不同风格的回答
- 记录你发现的输出差异
如果你愿意进一步推进,可以把练习整理成一个 chapter-01 的小脚本,并在后续章节继续扩展。
1.8 常见坑
- 把 LLM 应用等同于“聊天机器人”
- 认为 prompt 越长越好
- 误以为模型输出天然可靠
- 忽略上下文窗口和 token 限制
- 一开始就追求复杂架构,结果什么都没跑通
1.9 练习题
- 为什么说“模型调用”不等于“应用开发”?
system prompt和user prompt的作用分别是什么?- 为什么后面要学习结构化输出?
- 你的
AI 学习助手 V0应该先解决什么问题?
本章总结
这一章的重点不是学 API,而是建立正确心智模型:
- LLM 只是推理核心,不是完整应用
- prompt、上下文、输出格式和流程控制同样重要
- 真正的工程问题,靠“拆模块”而不是“堆提示词”解决
你现在已经具备继续学习 LangChain 的前提。下一章会正式进入 LangChain 的核心抽象,开始理解 PromptTemplate、Chat Model、Output Parser 和 Runnable 这些最关键的概念。
学完本章,你现在应该会
- 用自己的话解释什么是
LLM 应用,并说清它不等于单次模型调用 - 说明 prompt、上下文、输出格式为什么都会影响最终效果
- 画出一个最小问答脚本的输入到输出链路
- 说清
AI 学习助手 V0当前只解决什么问题,不解决什么问题
最小验收 checklist
- [ ] 我能描述一个最小 LLM 应用至少包含输入、模型调用和输出三个环节
- [ ] 我能写出一个围绕单一主题的最小 prompt
- [ ] 我知道同一个问题为什么会出现不同风格或不同质量的输出
- [ ] 我能说出本章示例里哪些部分以后会被 LangChain 模块化接管
建议你动手改一版
- 把示例里的主题从
LangChain改成你熟悉的技术主题,再观察输出是否还清晰 - 给最小脚本增加一个
style参数,让它支持“面向初学者”和“面向有经验开发者”两种回答风格 - 补一个输入为空时的提示,先养成最基本的输入校验习惯
卡住时先回看这里
- 如果你分不清“模型调用”和“应用开发”,回看 chapter-01-llm-basics.md 里的
## 1.1 什么是 LLM 应用 - 如果你不确定 prompt 到底在控制什么,回看 chapter-01-llm-basics.md 里的
## 1.2 核心概念 - 如果你不知道主项目为什么现在还这么简单,回看 chapter-01-llm-basics.md 里的
## 1.6 AI 学习助手 的第一步
下一章预告
下一章我们会把本章的最小问答脚本升级成可组合的 LangChain 结构,理解为什么 prompt | model | parser 是一个非常重要的工程起点。