在这里插入图片描述


当DeepSeek-V3以236B参数规模实现媲美70B-110B Dense模型性能时,业界震惊的不仅是其成本优势,更是其背后颠覆性的工程化创新。本文将基于DeepSeek-V3开源代码库,深度剖析其核心架构设计,通过代码级解析+工程化优化细节+数学原理推导,揭示MoE与MLA如何协同实现计算效率与模型性能的双重突破。


一、代码结构全景:从模型定义到分布式训练

DeepSeek-V3的代码库严格遵循现代AI框架的模块化设计,核心组件分布如下:

deepseek-v3/
├── src/                                  # 核心代码
│   ├── models/                          # 模型架构定义
│   │   ├── transformer.py               # Transformer主结构
│   │   ├── block.py                     # Transformer Block实现
│   │   ├── mla.py                       # MLA注意力机制
│   │   ├── moe.py                       # DeepSeekMoE架构
│   │   └── attention.py                 # 注意力机制通用接口
│   ├── utils/                           # 工具函数
│   │   ├── parallel.py                  # 并行化工具(ZeRO/TP/PP)
│   │   ├── quantization.py              # 量化工具(FP8/FP16)
│   │   ├── logging.py                   # 训练日志
│   │   └── benchmark.py                 # 性能测试
│   ├── optim/                           # 优化器实现
│   │   └── fused_adam.py                # 混合精度优化器
│   ├── train.py                         # 训练脚本
│   └── infer.py                         # 推理脚本
├── configs/                             # 超参配置
│   ├── moe_config.yaml                  # MoE超参
│   └── mla_config.yaml                  # MLA超参
├── tests/                               # 单元测试
│   ├── test_moe.py                      # MoE单元测试
│   └── test_mla.py                      # MLA单元测试
└── scripts/                             # 部署脚本
    ├── train_moe.sh                     # MoE训练脚本
    └── deploy_mla.sh                    # MLA推理脚本

二、MoE架构:动态路由与稀疏激活的工程化实践

DeepSeekMoE通过细粒度专家(Fine-Grained Experts)与共享专家(Shared Experts)的协同,实现计算资源的动态分配。其核心代码逻辑如下:

1. 专家路由机制(带负载均衡)

# src/models/moe.py
class MoE(nn.Module):
    def __init__(self, args: ModelArgs):
        super().__init__()
        self.experts = nn.ModuleList([MLP(args.dim, args.inter_dim) for _ in range(args.n_experts)])  # 专家网络
        self.gate = GatingNetwork(args.dim, args.n_experts)  # 门控网络
        self.capacity_factor = args.moe_capacity_factor  # 容量因子(控制稀疏性)
        self.aux_loss_weight = args.moe_aux_loss_weight  # 辅助损失权重

    def forward(self, x: torch.Tensor):
        # 计算专家权重(Softmax门控)
        gates = self.gate(x)  # shape: [batch_size, seq_len, n_experts]
        
        # 稀疏激活:选择top-k专家(动态路由)
        top_k_values, top_k_indices = torch.topk(gates, k=args.moe_k, dim=-1)
        
        # 计算专家容量(避免过载)
        batch_size, seq_len, _ = x.size()
        total_tokens = batch_size * seq_len
        max_tokens_per_expert = int(total_tokens * self.capacity_factor / args.n_experts)
        
        # 动态路由:将输入分配到选中的专家(带容量限制)
        expert_outputs = []
        for i in range(args.moe_k):
            expert_idx = top_k_indices[:, :, i]
            mask = (expert_idx >= 0).float()  # 掩码处理
            expert_input = x * mask.unsqueeze(-1)  # 屏蔽未选中的专家
            
            # 容量限制:对超过容量的专家进行截断
            expert_tokens = expert_input.view(batch_size * seq_len, -1)
            expert_indices = expert_idx.view(batch_size * seq_len)
            unique_experts, counts = expert_indices.unique(return_counts=True)
            for expert_id, count in zip(unique_experts, counts):
                if count > max_tokens_per_expert:
                    # 截断过载的专家输入(示例代码简化)
                    pass
            
            # 专家计算(实际实现需更复杂的容量管理)
            expert_output = self.experts[expert_idx](expert_input)  # 专家计算
            expert_outputs.append(expert_output * top_k_values[:, :, i].unsqueeze(-1))  # 加权输出
        
        # 合并结果
        out = sum(expert_outputs)  
        
        # 计算负载均衡辅助损失(训练时)
        if self.training:
            expert_load = gates.sum(dim=(0, 1))  # 计算每个专家的负载
            avg_load = expert_load.mean()  # 平均负载
            load_loss = ((expert_load - avg_load) ** 2).sum() / args.n_experts  # 负载均衡损失
            return out, load_loss * self.aux_loss_weight  # 返回输出和辅助损失
        return out

