
├── 01 LangChain基础与大模型调用
│ ├── 01-LangChain课程介绍
│ ├── 02-什么是LangChain_有哪些常用的LLM框架
│ ├── 03-为什么使用LangChain?
│ ├── 04-LangChain的整体架构设计
│ ├── 05-开发前的准备工作与环境搭建
│ ├── 06-基于RAG架构的开发
│ ├── 07-基于Agent架构的开发
│ ├── 08-大模型应用开发的4个场景
│ ├── 09-LangChain核心模块剖析与HelloWorld实现
│ ├── 10-大模型的分类与按照功能分类的演示
│ ├── 11-硬编码的方式调用对话&非对话模型
│ ├── 12-使用环境变量_配置文件的方式调用大模型
│ ├── 13-通过OpenAI、百度千帆平台调用大模型
│ ├── 14-通过阿里云百炼、智谱、硅基流动调用大模型
│ ├── 15-模型调用的总结
│ ├── 16-关于对话模型调用消息列表
│ ├── 17-关于多轮对话与上下文记忆
│ ├── 18-阻塞式invoke()和流式stream()的调用
│ └── 19-了解:批量调用与同步异步方法的调用
├── 02 Prompt提示词模板与输出解析
│ ├── 20-提示词模板的理解
│ ├── 21-PromptTemplate实例化方式1:使用构造方法
│ ├── 22-PromptTemplate实例化方式2:from_template()
│ ├── 23-部分提示词变量赋值的两种方式
│ ├── 24-format()与invoke()的对比及大模型的调用
│ ├── 25-ChatPromptTemplate实例化的两种方式
│ ├── 26-模板调用的4种方法及对比
│ ├── 27-6种不同的实例化参数使用举例
│ ├── 28-举例4和举例6的再说明
│ ├── 29-调用大模型_MessagesPlaceholder的使用
│ ├── 30-FewShotPromptTemplate的使用
│ ├── 31-FewShotChatMessagePromptTemplate的使用
│ ├── 32-Example selectors示例选择器的使用
│ ├── 33-PiplinePromptTemplate的使用_从物理磁盘读取提示词
│ ├── 34-输出解析器概述_StrOutputParser的使用
│ ├── 35-JsonOutputParser的使用
│ ├── 36-带管道符的chain结构的使用
│ ├── 37-XMLOutputParser的使用
│ └── 38-了解CSV和Datetime的输出解析器
├── 03 Chain链与Memory记忆机制
│ ├── 39-LangChain调用本地大模型
│ ├── 40-Chain的理解与举例
│ ├── 41-最基础的LLMChain的使用
│ ├── 42-顺序链之SimpleSequentialChain的使用
│ ├── 43-顺序链之SequentialChain的使用
│ ├── 44-了解:数学链、路由链、文档链
│ ├── 45-新型Chain之create_sql_query_chain的使用
│ ├── 46-新型Chain之create_stuff_documents_chain的使用
│ ├── 47-为什么需要Memory模块
│ ├── 48-自定义的方式实现大模型的记忆功能
│ ├── 49-Memory的设计思路_ChatMessageHistory的使用
│ ├── 50-记录完整历史会话的ConversationBufferMemory的使用1
│ ├── 51-记录完整历史会话的ConversationBufferMemory的使用2
│ ├── 52-简化历史完整记录使用的ConversationChain
│ ├── 53-记录最近k条消息的ConversationBufferWindowMemory的使用
│ ├── 54-通过Token限制记忆的ConversationTokenBufferMemory的使用
│ ├── 55-保存历史摘要的ConversationSummaryMemory的使用
│ ├── 56-混合记忆ConversationSummaryBufferMemory的使用
│ ├── 57-提取实体的ConversationEntityMemory的使用
│ ├── 58-提取为知识图谱的ConversationKGMemory的使用
│ └── 59-基于向量存储VectorStoreRetrieverMemory的使用
├── 04 Agent智能体与工具调用
│ ├── 60-Tool的要素与实操步骤
│ ├── 61-定义工具方式1:使用@tool装饰器
│ ├── 62-定义工具方式2:使用StructuredTool.from_function()
│ ├── 63-大模型分析工具的调用举例
│ ├── 64-大模型分析出的工具如何调用
│ ├── 65-Agent的理解
│ ├── 66-Agent和AgentExecutor的两种创建方式
│ ├── 67-传统方式之ReAct模式进行单工具调用
│ ├── 68-传统方式之FUNCTION_CALL模式进行单工具调用
│ ├── 69-传统方式之ReAct和FUNCTION_CALL两种模式进行多工具调用
│ ├── 70-传统方式之自定义函数与工具
│ ├── 71-通用方式之FUNCTION_CALL模式的调用
│ ├── 72-通用方式之ReAct模式的调用
│ ├── 73-工具调用中传统方式和通用方式的小结
│ ├── 74-以ReAct模式为例说明传统方式嵌入记忆
│ ├── 75-AgentType的ZERO_SHOT_REACT_DESCRIPTION情况源码分析
│ ├── 76-通用方式中使用FUNCTION_CALL模式嵌入记忆
│ ├── 77-通用方式中使用ReAct模式嵌入记忆
│ └── …
├── 05 RAG检索增强生成
│ ├── 78-Retrieval模块的设计意义
│ ├── 79-Retrieval的整体流程说明
│ ├── 80-熟悉不同的文档加载器_Txt文档的加载
│ ├── 81-PDF和CSV格式文档的加载
│ ├── 82-JSON格式文档的加载
│ ├── 83-HTML、Markdown、文件目录的加载
│ ├── 84-为什么切分以及切分的策略
│ ├── 85-TextSplitter源码剖析
│ ├── 86-具体拆分器1:CharacterTextSplitter
│ ├── 87-具体拆分器2:RecursiveCharacterTextSplitter
│ ├── 88-具体拆分器3:TokenTextSplitter、CharacterTextSplitter
│ ├── 89-具体拆分器4:SemanticChunker
│ ├── 90-其它的拆分器介绍
│ ├── 91-文档嵌入模型的介绍
│ ├── 92-举例:句子的向量化与文档的向量化
│ ├── 93-向量存储的理解与功能介绍
│ ├── 94-向量数据库功能1:数据的存储
│ ├── 95-向量数据库功能2:数据的多种检索方法
│ ├── 96-检索器的介绍与基础举例
│ ├── 97-演示Retriever不同的检索策略
│ ├── 98-RAG结合大模型的使用举例
│ └── …
└── 06 综合案例与课程总结
├── 99-综合案例:智能对话助手
└── 100-最后复习