极简入门,本地部署dify低代码平台构建AI Agent大模型全流程(使用教程、微案例、配置详解、架构图解析)
文章目录
- 一、环境搭建
- 1.1 安装VMware-workstation+CentOS7.9
- 1.2 安装宝塔
- 1.3 安装docker及改镜像、安装dify
- 1.4 配置模型供应商
- 二、dify快速上手体验
- 2.1 知识库
- 2.2 微案例:基于知识库的助手
- 三、dify知识库配置详解
- 3.1 分片策略
- 3.2 父子分段
- 3.3 索引方法
- 3.4 检索结果参数
- 3.5 配置要点与实践建议
- 四、工作室
- 4.1 Dify 的工作节点
- 4.2 开始
- 4.3 知识检索
- 4.4 LLM
- 4.5 其他
- 五、推荐阅读
- 六、dify架构图
- 6.1 数据层
- 6.2 检索与增强生成层
- 6.3 开发与编排层
- 6.4 服务化与运营层
- 6.5 模型层
- 6.6 交互流程
一、环境搭建
1.1 安装VMware-workstation+CentOS7.9
VMware安装完后,典型安装即可,一直下一步。
注意配置要求:
CPU >= 2 Core
RAM >= 4 GiB
1.2 安装宝塔
参考网址:宝塔官方
在centos进系统前登录root账号,终端执行:
url=https://download.bt.cn/install/install_panel.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_panel.sh $url;fi;bash install_panel.sh ed8484bec
安装完成后会出现:
【云服务器】请在安全组放行 25101 端口外网面板地址: 内网面板地址: username: password:
本机虚拟机登录内网地址,输入账号密码即可。
后续重启电脑后,启动宝塔命令:
systemctl start bt
查看宝塔访问地址命令:
bt default
1.3 安装docker及改镜像、安装dify
点击左侧Docker后,安装即可。
该镜像,参考链接:【教程贴】如何在宝塔面板更换Docker加速站
https://docker.1ms.run
完成后,访问虚拟机的8088端口;
第一次进入后,可能加载不了设置管理员账户,多刷新几遍即可。
至此环境以搭建完成。参考链接宝塔面板部署
1.4 配置模型供应商
硅基流动免费的deepseek-ai/DeepSeek-R1-Distill-Llama-8B:官网链接:siliconflow
本地部署ollama+deepseek
ollama+deepseek-r1:1.5b
链接:deepseek-r1
安装ollama,执行像对应的命令安装即可,同时也是执行命令;
或者也用宝塔:
二、dify快速上手体验
2.1 知识库
一开始不要上传过大的文档,我们本地部署的配置低!新建txt上传即可
直接确认即可
2.2 微案例:基于知识库的助手
构建知识库,我们可以先随便上传一个txt,然后添加内容:
创造工作流
选择工作流:
点击“+”选择流程:
最终构建流程如下:
运行,OK,不输出无关内容。
三、dify知识库配置详解
3.1 分片策略
在知识库中,“分片”是指将较长文本或文档拆分为多个小段,以便后续的向量检索和大模型处理。
分片的作用
- 提高检索精度:大模型或搜索引擎在处理较长文本时,容易出现语义模糊或无法精确定位的情况。通过将文档分片,可以让搜索引擎更精准地匹配用户查询,避免整篇文本过于冗长导致的匹配误差。
- 加速检索速度:分片后的文本更易于并行处理,索引和检索效率更高,减少大规模数据查询的延迟。
分片大小的设定
- 分片大小上限:指单个分片可包含的最大 Token 数量(如 500 或 1000)。Token 是自然语言被模型处理时的基本单位,1 个单词或符号可能对应 1~多个 Token。
- 分片重叠:在某些场景下,可以设置分片之间的重叠部分(Overlap)来保证语义上下文连续。例如分片大小为 500 Tokens,重叠 50 Tokens,这样当用户提问涉及跨分片的内容时,也能获取更完整的语义。
3.2 父子分段
父子分段是一种将文本分为“父块”和“子块”两级结构的方式,常用于 Q&A 场景。它的核心思路是:父块负责提供上下文背景,子块则是实际用于检索和匹配用户问题的最小单位。
-
父块(Parent Block)
- 通常对应较大的内容单元,如整段问答或长段落。
- 在 Dify 中,父块可通过
\n\n
(双换行)切分,并设置最大 Token 数(如 500 Tokens),保证一个父块能容纳较完整的语义。 - 父块在检索流程中主要用于为大模型提供上下文,让模型理解这部分文本的整体含义。
-
子块(Child Block)
- 处于父块之下,通常是一段更小的文本,如一句话或几句话。
- 在 Dify 中,子块可通过
\n
(单换行)继续细分,并设置相对更小的最大 Token 数(如 200 Tokens)。 - 子块是实际检索的目标单位:当用户提出问题后,系统会先锁定最相关的子块,然后再利用父块来提供更完整的语境。
为什么要用父子分段?
- 精准检索:子块足够小,便于系统快速找到与问题最匹配的内容。
- 语义保留:父块能让大模型在生成答案时参考更大范围的上下文,避免只看到小片段而丢失关键信息。
- 适合 Q&A 场景:当一个父块内包含多组问答或长答案时,细分成子块能让搜索结果更具针对性。
举个简单例子
- 父块:“关于大数据架构的常见问题及答案”,其中可能包含多条问答;
- 子块:针对每个问题或答案拆分成小段落,一旦用户提问与其中某条问答相似,系统就能快速检索到对应子块,并同时引入父块里的背景信息,帮助模型给出更准确、上下文丰富的回答。
通过这种**“父块提供上下文、子块用于检索”**的机制,企业能够在构建 FAQ 或技术知识库时,实现更高效的知识检索与问答体验。
3.3 索引方法
向量化索引(Embedding)
- 概念解析:Embedding 指的是将文本转换为可计算的向量表示,用以衡量文本之间的语义相似度。简单来说,Embedding 能将“文本”变成一串数字,让模型能够“识别”文本间的含义关联,而不仅仅是字面上的匹配。
- 模型选择:在上述截图中,我们使用
netease youdao/bce-embedding-base_v1
作为 Embedding 模型。它能将文本转换为维度较高的向量,用于后续的相似度计算。 - 使用场景:对海量文档做语义索引时,通过 Embedding 可以迅速检索到与用户问题最相关的文档片段。
ReRank(二次排序)
- 概念解析:ReRank 模型是对初步检索到的候选结果进行二次排序,以获得更高精度的匹配。它会对初始搜索结果再次打分,并把最符合语义需求的结果排在前面。
- 模型选择:在上述截图中,采用
netease youdao/bce-reranker-base_v1
作为 ReRank 模型。它会对已经检索到的前 N 条结果(通常称为 Top K)逐条进行重新打分排序。 - 好处:在第一步向量检索得到的结果基础上,ReRank 能过滤掉一些相似度高但不一定最精准的内容,从而提升最终答案的可靠性和可读性。
3.4 检索结果参数
Top K
- 含义:Top K 指从初步检索的结果集中选取得分最高的 K 条结果。比如设定为 10,则在向量检索阶段会返回与用户问题最相关的前 10 个分片,供后续 ReRank 或大模型生成答案。
- 影响:如果 K 值过大,可能引入无关噪音;如果 K 值过小,可能遗漏部分潜在的有用内容。因此需要结合实际文档规模和业务需求进行调试。
Score Threshold(得分阈值)
- 含义:当检索结果的相似度评分低于该阈值时,将被认为“不相关”或“可信度不足”,因此不予返回。
- 建议:阈值的设置需要通过多轮测试和观察。当阈值过高,系统可能忽略一些潜在的相关内容;当阈值过低,又会增加噪音,影响回答准确度。
3.5 配置要点与实践建议
-
根据业务场景调整分片大小
- 如果文档较长且上下文紧密,适当提高分片大小上限;若文档内容结构松散,减小分片大小以提高检索灵活度。
-
Embedding 与 ReRank 模型配合使用
- 先通过向量检索获取初步候选,再使用 ReRank 进行精细化打分排序,以得到最优答案。
-
关注 Top K 与阈值之间的平衡
- 建议在测试环境下多次试验不同的 K 值和阈值组合,找到最佳的召回率与准确率平衡点。
-
多语言与跨领域文本的适配
- 如果需要处理多语言或专业领域文本,需选择合适的 Embedding 模型或微调现有模型,以保证语义理解的准确度。
-
持续监控与迭代
- 知识库不是一蹴而就的系统,需要定期更新文档内容、观察用户反馈,并在必要时对索引策略或模型参数进行微调。
四、工作室
4.1 Dify 的工作节点
在 Dify 中,工作节点是构建对话流程和业务逻辑的基本单元,每个节点都代表一类功能或操作,通过将多个节点组合在一起,可实现灵活多样的 AI 应用。下列是常见的工作节点及其主要用途:
- LLM:调用大语言模型(Large Language Model)生成文本回复或执行推理,是对话流程的核心计算节点。
- 知识检索:从预先构建的知识库中检索最相关的文本片段,为 LLM 提供上下文支撑,提升回答的准确度。
- 直接回复:将前面节点生成的结果直接输出给用户,常作为流程的终止节点。
- 问题分类器:根据预设规则或模型,将问题分类至不同领域或类型,以便后续的逻辑分支处理。
- 条件分支:类似于编程中的 if-else,依据特定条件(如检索结果是否为空)将流程导向不同路径。
- 迭代:针对列表或批量数据进行循环处理,适合在多条记录上重复执行相同操作。
- 代码执行:允许在流程中嵌入自定义脚本或代码段,满足更灵活的逻辑需求。
- 模板转换:将变量或数据以预定义模板的形式输出,便于格式化文本或生成特定格式的字符串。
- 文档提取器:从文档或文本块中解析出特定字段或信息,用于后续处理或检索。
- HTTP 请求:调用外部 API 或微服务,获取额外信息或完成某些后端操作。
- 列表操作:对数组或列表进行筛选、映射、排序等处理,方便在流程中对批量数据进行变换。
4.2 开始
在 Dify 的工作流程中,“开始”节点是整个对话或操作的入口,用于接收并管理系统默认传入的各类输入变量。通过这些变量,后续节点可以获取用户输入、对话信息以及当前流程的上下文,从而实现更灵活的逻辑编排。下表是“开始”节点常见的输入字段及其用途:
- sys.query (String)
- 表示用户在对话或搜索框中输入的文本内容。后续节点(如知识检索、LLM 等)会根据此内容执行相应的操作或检索。
- sys.files (Array[File])
- 当用户在对话或表单中上传了文件时,这里将存储文件数组,方便后续节点对文件进行解析或处理。
- sys.dialogue_count (Number)
- 记录当前对话轮次或用户提问次数,常用于统计或多轮对话逻辑判断。
- sys.conversation_id (String)
- 表示本次会话的唯一标识符,有助于区分不同用户或场景下的对话上下文。
- sys.app_id (String)
- Dify 应用的唯一 ID,用于在多应用场景下区分各自的配置和工作流程。
- sys.workflow_id (String)
- 当前工作流程(Workflow)的唯一标识符,用于管理和追踪不同的流程版本或逻辑分支。
- sys.workflow_run_id (String)
- 每次执行工作流程时生成的运行 ID,可帮助记录日志或追溯操作历史。
此外,还可以继续添加:
4.3 知识检索
在构建智能问答或对话系统时,知识检索节点是将用户输入与已有知识库进行匹配的关键步骤。Dify 通过向量化搜索与 ReRank(重排序)技术相结合,实现对多条候选结果的筛选和精排,为大模型提供精准的上下文参考。以下为主要配置项的说明与应用建议:
-
查询变量 (sys.query)
- 用于接收用户输入的查询内容,通常是用户在对话或搜索框中输入的问题或关键词。
- 知识检索节点会根据该变量,在内部向量索引中查找相似度最高的文本片段。
-
ReRank 设置
- 权重模型 与 Rerank 模型 共同构成二次排序流程:
- 初步检索:先通过向量相似度获取与用户查询最相关的若干结果;
- 重排序:再利用 ReRank 模型对初步检索结果进行精细化打分,并重新排序。
- 示例中使用
netease-youdao/bce-reranker-base_v1
作为重排序模型,可有效提升最终结果与查询的匹配度。
- 权重模型 与 Rerank 模型 共同构成二次排序流程:
-
Top K
- 表示在初步检索阶段,系统返回相似度最高的 K 条结果(如设定为 4),然后再将这几条结果传给 ReRank 模型进行排序。
- 若 K 值过大,可能引入无关噪音;过小,则可能漏掉部分相关内容,需结合实际测试进行调优。
-
Score 阈值
- 当检索结果的相似度评分低于此阈值时,视为与查询不匹配或可信度不足,不会返回给大模型。
- 建议在部署前进行多轮实验,以找到能兼顾准确度与召回率的平衡点。
4.4 LLM
在 Dify 的工作流程中,LLM 节点承担着核心的文本生成与推理任务。通过在该节点选择适合的语言模型(如 Qwen/QwQ-32B-Preview),并配置相应的提示词(Prompt),可以为用户提供高度定制化的回答和交互体验。下面对截图中的关键配置项做简要说明:
-
模型 (Model)
- 这里选择的是
Qwen/QwQ-32B-Preview (CHAT 语言)
,这类大模型具备强大的语言理解与生成能力,能够根据上下文生成连贯且具有专业深度的回答。 - 若有其他需求,可切换至不同规模或不同厂商的大模型,以满足性能或行业专用场景的要求。
- 这里选择的是
-
上下文 (SYSTEM)
- 在 SYSTEM 提示词中设置了“你的回答务必完全基于知识库的上下文,不能超出知识库范围。”,用于严格约束模型的输出。
- 通过这种提示,模型会优先参考知识检索节点返回的结果,减少不必要的推测或“幻想”式回答。
-
用户输入 (USER)
- “开始”节点的
sys.query
作为用户实际提问的来源。LLM 节点将其与知识检索结果合并,形成最准确的答复。 - 若需要在对话中添加更多信息(如上下文变量或额外指令),可将这些内容一并注入到 USER 提示中。
- “开始”节点的
-
记忆与思考
- Dify 提供了“记忆”、“思考”等选项,用于保存或展示模型在推理过程中的中间信息。
- “记忆”可帮助模型在多轮对话中保留上下文,“思考”则有助于调试与观察模型的中间推理思路,但往往不会直接显示给最终用户。
-
温度 (Temperature)
- 在截图中温度被设为 15,通常这意味着系统在不同量程中自定义了温度取值。数值越高,模型输出越具有创造性;数值越低,回答更保守且一致。
- 建议在实际使用中根据业务场景进行调整:若更需要准确性和稳定性,可降低温度;若需要更多创意,可适度提高。
-
输出变量
- 该节点可将生成的文本、思考过程或其它中间结果存储在变量中,供后续节点使用或直接输出给用户。
- 通过对输出变量进行进一步处理或与其他数据源结合,可实现更丰富的业务逻辑。
通过精心配置 LLM 2 节点,Dify 能在严格参考知识库内容的同时,发挥大语言模型的自然语言处理优势,为企业内部问答、客户服务或技术支持等场景提供高效且可控的智能化交互体验。
在使用 Qwen/QwQ-32B-Preview (CHAT) 模型时,Dify 提供了一系列可调参数,用于平衡生成内容的准确性、创造力与可控性。以下是主要参数的含义与调优建议:
-
温度 (Temperature)
- 作用:决定模型输出的随机程度。温度越高,模型的生成内容越具有创造性;温度越低,回答更趋于稳定与保守。
- 典型范围:0.0~1.0(或更高),根据业务场景灵活调配。例如技术问答场景通常选用较低温度(0.2~0.5),以保证回答的准确性。
-
最大标记 (Max Tokens)
- 作用:限制模型在生成答案时使用的最大 Token 数。
- 意义:防止模型生成过长或跑题的回答,也能避免浪费 Token 资源。一般可根据具体需求设定为几百到上千不等,截图中显示为 4096,属于较高上限,能容纳更多上下文。
-
Top P
- 作用:即“核采样”参数,用于控制模型在生成时选取概率分布前 P% 的候选词。
- 调优建议:若需要更具创造性,可适度提高 Top P(如 0.9),使模型有更多机会选用相对不常见的词;若需严格、精确回答,则可将其设为 1.0(等同于关闭核采样)。
-
取样数量 (Number of Samples)
- 作用:一次请求生成多少条不同的答案,用于对比或筛选。
- 应用场景:在创意写作或头脑风暴场景下,可以设为 2~3 以获取多种思路;在严谨的技术问答中通常为 1。
-
频率惩罚 (Frequency Penalty)
- 作用:惩罚生成过程中重复出现过多的词句,降低重复用词的概率。
- 调优建议:当回答容易出现口水话或频繁重复时,可适度提高频率惩罚(如 0.5),让模型输出更加多样化。
-
回退格式 (Response Format)
- 选项:
text
、markdown
或其他可用格式。 - 意义:决定模型返回的文本排版或渲染方式;对前端显示和二次处理有影响。
- 应用建议:若需要富文本格式或更好展示效果,可选 Markdown;纯文本场景则用 text。
- 选项:
-
停止序列 (Stop Sequences)
- 作用:当模型生成内容包含特定字符序列时,自动停止输出。
- 应用场景:可用于防止输出敏感信息、分割多段回复或与系统指令区分。
4.5 其他
功能:
会话变量
环境变量:
后续进阶参照官方文档即可:
节点说明
五、推荐阅读
上述是可视化构建大模型,此外还可以写Python代码,
推荐博客:
LangChain:AI大模型开发与分布式系统设计
LangChain:AI大模型开发与分布式系统设计
理论文章:
读书笔记:要点提炼《基于大模型的RAG应用开发与优化——构建企业级LLM应用》(严灿平)
智能体系统(AI Agent System)是什么?——从概念解析到企业数字化转型的全景落地及投资视角
精选文章:
小胡说技书博客分类(部分目录):服务治理、数据治理与安全治理对比表格
个人主页:
小胡说技书
六、dify架构图
封面图:
Dify 的 LLMs App Stack 架构将数据处理、检索增强、可视化编排、模型运维及安全合规等功能模块有机结合,为企业提供一站式的大语言模型应用解决方案。其核心理念在于:
- 高效整合数据(ETL + Storage + RAG);
- 可视化与插件式开发(Orchestration Studio + Plugins Toolbox + DSL);
- 服务化与可运营(BaaS 平台 + LLMOps + Moderation + Cache)。
6.1 数据层
Dataset ETL
- 功能:ETL(Extract, Transform, Load)指的是从源头数据中进行提取、转换和加载的过程。
- 作用:将各种结构化或非结构化数据(如文档、知识库、日志等)转化为可被下游组件(尤其是 RAG Pipeline)处理的统一格式。
- 优势:在多源数据汇总的企业环境中,通过 ETL 能够清洗和预处理数据,减少噪音并提升检索准确度。
Storage
- 功能:存储经过 ETL 处理后的数据,并为后续检索提供高效的读写能力。
- 特点:可能包含对象存储、向量数据库或传统关系型数据库,用于满足不同类型数据的管理需求。
- 与 Dify RAG Pipeline 的关系:当用户提问时,RAG Pipeline 会在此处检索所需内容,以提供上下文给大模型。
6.2 检索与增强生成层
Dify RAG Pipeline
- RAG(Retrieval-Augmented Generation):一种在调用大模型生成答案前,先检索相关文档并将其作为上下文提供给模型的技术。
- 流程:
- 接收查询:用户输入或上游模块传入问题;
- 向量检索:在存储中查找最相似的文档片段;
- 文档过滤/排序:对检索到的文档进行重排序(ReRank)或去重;
- 生成回答:将检索结果与用户问题一并传给大模型,得到更准确的回答。
- 好处:显著提升回答的准确性,减少“幻觉”现象(模型凭空捏造),同时保留对源文档的可追溯性。
6.3 开发与编排层
Dify Prompts IDE
- 定位:专门用于 Prompt 工程(Prompt Engineering)的集成开发环境。
- 功能:帮助开发者可视化地编写、调试和管理 Prompt,从而快速迭代对大模型的指令。
- 意义:Prompt 是大模型生成结果的核心控制手段,一个精心设计的 Prompt 能使模型更符合业务需求。
Orchestration Studio
- 作用:在整个系统中扮演“指挥中心”的角色,负责将用户请求、RAG Pipeline、LLMs、插件调用等多种流程有机串联。
- 可视化编排:开发者可在图形界面中拖拽节点、配置逻辑流,减少底层代码编写难度。
- 好处:让业务人员和技术人员都能快速上手,通过可视化流程图了解系统的工作原理与数据流向。
Plugins Toolbox
- 概念:插件(Plugin)是可选的扩展模块,用于连接外部系统或服务(如数据库、第三方 API、支付网关等)。
- 功能:让大模型在回答问题时具备调用外部资源或执行操作的能力,比如查询实时数据、发送邮件或进行数据分析。
- 优势:极大拓展大模型的应用边界,使其不仅能“回答问题”,还可执行实际的业务指令。
Dify Agent DSL
- DSL(Domain-Specific Language):面向特定领域的语言,用于描述“智能体(Agent)”的行为逻辑。
- 用途:帮助开发者用更简洁的脚本或配置方式来定义 Agent 的执行步骤、调用的插件以及异常处理等。
- 价值:提高自动化与可维护性,让非深度开发人员也能通过 DSL 快速构建自定义 Agent。
6.4 服务化与运营层
Dify BaaS Platform (API/Agents)
- BaaS(Backend as a Service):提供对外统一的 API 接口或 Agent 服务,屏蔽底层复杂度。
- 功能:
- API Gateway:对外暴露 RESTful 或 GraphQL 等形式的服务端点;
- Agents:封装业务逻辑,支持多轮对话、插件调用、RAG 检索等能力。
- 意义:让前端应用、第三方系统或移动端都能便捷地集成 AI 功能,无需关心底层流程。
LLMOps
- 概念:类似于 MLOps,指针对大语言模型的运维和管理实践,包括模型监控、版本管理、性能优化等。
- 作用:在模型上线后,通过持续监控模型的回答质量、响应速度和资源消耗,及时发现问题并迭代优化。
- 重要性:对于需要长期、稳定运行的大模型服务来说,完善的 LLMOps 能极大降低运维成本和风险。
Moderation System
- 功能:对用户输入与模型输出进行内容审核,过滤潜在的敏感信息或违规内容(如不良语言、隐私信息、法律风险等)。
- 价值:保障企业与用户的合规与安全,避免因不当言论或敏感数据泄露导致的法律与舆论风险。
- 技术点:可采用规则引擎或机器学习模型,对文本进行实时或准实时检测。
Cache System
- 定位:缓存层,用于存储最近或高频访问的查询与响应,以减少重复计算与网络消耗。
- 应用场景:
- 常见问题:对多次出现的相同或相似请求可直接从缓存返回结果;
- 性能优化:在高并发场景下显著降低对大模型的调用次数,提高整体吞吐量。
6.5 模型层
LLMs(Commercial、Open Source、Local)
- 多样性:Dify 可对接商业化 LLM(如通义千问、GPT 系列)、开源 LLM(如 BLOOM、LLaMA 变体)或本地部署的自研模型。
- 灵活性:企业可根据预算、数据合规要求、业务规模等因素自由选择模型类型或切换供应商。
- 衍生功能:通过插件、RAG Pipeline、Prompt 工程等手段,充分发挥大模型的通用能力,为业务创造更大价值。
6.6 交互流程
-
用户请求 (Queries Requests)
- 用户通过前端或 API 向 Dify BaaS 平台发起查询,可能包含自然语言问题或操作指令。
-
Orchestration & RAG
- Dify 接收请求后,通过 Orchestration Studio 的编排逻辑调用 RAG Pipeline、Plugins Toolbox 等。
- 若需要外部数据或执行业务操作,则通过 Agent DSL 协同插件完成。
-
模型生成 & Moderation
- 在获取必要上下文后,LLM 生成初步回答。Moderation System 对输出进行过滤或修正,保证内容合规。
-
Cache & 返回响应 (Outputs Responses)
- 若命中缓存,直接返回缓存结果;否则更新缓存并将最终结果返给用户。
- 整个过程会记录在 LLMOps 系统中,便于后续分析和运维。
相关文章:
极简入门,本地部署dify低代码平台构建AI Agent大模型全流程(使用教程、微案例、配置详解、架构图解析)
文章目录 一、环境搭建1.1 安装VMware-workstationCentOS7.91.2 安装宝塔1.3 安装docker及改镜像、安装dify1.4 配置模型供应商 二、dify快速上手体验2.1 知识库2.2 微案例:基于知识库的助手 三、dify知识库配置详解3.1 分片策略3.2 父子分段3.3 索引方法3.4 检索结…...
ssh与服务器
目录 前言: 一、密码连接 二、密钥对连接 1.将公钥放在服务器 2.ssh连接 三、禁用密码 1.进入服务器/etc/ssh文件夹 2.打开sshd_config文件,进行如下配置 3.有可能还需要更改其他文件夹 4.重启ssh服务 四、config 五.ssh与github 1.本地创建…...
C++ bind基本使用
std::bind 是 C11 引入的一个函数模板,用于创建一个新的可调用对象,该对象可以调用某个函数或成员函数,并将一些参数绑定为固定值。通过 std::bind,你可以创建一个新的函数对象,这个对象可以接受剩余的参数,…...
【GPT】从GPT1到GPT3
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 从GPT1 到GPT3 1. GPT1 论文: https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/lan…...
Java IO 设计模式总结
装饰器模式 装饰器(Decorator)模式 可以在不改变原有对象的情况下拓展其功能。 装饰器模式通过组合替代继承来扩展原始类的功能,在一些继承关系比较复杂的场景(IO 这一场景各种类的继承关系就比较复杂)更加实用。 对…...
js版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性
ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言,本文讲述Javascript[ECMAScript]版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]的新特性,帮助朋友们更好的熟悉和使用Javascript ES5 1.严格模式 use strict2.Object getPrototypeOf,返回一个对象的原…...
基于ffmpeg+openGL ES实现的视频编辑工具-解码(四)
在开发视频编辑工具时,预览功能是基石,它涵盖视频、图片以及音频播放,而视频解码则是实现视频预览及后续编辑操作的关键环节。本文聚焦于基于 FFmpeg 实现视频解码的过程,详细阐述开发中遭遇的痛点、对应的解决方式,以及核心代码的运作原理。 一、开发背景与目标 视频编…...
机器学习:决策树
1. 初步概念 决策树是一种基于分裂特征的机器学习方法,用于分类和回归任务。它通过将数据按特征值进行分割,最终做出预测。与线性模型不同,决策树能够自动识别重要的特征,并根据数据情况生成复杂的决策规则。 2. 决策树的核心思想 决策树的核心思想在于选择一个特征作为…...
@media 的常用场景与示例
media 的常用场景与示例 1. 基本概念2. 常用场景2.1 不同屏幕宽度的布局调整2.2 隐藏或显示元素2.3 字体大小调整2.4 图片大小调整2.5 高度调整2.6 颜色调整2.7 鼠标悬停效果 3. 常用示例3.1 基本响应式布局3.2 隐藏侧边栏3.3 字体大小和图片大小 4. 总结 在现代网页设计中&…...
深入浅出:基于SpringBoot和JWT的后端鉴权系统设计与实现
文章目录 什么是鉴权系统定义与作用主要组成部分工作原理常用技术和框架 基于SpringBoot JWT的鉴权系统设计与实现指南前言技术对比令牌技术JWT令牌实现全流程1. **依赖引入**2. **JWT 工具类**3. **JWT 拦截器(Interceptor)** 4. **拦截器注册**5. **登…...
怎麼利用靜態ISP住宅代理在指紋流覽器中管理社媒帳號?
靜態ISP住宅代理是一種基於真實住宅IP的代理服務。這類代理IP通常由互聯網服務提供商(ISP)分配,具有非常高的真實性,與普通數據中心代理相比,更不容易被平臺檢測到為“虛假IP”或“代理IP”,靜態ISP住宅代理…...
DeepSeek掘金——SpringBoot 调用 DeepSeek API 快速实现应用开发
Spring Boot 实现 DeepSeek API 调用 1. 项目依赖 在 pom.xml 中添加以下依赖: <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>&l…...
解决本地模拟IP的DHCP冲突问题
解决 DHCP 冲突导致的多 IP 绑定失效问题 前言 续接上一篇在本机上模拟IP地址。 在实际操作中,如果本机原有 IP(如 192.168.2.7)是通过 DHCP 自动获取的,直接添加新 IP(如 10.0.11.11)可能会导致 DHCP 服…...
Git LFS介绍(Large File Storage)大文件扩展,将大文件存储在外部存储,仓库中只记录文件的元数据(大文件的指针,类似一个小的占位符文件)
文章目录 LFS的功能?如何使用LFS?将大文件存储在外部系统是什么意思?具体是如何运作的?为什么要这样做? 对开发者的影响?1. **性能和效率**2. **协作体验**3. **版本管理差异**4. **额外的工具和配置** LFS…...
数据中心储能蓄电池状态监测管理系统 组成架构介绍
安科瑞刘鸿鹏 摘要 随着数据中心对供电可靠性要求的提高,蓄电池储能系统成为关键的后备电源。本文探讨了蓄电池监测系统在数据中心储能系统中的重要性,分析了ABAT系列蓄电池在线监测系统的功能、技术特点及其应用优势。通过蓄电池监测系统的实施&#…...
三甲医院网络架构与安全建设实战
一、设计目标 实现医疗业务网/卫生专网/互联网三网隔离 满足等保2.0三级合规要求 保障PACS影像系统低时延传输 实现医疗物联网统一接入管控 二、全网拓扑架构 三、网络分区与安全设计 IP/VLAN规划表 核心业务配置(华为CE6865) interface 100G…...
如何在 React 中测试高阶组件?
在 React 中测试高阶组件可以采用多种策略,以下是常见的测试方法: 1. 测试高阶组件返回的组件 高阶组件本身是一个函数,它返回一个新的组件。因此,可以通过测试这个返回的组件来间接测试高阶组件的功能。通常使用 Jest 作为测试…...
INA219电流、电压、功率测量芯片应用
INA219电流、电压、功率测量芯片应用 简述芯片引脚应用电路寄存器驱动代码 简述 INA219是一款由德州仪器(Texas Instruments)生产的高精度电流/功率监测芯片,广泛应用于电池监控、电源管理等需要精确电流和功率测量的应用中。该芯片通…...
深入解析设计模式之工厂模式
深入解析设计模式之工厂模式 在软件开发的复杂体系中,设计模式作为解决常见问题的有效方案,为开发者提供了强大的工具。工厂模式作为一种广泛应用的创建型设计模式,专注于对象的创建过程,通过巧妙的设计,将对象的创建…...
ollama修改监听ip: 0.0.0.0
确认Ollama绑定IP地址 默认情况下,Ollama可能仅监听本地回环地址(127.0.0.1)。要允许外部访问,需将其配置为监听所有IP(0.0.0.0)或指定IP(如10…19)。 修改启动命令(推荐…...
.NET MVC实现电影票管理
.NET MVC(Model-View-Controller)是微软推出的基于 Model-View-Controller 设计模式的 Web 应用框架,属于 ASP.NET Core 的重要组成部分。其核心目标是通过清晰的分层架构实现 高内聚、低耦合 的开发模式,适用于构建可扩展的企业级…...
FPGA DSP:Vivado 中带有 DDS 的 FIR 滤波器
本文使用 DDS 生成三个信号,并在 Vivado 中实现低通滤波器。低通滤波器将滤除相关信号。 介绍 用DDS生成三个信号,并在Vivado中实现低通滤波器。低通滤波器将滤除较快的信号。 本文分为几个主要部分: 信号生成:展示如何使用DDS&am…...
大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)
Paimon的下载及安装,并且了解了主键表的引擎以及changelog-producer的含义参考: 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 利用Paimon表做lookup join,集成mysql cdc等参考: 大数据组件(四)快速入门实时数据…...
vue3父子组件props传值,defineprops怎么用?(组合式)
目录 1.基础用法 2.使用解构赋值的方式定义props 3.使用toRefs的方式解构props (1).通过ref响应式变量,修改对象本身不会触发响应式 1.基础用法 父组件通过在子组件上绑定子组件中定义的props(:props“”)传递数据给子组件 <!-- 父组件…...
Linux /etc/fstab文件详解:自动挂载配置指南(中英双语)
Linux /etc/fstab 文件详解:自动挂载配置指南 在 Linux 系统中,/etc/fstab(File System Table)是一个至关重要的配置文件,它用于定义系统开机时自动挂载的文件系统。如果你想让磁盘分区、远程存储(如 NFS&…...
Test the complete case
Test the complete case python写的一段 由pytest测试框架/allure报告框架/parameters数据驱动组成的完整案例代码 目录结构 project/ ├── test_cases/ │ ├── __init__.py │ └── test_math_operations.py # 测试用例 ├── test_data/ │ └── math_dat…...
装win10系统提示“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”解决方法
问题描述 我们在u盘安装原版win10 iso镜像时,发现在选择硬盘时提示了“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”,直接导致了无法继续安装下去。出现这种情况要怎么解决呢? 原因分析: 当您在安装Windows操作系统…...
【pytest-jira】自动化用例结合jira初版集成思路
【pytest】编写自动化测试用例命名规范README 【python】连接Jira获取token以及jira对象 【python】解析自动化脚本文件并按照测试周期存储记录 【python】向Jira推送自动化用例执行成功 【python】向Jira测试计划下,附件中增加html测试报告 以下内容主要是介绍jira…...
PHP 会话(Session)实现用户登陆功能
Cookie是一种在客户端和服务器之间传递数据的机制。它是由服务器发送给客户端的小型文本文件,保存在客户端的浏览器中。每当浏览器向同一服务器发送请求时,它会自动将相关的Cookie信息包含在请求中,以便服务器可以使用这些信息来提供个性化的…...
大模型安全问题详解(攻击技术、红队测试与安全漏洞)
文章目录 大模型攻击技术提示注入攻击(Prompt Injection)数据投毒攻击(Data Poisoning)模型克隆攻击(Model Cloning)拒绝服务攻击(DoS)和拒绝钱包攻击(DoW)插…...
【愚公系列】《鸿蒙原生应用开发从零基础到多实战》002-TypeScript 类型系统详解
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
C# 将非托管Dll嵌入exe中(一种实现方法)
一、环境准备 电脑系统:Windows 10 专业版 20H2 IDE:Microsoft Visual Studio Professional 2022 (64 位) - Current 版本 17.11.4 其他: 二、测试目的 将基于C++创建DLL库,封装到C#生成的exe中。 一般C++创建的库,在C#中使用,都是采用DllImport导入的,且要求库处…...
c sharp 特性详解
文章目录 一、特性基础用法二、常见的内置特性三、自定义特性四、通过反射读取特性五、实际应用场景六、练习 一、特性基础用法 什么是特性? 特性是一种继承System.Attribute类,用于标记代码元素 特性的语法: [AttributeName(Parameter1, P…...
Langchain vs. LlamaIndex:哪个在集成MongoDB并分析资产负债表时效果更好?
Langchain vs. LlamaIndex:哪个在集成MongoDB并分析资产负债表时效果更好? 随着大语言模型(LLM)在实际应用中的普及,许多开发者开始寻求能够帮助他们更高效地开发基于语言模型的应用框架。在众多框架中,La…...
MySQL日常维护工具------备份
MySQL日常维护工具-备份 一、MySQL字符集 (一)字符集介绍 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集…...
硬核技术组合!用 DeepSeek R1、Ollama、Docker、RAGFlow 打造专属本地知识库
文章目录 一、引言二、安装Ollama部署DeepSeekR1三、安装Docker四、安装使用RAGFlow4.1 系统架构4.2 部署流程4.3 使用RAGFlow4.4 在RAGFlow中新增模型4.5 创建知识库4.6 创建私人助理使用RGA 一、引言 本地部署DeepSeek R1 Ollama RAGFlow构建个人知识库,通过将…...
[VSCode]彻底卸载和重装,并搭建Java开发环境
VSCode彻底卸载 由于当初是朋友帮忙装的,所以准备卸载,自己装一遍 从控制面板找到 vscode 将其卸载。 此时仅仅是删除了应用软件 删除安装插件 在图示路径中找到 .vscode 文件夹,将其删除,即可彻底清除安装的插件 C:\Users\user\.vscode …...
Scrum方法论指导下的Deepseek R1医疗AI部署开发
一、引言 1.1 研究背景与意义 在当今数智化时代,软件开发方法论对于项目的成功实施起着举足轻重的作用。Scrum 作为一种广泛应用的敏捷开发方法论,以其迭代式开发、快速反馈和高效协作的特点,在软件开发领域占据了重要地位。自 20 世纪 90 …...
政安晨的AI大模型训练实践 九 - 熟悉LLaMA Factory的详细参数含义-基本概念理解一下
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 小伙伴铁子们,上手先熟悉起来训练工具的每一个参数,很重要。 参照我…...
保姆级教程 | Office-Word中图目录制作及不显示图注引文的方法
背景 由于毕业论文的格式修改需要(没错,我终于要拿下PhD了。差不多四个月没更新,主要是①根据处理完的数据完成小论文撰写;②找工作...③完成学位论文的撰写。因而对建模和数据处理的需求不高,对有些时隔久远的博文具…...
Linux lsblk 命令详解:查看磁盘和分区信息 (中英双语)
Linux lsblk 命令详解:查看磁盘和分区信息 在 Linux 系统中,管理磁盘设备和分区是日常运维工作的重要部分。而 lsblk 命令是一个强大的工具,它用于列出系统中的块设备(block devices)信息,可以帮助我们快速…...
使用API有效率地管理Dynadot域名,为域名部署DNS安全拓展(DNSSEC)
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...
前后端项目部署服务器(传统部署和Docker部署)
内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...
深入HBase——核心组件
引入 通过上一篇对HBase核心算法和数据结构的梳理,我们对于其底层设计有了更多理解。现在我们从引入篇里面提到的HBase架构出发,去看看其中不同组件是如何设计与实现。 核心组件 首先,需要提到的就是HBase架构中会依赖到的Zookeeper和HDFS。…...
虚拟机从零实现机器人控制
1. 系统安装 因Docker不适合需要图形界面的开发,因此使用虚拟机VMware方便可视化界面方式查看效果,相关软件可以从官网下载,这里有一整套免费安装文件百度网盘地址: 2. ROS安装 Ubuntu 22.04:https://docs.ros.org…...
最新本地部署 DeepSeekR1 蒸馏\满血量化版 + WebOpenUI 完整教程(Ubuntu\Linux系统\Ollama)
测试机为6133CPU(40Cores)256G D44*4090D 24G 一种方法是部署蒸馏版Distill模型。一种是部署Huggingface上unsloth的量化版模型 Ollama及模型安装 1.下载并安装ollama curl -fsSL https://ollama.com/install.sh | sh如果下载不动可以试试挂梯子或者再试几次 挂代理代码&…...
Linux基本指令(三)+ 权限
文章目录 基本指令grep打包和压缩zip/unzipLinux和windows压缩包互传tar(重要)Linux和Linux压缩包互传 bcuname -r常用的热键关机外壳程序 知识点打包和压缩 Linux中的权限用户权限 基本指令 grep 1. grep可以过滤文本行 done用于标记循环的结束&#x…...
kafka-集群缩容
一. 简述: 当业务增加时,服务瓶颈,我们需要进行扩容。当业务量下降时,为成本考虑。自然也会涉及到缩容。假设集群有 15 台机器,预计缩到 10 台机器,那么需要做 5 次缩容操作,每次将一个节点下线…...
【nextJs】官网demo学习
最近在看nextjs官方的demo,把一些值得记录的记下来,方便查询; 1.连接数据库 1.1需要把代码传到远程仓库: 执行下面的命令: // 把#后面内容写入readme文件中 echo "# nextjs-dashboard" >> README.…...
在nodejs中使用ElasticSearch(一)安装,使用
使用docker安装ElasticSearch和Kibana 1)创建相应的data文件夹和子文件夹用来持久化ElasticSearch和kibana数据 2)提前创建好elasticsearch配置文件 data/elasticsearch/config/elasticsearch.yml文件 # Elasticsearch Configuration # # NOTE: Elas…...