数学原理:负载均衡损失推导

负载均衡损失的核心是最小化专家负载的方差

L aux = 1 N ∑ i = 1 N ( L i − L ˉ ) 2 , L ˉ = 1 N ∑ i = 1 N L i \mathcal{L}_{\text{aux}} = \frac{1}{N} \sum_{i=1}^{N} \left( L_i - \bar{L} \right)^2, \quad \bar{L} = \frac{1}{N} \sum_{i=1}^{N} L_i Laux=N1i=1N(LiLˉ)2,Lˉ=N1i=1NLi

其中 ( L_i ) 为第 ( i ) 个专家的负载(如令牌数),( N ) 为专家总数。


三、MLA注意力机制:低秩压缩与解耦旋转位置编码

MLA通过以下创新降低计算复杂度:

  1. 键值低秩压缩:将高维Key/Value投影到低维潜在空间,减少计算量。
  2. 解耦旋转位置编码:将查询拆分为位置敏感与非位置敏感两部分,提升位置编码的灵活性。

核心代码实现(含数学优化)

# src/models/mla.py
class MLA(nn.Module):
    def __init__(self, args: ModelArgs):
        super().__init__()
        self.n_heads = args.n_HEADS
        self.head_dim = args.HEAD_DIM
        self.low_rank_dim = args.LOW_RANK_DIM  # 低秩维度(如64)
        self.q_proj = ColumnParallelLinear(args.dim, self.n_heads * self.head_dim)  # 查询投影
        self.kv_proj = ColumnParallelLinear(args.dim, 2 * self.n_heads * self.low_rank_dim)  # 键值低秩投影
        self.out_proj = RowParallelLinear(self.n_heads * self.head_dim, args.dim)  # 输出投影
        self.rotary_emb = RotaryEmbedding(args.dim // self.n_heads)  # 旋转位置编码

    def forward(self, x: torch.Tensor, start_pos: int, freqs_cis: torch.Tensor):
        bsz, seqlen, _ = x.size()
        
        # 1. 查询投影(不解耦位置编码)
        q = self.q_proj(x).view(bsz, seqlen, self.n_heads, self.head_dim)  # [bsz, seqlen, n_heads, head_dim]
        
        # 2. 键值低秩投影(解耦位置编码)
        kv = self.kv_proj(x).view(bsz, seqlen, 2, self.n_heads, self.low_rank_dim)  # [bsz, seqlen, 2, n_heads, low_rank_dim]
        k, v = kv[:, :, 0], kv[:, :, 1]  # 分离Key和Value
        
        # 2. 旋转位置编码(仅应用于Key)
        k = self.rotary_emb(k, freqs_cis)  # 形状: [bsz, seqlen, n_heads, head_dim]
        
        # 3. 计算注意力分数(低秩键值压缩)
        attn_scores = torch.einsum('bhid,bjhd->bhij', q, k)  # 形状: [bsz, n_heads, seqlen, seqlen]
        attn_weights = F.softmax(attn_scores / math.sqrt(self.head_dim), dim=-1)  # 注意力权重
        
        # 4. 加权求和(低秩Value)
        out = torch.einsum('bhij,bjhd->bhid', attn_weights, v)  # 形状: [bsz, n_heads, seqlen, head_dim]
        out = out.reshape(bsz, seqlen, -1)  # 合并头维度
        return self.out_proj(out)  # 输出投影

数学优化:低秩矩阵乘法的复杂度分析

传统全注意力机制复杂度为 O ( N 2 D ) O(N^2D) O(N2D),而MLA通过低秩压缩将复杂度降低至
O ( N 2 R ) O(N^2R) O(N2R)
R ≪ D R \ll D RD。例如,若
D = 4096 D=4096 D=4096
R = 64 R=64 R=64,则计算量减少约98.4%。


五、性能优化:混合精度训练与分布式并行

DeepSeek-V3通过以下技术实现高效训练:

1. FP8混合精度训练

# src/utils/quantization.py
def fp8_matmul_with_scale(a: torch.Tensor, b: torch.Tensor, scale: float = 1.0):
    # 将输入转换为FP8格式(带动态缩放)
    a_fp8 = a.to(torch.float8_e4m3fn) * scale  # 动态调整数值范围
    b_fp8 = b.to(torch.float8_e4m3fn) * scale
    # 执行FP8矩阵乘法
    c_fp8 = torch.matmul(a_fp8, b_fp8)
    # 反量化回FP16并调整缩放因子
    c = (c_fp8.to(torch.float16) / scale  # 恢复原始范围
    return c

2. ZeRO-3优化器分片

# src/utils/parallel.py
class ZeRO3Optimizer:
    def __init__(self, model, optimizer_class, args):
        self.model = model
        self.optimizer = optimizer_class(model.parameters(), lr=args.lr)
        self.param_shards = args.num_gpus  # 参数分片
    
    def step(self):
        # 分片更新参数
        for i, param_group in enumerate(self.optimizer.param_groups):
            for param in param_group['params']:
                # 分片更新逻辑(简化版)
                if param.device.index % args.num_gpus == 0:  # 示例:按GPU分片
                    self.optimizer.step(param)  # 仅更新本GPU分片

六、结论:工程化创新的启示

DeepSeek-V3的代码库不仅是学习先进架构的范本,更是工程化落地的实战指南。其核心启示包括:

  1. MoE架构:动态路由与稀疏激活需结合负载均衡与通信优化,避免“专家饥饿”或“过载”。
  2. MLA注意力:低秩压缩需平衡精度与效率,通过数学推导验证压缩后的性能损失。
  3. 混合精度训练:FP8需谨慎处理数值稳定性,避免梯度溢出或欠拟合。
  4. 分布式并行:ZeRO优化器需合理分片参数,避免通信瓶颈,提升整体吞吐量。

对于AI工程师而言,DeepSeek的代码库不仅是技术参考,更是工程思维训练的实战教材。


参考文献

  1. DeepSeek-V3 GitHub仓库
  2. 《DeepSeek源码深度解析》(薛栋、黄捷,北京大学出版社,2025)
  3. CSDN博客:DeepSeek V3 源码解析与性能优化

代码附录:完整代码库可通过GitHub开源仓库获取,包含单元测试与部署脚本,助力工程化落地。


《这就是DeepSeek:DeepSeek从原理到实践》

在这里插入图片描述

编辑推荐

适读人群 :普通读者

  • 全景技术揭秘:从DeepSeek内核到应用,掌握DeepSeek核心技术。

  • 硬核开发指南:从架构设计到实战部署,全面驾驭DeepSeek技术生态。

  • 跨界应用推广:涵盖知识库、Office、VS Code、PyCharm、聊天机器人等多平台应用。

  • 丰富实战案例:提供本地至云端全流程部署实战,助力研发与应用无缝衔接。

内容简介

这是一本系统讲解DeepSeek大模型的技术指南,它全面覆盖DeepSeek的底层架构、核心原理及实际应用。本书从人工智能基础、DeepSeek的技术架构,到多模态模型的训练与优化,帮助读者深入理解DeepSeek的工作机制,并掌握DeepSeek在大规模预训练、推理优化及应用部署中的关键技术。全书共有12章,主要包括DeepSeek的使命与愿景、人工智能与大模型、DeepSeek底层架构解密、DeepSeek的工作原理、DeepSeek的内部机制、DeepSeek的架构揭秘、DeepSeek的训练过程、DeepSeek的训练优化与成本控制、DeepSeek-R1、稀疏矩阵技术、DeepSeek部署实战,以及DeepSeek接入实战。

本书全面而深入的技术解读,不仅适用于对大模型感兴趣的技术人员,还适合人工智能研究者、开发者及行业从业者。同时,书中结合实战案例和对比分析,帮助读者理解DeepSeek的独特优势及未来的发展方向。

作者简介

王卓

华中科技大学计算机硕士,精通C、C++、C#、Python等语言。曾任阿里达摩院资深算法工程师,参与Qwen1/Qwen1.5大模型落地工作,擅长人工智能算法原理、大模型开发、计算机视觉及自然语言处理。目前专注于电商预训练语言模型和舆情风险监控大模型的研发。

薛栋

华东理工大学信息科学与技术学院副教授/硕士生导师,德国慕尼黑工业大学博士,荣获上海市高层次青年人才计划等称号。曾在荷兰格罗宁根大学(RUG)、德国卡尔斯鲁厄理工学院(KIT)任教,长期从事人工智能与大数据研究,发表SCI论文30余篇,主持多项国家及企业科研项目。所在X-D Lab已推出MindChat、Sunsimiao、GradChat等垂直领域大模型项目。

隆建

华东理工大学副教授/博导,主要研究人工智能方法及工业应用,发表论文60余篇,拥有50余项专利。主持20余项国家及企业科研项目,荣获多项国家/省部级科技奖项,并指导学生获得20余项奖项。

目录

第1章 DeepSeek的使命与愿景:开辟AI应用新纪元
1.1 DeepSeek的由来
1.2 DeepSeek的主要产品和应用场景
1.3 DeepSeek与其他模型的性能对比
1.4 DeepSeek初体验
1.5 DeepSeek API
第2章 人工智能与大模型:智能时代的核心引擎
2.1 人工智能基础介绍
2.2 什么是大模型
2.3 神经网络
2.4 网络模型
第3章 DeepSeek 底层架构解密:探寻大模型的基石
3.1 基于 Transformer架构
3.2 动态任务分配:智能计算的自适应引擎
3.3 稀疏激活机制:动态结构感知的高效优化范式
3.4 MoE架构:基于稀疏专家的动态路由系统
3.5 归一化技术:稳定性与效率的平衡术
3.6 多令牌预测技术:增强推理能力的新途径
3.7 高效并行策略:性能极限的系统设计
3.8 混合精度与量化:训练效率的加速器
3.9 显存优化与结构共享:资源利用的范式创新
第4章 DeepSeek 的工作原理:从生成到模型安全的全面解析
4.1 逐词生成:DeepSeek的输出过程
4.2 概率模型:如何生成有意义的文本
4.3 性能优化与效率提升
4.4 模型的安全性与可靠性
第5章 DeepSeek 的内部机制:智能思维的发动机
5.1 “嵌入”与向量空间
5.2 语义理解与生成
5.3 模型的决策过程
第6章 DeepSeek 的架构揭秘:驾驭大模型的核心
6.1 探索模型网络:基础DeepSeekMoE架构剖析
6.2 升级进化:DeepSeek-V3模型全景
6.3 多模态大模型:DeepSeek的跨感知融合
6.4 升级版Janus-Pro:多模态进阶的实践与优化
第7章 DeepSeek 的训练过程:从数据到微调的全流程揭秘
7.1 数据准备与预处理
7.2 基础训练:从无到有
7.3 微调与优化:提升性能
第8章 DeepSeek 的训练优化与成本控制:效率与经济性的双重探索
8.1 数据规模、训练策略与低成本秘诀
8.2 链式思考与可解释推理:DeepSeek的独到之处
8.3 开源策略:如何用开放共享降低壁垒
第9章 DeepSeek-R1:推理模型的革新之旅
9.1 DeepSeek-R1全景探秘
9.2 DeepSeek-R1开源信息概览
9.3 DeepSeek-R1-Zero自进化训练体系揭秘
9.4 全场景强化学习:分析完整的训练策略
9.5 蒸馏处理
第10章 稀疏矩阵技术:计算效率的新型加速利器
10.1 稀疏矩阵技术概述
10.2 稀疏矩阵技术在DeepSeek中的应用
10.3 稀疏矩阵技术的前沿探索
第11章 DeepSeek 部署实战:从本地到云端的一体化落地
11.1 基于Ollama的本地部署
11.2 基于Chatbox的本地部署
11.3 基于LM Studio的本地部署
11.4 基于Ollama+Docker+Open WebUI的本地部署
11.5 DeepSeek的远程和云端部署
第12章 DeepSeek 接入实战:无缝集成与多平台落地指南
12.1 Chatbox接入实战
12.2 NextChat接入实战
12.3 通过OfficeAI将DeepSeek接入Office
12.4 将DeepSeek接入VS Code
12.5 将DeepSeek接入PyCharm
12.6 基于茴香豆+DeepSeek的微信聊天机器人

《DeepSeek本地部署与应用开发》

在这里插入图片描述

编辑推荐

适读人群 :普通读者

  1. 国产大模型自主部署:DeepSeek全栈本地化指南,Ollama+信创系统实战详解

  2. 一键构建政企专属AI助手:从Dify工作流到OpenWebUI安全配置,三大企业级案例复现,附全流程代码

  3. 私有化AI安全防护体系:深度拆解OpenWebUI知识库引擎+Dify智能体架构,AI黑盒不再神秘

4.零基础快速上手:从理论到实操,逐步稳定获取结果,分享多种实用插件和工具

  1. 效率提升300%:从云端到本地DeepSeek私有化部署成本对比,各梯度显卡与硬件实测数据大公开

内容简介

本书聚焦于DeepSeek大模型在企业与政府场景下的本地化部署应用。开篇对DeepSeek进行全面介绍,涵盖大模型发展脉络、DeepSeek的演变历程,剖析DeepSeek其技术架构和参数版本分类等,还讲解如何有效提问以及在热门平台的应用场景。随后深入本地化部署实操,从硬件选型的CPU、GPU配置,到Ollama和DeepSeek模型安装,再到网络安全规划与问题排查,都给出详细指引。并基于OpenWebUI、Dify、AnythingLLM等工具,介绍企业知识库搭建的具体流程。通过金融、医疗、政务、企业营销等行业实战案例,详细说明DeepSeek的应用架构与实现步骤,助力读者将其落地。附录提供了常用命令、硬件配置参考、术语解释等资源,方便读者随时查阅,是一本实操性强的技术指南书籍。全书共分为12章。内容包括:第1章 DeepSeek介绍;第2章 DeepSeek使用;第3章 本地化部署的必要性;第4章 本地化部署实操;第5章 基于OpenUI的企业知识库搭建;第6章 基于Dify的企业知识库搭建;第7章 基于AnythingLLM的企业知识库搭建;第8章 实战:金融行业;第9章 实战:医疗领域;第10章 实战:政务场景;第11章 实战:企业营销;第12章 附录:工具与资源速查。
本书适合对AIGC和DeepSeek技术感兴趣的技术人员、希望深入探究DeepSeek高级应用的技术爱好者和开发人员阅读参考。

作者简介

康玮剑【著】【中国】【现当代】
———
康玮剑,现任厦门历思科技的软件技术总监。CSDN博客专家,全网粉丝10w+。拥有10年软件开发和IT行业经验,紧跟人工智能大模型技术的发展,成功将其应用于实际项目中,显著提升企业及政府机构的工作效能。

杨杰斌【著】【中国】【现当代】
———
杨杰斌,10年大数据和AI应用开发经验。曾任网宿科技高级大数据工程师,现任美图秀秀高级算法工程师,凭借其卓越的技术能力,主导多项关键技术项目。致力于企业数字化转型和人工智能领域的探索和分享。

目录

第1章
DeepSeek介绍
1.1 DeepSeek发展历程 002
1.1.1 早期创立与初步探索
(2023年) 002
1.1.2 技术迭代与性能提升(2024年) 002
1.1.3 技术突破与开源登顶
(2025年) 003
1.2 DeepSeek产业革命 004
1.2.1 芯片与算力厂商 004
1.2.2 互联网与云厂商 005
1.2.3 车企与手机厂商 006
1.2.4 政府与政务服务 007
1.2.5 医疗与教育服务 007
1.3 DeepSeek爆火原因 009
1.3.1 国际顶尖的推理能力 009
1.3.2 超低的推理和训练成本 010
1.3.3 开源策略普惠全世界 011
1.4 小结 012
第2章
DeepSeek本地化部署
必要性
2.1 全方位对比矩阵 015
2.2 数据安全与合规 016
2.2.1 高度监管领域 016
2.2.2 经济损失案例 017
2.2.3 实际应用案例 017
2.3 稳定性与可靠性 018
2.4 低延时与实时性 019
2.4.1 实时性场景 019
2.4.2 本地化部署优势 020
2.5 模型微调与优化适配 020
2.5.1 DeepSeek优势 020
2.5.2 实际应用案例 021
2.6 边缘离线应用 022
2.6.1 边缘离线场景 022
2.6.2 实际应用案例 022
2.6 长期使用成本 023
2.7.1 人工客服成本基准 023
2.7.2 API调用成本估算(智能客服) 024
2.7.3 API调用成本估算(智能营销) 025
2.7.4 本地化部署成本 026
2.7.5 小结 026
第3章
DeepSeek本地化部署建议
3.1 评估准备工作 029
3.1.1 必要性评估 029
3.1.2 需求评估 029
3.1.3 资源评估 030
3.1.4 风险评估 031
3.1.5 效益评估 032
3.2 算力申请或租赁 033
3.2.1 购买硬件 033
3.2.2 申请算力 034
3.2.3 租赁算力 035
3.3 分阶段实施 036
3.3.1 初期探索阶段 037
3.3.2 优化拓展阶段 037
3.3.3 全面推广阶段 038
3.4 混合架构策略 039
第4章
DeepSeek本地化部署实操
4.1 本地化部署工具对比 042
4.2 基于Windows系统部署Ollama 043
4.2.1 下载Ollama 043
4.2.2 安装Ollama 044
4.2.3 指定Ollama安装路径 045
4.2.4 指定大模型存储路径 045
4.3 基于Linux系统部署Ollama 046
4.3.1 下载Ollama 047
4.3.2 启动Ollama 047
4.4 Ollama安全设置 048
4.4.1 Ollama的风险隐患 048
4.4.2 Ollama的安全防护 049
4.5 部署DeepSeek模型 050
4.5.1 选择DeepSeek-R1模型 050
4.5.2 拉取DeepSeek-R1模型 053
4.5.3 运行DeepSeek-R1模型 054
4.6 部署过程中的常见问题 056
4.6.1 模型加载时间过长 056
4.6.2 启动Ollama报错 057
4.6.3 内存不足错误 058
4.6.4 模型响应不准确 058
4.7 DeepSeek本地运行实测 058
4.7.1 基于NVIDIA RTX 3060 12G实测 059
4.7.2 基于AMD RX 7900 XTX 24G实测 065
4.8 DeepSeek本地一体机 071
4.8.1 中国电信:息壤智算一体机—(DeepSeek版) 072
4.8.2 京东云:DeepSeek大模型一体机 072
4.8.3 联想:DeepSeek智能体一体机 072
4.8.4 阿里:飞天智算一体机 073
4.8.5 百度:DeepSeek推理一体机 073
4.8.6 浪潮:DeepSeek元脑一体机 074
第5章
DeepSeek信创系统实操
5.1 信创介绍 076
5.1.1 信创的重要性 076
5.1.2 信创的核心架构体系 077
5.1.3 信创的典型应用示例 078
5.2 基于统信UOS部署DeepSeek 079
5.2.1 统信UOS介绍 079
5.2.2 统信UOS AI 080
5.2.3 基于Ollama部署DeepSeek 082
5.3 基于麒麟openKylin部署DeepSeek 082
5.3.1 银河麒麟openKylin介绍 083
5.3.2 麒麟AI助手 083
5.3.3 基于Ollama部署DeepSeek 085
第6章
大模型本地化部署安全防护
6.1 大模型本地化部署的安全隐患 087
6.1.1 数据安全隐患 087
6.1.2 网络安全隐患 088
6.1.3 开源框架漏洞隐患 089
6.2 大模型本地化部署安全隐患的解决方案 090
6.2.1 数据安全解决方案 090
6.2.2 框架漏洞解决方案 091
6.2.3 网络安全解决方案 093
6.3 漏洞扫描检测工具 094
6.3.1 漏洞扫描检测工具对比 094
6.3.2 AI-Infra-Guard安装 096
6.3.3 AI-infra-Guard的Web使用 098
6.3.4 AI-infra-Guard的命令行使用 102
第7章
DeepSeek本地应用实践
7.1 基于Chatbox客户端使用DeepSeek 105
7.1.1 Chatbox下载 105
7.1.2 Chatbox安装 105
7.1.3 Chatbox配置 106
7.1.4 Chatbox使用 107
7.2 基于REST API使用DeepSeek 108
7.2.1 Ollama API文档 108
7.2.2 REST API分类和简述 109
7.2.3 使用Curl快速测试API 连通性 110
7.2.4 使用Apipost调用Ollama
生成文本接口 111
7.2.5 使用Python调用Ollama生成聊天接口 112
7.3 基于Visual Studio Code插件使用DeepSeek 114
7.3.1 VS Code下载 115
7.3.2 VS Code安装 115
7.3.3 VS Code插件 116
7.3.4 使用Roo Code插件 117
7.3.5 使用twinny插件 120
7.3.6 使用Cline插件 123
7.3.7 使用DeepSeek R1插件 126
第8章
OpenWebUI应用实践
8.1 基于Windows部署OpenWebUI 131
8.1.1 Docker Desktop下载 131
8.1.2 Docker Desktop安装 131
8.1.3 Docker Engine启动 133
8.1.4 Docker Engine镜像源 134
8.1.5 拉取OpenWebUI镜像 135
8.1.6 启动OpenWebUI容器 136
8.1.7 停止OpenWebUI容器 137
8.1.8 删除OpenWebUI容器 137
8.2 基于Linux部署OpenWebUI 137
8.2.1 准备Conda环境 138
8.2.2 安装OpenWebUI平台 139
8.3 OpenWebUI基础应用 140
8.3.1 创建管理员账号 141
8.3.2 禁用OpenAI 141
8.3.3 用户管理 142
8.3.4 权限组管理 144
8.3.5 模型管理 146
8.3.6 知识库管理 148
8.3.7 提示词管理 150
8.3.8 本地局域网使用 151
8.4 文档内容提取引擎 153
8.4.1 动态适配源码解析 153
8.4.2 内容提取引擎对比 157
8.4.3 Apache Tika安装 158
8.4.4 Apache Tika集成 159
8.5 联网搜索引擎 160
8.5.1 SearXNG介绍 161
8.5.2 SearXNG安装 162
8.5.3 SearXNG集成 163
8.5.4 SearXNG常见问题 164
8.5.5 Open WebUI使用联网搜索 168
8.6 文本分切器 169
8.6.1 文本分切器对比 170
8.6.2 Tiktoken分切器设置 170
8.7 语义向量模型 171
8.7.1 语义向量模型引擎 171
8.7.2 语义向量模型对比 172
8.7.3 BGE-M3集成 173
8.8 检索机制 174
8.8.1 向量检索源码解析 176
8.8.2 混合检索源码解析 177
8.8.3 Reranker重排序模型 181
8.8.4 BAAI/bge-reranker-v2-m3集成 182
8.9 RAG 183
8.9.1 知识库构建流程 183
8.9.2 RAG工作流程 184
8.9.3 RAG应用示例(办公助手) 186
第9章
Dify应用实践
9.1 Dify概述和核心价值 190
9.1.1 Dify概述 190
9.1.2 Dify核心价值 191
9.2 Dify的核心架构与技术实现 191
9.2.1 知识库管理系统 191
9.2.2 工作流引擎 192
9.2.3 模型管理 193
9.3 Dify的搭建与部署 193
9.3.1 环境准备 193
9.3.2 克隆代码库 194
9.3.3 启动服务 195
9.3.4 常见问题排查 197
9.4 使用Dify搭建AI聊天助手 201
9.4.1 初始化Dify 201
9.4.2 添加模型供应商 202
9.4.3 创建聊天助手 203
9.4.4 发布聊天助手 205
9.5 知识库的使用 206
9.5.1 新建知识库 206
9.5.2 安装Embedding模型 208
9.5.3 在聊天室中配置知识库 209
9.5.4 知识库效果展示 210
9.6 Agent的使用 212
9.6.1 聊天助手、Agent、文本生成应用介绍 212
9.6.2 Agent工具介绍 213
9.6.3 使用Agent实现旅游助手 215
9.7 知识库优化建议 219
9.7.1 文档质量 219
9.7.2 分段策略 220
9.7.3 检索测试 220
9.7.4 成本控制 221
9.8 小结 221
第10章
实战——基于工作流构建企业会议助手
10.1 依赖环境 224
10.2 创建Dify工作流应用 224
10.3 获取个人用户信息 225
10.3.1 获取Dify用户ID 225
10.3.2 绑定OA用户ID 226
10.3.3 获取OA用户ID 227
10.4 实现预定会议功能 231
10.4.1 获取预定会议接口 231
10.4.2 获取接口所需信息 231
10.4.3 请求接口预定会议 237
10.5 实现会议查询功能 242
10.5.1 获取查询会议接口 242
10.5.2 请求接口查询会议 243
10.6 实现会议取消功能 247
10.6.1 取消会议接口 247
10.6.2 获取会议ID 247
10.6.3 请求接口取消会议 252
10.7 实现会议纪要功能 254
10.7.1 安装语音模型 254
10.7.2 开发语音识别服务 257
10.7.3 配置Dify工作流 260
10.7.4 效果演示 264
10.8 实现各个功能汇总 264
第11章
实战——基于智能体构建企业招聘助手
11.1 OpenAI Agents SDK介绍和使用 269
11.1.1 OpenAI Agents SDK介绍 269
11.1.2 OpenAI Agents SDK安装 270
11.1.3 在OpenAI Agents SDK中使用DeepSeek 270
11.1.4 Agent使用示例 272
11.1.5 Handoffs使用示例 273
11.1.6 Tool使用示例 276
11.2 项目开始前准备工作 277
11.2.1 项目环境准备 277
11.2.2 定义使用的模型供应商 278
11.3 实现简历分析功能 279
11.3.1 简历分析工具开发 280
11.3.2 简历分析Agent定义 281
11.3.4 简历分析Agent测试 284
11.4 实现简历概要输出Excel功能 285
11.4.1 简历输出工具开发 285
11.4.2 简历输出Agent定义 288
11.4.3 简历分析和输出Agent测试 289
11.5 实现压缩包解压自动识别简历功能 291
11.5.1 简历解压工具开发 291
11.5.2 简历解压Agent定义 293
11.5.3 简历解压、分析和输出Agent测试 294
11.6 实现简历评估排序功能 296
11.6.1 简历评估排序Agent定义 296
11.6.2 简历解压、分析、排序和输出Agent测试 298
11.7 功能整合与智能体集成 301
11.7.1 入口Agent定义 301
11.7.2 智能体集成与测试 303
第12章
实战——AI聊天机器人
12.1 小智AI系统架构 309
12.1.1 小智AI介绍 309
12.1.2 系统架构设计 311
12.1.3 语音对话流程 313
12.1.4 本地应用场景 314
12.2 ESP32设备端实现 316
12.2.1 硬件平台(ESP32-S3-BOX3) 316
12.2.2 软件框架结构 317
12.2.3 源码编译与固件下载 319
12.2.4 Wi-Fi配网功能实现 322
12.2.5 设备激活功能实现 327
12.2.6 语音对话功能实现 331
12.2.7 离线唤醒和对话打断功能实现 336
12.3 本地服务器实现 347
12.3.1 软件框架结构 347
12.3.2 本地环境准备 349
12.3.3 本地后端服务运行 355
12.3.4 本地前端服务运行 358
12.3.5 服务器配置管理 359
12.3.6 ESP32连接服务器 362
12.3.7 DeepSeek调用流程 364
12.4 总结 368
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