本项目旨在提供一套完整的大语言模型(LLM)学习和实践代码示例,涵盖了从基础概念到高级应用的各个方面。通过实际代码演示,帮助开发者快速掌握 LangChain 等框架在 LLM 应用开发中的使用方法。
.
├── 01-入门与底层原理 # LLM 基础知识和核心概念
├── 02-Models IO 使用 # 模型输入输出操作
├── 03-提示词的使用 # 提示词模板和管理
├── 04-Memory-记忆使用 # 对话记忆机制实现
├── 05-Tools使用 # 工具集成和智能体应用
├── 06-Rag使用 # 检索增强生成技术
├── 07-Agent使用 # 智能体实现和应用
├── 08-Chains使用 # 链式调用和处理
├── 09-MCP使用 # MCP 协议相关实现
├── 11-Langchain-v10 # Langchain v10 特性演示
├── data # 数据文件目录
└── ... # 配置和辅助文件
项目依赖以下环境变量,需在 .env 文件中配置:
OPEN_API_KEY: OpenAI API 密钥OPEN_BASE_URL: OpenAI API 基础 URLZHI_PU_API_KEY: 智谱 API 密钥ZHI_PU_BASE_URL: 智谱 API 基础 URLDASHSCOPE_API_KEY: DashScope API 密钥DASHSCOPE_BASE_URL: DashScope API 基础 URL
该模块包含了 LLM 开发的基础知识和核心组件使用方法:
- 获取大模型: 展示如何初始化和调用不同平台的大语言模型
- 提示词模板: 使用 LangChain 的提示词模板系统构建结构化提示
- 使用输出解析器: 将模型输出解析为特定格式(如 JSON)
- 使用向量存储: 文档向量化及 FAISS 向量数据库的使用
- 检索增强生成: 结合向量检索和语言模型生成答案
- 使用 Agent: 构建基于工具的智能代理
展示各种模型调用方式:
- 非对话模型的调用: 基础语言模型调用
- 对话模型的调用: 支持对话历史的模型调用
- 嵌入模型的调用: 文本向量化模型使用
- 各平台 API 调用: 不同供应商模型的统一接口调用
- 异步调用: 异步方式调用大模型提高性能
- 本地大模型调用: 在本地运行的大模型接入
- 流式调用: 流式输出模型响应结果
提示词工程的最佳实践:
- PromptTemplate 使用: 基础提示词模板构建
- ChatPromptTemplate 使用: 对话式提示词模板
- 从文档加载 Prompt: 从外部文件加载提示词模板
对话系统中的记忆管理机制:
- ChatMessageHistory: 基础聊天历史记录
- ConversationBufferMemory: 缓冲式对话记忆
- ConversationChain: 基础对话链
- ConversationBufferWindowMemory: 滑动窗口式记忆
- ConversationTokenBufferMemory: 基于 Token 数量的记忆缓冲
- ConversationSummaryMemory: 对话摘要记忆
- ConversationSummaryBufferMemory: 摘要与缓冲结合的记忆
- ConversationEntityMemory: 实体级对话记忆
- ConversationKGMemory: 知识图谱式记忆
- VectorStoreRetrieverMemory: 基于向量存储的记忆
- SingleStoreDBChatMessageHistory: 使用 SingleStore 数据库的记忆
- FileChatMessageHistory: 文件持久化聊天历史
工具集成和智能代理实现:
- @Tool 装饰器: 使用装饰器定义工具函数
- StructuredTool: 结构化工具定义
- 智能体结合工具: 将工具与智能体结合使用
- 结合大模型使用: 大模型驱动的工具选择和使用
检索增强生成技术实现:
- 文档加载器: 多种格式文档加载方法
- 文档拆分器: 文本分割策略
- 嵌入向量: 文本向量化处理
- 向量数据库: Chroma 等向量数据库使用
- 检索增强: 检索与生成相结合的应用
智能代理实现:
- FunctionCall 使用: 函数调用机制
- ToolStrategy: 工具选择策略
链式处理模式:
- LECL 使用: LangChain 表达式语言
- 单个 Chain 使用: 基础链式调用
- 顺序链: 多步骤顺序执行链
- 数学链: 数学计算专用链
- 路由链: 条件路由链实现
- LCEL 构建的 Chains: 使用 LangChain 表达式语言构建链
模型控制协议(Model Control Protocol)实现:
包含多种代理实现和服务端实现示例。
- 克隆项目到本地
- 安装依赖包:
pip install -r requirements.txt - 配置
.env文件中的 API 密钥和访问地址 - 运行任意示例脚本查看效果
每个模块下的 .py 文件都是可独立运行的示例代码,展示了特定功能的实现方式。可以直接运行这些文件来了解相应功能的工作原理。
例如:
python "01-入门与底层原理/01-获取大模型.py"- 请确保正确配置了所有必需的环境变量
- 部分示例可能需要访问外部 API,会产生相应的费用
- 根据实际需求调整模型参数和调用方式
- 向量数据库等组件可能需要额外安装依赖
欢迎提交 Issue 和 Pull Request 来改进这个学习项目。