《大模型应用开发极简入门:基于GPT-4和ChatGPT(第2版)》完整目录与小节内容
本书以极简、实战、可落地为核心,从基础认知到高级框架,覆盖GPT-4/ChatGPT应用开发全流程,含大量Python代码与实战案例,第2版新增RAG、智能体、函数调用、LangChain/LlamaIndex等核心内容。
第1章 初识GPT-4和ChatGPT(入门认知)
1.1 LLM(大语言模型)概述
- 大语言模型的核心定义、能力边界与工作原理(文本生成、理解、推理)。
- 对比传统NLP与LLM的本质差异,建立AI应用开发的认知基础。
1.2 GPT模型简史:从GPT-1到GPT-4
- 梳理GPT系列演进(GPT-1/2/3/3.5/4),解析每代核心突破(参数、上下文、多模态)。
- GPT-4的关键升级:多模态能力、长上下文、推理精度、函数调用支持。
1.3 LLM用例与示例产品
- 覆盖文本生成、问答、摘要、翻译、代码、对话、内容创作等高频场景。
- 实战案例:ChatGPT、New Bing、GitHub Copilot、Notion AI等产品拆解。
1.4 警惕AI幻觉:限制与考虑
- 详解幻觉、事实错误、偏见、上下文遗忘等LLM核心问题。
- 给出基础规避策略:提示约束、事实校验、多轮验证。
1.5 使用插件和微调优化GPT模型
- 插件与微调的定位:扩展能力、适配业务、提升精度。
- 对比提示工程、微调、插件的适用场景与成本。
1.6 小结
- 梳理GPT-4核心能力、局限与开发路径,为后续实战铺垫。
第2章 深入了解OpenAI API(开发基础)
2.1 基本概念
- OpenAI API核心术语:模型、提示、补全、上下文、token、温度、top-p。
- API调用流程:认证→请求→响应→解析的完整链路。
2.2 OpenAI API可用模型
- 模型选型:gpt-3.5-turbo、gpt-4、gpt-4-vision、davinci等。
- 模型对比:能力、上下文长度、成本、延迟、适用场景。
2.3 在OpenAI Playground中使用GPT模型
- 可视化调试:Playground界面操作、参数配置、提示测试、结果对比。
- 快速验证提示逻辑,无需编写代码。
2.4 开始使用OpenAI Python库
- 环境搭建:安装openai库、API密钥配置、基础调用代码。
- 实战:编写第一个“Hello, AI”程序,实现文本生成。
2.5 使用GPT-4和ChatGPT
- ChatCompletion API核心用法:messages结构、system/user/assistant角色、多轮对话。
- 代码示例:实现聊天机器人、问答系统。
2.6 使用其他文本补全模型
- Completion API(旧版)用法、适用场景(单轮文本生成)。
- 对比ChatCompletion与Completion的差异。
2.7 考虑因素
- 成本控制:token计费、批量请求、缓存策略。
- 性能优化:延迟、吞吐量、错误处理、重试机制。
2.8 其他OpenAI API和功能
- Embeddings API:文本向量化、相似度计算、RAG基础。
- Moderation API:内容安全审核、违规检测。
- Function Calling:工具调用、外部API集成(第2版新增)。
2.9 小结(含速查清单)
- API核心参数、调用模板、常见问题速查,便于快速开发。
第3章 构建基于LLM的应用程序:功能与挑战(实战入门)
3.1 应用程序开发概述
- 3.1.1 API密钥管理:安全存储、环境变量、密钥轮换、权限控制。
- 3.1.2 安全与数据隐私:数据脱敏、合规(GDPR/CCPA)、避免敏感信息泄露。
3.2 软件架构设计原则
- LLM应用架构分层:接入层、逻辑层、模型层、数据层、监控层。
- 设计原则:解耦、可扩展、容错、可观测、成本优化。
3.3 将LLM能力集成到你的项目中
- 3.3.1 对话能力:多轮对话管理、上下文维护、会话持久化。
- 3.3.2 语言处理能力:文本生成、摘要、翻译、分类、提取的集成方案。
- 3.3.3 多模态能力:GPT-4V图像理解、图文生成(第2版新增)。
3.4 LLM驱动型应用程序的漏洞
- 3.4.1 分析输入和输出:输入过滤、输出校验、异常处理。
- 3.4.2 提示词注入攻击:原理、防护策略、防御性提示设计。
3.5 示例项目(2小时搭建首个AI应用)
- 实战1:新闻稿生成器(文本生成、结构化输出)。
- 实战2:智能问答系统(上下文对话、FAQ集成)。
- 实战3:视频/文档摘要工具(长文本处理、关键信息提取)。
- 实战4:代码助手(代码生成、解释、调试)。
3.6 小结
- 从0到1搭建LLM应用的完整流程、常见问题与解决方案。
第4章 GPT-4和ChatGPT的高级技巧(核心进阶)
4.1 提示工程(Prompt Engineering)
- 4.1.1 提示基础:角色设定、上下文、任务描述、输出格式的结构化设计。
- 4.1.2 上下文学习:零样本、少样本、思维链(CoT)、自洽性提升推理能力。
- 4.1.3 高级提示策略:分步思考、示例引导、约束条件、格式强制(JSON/XML)。
- 4.1.4 防御性提示:幻觉抑制、事实校验、边界控制、安全防护。
- 4.1.5 提示优化:token压缩、成本控制、迭代测试、版本管理。
4.2 微调(Fine-tuning)
- 4.2.1 微调概述:定义、与提示工程的差异、适用场景(极致性能、格式严格)。
- 4.2.2 微调流程:数据准备(格式/质量)、API调用、训练监控、模型评估。
- 4.2.3 微调实战:法律文本分析、代码审查、财务摘要、营销文案生成。
- 4.2.4 成本与权衡:训练成本、推理成本、数据要求、迭代周期。
4.3 小结
- 提示工程与微调的最佳实践、组合策略、场景选型。
第5章 使用LangChain框架和插件增强LLM功能(框架实战)
5.1 LangChain核心概念
- 模块架构:提示模板、链、Agent、记忆、工具、向量存储。
- 核心价值:模块化、可扩展、复杂工作流编排、多模型集成。
5.2 LangChain基础组件
- 提示模板(Prompt Templates):动态提示生成、复用、参数化。
- 链(Chains):LLMChain、SequentialChain、RouterChain串联任务流程。
- 记忆(Memory):ConversationBufferMemory、VectorMemory上下文管理。
- 工具(Tools):Google Search、Python REPL、API调用扩展外部能力。
5.3 构建RAG系统(第2版核心新增)
- RAG原理:检索增强生成解决幻觉、提升知识准确性。
- LlamaIndex实战:文档加载、分块、嵌入、索引、检索、生成完整流程。
- 实战:企业知识库问答、文档智能检索系统搭建。
5.4 开发AI Agent(智能体,第2版核心新增)
- Agent架构:感知-规划-行动-记忆-反思闭环。
- ReAct框架:推理-行动-观察循环实现自主决策。
- 函数调用与工具集成:OpenAI Function Calling + LangChain Tools实现复杂任务。
- 实战:自动化办公Agent、数据分析Agent、任务调度Agent。
5.5 插件与扩展
- OpenAI插件:插件开发、认证、调用、生态集成。
- 自定义工具开发:内部API、数据库、第三方服务集成。
5.6 小结
- LangChain+LlamaIndex构建复杂LLM应用的完整方案、最佳实践。
第6章 综合运用与实战(项目整合)
6.1 多技术融合方案
- 提示工程+RAG+Agent组合:解决复杂业务场景(如智能客服、数据分析)。
- 模型路由:多模型(GPT-3.5/4、开源模型)动态调度、成本优化。
6.2 生产级应用部署
- 部署架构:API网关、负载均衡、缓存、监控、告警。
- 性能优化:批处理、KV缓存、量化、异步调用降低延迟与成本。
- 安全与合规:数据加密、访问控制、审计日志、内容审核。
6.3 实战项目:端到端AI应用
- 综合案例1:智能客服系统(对话管理+RAG+工具调用+人工转接)。
- 综合案例2:自动化内容创作平台(多模态生成+内容审核+发布)。
- 综合案例3:企业数据分析师Agent(数据查询+可视化+报告生成)。
6.4 国内模型适配(第2版新增)
- DeepSeek模型开发:API调用、提示适配、实战案例。
- Dify平台实战:低代码搭建LLM应用、可视化编排、部署管理。
6.5 小结
- 生产级LLM应用的开发、部署、运维全流程,覆盖国内外技术生态。
《大模型应用开发极简入门:基于GPT-4和ChatGPT(第2版)》核心代码模板速查手册
以下是书中高频使用的核心代码模板,均基于Python实现,可直接复制复用,覆盖API调用、提示工程、RAG、Agent四大核心场景,附带关键注释与使用说明。
一、基础OpenAI API调用模板
1. 环境配置与基础文本生成
import openai
import os
from dotenv import load_dotenv
# 加载环境变量(推荐将API_KEY存放在.env文件,避免硬编码)
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def gpt_basic_completion(prompt, model="gpt-3.5-turbo"):
"""基础ChatCompletion API调用(GPT-3.5/4通用)"""
try:
response = openai.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "你是一个专业的AI助手,回答简洁准确"}, # 系统角色设定
{"role": "user", "content": prompt} # 用户输入
],
temperature=0.7, # 随机性:0(确定)~2(随机)
max_tokens=1000, # 最大输出长度
top_p=1.0, # 采样策略:1.0表示不限制
n=1 # 生成结果数
)
# 提取回复内容
return response.choices[0].message.content.strip()
except Exception as e:
print(f"API调用失败:{e}")
return None
# 测试调用
if __name__ == "__main__":
result = gpt_basic_completion("解释一下什么是RAG技术")
print(result)
2. 多轮对话(上下文管理)
def gpt_multi_turn_dialog(messages, model="gpt-3.5-turbo"):
"""多轮对话:维护messages列表保存上下文"""
try:
response = openai.chat.completions.create(
model=model,
messages=messages,
temperature=0.5
)
# 追加AI回复到上下文
assistant_reply = response.choices[0].message.content.strip()
messages.append({"role": "assistant", "content": assistant_reply})
return assistant_reply, messages
except Exception as e:
print(f"多轮对话失败:{e}")
return None, messages
# 测试多轮对话
if __name__ == "__main__":
# 初始化上下文
dialog_messages = [{"role": "system", "content": "你是一个Python编程助手"}]
# 第一轮对话
user_input1 = "如何写一个简单的Python循环?"
dialog_messages.append({"role": "user", "content": user_input1})
reply1, dialog_messages = gpt_multi_turn_dialog(dialog_messages)
print(f"AI回复1:{reply1}")
# 第二轮对话(基于上文)
user_input2 = "如何优化这个循环的性能?"
dialog_messages.append({"role": "user", "content": user_input2})
reply2, dialog_messages = gpt_multi_turn_dialog(dialog_messages)
print(f"AI回复2:{reply2}")
3. Function Calling(函数调用)
import json
# 定义待调用的函数(示例:获取天气)
def get_weather(city: str) -> str:
"""模拟获取天气的函数"""
weather_data = {
"北京": "晴,20-28℃",
"上海": "多云,22-30℃",
"广州": "雷阵雨,25-32℃"
}
return weather_data.get(city, "暂无该城市天气数据")
def gpt_function_calling(user_query):
"""Function Calling完整流程:调用→解析→执行→返回结果"""
# 1. 定义函数描述
functions = [
{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如北京、上海"
}
},
"required": ["city"]
}
}
]
# 2. 调用GPT,触发函数调用
response = openai.chat.completions.create(
model="gpt-3.5-turbo-0613", # 需使用支持Function Calling的模型版本
messages=[{"role": "user", "content": user_query}],
functions=functions,
function_call="auto" # 自动判断是否调用函数
)
# 3. 解析响应,执行函数
response_message = response.choices[0].message
if response_message.function_call:
# 获取函数名和参数
function_name = response_message.function_call.name
function_args = json.loads(response_message.function_call.arguments)
# 执行函数
if function_name == "get_weather":
weather_result = get_weather(city=function_args["city"])
# 4. 将函数结果返回给GPT,生成最终回复
final_response = openai.chat.completions.create(
model="gpt-3.5-turbo-0613",
messages=[
{"role": "user", "content": user_query},
response_message, # 包含函数调用信息
{
"role": "function",
"name": function_name,
"content": weather_result
}
]
)
return final_response.choices[0].message.content
else:
# 无需调用函数,直接返回GPT回复
return response_message.content
# 测试函数调用
if __name__ == "__main__":
result = gpt_function_calling("查询上海今天的天气")
print(result) # 输出:上海今天的天气是多云,22-30℃
二、提示工程模板(结构化提示)
def prompt_engineering_template(task_type, context, examples=[], requirements=""):
"""结构化提示模板:适配不同任务类型"""
# 基础提示框架
prompt_template = f"""
角色:你是一名专业的{task_type}专家
上下文:{context}
示例:{"无" if not examples else "\n".join([f"- {e}" for e in examples])}
要求:{requirements}
请严格按照上述要求完成任务,输出结果需简洁、准确、符合格式要求。
"""
return prompt_template.strip()
# 示例1:文本摘要
if __name__ == "__main__":
summary_prompt = prompt_engineering_template(
task_type="文本摘要",
context="人工智能(AI)是一门旨在使计算机系统能够模拟、延伸和扩展人类智能的技术科学。它涵盖了机器学习、深度学习、自然语言处理等多个领域,应用场景包括智能客服、自动驾驶、医疗诊断等。",
examples=["输入:苹果是一种水果,富含维生素。输出:苹果是富含维生素的水果。"],
requirements="摘要长度不超过50字,保留核心信息,无冗余内容"
)
result = gpt_basic_completion(summary_prompt)
print("摘要结果:", result)
# 示例2:思维链(CoT)推理
cot_prompt = """
请分步解决以下数学题,每一步说明计算逻辑:
题目:小明有10个苹果,送给小红3个,又买了5个,现在小明有多少个苹果?
思考步骤:
1. 初始苹果数:10个
2. 送给小红后剩余:10 - 3 = 7个
3. 购买后总数:7 + 5 = 12个
最终答案:12个
"""
result = gpt_basic_completion(cot_prompt)
print("CoT推理结果:", result)
三、RAG检索增强生成(基于LlamaIndex+LangChain)
前置依赖安装
pip install llama-index langchain openai python-dotenv pypdf # 需安装PDF处理库
RAG核心代码
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
# 配置LlamaIndex
Settings.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1)
Settings.embed_model = OpenAIEmbedding(model="text-embedding-ada-002")
def build_rag_index(doc_dir="./docs"):
"""构建文档索引(支持PDF/TXT等格式)"""
# 加载文档
documents = SimpleDirectoryReader(doc_dir).load_data()
# 构建向量索引
index = VectorStoreIndex.from_documents(documents)
# 保存索引(可选)
index.storage_context.persist(persist_dir="./rag_index")
return index
def rag_query(index, query):
"""RAG检索+生成"""
# 创建查询引擎
query_engine = index.as_query_engine()
# 执行检索+生成
response = query_engine.query(query)
return response.response
# 测试RAG
if __name__ == "__main__":
# 1. 构建索引(首次运行需执行,后续可加载)
# index = build_rag_index()
# 2. 加载已保存的索引(后续使用)
from llama_index.core import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(persist_dir="./rag_index")
index = load_index_from_storage(storage_context)
# 3. 检索问答
query = "文档中提到的AI工程核心流程有哪些?"
result = rag_query(index, query)
print("RAG回答:", result)
四、AI Agent智能体(基于LangChain)
前置依赖安装
pip install langchain langchain-openai langchain-community
Agent核心代码(ReAct框架+工具调用)
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain_core.prompts import PromptTemplate
from langchain_core.tools import Tool
from langchain_community.tools import DuckDuckGoSearchRun
# 1. 初始化LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.1, api_key=os.getenv("OPENAI_API_KEY"))
# 2. 定义工具集
# 工具1:搜索引擎
search_tool = DuckDuckGoSearchRun(name="Search")
# 工具2:自定义函数(天气查询)
def weather_tool(city):
return get_weather(city) # 复用之前定义的get_weather函数
tools = [
Tool(
name="Search",
func=search_tool.run,
description="用于查询实时信息、最新数据、未知知识点等场景"
),
Tool(
name="Weather",
func=weather_tool,
description="用于查询指定城市的天气信息,输入为城市名称"
)
]
# 3. ReAct Prompt模板(核心)
react_prompt = PromptTemplate.from_template("""
你是一名智能助手,需遵循以下步骤完成任务:
1. 分析用户问题,判断是否需要使用工具
2. 如需使用工具,格式为:Action: [工具名] Action Input: [工具输入]
3. 执行工具后,根据结果继续分析,直至完成任务
4. 最终回答需简洁、准确,基于工具结果或自身知识
可用工具:{tools}
工具说明:{tool_names_with_descriptions}
用户问题:{input}
思考:{agent_scratchpad}
""")
# 4. 创建Agent并执行
agent = create_react_agent(llm=llm, tools=tools, prompt=react_prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 测试Agent
if __name__ == "__main__":
# 案例1:需要搜索引擎
result1 = agent_executor.invoke({"input": "2026年春节是几月几日?"})
print("Agent回答1:", result1["output"])
# 案例2:需要天气工具
result2 = agent_executor.invoke({"input": "北京今天的天气如何?"})
print("Agent回答2:", result2["output"])
总结
- 基础API调用:核心是
ChatCompletion接口,重点关注messages结构、上下文管理和Function Calling参数配置; - 提示工程:通过结构化模板(角色+上下文+示例+要求)提升输出质量,思维链(CoT)是复杂推理的核心技巧;
- RAG系统:核心流程为「文档加载→向量索引→检索→生成」,LlamaIndex简化了索引构建与检索逻辑;
- AI Agent:基于LangChain的ReAct框架,核心是「工具定义+Prompt模板+Agent执行器」,实现自主决策与工具调用。
所有模板均兼容GPT-3.5/4,使用前需确保配置好OpenAI API密钥,国内用户可替换为DeepSeek等兼容API的模型。