自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 收藏
  • 关注

原创 FastAPI 应用开发(五)——SQLAlchemy ORM、APIRouter 与 Alembic 数据库迁移

本文系统介绍了在FastAPI中使用SQLAlchemy实现数据库持久化的完整流程:从认识ORM原理到配置数据库连接与Session,定义现代风格的ORM模型,通过Pydantic Schema分层管理API数据契约,利用APIRouter组织模块化路由,并最终引入Alembic实现安全的数据库迁移。文章强调了各组件职责分离的重要性,构建了高内聚、低耦合的项目架构,为构建可维护、可扩展的Web应用奠定了坚实基础。

2026-10-13 21:21:42 363

原创 FastAPI 应用开发(四):CORS 跨域、静态资源、安全认证与接口测试

本文介绍了FastAPI中解决CORS跨域问题的原理与配置,涵盖静态文件挂载、Jinja2模板渲染、OAuth2密码模式与JWT认证,以及使用TestClient与pytest进行接口自动化测试,并强调依赖覆盖在测试中的应用。

2026-09-08 14:01:22 164

原创 FastAPI 应用开发(三):表单、文件上传与中间件

摘要:本文介绍FastAPI处理表单、文件上传及中间件机制。使用Form()解析表单数据,UploadFile高效处理文件上传,支持多文件及表单混合。中间件通过洋葱圈模型全局拦截请求,实现日志、压缩等功能,内置GZip等中间件可优化性能。

2026-09-07 15:02:51 323

原创 FastAPI 应用开发(二):请求响应、Pydantic 模型与依赖注入

本文介绍FastAPI核心机制:通过Path、Query、Header、Cookie获取请求数据,并掌握JSON、Pydantic模型、状态码、重定向及自定义响应头等响应方式。深入解析Pydantic v2在数据校验、序列化、模型配置与继承中的应用。最后讲解依赖注入原理,包括Depends、yield资源清理、装饰器及全局依赖,帮助构建类型安全、易维护的API

2026-09-06 22:22:21 329

原创 FastAPI 应用开发(一):FastAPI、路由参数与交互式 API 文档

本文作为 FastAPI 系列的第一篇文章,将从整体角度认识 FastAPI。首先介绍 FastAPI 的基本概念、核心特点、应用场景与技术栈,并通过与 Flask、Django 的对比理解其在现代 Web API、微服务及 AI 应用后端开发中的优势。随后从第一个 FastAPI 应用出发,介绍应用创建、启动与基本代码结构,并初步理解路径参数、查询参数和请求体的识别规则。最后介绍 FastAPI 基于 OpenAPI 提供的交互式 API 文档,包括接口测试、文档信息配置、路由说明、Tags 分组以及文档

2026-09-05 13:36:48 264

原创 LangChain 应用开发(十七):Embedding 向量模型与 向量存储

本文介绍了RAG中Embedding与向量存储的核心:传统关键词匹配无法理解语义,需将文本转为高维向量;Embedding模型负责“文本转向量”,使语义相近的向量距离近。随后引入VectorStore高效存储和检索向量,并绑定原始文本与元数据。最后以客服知识库案例串联文档加载、切分、向量化、存储及相似度检索,验证语义召回效果。

2026-09-04 12:22:37 312

原创 LangChain 应用开发(十六):RAG 检索增强生成与文档处理

RAG通过检索模块解决大模型知识静态、私有数据不可达及幻觉问题,其流程包含离线索引与在线检索生成。文档加载器将异构数据统一为Document,文本切分是保障检索精度的关键,需平衡块大小与重叠。常用策略包括递归字符切分、语义分块及结构感知分块,以在合适粒度下保留完整语义。

2026-09-03 14:29:23 364

原创 LangChain 应用开发(十五):Agent 长期记忆与 Store 机制

本文介绍LangChain/LangGraph Agent的长期记忆机制:通过Store跨Thread存储用户事实、偏好与经验,基于Namespace/Key/Value组织,支持语义检索;结合RuntimeContext实现用户隔离,可在Middleware、动态提示词或Tool中读写记忆,并探讨写入时机与架构全景。

2026-09-01 12:08:11 337

