# Lang_chain **Repository Path**: qxd-space/lang_chain ## Basic Information - **Project Name**: Lang_chain - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # langchain-deepseek 基于 [LangChain.js](https://js.langchain.com/) 的 TypeScript 学习与示例项目,演示如何将 **DeepSeek** 大模型接入 LangChain 生态,并覆盖提示词模板、LCEL 链式编排、文档加载等常用能力。 ## 功能概览 | 模块 | 说明 | |------|------| | **模型接入** | DeepSeek Chat(V3)、Reasoner(R1 推理)、FIM 补全 | | **提示词** | `PromptTemplate`、少样本、多轮对话、占位符、管道组合 | | **LCEL** | `pipe` 链、`RunnableLambda` / `Parallel` / `Passthrough` / `Sequence` | | **文档加载** | 本地 TXT/PDF、目录批量、网页 Cheerio 抓取与文本切分 | ## 技术栈 - **运行时**:Node.js(ES Module) - **语言**:TypeScript 6 - **包管理**:pnpm - **核心依赖**:`@langchain/core`、`@langchain/openai`、`@langchain/classic`、`@langchain/community` ## 环境要求 - Node.js 18+ - [pnpm](https://pnpm.io/)(推荐)或 npm - [DeepSeek API Key](https://platform.deepseek.com/) ## 快速开始 ### 1. 安装依赖 ```bash pnpm install ``` ### 2. 配置 API Key 在项目根目录创建 `deepseekConfig.ts`(该文件已加入 `.gitignore`,不会提交到仓库): ```typescript export const DEEPSEEK_API_KEY = "your-deepseek-api-key"; ``` ### 3. 运行示例 使用 [tsx](https://github.com/privatenumber/tsx) 直接执行 TypeScript 文件: ```bash # 模型调用示例 pnpm exec tsx src/modelClass/index.ts # LCEL 基础链 pnpm exec tsx src/LCEL/lcel.ts # Runnable 透传与序列 pnpm exec tsx src/LCEL/runnable2.ts # 提示词模板 pnpm exec tsx src/prompt/promptTemplate.ts # 文本加载与切分(需在对应目录下执行或调整路径) pnpm exec tsx src/Loader/localSourceLoader/textLoader.ts ``` > 部分 Loader 示例依赖 `data/` 下的测试文件或 PDF,请按各文件中的路径准备数据后再运行。 ## 项目结构 ``` langchain-deepseek/ ├── deepseekConfig.ts # API Key(本地创建,不纳入版本控制) ├── package.json ├── tsconfig.json └── src/ ├── modelClass/ │ ├── deepseek.ts # DeepSeek 模型实例定义 │ └── index.ts # invoke / stream 调用示例 ├── prompt/ │ ├── promptTemplate.ts # 基础 / 部分填充 / 少样本提示词 │ ├── messagePromptTemplates.ts # System / Human / AI 消息模板 │ └── messagePlaceholder.ts # MessagesPlaceholder 多轮对话 ├── LCEL/ │ ├── lcel.ts # Prompt → Model → Parser 链 │ ├── runnable1.ts # RunnableLambda、RunnableParallel │ ├── runnable2.ts # RunnablePassthrough、RunnableSequence │ └── runnableBranch.ts # 分支链(占位) └── Loader/ ├── document.ts ├── localSourceLoader/ │ ├── textLoader.ts │ ├── PDFLoader.ts │ ├── DirectoryLoader.ts │ └── data/ # 本地测试文本 └── webSourceLoader/ └── webLoader.ts # Cheerio 网页加载 ``` ## 模块说明 ### 模型接入(`src/modelClass/deepseek.ts`) 通过 `@langchain/openai` 的 `ChatOpenAI` / `OpenAI`,将 `baseURL` 指向 DeepSeek 官方网关,实现 OpenAI 兼容调用: | 导出 | 模型 | 用途 | |------|------|------| | `deepSeekChat` | `deepseek-chat` | 通用对话、代码生成(temperature 可调) | | `deepSeekChatReasoner` | `deepseek-reasoner` | R1 推理 / 复杂逻辑(temperature 需为 1 或不设) | | `deepSeekFIM` | `deepseek-chat`(beta 端点) | Fill-in-the-Middle 补全 | ### 提示词(`src/prompt/`) - **基础模板**:`PromptTemplate.fromTemplate`、`partial` 部分填充、动态变量函数 - **少样本**:`FewShotPromptTemplate` 中英翻译示例 - **对话模板**:`SystemMessagePromptTemplate`、`HumanMessagePromptTemplate`、`ChatPromptTemplate` - **占位符**:`MessagesPlaceholder` 注入历史 `HumanMessage` / `AIMessage` ### LCEL(`src/LCEL/`) LangChain Expression Language 用 `.pipe()` 将组件串联为可执行链,统一支持 `invoke`、`stream`、`batch`: ```typescript const chain = PromptTemplate.fromTemplate("...") .pipe(deepSeekChat) .pipe(new StringOutputParser()); ``` 示例还包含:`RunnableLambda` 包装普通函数、`RunnableParallel` 并行中英文解释、`RunnablePassthrough` 日志与 `assign` 注入 `userId`。 ### 文档加载(`src/Loader/`) | 加载器 | 文件 | 说明 | |--------|------|------| | `TextLoader` | `textLoader.ts` | 读取 TXT,配合 `RecursiveCharacterTextSplitter` 切分 | | `PDFLoader` | `PDFLoader.ts` | 解析 PDF(`splitPages: false` 整本为一文档) | | `DirectoryLoader` | `DirectoryLoader.ts` | 按扩展名分发 TXT / PDF 加载器 | | `CheerioWebBaseLoader` | `webLoader.ts` | 抓取网页并按 CSS 选择器提取内容 | ## 依赖说明 主要运行时依赖见 `package.json`: - `@langchain/core` — 提示词、Runnable、输出解析器 - `@langchain/openai` — OpenAI 兼容 Chat / Completion 客户端 - `@langchain/classic` — 经典文档加载器、文本切分器 - `@langchain/community` — PDF、Cheerio 等社区加载器 - `pdf-parse`、`cheerio` — 文档与网页解析 ## 注意事项 1. **`deepseekConfig.ts` 勿提交**:已在 `.gitignore` 中忽略,请仅在本地保存 API Key。 2. **Loader 路径**:示例中使用相对路径(如 `data/test.txt`),运行前请 `cd` 到对应目录或改为绝对路径。 3. **可执行入口**:多数文件为教学 Demo,部分逻辑在注释中;取消注释后即可单独试验 `invoke` / `stream` / `batch`。 4. **R1 模型限制**:`deepseek-reasoner` 的 `temperature` 不能随意设置,需遵循官方文档。 ## 许可证 ISC