book

0 阅读13分钟

《大模型应用开发极简入门:基于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"])

总结

  1. 基础API调用:核心是ChatCompletion接口,重点关注messages结构、上下文管理和Function Calling参数配置;
  2. 提示工程:通过结构化模板(角色+上下文+示例+要求)提升输出质量,思维链(CoT)是复杂推理的核心技巧;
  3. RAG系统:核心流程为「文档加载→向量索引→检索→生成」,LlamaIndex简化了索引构建与检索逻辑;
  4. AI Agent:基于LangChain的ReAct框架,核心是「工具定义+Prompt模板+Agent执行器」,实现自主决策与工具调用。

所有模板均兼容GPT-3.5/4,使用前需确保配置好OpenAI API密钥,国内用户可替换为DeepSeek等兼容API的模型。