原创 LangChain 应用开发(十四):Agent 上下文与记忆机制

本文围绕 LangChain Agent 的上下文与记忆机制展开。首先通过 LLM 无状态本质引出记忆需求,厘清 Context、State 与 Memory 三者的关系:State 记录当前运行数据,Memory 负责保存与恢复状态,Context 决定本次投喂给模型的精简信息。随后讲解短期记忆的实现,包括基于 Thread 隔离的 InMemorySaver 及其 thread_id 路由逻辑,并指出其进程重启即丢失的局限。接着引入 PostgreSQL 持久化方案 PostgresSaver,通过断电

2026-08-28 14:02:09 316

原创 LangChain 应用开发(十三):自定义中间件与 Hook

本文深入剖析 LangChain 自定义 Middleware 的内核原理——Hook(钩子)机制。文章首先回顾了内置中间件的作用,随后系统讲解了两大 Hook 分类:基于生命周期节点的 Node-style Hooks(单点拦截)与基于闭包句柄的 Wrap-style Hooks(环绕拦截)。通过装饰器与类继承两种实现方式的对比,详细演示了 before_model、wrap_model_call、wrap_tool_call 等核心 Hook 的用法,并重点解析了 can_jump_to 如何改变 Ag

2026-08-27 15:00:13 368

原创 LangChain 应用开发(十二):Agent 中间件与内置中间件

