langchain二次开发:入门

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
langchain二次开发:入门 [2026/04/03 10:24] – 创建 张叶安langchain二次开发:入门 [2026/04/03 11:45] (当前版本) – [1.4.2 逐步解析] 张叶安
行 7: 行 7:
 在2022年底,OpenAI发布ChatGPT之后,大型语言模型(Large Language Models, LLMs)迎来了爆发式增长。开发者们很快发现,虽然这些模型拥有强大的语言理解和生成能力,但将它们集成到实际应用中却面临诸多挑战: 在2022年底,OpenAI发布ChatGPT之后,大型语言模型(Large Language Models, LLMs)迎来了爆发式增长。开发者们很快发现,虽然这些模型拥有强大的语言理解和生成能力,但将它们集成到实际应用中却面临诸多挑战:
  
-- **上下文管理困难**:LLM是无状态的,无法记住之前的对话内容 +  - **上下文管理困难**:LLM是无状态的,无法记住之前的对话内容 
-- **数据集成复杂**:如何让模型访问外部数据源(数据库、文档、API等) +  - **数据集成复杂**:如何让模型访问外部数据源(数据库、文档、API等) 
-- **提示工程繁琐**:编写、管理和优化提示词(Prompt)需要大量经验 +  - **提示工程繁琐**:编写、管理和优化提示词(Prompt)需要大量经验 
-- **链式调用复杂**:复杂的任务需要多个LLM调用协同完成 +  - **链式调用复杂**:复杂的任务需要多个LLM调用协同完成 
-- **生产化部署困难**:从原型到生产环境需要解决监控、调试、性能等问题+  - **生产化部署困难**:从原型到生产环境需要解决监控、调试、性能等问题
  
 正是为了解决这些问题,LangChain于2022年10月由Harrison Chase创建。它是一个开源的Python(后来也支持JavaScript/TypeScript)框架,旨在帮助开发者更轻松地构建基于LLM的应用程序。 正是为了解决这些问题,LangChain于2022年10月由Harrison Chase创建。它是一个开源的Python(后来也支持JavaScript/TypeScript)框架,旨在帮助开发者更轻松地构建基于LLM的应用程序。
行 23: 行 23:
 === 1. 组件化设计 === === 1. 组件化设计 ===
 LangChain将LLM应用所需的功能拆分为独立的、可复用的组件: LangChain将LLM应用所需的功能拆分为独立的、可复用的组件:
-* **Models**:与各种LLM的接口 +  * **Models**:与各种LLM的接口 
-* **Prompts**:提示词管理 +  * **Prompts**:提示词管理 
-* **Chains**:将多个组件串联起来 +  * **Chains**:将多个组件串联起来 
-* **Indexes**:文档索引和检索 +  * **Indexes**:文档索引和检索 
-* **Memory**:状态管理 +  * **Memory**:状态管理 
-* **Agents**:智能代理+  * **Agents**:智能代理
  
 === 2. 链式思维 === === 2. 链式思维 ===
行 56: 行 56:
 <code> <code>
 ┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
-│                      应用层 (Applications)                    +│                      应用层 (Applications)                   
 │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐     │ │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐     │
-│  │ 聊天机器人 │  │ 问答系统  │  │ 代码助手  │  │ 智能代理  │     │+│  │ 聊天机器人│  │ 问答系统 │  │ 代码助手  │  │ 智能代理  │     │
 │  └──────────┘  └──────────┘  └──────────┘  └──────────┘     │ │  └──────────┘  └──────────┘  └──────────┘  └──────────┘     │
 └─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
行 65: 行 65:
 │                      链层 (Chains)                           │ │                      链层 (Chains)                           │
 │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐     │ │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐     │
-│  │ LLM Chain│  │ RAG Chain│  │Agent Chain│  │ 自定义链  │     │+│  │ LLM Chain│  │ RAG Chain│  │Agent Chain│ │ 自定义链 │     │
 │  └──────────┘  └──────────┘  └──────────┘  └──────────┘     │ │  └──────────┘  └──────────┘  └──────────┘  └──────────┘     │
 └─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
                               │                               │
 ┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
-│                     组件层 (Components)                       +│                     组件层 (Components)                      
 │  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐ │ │  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐ │
