- 博客(120)
- 收藏
- 关注
原创 Python contextvars:跨异步任务的上下文管理利器
在构建复杂的应用程序,尤其是 Web 服务和并发系统时,我们经常面临一个共同的挑战:如何将某些“隐式”的上下文信息(如请求 ID、用户信息、数据库事务对象)在程序的调用链中传递下去,以便在任意深度的函数中都能方便地访问?它提供了一种在异步任务(以及其他执行上下文)之间安全隔离和传递上下文数据的优雅机制,真正实现了“一次设置,处处可用”。,你就能在复杂的并发程序中,以一种优雅、解耦且无侵入的方式来管理和传递上下文状态,显著提升代码的可读性和可维护性。上下文中运行代码,而不会影响当前的上下文。
2025-07-09 16:21:43
704
原创 python-dotenv详细介绍
是一个非常实用的 Python 库,它的核心功能是从一个名为。假设我们正在开发一个需要连接数据库和调用天气 API 的应用。不会覆盖系统中已经存在的同名环境变量。的文件中读取键值对,并将它们加载到操作系统的。与 Flask 的集成非常顺畅,甚至可以说是。这意味着,在 Flask 项目中,你通常。文件排除在版本控制之外。创建一个 Python 文件(例如。命令会自动检测到它,并在启动应用前。文件不在项目根目录,可以指定路径。文件中的值优先,可以设置。,Flask 会自动读取。的格式写入你的配置。
2025-06-30 17:36:20
921
原创 Python 包的构建与发布:从 setuptools到 PyPI
本文将详细介绍如何使用setuptools这一核心工具来打包、构建并发布你的 Python 项目。无论你是想分享一个简单的工具,还是一个复杂的库,理解这个流程都至关重要。
2025-06-30 15:56:19
736
原创 使用 React-i18next 在 TypeScript 的 Next.js 应用中实现国际化
国际化(Internationalization,简称 i18n)是指使应用程序适应不同语言、地区和文化的过程。文本翻译:将界面文本翻译为用户所需的语言。日期和时间格式:根据地区格式化日期和时间。数字和货币格式:根据地区格式化数字、货币符号和小数点。文本方向:支持从左到右(LTR)和从右到左(RTL)的语言。文化习俗:适应当地的文化习俗和法律要求。是i18next的 React 绑定库。i18next多语言支持动态加载语言资源嵌套翻译复数形式变量插值命名空间。
2025-06-16 17:58:53
888
2
原创 使用 Tailwind CSS 进行样式设计,并与 Next.js 和 TypeScript 无缝集成
是一款实用工具优先(Utility-First)的CSS框架。它提供了大量的低级别样式类,可以直接在 HTML 或 JSX 文件中组合和应用,从而快速构建定制化的用户界面。与传统的基于组件的 CSS 框架(例如 Bootstrap、Material UI)不同,Tailwind 不提供预先设计的组件,而是提供简洁、可复用的实用工具类,使您可以完全控制设计,而无需编写自定义样式。
2025-06-16 17:57:37
806
原创 使用基于 TypeScript 的 Next.js 模板进行项目引导
Next.js是一个基于React的用于构建服务端渲染(SSR)和静态网站生成(SSG)的前端框架。文件系统路由:基于pages目录的文件结构自动生成路由。服务端渲染(SSR):在服务器端渲染页面,提高首屏加载速度和 SEO 优化。静态网站生成(SSG):预渲染页面,生成静态 HTML 文件,提升性能。API 路由:在pages/api目录中创建 API 路由,方便开发后端接口。代码拆分和优化:自动进行代码分割,按需加载,提高应用性能。热模块替换(HMR):开发时实时更新页面,无需手动刷新。
2025-06-16 17:40:30
685
原创 Flask-login 处理授权逻辑
Flask-login 需要一个用户加载函数,从会话中存储的用户 ID 重新加载用户对象。Flask-login 为 Dify 提供了一个简单而强大的用户认证和授权框架,极大地简化了用户管理的实现,同时确保了系统的安全性和稳定性。:Flask-login 自动在用户成功登录后,维护用户的登录状态,通过会话或安全的 Cookie 存储。:通过从数据库中动态加载用户,可以检测用户是否被禁用、权限是否被更改等,提高了系统的安全性和灵活性。:根据用户的角色或权限,限制用户访问特定资源。会将用户重定向到登录页面。
2025-06-16 16:41:18
896
原创 SQLAlchemy 作为 ORM
SQLAlchemy 作为 ORM,为 Dify 的后端提供了强大的数据库操作能力,使得数据层的开发既高效又可靠,同时保持了代码的清晰和优雅。它让开发者可以使用编程语言中的对象来表示数据库中的数据,而不需要直接编写 SQL 语句。假设 Dify 有一个管理文章的功能,需要一个。对象来操作数据库,而不需要直接编写 SQL。使用 ORM,我们可以在代码中定义一个。假设我们有一个表示用户的数据库表。是一种程序设计技术,用于在。然后,我们可以通过创建。
2025-06-16 16:26:11
568
原创 利用 Cloudflare Workers 和 dify-tools-worker 快速部署自定义工具
Cloudflare成立于 2009 年,致力于为全球网络提供安全、性能优化和可靠性解决方案。其使命是帮助构建一个更好的互联网,通过强大的全球网络基础设施,为网站、应用程序和 API 提供加速、安全和高可用性服务。全球边缘网络(Global Edge Network)是由遍布全球多个数据中心或服务器节点组成的分布式网络架构。这些节点位于靠近最终用户的地理位置,称为“边缘”,用于处理、存储和传输数据。通过将数据和计算能力分布到网络的边缘,全球边缘网络能够提供更快的响应速度和更好的用户体验。
2025-06-16 14:11:42
950
原创 沙箱(Sandbox)
现在低代码开发环境中的workflow应用中的代码执行节点往往使用沙箱和网络隔离实现执行环境安全,以Dify中的Sandbox和SSRF_proxy为例解释这部分内容
2025-06-13 14:17:53
944
原创 Jinja2 模板在 Python 和 LLM 提示词编辑器中的应用
可以定义宏(类似于函数),以重用模板代码。姓名:{{ user.name }},年龄:{{ user.age }}如果user1的值是{'name': '张三', 'age': 25}user2的值是{'name': '李四', 'age': 30}姓名:张三,年龄:25姓名:李四,年龄:30# 定义一个自定义过滤器函数# 创建模板环境# 添加自定义过滤器# 使用自定义过滤器的模板。
2025-06-12 09:03:44
1064
原创 ai-plugin:OpenAI 插件规范详细介绍
是一套用于创建插件的标准,旨在扩展 OpenAI 的大型语言模型(Large Language Models,LLMs)的功能,使其能够与外部工具、数据和服务交互。由于 OpenAPI 已经是广泛采用的 API 描述标准,开发者可以利用现有的工具链,如 Swagger、OpenAPI Generator 等,快速开发和测试插件。:详尽描述插件的 API,包括端点(endpoints)、请求和响应格式、参数、安全机制等。:提供插件的使用说明、开发指南、示例代码等,方便开发者和用户了解插件的功能和用法。
2025-06-11 10:32:26
1048
原创 JSON Schema 2020-12 介绍
是一种用于描述和验证 JSON 数据结构的规范,它提供了一种声明性的方法来定义 JSON 数据的格式、内容和约束条件。通过 JSON Schema,可以确保 JSON 数据符合预期的结构,满足特定的要求,从而提高数据交换的可靠性和一致性。熟练掌握 JSON Schema 的使用,能够提高系统的可靠性,减少因数据格式不符而导致的错误。它是继 2019-09 版本之后的一个更新,包含了一些新的特性和改进,以增强模式定义的能力和灵活性。指定嵌入内容的模式定义,多用于字符串中包含嵌套的 JSON 数据时。
2025-06-11 10:15:59
1118
原创 OpenAPI / Swagger 规范详细介绍
一、概述OpenAPI 规范(OpenAPI Specification,简称 OAS)是一种用于描述和定义基于 RESTful 风格的 Web API的开源标准。它提供了一种与语言无关的方法,用于描述 API 的功能、端点、参数、请求/响应格式、安全性等,使得机器和人类都可以理解和交互 API。Swagger是 OpenAPI 生态系统中最早且最著名的项目之一,最初指的是一个用于生成 API 文档的工具和规范。
2025-06-10 17:12:40
1213
原创 Sentry 配置简介
Sentry是一个实时的错误追踪和性能监控工具,广泛应用于各种编程语言和框架。通过集成 Sentry,开发者可以在应用程序发生错误或性能问题时,及时获得详细的报告,以便快速定位和修复问题。SENTRY_DSN接下来,我们将逐一解释这些配置项的含义和用法。性能剖析(Profiling):是一种深入分析应用程序性能的方法,能够捕获函数调用栈、执行时间等详细信息。用途:帮助开发者识别性能瓶颈、优化代码路径、降低资源消耗。SENTRY_DSN:决定是否启用 Sentry 数据上报。
2025-06-04 15:07:18
891
原创 Sentry 的部署方式:自托管与 SaaS 服务
Sentry 提供了完整的开源版本,您可以在自己的服务器或私有云环境中运行,从而全面掌控数据和系统配置。建议在选择部署方式时,综合考虑团队规模、技术能力、数据安全要求和成本预算,做出最适合的决策。:定期备份 Sentry 使用的数据库(PostgreSQL)和配置,以防止数据丢失。查看各容器的运行状态,及时发现和处理异常。:在更新代码后,重新运行安装脚本进行升级。仓库代码,获取最新特性和安全修复。两种方式,满足不同团队和企业的需求。Sentry 提供了。
2025-06-04 15:06:04
1060
原创 Sentry 项目简介
Sentry是一个跨平台的应用监控和错误跟踪工具,旨在帮助开发者实时捕获、诊断和解决生产环境中的错误和性能问题。通过在应用程序中集成 Sentry SDK,开发者可以在第一时间获取详细的错误报告,包括堆栈跟踪、环境变量、用户上下文等,从而快速定位问题源头,提升应用程序的稳定性和用户体验。忽略特定的错误:可以配置 Sentry SDK 忽略某些已知的、不需要关注的异常。dsn="你的 DSN 地址",
2025-06-04 15:05:06
1008
原创 Unstructured 库的核心功能
使用 Unstructured 库对文档进行分区的最简单方法是使用partition函数。调用该函数时,Unstructured 会使用libmagic自动确定文件类型,并调用相应的分区函数。如果libmagic不可用,文件类型检测将退回使用文件扩展名。由于清理函数只是一个从字符串到字符串的函数,用户也可以轻松地包含自己的清理函数,以执行自定义的数据预处理任务。在下面的示例中,我们从一段文本中移除了引用(如[1]import re。
2025-06-04 12:05:00
1057
原创 使用 Unstructured 开源库快速入门指南
它们面向生产环境,具备更高的性能和质量,支持最新的 OCR 和视觉语言模型、先进的分块策略、安全合规、多用户账户管理、作业调度和监控、自托管部署等。上述命令支持处理纯文本(.txt)、HTML(.html)、XML(.xml)和电子邮件(.eml、.msg、.p7s)文件,无需额外依赖。:使用库中的分块(chunking)、清理(cleaning)、提取(extracting)函数,进一步处理文档元素,满足特定需求。:为文档元素的文本生成向量嵌入,用于 RAG 应用、AI 代理、模型微调等。
2025-06-04 11:22:47
1405
原创 Unstructured.io 文件 Extract 方案概述
Unstructured.io 是一个功能强大且灵活的非结构化数据提取工具,特别适合需要处理复杂文件格式的场景。虽然部署和维护成本略高于 Dify 自研方案,但其广泛的格式支持和可扩展性使其成为企业级知识库构建的理想选择。它支持多种文件格式(如 PDF、Word、PPT、HTML、CSV 等),并提供灵活的预处理和后处理能力,适用于知识库构建、RAG(Retrieval-Augmented Generation)等场景。支持中文、英文、法语、西班牙语等主流语言(依赖底层 OCR 和文本处理库)。
2025-06-04 11:17:01
773
原创 Dify:启动 Web 服务的详细指南
进入了项目的web目录,这是所有前端代码和配置所在的位置。使用pnpm安装了所有项目依赖,确保了依赖版本的一致性。创建并配置了环境变量文件.env.local,这个文件对应用的运行环境和行为起着关键作用。构建了应用程序,将源代码编译和优化为适合生产环境运行的代码。启动了应用程序,使其在本地服务器上运行,您可以在浏览器中访问并测试应用。多个域名的原因不同的服务组件可能出于安全、性能、维护等考虑,运行在不同的域名或子域名下。指定完整基础 URL 的必要性。
2025-06-03 17:23:54
1616
原创 在 Dify 项目中的 Celery:异步任务的实现与集成
Dify 项目采用Flask作为 Web 框架,为了提升系统性能和用户体验,引入了 Celery 来处理耗时的后台任务。通过将任务分配到不同的队列,并使用 Celery 的 Worker 进行异步执行,Dify 实现了任务的解耦和并发处理。同时,项目还集成了Sentry和,对任务执行进行实时监控和性能追踪。tasks/# 任务的具体实现pass解释:使用装饰器:在任务模块中,使用装饰器定义任务。这种方式无需直接引用 Celery 应用实例,避免了循环导入的问题,提高了模块的独立性和可重用性。
2025-06-03 16:47:49
1287
1
原创 Dify:用Celery构建高性能异步任务处理系统
在项目的任务模块(例如"""发送注册确认邮件给用户"""subject = "欢迎注册我们的服务"# 发送邮件的逻辑:将函数声明为一个共享任务,并指定任务所属的队列为mail。:假设这是一个已经实现的邮件发送函数,负责实际发送邮件。:告诉 Celery 从app模块中加载名为celery的应用实例。重要性:正确指定应用实例位置,确保 Worker 能够加载配置和任务。验证:在启动 Worker 前,可以尝试在 Python 交互环境中导入,确保路径和名称正确。
2025-06-03 16:42:24
1148
1
原创 Celery 核心概念详解及示例
Celery 是一个简单、灵活且可靠的分布式系统,用于处理大量消息,提供对任务队列的操作,并支持任务的调度和异步执行。它常用于深度优化 Web 应用的性能和响应速度,通过将耗时的操作移到后台异步执行,使主程序不被阻塞。
2025-06-03 15:51:17
1386
1
原创 客户端访问服务器时需要做些什么吗?
在您成功为服务器配置 HTTPS 并安装了有效的 SSL/TLS 证书(例如使用 Let's Encrypt 颁发的证书)后,**客户端通常不需要做任何特殊操作**。
2025-06-03 11:08:27
1241
原创 进阶配置与优化:配置 HTTPS 以确保数据安全传输
在生产环境中,确保用户与服务器之间的数据传输安全至关重要。配置 HTTPS(HTTP Secure)可以通过使用 SSL/TLS 协议对数据进行加密,防止数据在传输过程中被窃听或篡改。本文将详细介绍如何使用 **Let's Encrypt** 免费获取 SSL 证书,并配置 Nginx 以支持 HTTPS。
2025-06-03 10:44:58
1476
原创 生产环境中安装和配置 Nginx 以部署 Flask 应用的详细指南
在生产环境中部署 Flask 应用时,Nginx 常被用作反向代理服务器,与 WSGI 服务器(如 Gunicorn)协同工作。Nginx 可以处理静态文件、提供 SSL/TLS 加密、实现负载均衡等功能。本文将详细介绍如何在 Ubuntu/Debian 系统上安装 Nginx,并配置它以反向代理 Flask 应用。
2025-06-03 10:24:10
1085
原创 Flask 应用的生产环境部署指南
Flask 是一个轻量级的 Python Web 应用框架,常用于快速开发 Web 应用或 API。然而,Flask 内置的开发服务器仅适用于开发和调试阶段,并不适合直接用于生产环境。本文将详细介绍在生产环境中部署 Flask 应用的最佳实践,包括使用专业的 WSGI 服务器和反向代理服务器,以及性能优化和安全配置。
2025-06-03 10:04:15
1235
原创 深入解析 Flask 命令行工具与 flask run命令的使用
Flask 是一个轻量级的 Python Web 应用框架,其内置的命令行工具(CLI)基于 Click 库,提供了方便的命令行接口,用于管理和运行 Flask 应用程序。本文将详细介绍 Flask 命令行工具的功能,以及如何使用 `flask run` 命令启动应用程序。
2025-06-03 09:48:54
983
原创 uv:一个现代化的 Python 依赖管理工具
在 Python 的生态系统中,依赖管理和 Python 版本管理一直是开发者关注的核心问题。提供了直观简洁的命令行接口,降低了学习成本。)来管理多个 Python 版本,从而实现不同项目间的版本切换。虽然功能强大,但在性能和使用体验上仍有改进空间。、Homebrew 等方式安装,详见安装页面。,旨在提供更快、更简洁的依赖和环境管理体验。会自动使用当前版本创建虚拟环境并安装依赖。,专注于快速安装依赖和管理虚拟环境,但。管理的 Python 版本下,获取更多信息和使用指南。,享受其性能和功能优势。
2025-05-31 11:25:33
1153
原创 介绍 Python 的 CLI(命令行界面)工具
即命令行界面,是一种通过命令行与计算机程序交互的方式。用户在终端或控制台中输入命令,程序根据用户输入执行相应的操作。CLI 工具在自动化、脚本化操作、服务器管理、开发测试等过程中广泛使用,因其简洁高效,深受开发者和系统管理员的喜爱。Python 提供了丰富的库和工具,使得开发者可以高效地编写功能强大的 CLI 应用程序。选择合适的库(如clickTyper)可以大大提高开发效率,简化代码。良好的命令行工具应当用户友好,提供清晰的帮助信息和错误提示,并考虑扩展性和可维护性。
2025-05-31 10:24:37
1146
原创 Dify:详解 docker-compose.yaml配置文件
services:api:MODE: api# 其他特定于 API 服务的环境变量db:redis:volumes:networks:- default作用:运行后端 API 服务,提供应用的核心功能。环境变量使用了共享环境变量。MODE: api:指定运行模式为 API 服务。依赖db(数据库服务)必须健康启动。redis(缓存)必须已启动。卷映射将主机的目录挂载到容器内的,用于存储用户文件。网络连接到和默认网络。networks:milvus:说明。
2025-05-28 16:53:26
1306
原创 Omni语音助手技术白皮书
本技术白皮书系统阐述了Omni语音助手的技术演进路径、核心架构设计及关键创新点,为构建下一代多模态智能交互系统提供了完整的技术参考框架。
2025-05-14 15:10:10
820
原创 音频生成技术的前沿探索:从语音合成到智能Podcast
从VALL-E的声纹克隆到NotebookLM的智能对话生成,音频生成技术正经历从"能说话"到"会思考"的质变。随着神经编解码器效率提升和大规模对话数据的积累,我们或将见证语音交互系统突破最后的技术瓶颈,在医疗咨询、教育辅导等场景实现人性化服务。这场声音的革命,正在重构数字世界的沟通方式。Podcast(播客)Podcast(播客)是一种通过互联网分发的音频或视频节目,用户可以按需订阅、下载或在线收听,无需在特定时间收听广播。它的核心特点是“随选随听”,打破了传统广播的时间限制。
2025-05-14 12:05:46
973
原创 级联与端到端对话系统架构解析:以Moshi为例
该架构为对话系统研究提供了新范式,在保持实时交互性的同时实现了多模态深度融合。未来改进方向包括:提升声学环境适应性、优化多模态平衡机制、探索更高效的量化方案等。其变体架构引入编码器模块,直接处理音频特征表示,减少ASR-TTS的中间转换环节。注:IM=Inner Monologue模块,显著提升QA性能(p<0.01)
2025-05-14 11:51:15
1064
原创 数据蒸馏+SFT范式:模型训练与优化的实践与洞察
范式成为提升模型推理能力的关键路径。本文以三篇2025年第一季度发布的代表性工作(Light-R1、AM-Distilled、Open Thoughts)为核心,系统梳理数据蒸馏+SFT的完整流程,揭示其共性与差异,并探讨评测挑战与优化方向。数据蒸馏+SFT范式已成为提升LLM推理能力的主流路径,但其效果高度依赖数据质量、训练策略与评测严谨性。数据收集阶段的核心目标是构建多样化、高质量的问题库,直接影响模型的泛化能力。数据处理阶段的核心在于确保推理链的准确性、多样性与复杂性。是性能提升的核心,而。
2025-05-13 17:32:00
1040
原创 大语言模型RLHF训练框架全景解析:OpenRLHF、verl、LLaMA-Factory与SWIFT深度对比
随着大语言模型(LLM)参数规模突破千亿级,基于人类反馈的强化学习(RLHF)成为提升模型对齐能力的关键技术。OpenRLHF、verl、LLaMA-Factory和SWIFT作为开源社区的四大标杆框架,分别通过分布式架构、混合控制器、模块化设计和国产化适配,为70B级模型训练提供创新解决方案。随着RL4LM技术的持续突破,未来将出现更多跨框架融合方案,推动AGI安全对齐研究进入新阶段。开发者应根据硬件条件、算法需求和部署场景进行动态选择,同时关注TRL、TRLX等新兴库的技术演进。
2025-05-13 10:44:33
2013
原创 大语言模型强化学习双强:OpenRLHF与verl技术解析
OpenRLHF与verl作为开源社区两大标杆框架,分别以Ray分布式架构和HybridFlow混合控制器为核心,为70B级模型训练提供创新解决方案。本文将深度解析二者的技术差异与实践价值。在AIME 2024数学推理基准测试中,基于verl的DAPO算法以Qwen-32B为基座模型取得50分,超越DeepSeek-R1-Zero 3.2个百分点。随着RL4LM(面向语言模型的强化学习)技术的持续突破,预计2025年内将出现支持万亿参数的RLHF训练框架,推动AGI安全对齐研究进入新阶段。
2025-05-12 17:44:16
1175
原创 深入解析 PyTorch 中的 torch.distributions模块与 Categorical分布
模块为 PyTorch 用户提供了丰富且灵活的概率分布工具,类是其中处理离散类别分布的重要成员。通过使用,我们可以方便地进行随机采样、概率计算和模型的概率化处理。这对于强化学习、生成模型、自然语言处理等需要处理离散随机变量的领域尤为重要。在实际应用中,善用模块,可以使模型更具表达力和灵活性。希望本文能帮助读者更好地理解和使用 PyTorch 中的概率分布工具,为深度学习模型的构建和研究提供有力支持。参考资料PyTorch 官方文档 - Distributions。
2025-04-28 17:00:52
959
Attention is All You Need(代码实现)代码
2025-02-17
在自定义数据集上训练现有的Detectron2模型
2024-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人