本文介绍了AgentMiddleware中间件机制在LangChain中的应用,重点解析了中间件的核心概念、工作原理及常见类型。文章阐述了中间件如何通过Hook机制在Agent生命周期关键节点(如模型调用、工具执行前后)插入控制逻辑,实现数据审查与流程管控。详细讲解了四种典型中间件:SummarizationMiddleware(自动摘要解决上下文溢出)、HumanInTheLoopMiddleware(高危操作人工审批)、PIIMiddleware(敏感数据脱敏)和TodoListMiddleware(复

2026-08-26 11:20:01 388

原创 LangChain 应用开发(十一):Agent 高级配置与结构化输出

本文系统讲解 Agent 的高级配置机制,涵盖名称设置、系统提示词、结构化输出与流式输出四大核心主题。首先厘清 Agent 名称与模型名称的区别及其在多智能体路由中的作用;随后介绍 system_prompt 如何塑造 Agent 的身份与行为边界;接着深入 Agent 结构化输出,对比 Model 与 Agent 的差异,并重点剖析 ToolStrategy 中 schema、tool_message_content、handle_errors 等关键配置;最后讲解 agent.stream() 流式输出

2026-08-24 15:07:58 353

原创 LangChain 应用开发(十):认识 Agent——从工具调用到智能体

本文系统介绍了 LangChain 中 Agent(智能体)的核心概念与实践应用。首先阐述了 Agent 作为 Tool Calling 高阶形态的价值,对比了 Agent 与普通 LLM 的区别。接着详细解析了 Agent 的五大核心组成:模型、工具、提示词、状态和运行时引擎。文章通过代码示例演示了如何使用现代 API 创建第一个 Agent,并探讨了多工具协同工作的机制。最后,针对生产环境中常见的工具选择、循环终止和错误恢复等问题提供了实用解决方案,帮助开发者构建稳定可靠的智能体系统。

2026-08-22 12:19:28 198

原创 LangChain 应用开发(九):结构化输出详解

本文探讨了大语言模型在软件工程中实现结构化输出的方法。文章首先指出自然语言输出与程序需求之间的鸿沟,提出JSON等结构化格式的重要性。随后详细介绍了四种Schema定义方式:功能完备的Pydantic(支持运行时校验)、轻量级的TypedDict、跨语言的JSONSchema和Python原生的dataclass,并分析了它们的适用场景和校验机制。接着讲解了LangChain中的两种实现方案:优先推荐的with_structured_output()方法和备选的输出解析器方案,前者直接返回结构化对象,后者通

2026-08-21 13:34:31 381

原创 LangChain 应用开发(八):Tools 工具调用与应用实践

本文详细介绍了LangChain中ToolCalling的完整流程与实战应用。首先梳理了工具调用的数据链路:从定义Tool、绑定模型,到LLM生成指令、本地执行函数并返回结果的全过程。通过天气查询工具案例,展示了Pydantic参数校验、@tool装饰器和ToolMessage消息流的实际应用。文章还深入探讨了多工具调用、tool_choice参数控制、错误处理与重试机制等高级功能,并提出了Tool设计的八大原则,包括单一职责、明确参数、异常处理和同步/异步选择等。最后指出结构化输出将是后续学习重点,为数据

2026-08-20 13:42:00 319

原创 LangChain 应用开发(七):Tools 工具定义与核心机制

本文深入探讨了LangChain框架中Tool(工具)的核心概念与使用方法。Tool作为大语言模型与现实世界交互的桥梁,能够解决模型在知识时效性、精确计算、私有数据访问等方面的局限。文章详细解析了ToolCalling的工作原理,包括模型如何生成工具调用请求、本地执行流程及消息交互机制。重点介绍了构建Tool的三种方式:通过普通函数自动转换、使用@tool装饰器快速封装,以及使用Pydantic自定义复杂参数Schema。文章强调规范的Docstring和类型注解对工具描述的重要性,并提供了高质量Tool描

2026-08-19 14:44:34 303

原创 LangChain 应用开发(六):提示词的构建与复用

本文主要介绍了LangChain中提示词模板的应用与演进,从最初的字符串拼接到结构化ChatPromptTemplate的发展历程。文章详细分析了字符串拼接的局限性,如可读性差、复用性低等问题,并阐述了ChatPromptTemplate如何通过角色隔离、消息占位符等特性解决这些问题。文章还讲解了三种调用方式(invoke()、format_messages()、format())及其适用场景,以及与LLM结合使用的具体方法。此外,还介绍了MessagePromptTemplate、部分变量预填充、消息占位

2026-08-18 16:43:11 319

原创 LangChain 应用开发(五):消息类型与对话管理

大模型交互从纯文本升级为结构化消息(System/Human/AI/Tool),解决角色混淆与上下文管理问题。LangChain通过标准化消息对象统一多厂商API,支持元数据和工具调用。消息按顺序组织(系统指令置顶),content支持多模态数据块。SystemMessage设定规则,HumanMessage传递输入,AIMessage封装输出及工具请求,ToolMessage返回工具结果。该体系为复杂Agent开发提供基础,并兼容不同模型的响应格式。

2026-08-16 12:57:30 348

原创 LangChain 应用开发(四):LangSmith概述与基本使用

大模型应用开发面临调试难题,传统日志难以追踪复杂的概率性调用过程。LangChain推出的LangSmith平台提供了全链路监控方案,能自动捕获模型调用的输入输出、Token消耗、耗时、成本等关键指标,并以可视化图谱展示执行流程。 核心功能: 链路追踪:自动记录Prompt模板、模型参数、API响应等元数据,结构化呈现调用树。 实时调试:支持在线修改Prompt或参数重新测试,无需修改本地代码。 成本与性能监控:统计Token消耗、调用耗时及费用。异常排查

2026-08-12 12:00:31 311

原创 LangChain 应用开发(三):模型的高级调用与参数配置

本文系统介绍了LangChain框架中的大语言模型调用方法及其优化策略。首先分析了基础invoke()方法的局限性,包括交互时延高、批量处理效率低等问题。随后详细讲解了流式调用(stream)、批量调用(batch)等进阶方法的特点与适用场景,并介绍了对应的异步版本(ainvoke/astream/abatch)实现高并发处理。文章还涵盖了API异常处理、响应美化输出等工程实践,深入解析了模型Profile概念和参数分层架构,包括标准参数、model_kwargs、extra_body等不同层级的配置方式。

2026-08-11 16:37:34 378

原创 LangChain 应用开发(二):大语言模型的初始化与调用

本文介绍了使用LangChain调用大语言模型(LLM)的完整流程和技术要点。主要内容包括:1. 模型调用流程:从应用程序通过LangChain统一接口发起请求,经网络传输到模型服务端推理后返回结果。2. 准备工作:获取API密钥、配置环境变量、安装LangChain扩展包等。3. 模型初始化方式:官方Provider集成、OpenAI兼容接口、统一初始化函数等。4. 主流模型提供商对比:OpenAI、Anthropic、Google、DeepSeek等各自特点。5. 核心调用方法invoke()的使用

2026-08-10 12:29:46 384

原创 LangChain 应用开发(一):LangChain 概述与 AI 应用开发生态

LangChain:大模型应用开发的桥梁与框架 随着大语言模型(LLM)的普及,传统软件开发模式正经历变革。LangChain作为智能开发框架,旨在解决单体LLM的局限性(如无法操作数据库、调用API、缺乏长期记忆),通过连接外部工具和数据源,构建更强大的AI应用。 核心价值: 功能扩展:为LLM提供工具调用、数据检索和记忆能力

2026-08-08 21:48:44 353

原创 Python数据分析(十四):Pandas 数据可视化

摘要: Pandas内置绘图功能通过封装Matplotlib实现高效数据可视化,支持单变量(折线图、柱状图、直方图等)与多变量(散点图、蜂巢图、堆叠图)图表绘制。其优势在于无需数据转换,自动处理索引与标签,并返回Matplotlib的Axes对象供进一步定制。综合案例演示了电商销售数据的趋势分析、品类拆解与折扣相关性探索。相比Matplotlib和Seaborn,Pandas绘图语法简洁,适合快速探索,而复杂场景可结合三者:Pandas快速初探→Seaborn深入统计→Matplotlib精细调整

2026-08-05 13:38:07 311

原创 Python数据分析(十三):Seaborn 统计可视化

单变量分析:通过直方图、核密度图(KDE)和计数图(countplot)展示连续或离散变量的分布特征。双变量分析:使用散点图、柱状图(barplot)、箱线图、小提琴图等工具,分析变量间关系或分组差异,支持置信区间与密度可视化。多变量扩展:通过hue、style、size参数叠加分类或连续变量,在二维图中呈现3-5个维度信息。高效探索:pairplot自动生成全变量两两关系网格图,快速发现数据模式。主题定制:内置5种背景风格(如whitegrid、dark),结合despine()优化图表边框

2026-08-04 14:15:33 257

原创 Python数据分析(十二):Matplotlib 数据可视化

本文系统介绍了Matplotlib数据可视化的核心技术与实践方法。首先阐述了pyplot模块的状态机接口特性,通过隐式维护全局状态实现快速绘图,并分析了其简洁性优势与多图场景下的局限性。重点讲解了五种基础图表(折线图、柱状图、饼图、散点图、箱线图)的API参数及典型应用场景,提供完整的代码示例。随后深入对比了面向对象接口的优越性,强调通过Figure-Axes体系实现显式控制、多子图布局和代码封装。最后详细说明了图形美化的关键要素,包括画布尺寸设置、文本标注规范、图例配置技巧和网格辅助线优化

2026-08-03 18:22:14 281

原创 Python数据分析(十一):数据可视化与 Matplotlib

本文介绍了数据可视化的基本概念、核心价值及常见图表类型,并深入解析了Python可视化库Matplotlib的设计原理与使用接口。主要内容包括:1. 数据可视化本质 2. 七种核心图表 3. 优秀图表标准 4. Matplotlib解析

2026-08-02 12:02:55 230

原创 Python数据分析(十):Pandas 数据统计与 GroupBy

本文深入讲解Pandas数据统计与分组聚合的核心技术,重点介绍了Split-Apply-Combine范式。主要内容包括:1)基础统计方法(mean/sum/count等)与GroupBy机制原理;2)单列/多列分组聚合操作及分组数据查看方法;3)进阶分组计算技术:agg多重聚合、transform组内广播转换、filter分组过滤;4)通过部门薪酬分析综合案例,演示如何组合使用这些技术解决实际问题。文章强调掌握这些分组聚合技术对多维数据分析至关重要,是数据统计与商业分析的核心技能。