-│  │Models│  │Prompts│  │Indexes│  │Memory│  │Agents│  │Tools │ │+│  │Models│  │Prompts│ │Indexes│ │Memory│  │Agents│  │Tools │ │
 │  └──────┘  └──────┘  └──────┘  └──────┘  └──────┘  └──────┘ │ │  └──────┘  └──────┘  └──────┘  └──────┘  └──────┘  └──────┘ │
 └─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
行 87: 行 87:
 LangChain的架构分为四个层次: LangChain的架构分为四个层次:
  
-- **模型层**:与各种LLM提供商的接口 +  - **模型层**:与各种LLM提供商的接口 
-- **组件层**:构成应用的基本单元 +  - **组件层**:构成应用的基本单元 
-- **链层**:将组件组合成可执行的工作流 +  - **链层**:将组件组合成可执行的工作流 
-- **应用层**:面向最终用户的完整应用+  - **应用层**:面向最终用户的完整应用
  
 这种分层架构使得LangChain既灵活又强大:开发者可以从底层组件开始构建,也可以直接使用高层抽象快速开发应用。 这种分层架构使得LangChain既灵活又强大:开发者可以从底层组件开始构建,也可以直接使用高层抽象快速开发应用。
行 105: 行 105:
  
 LangChain的最大优势在于其: LangChain的最大优势在于其:
-* **丰富的集成**:支持几乎所有主流LLM和工具 +  * **丰富的集成**:支持几乎所有主流LLM和工具 
-* **活跃的社区**:大量教程、插件和开源项目 +  * **活跃的社区**:大量教程、插件和开源项目 
-* **快速迭代**:紧跟AI领域最新发展 +  * **快速迭代**:紧跟AI领域最新发展 
-* **企业级功能**:LangSmith和LangServe提供完整的生产支持+  * **企业级功能**:LangSmith和LangServe提供完整的生产支持
  
 ---- ----
行 385: 行 385:
 ==== 1.3.1 环境要求 ==== ==== 1.3.1 环境要求 ====
  
-* **Python**: 3.8.1 或更高版本(推荐 3.10+) +  * **Python**: 3.8.1 或更高版本(推荐 3.10+) 
-* **操作系统**: Windows、macOS、Linux 均可 +  * **操作系统**: Windows、macOS、Linux 均可 
-* **内存**: 建议 8GB+,如果使用本地模型需要更多 +  * **内存**: 建议 8GB+,如果使用本地模型需要更多 
-* **网络**: 需要访问OpenAI等API(或使用代理)+  * **网络**: 需要访问OpenAI等API(或使用代理)
  
 ==== 1.3.2 安装 LangChain ==== ==== 1.3.2 安装 LangChain ====
行 425: 行 425:
 pip install chromadb           # Chroma pip install chromadb           # Chroma
 pip install faiss-cpu          # FAISS (CPU版本) pip install faiss-cpu          # FAISS (CPU版本)
-pipinstall faiss-gpu          # FAISS (GPU版本)+pip install faiss-gpu          # FAISS (GPU版本)
 pip install pinecone-client    # Pinecone pip install pinecone-client    # Pinecone
 </code> </code>
行 437: 行 437:
 pip install chromadb faiss-cpu pip install chromadb faiss-cpu
 pip install pypdf unstructured pip install pypdf unstructured
-pipinstall beautifulsoup4 requests+pip install beautifulsoup4 requests
 pip install python-dotenv pip install python-dotenv
 </code> </code>
行 639: 行 639:
  
  
-* `ChatOpenAI`: 与OpenAI聊天模型的接口 +  * `ChatOpenAI`: 与OpenAI聊天模型的接口 
-* `ChatPromptTemplate`: 用于构建对话提示词的模板+  * `ChatPromptTemplate`: 用于构建对话提示词的模板
  
 === 2. 创建语言模型实例 === === 2. 创建语言模型实例 ===
行 653: 行 653:
  
 **参数说明:** **参数说明:**