2026-08-02 09:57:19 384

原创 Python数据分析(九):Pandas 数据变形与时间序列

本文系统介绍了Pandas中数据转换与处理的三大核心技术: 数据重塑与结构变形 核心方法:转置(.T)、pivot(长表转宽表)、melt(宽表转长表)、stack/unstack(层次索引转换) 重点对比pivot与pivot_table的区别,后者支持重复数据的聚合操作 字符串处理 通过.str访问器实现向量化文本操作 常用方法:大小写转换、去空格、替换、拆分、正则提取 特别说明split()需配合expand=True实现列拆分 时间序列处理 日期转换

2026-08-01 21:10:49 195

原创 Python数据分析(八):Pandas 数据清洗与预处理

摘要 本文系统介绍了Pandas数据清洗的核心方法,包含四个关键环节:1)数据导入导出:详细讲解CSV/Excel/JSON文件的读写操作,重点解决中文乱码和冗余列问题;2)缺失值处理:演示isna检测、dropna删除及fillna填充等完整流程;3)重复值处理:通过duplicated检测和drop_duplicates删除重复记录,支持按关键列去重;4)数据类型转换:涵盖astype强制转换、to_datetime日期处理、category分类优化及数值格式化

2026-07-31 10:39:03 564

原创 Python数据分析(七):DataFrame 基础与数据操作

本文介绍了Pandas中DataFrame的核心概念和基本操作。DataFrame是一个带标签的二维表格型数据结构,支持异构数据类型,可视为多个Series的组合体。文章详细讲解了: 创建DataFrame的四种方法:通过字典、列表、NumPy数组和CSV文件创建; DataFrame的核心属性:行索引、列标签、数据维度等; 数据获取方法:包括loc/iloc索引、条件筛选、查询表达式等; 列操作:新增、修改和删除列的多种方式; 常用统计函数:如describe()、sum()、mean()等描述性统计方法

2026-07-30 10:30:00 406

原创 Python数据分析(六):Pandas 入门与 Series

本文是 Pandas 数据分析库的入门指南,重点介绍其核心数据结构 Series。文章首先对比了 Pandas 与 Excel、SQL、原生 Python 在数据处理上的优劣,阐述 Pandas 在表格数据处理中的独特优势。随后详细讲解了 Series 的创建方式(列表、字典、ndarray、标量)、基本操作(属性访问、索引切片、向量化运算)以及常用统计方法。最后通过学生成绩分析、城市气温统计、股票收益率计算、销售数据追踪和数据合并等五个实战案例,展示了 Series 在实际业务场景中的应用价值

2026-07-29 12:29:00 609

原创 Python数据分析(五):NumPy综合案例实战

本文通过9个NumPy实战案例,系统巩固了数组操作的核心技能。案例涵盖温度统计、成绩分析、矩阵运算、随机数据处理、数组变形、布尔索引、聚合统计、缺失值处理和唯一值排序等内容,重点演示了数组创建、切片索引、矩阵计算、统计函数、条件筛选等关键功能。这些案例从基础统计到高级应用,由浅入深地展示了NumPy在数据分析和科学计算中的高效处理能力,为后续学习Pandas等数据分析工具奠定了坚实基础。

2026-07-28 13:12:57 253

原创 Python数据分析(四):NumPy常用函数与统计分析

NumPy数据处理核心函数摘要 NumPy提供了强大的数据处理函数,涵盖统计、数学运算、排序、缺失值处理等方面。关键内容包括: 统计函数:sum()、mean()、median()、max()/min()、var()/std(),支持多维数组和轴向计算。注意方差计算中ddof参数的区别。 数学函数:sqrt()、exp()、log()系列、三角函数等,均支持向量化计算。特殊值处理会返回nan或inf。 比较与逻辑函数:where()条件选择、clip()数值截断、all()/any()逻辑判断。 缺失值处理

2026-07-27 14:16:48 191

原创 Python数据分析(三):NumPy数组操作与矩阵计算

本文系统介绍了NumPy中矩阵操作的核心概念与方法。主要内容包括:1. 矩阵基础:矩阵作为二维数字网格的数据结构,在数据分析中天然契合"样本-特征"的抽象,支持批量计算。重点讲解了矩阵加法、数乘、转置和乘法四种基本运算,以及单位矩阵和对角矩阵两种特殊矩阵。 索引与切片:详细说明了NumPy中高效定位和提取数据的语法,包括一维和多维数组的索引方法,以及视图机制的底层原理与.copy()的使用场景。 数组变形,广播机制,矢量化计算,矩阵乘法等