-* `model`: 模型标识符,可选值包括: +  * `model`: 模型标识符,可选值包括: 
-  * `gpt-3.5-turbo`: 速度快、成本低 +    * `gpt-3.5-turbo`: 速度快、成本低 
-  * `gpt-4`: 能力更强、成本更高 +    * `gpt-4`: 能力更强、成本更高 
-  * `gpt-4-turbo`: GPT-4的优化版本 +    * `gpt-4-turbo`: GPT-4的优化版本 
-* `temperature`: 控制输出的随机性 +  * `temperature`: 控制输出的随机性 
-  * 0.0: 最确定性,适合需要精确答案的场景 +    * 0.0: 最确定性,适合需要精确答案的场景 
-  * 0.7: 平衡的创造性 +    * 0.7: 平衡的创造性 
-  * 1.0+: 更具创造性,可能产生意外结果 +    * 1.0+: 更具创造性,可能产生意外结果 
-* `max_tokens`: 最大输出token数 +  * `max_tokens`: 最大输出token数 
-* `api_key`: API密钥(如果没有设置环境变量)+  * `api_key`: API密钥(如果没有设置环境变量)
  
 === 3. 创建提示词模板 === === 3. 创建提示词模板 ===
行 953: 行 953:
 ==== 关键知识点回顾 ==== ==== 关键知识点回顾 ====
  
-- **LangChain的定位** +  - **LangChain的定位** 
-  * 用于构建LLM应用的Python/JavaScript框架 +    * 用于构建LLM应用的Python/JavaScript框架 
-  * 提供组件化、链式、数据感知、代理能力+    * 提供组件化、链式、数据感知、代理能力
  
-- **核心概念** +  - **核心概念** 
-  * **Models**: LLM、Chat Models、Embeddings +    * **Models**: LLM、Chat Models、Embeddings 
-  * **Prompts**: 提示词模板和管理 +    * **Prompts**: 提示词模板和管理 
-  * **Chains**: 组件的组合和工作流 +    * **Chains**: 组件的组合和工作流 
-  * **Indexes**: 文档加载、分割、存储、检索 +    * **Indexes**: 文档加载、分割、存储、检索 
-  * **Memory**: 对话历史的保存和管理 +    * **Memory**: 对话历史的保存和管理 
-  * **Agents**: 智能代理和工具使用+    * **Agents**: 智能代理和工具使用
  
-- **安装配置** +  - **安装配置** 
-  * 基础安装:`pip install langchain` +    * 基础安装:`pip install langchain` 
-  * 集成包:`langchain-openai`, `langchain-community`等 +    * 集成包:`langchain-openai`, `langchain-community`等 
-  * API密钥管理:环境变量是最佳实践+    * API密钥管理:环境变量是最佳实践
  
-- **基础编程模式** +  - **基础编程模式** 
-  * 使用 `|` 操作符组合组件(LCEL) +    * 使用 `|` 操作符组合组件(LCEL) 
-  * 使用 `invoke` 方法运行链 +    * 使用 `invoke` 方法运行链 
-  * 使用 `StrOutputParser` 解析输出 +    * 使用 `StrOutputParser` 解析输出 
-  * 使用 `Memory` 保存对话历史+    * 使用 `Memory` 保存对话历史
  
 ==== 常见错误与解决方案 ==== ==== 常见错误与解决方案 ====
行 987: 行 987:
 ==== 下一步学习建议 ==== ==== 下一步学习建议 ====
  
-- **深入理解**: 尝试修改本章示例代码,观察不同参数的影响 +  - **深入理解**: 尝试修改本章示例代码,观察不同参数的影响 
-- **动手实践**: 基于SmartQABot,添加你自己的功能 +  - **动手实践**: 基于SmartQABot,添加你自己的功能 
-- **预习准备**: 确保OpenAI API可用,为后续章节做好准备 +  - **预习准备**: 确保OpenAI API可用,为后续章节做好准备 
-- **阅读文档**: 访问  查看最新文档+  - **阅读文档**: 访问  查看最新文档
  
 ==== 本章作业 ==== ==== 本章作业 ====
  
-- 完成三个练习,并记录你的观察和思考 +  - 完成三个练习,并记录你的观察和思考 
-- 创建一个能记住用户名字的个性化问候机器人 +  - 创建一个能记住用户名字的个性化问候机器人 
-- 尝试使用不同的模型(如gpt-4)运行示例,比较输出质量差异+  - 尝试使用不同的模型(如gpt-4)运行示例,比较输出质量差异
  
  

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • langchain二次开发/入门.1775183066.txt.gz
  • 最后更改: 2026/04/03 10:24
  • 张叶安