2026-07-26 12:34:01 213

原创 Python数据分析(二):NumPy 基础与 ndarray

NumPy是Python科学计算的核心库,为数据分析提供高性能的多维数组(ndarray)对象。文章从NumPy的诞生背景入手,阐述了其在Python数据科学生态中的基础地位,作为Pandas、SciPy等库的底层引擎。重点对比了原生Python列表与NumPy数组在内存布局和计算性能上的差异,解释了ndarray的同质性和连续性特点带来的效率优势。详细介绍了ndarray的核心属性(shape/dtype/ndim等)和多种创建方法(array/zeros/arange等)

2026-07-25 21:47:01 262

原创 Python数据分析(一):数据分析概述与环境搭建

本文系统介绍了Python数据分析的核心概念和应用方法。首先阐述了数据分析的定义和价值,即将原始数据转化为决策依据的过程,以及在各行业的应用场景。重点讲解了Python作为数据分析工具的优势,包括简洁语法、丰富生态和高效计算能力。详细说明了数据分析的完整流程:数据收集、清洗预处理、探索分析、可视化和决策落地。文章还介绍了必备工具链(NumPy、Pandas、Matplotlib等)和推荐开发环境Anaconda的特点,并讲解了Jupyter Notebook的交互式工作方式及基本操作

2026-07-24 11:01:38 496

原创 Python从入门到实战(十八):协程与异步编程

本文系统介绍了Python协程与异步编程的核心概念和应用场景。文章首先分析了多进程和多线程在高并发I/O场景下的局限性,引出协程作为轻量级解决方案的优势:用户态控制、单线程高并发、非阻塞驱动。详细讲解了async/await语法和协程函数与对象的区别,阐述了asyncio事件循环的工作原理和任务调度机制。通过批量下载图片的对比案例,展示了协程在处理I/O密集型任务时的显著性能优势(0.5秒完成10个任务,相比多线程1秒和同步5秒)。以及介绍了asyncio.gather()等关键API的使用方法

2026-07-23 12:31:18 347

原创 Python从入门到实战(十七):多线程编程

本文介绍了Python多线程编程的核心概念与技术。首先解释了线程作为轻量级执行单元的优势,包括低资源开销和高效上下文切换。重点讲解了Python标准库中Thread类的使用方式,包括线程创建、参数传递、同步控制(Lock、RLock、Semaphore等)以及线程池的应用。文章深入分析了GIL(全局解释器锁)对Python多线程性能的影响,指出多线程适合IO密集型任务但不适合CPU密集型任务。最后对比了多线程与多进程的特性,为不同场景下的并发编程选择提供了指导原则。

2026-07-22 13:13:38 315

原创 Python从入门到实战(十六):多进程编程

本文详细介绍了Python多进程编程的核心概念与实践方法。首先阐述了并发与并行的区别,解释了Python由于GIL限制而采用多进程实现真正并行计算的原因。然后深入讲解了multiprocessing模块的关键技术:包括Process类的使用、进程生命周期控制、进程同步(Lock)与通信(Queue/Pipe),以及如何通过继承Process类实现自定义进程。文章还重点介绍了进程池(Pool)的使用,包括批量任务处理(map/starmap)和异步任务提交(apply_async)等高级功能

2026-07-21 18:24:17 369

原创 Python从入门到实战(十五):文件操作与目录管理

本文系统讲解了Python中的文件操作与目录管理。主要内容包括: 文件基础概念:区分运行内存和持久化存储,介绍文本文件和二进制文件的区别。 文件路径处理:讲解绝对路径和相对路径的使用,以及跨平台路径拼接方法。 文件操作流程: 使用open()函数打开文件 多种读取方式(read/readline/readlines/遍历) 写入操作(write/writelines) 必须关闭文件的重要性及with语句 目录操作: 获取/切换工作目录 创建/删除目录 遍历目录树(listdir/walk)

2026-07-20 19:37:37 374

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除