- 博客(102)
- 收藏
- 关注
原创 26-PaddleHub 入门:一行调用预训练模型
前面几篇文章主要围绕 Paddle 原生 API、PaddleVision 和 PaddleClas 展开。它们适合学习模型结构、训练流程和图像分类工程。我不想先训练模型,只想快速调用一个已经训练好的 AI 能力。PaddleHub 是飞桨生态中的预训练模型应用工具。官方介绍中强调,它提供丰富的预训练模型,覆盖 CV、NLP、Audio、Video 等方向,并支持快速预测、一键服务化部署和迁移学习。模型已经训练好PaddleHub 封装成 Module几行代码加载直接预测图片、文本或音频。
2026-09-10 20:06:01
186
原创 25-迁移学习入门:加载预训练模型并微调
从零训练一个图像分类模型通常需要大量数据和计算资源。如果你的数据集只有几百到几千张图片,从随机初始化开始训练,很容易过拟合,也很难学到通用视觉特征。先使用大数据集上训练好的模型保留通用特征提取能力替换最后分类层在自己的数据集上微调预训练模型已经学到边缘、纹理、形状、局部模式等通用特征。你只需要让它适配自己的类别。读完本文,你应该能用 Paddle 加载预训练模型,替换分类头,并完成冻结特征层和全量微调两种迁移学习流程。预训练模型能提供通用视觉特征。小数据集优先考虑迁移学习。
2026-09-10 20:03:39
422
原创 24-PaddleClas 模型评估、导出与推理部署入门
PaddleClas 训练结束后,通常会得到训练权重文件。这个模型在验证集或测试集上表现怎样?如何选择 best model?如何把训练权重导出成推理模型?如何用导出的模型预测图片?训练权重和推理模型有什么区别?推理部署前应该检查哪些问题?训练得到权重eval.py 评估export_model.py 导出 inference modeldeploy/python/predict_cls.py 推理部署前验证。
2026-08-30 22:03:44
340
原创 23-PaddleClas 数据集、配置文件与训练参数详解
第 22 篇已经用 PaddleClas 跑通了图像分类训练、评估和预测。真正开始做自己的项目时,最关键的不是记住命令,而是读懂配置文件。GlobalArchLossOptimizerDataLoaderMetricInfer数据在哪里。类别数是多少。用哪个模型。是否加载预训练权重。batch size 多大。学习率怎么设置。训练多少 epoch。保存到哪里。读完本文,你应该能看懂 PaddleClas 常见配置项,并能把官方配置改成自己的图像分类项目配置。
2026-08-30 22:01:41
464
原创 22-使用 PaddleClas 快速训练图像分类模型
前面几篇文章使用 Paddle 原生 API 手写了 CNN 训练流程。更成熟的模型结构。标准训练配置。预训练权重。多卡训练脚本。评估、导出、部署工具。数据集格式约定。日志、保存、恢复等工程能力。PaddleClas 是飞桨图像分类与识别方向的工具套件。它把常见图像分类工程流程封装好,让你可以通过配置文件和脚本快速训练模型。手写 Paddle 训练循环:适合学原理和自定义PaddleClas:适合快速跑通图像分类工程。
2026-08-18 23:33:18
241
原创 21-图像分类实战:从 MNIST 到 CIFAR-10
第 20 篇已经用 Paddle 构建了一个基础 CNN。那一篇重点是理解Conv2DMaxPool2DFlatten和Linear如何组成图像分类模型。本篇继续做完整图像分类实战:先用 MNIST 跑通灰度图分类,再迁移到 CIFAR-10 彩色图分类。数据集图像类型类别数典型输入 shape难度MNIST灰度手写数字10低CIFAR-10彩色自然图像10中输入通道从 1 变成 3。图像内容从简单数字变成自然物体。数据增强更重要。CNN 需要更强表达能力。
2026-08-18 23:29:51
203
原创 20-卷积神经网络基础:用 Paddle 构建 CNN
图像是二维空间结构数据。一个像素和周围像素之间有强关系。如果把的图片直接拉平成一个长向量,再接 MLP,会丢掉很多空间结构信息,也会产生大量参数。局部感受野:卷积核只看局部区域。参数共享:同一个卷积核在整张图上滑动。层级特征:浅层学边缘纹理,深层学更抽象模式。读完本文,你应该能理解 CNN 的基本结构,并用 Paddle 写出一个可训练的 MNIST 卷积分类模型。这里pool被调用了两次,但没有可学习参数,因此复用同一个对象没有问题。不要先 softmax 再交叉熵。图像输入通常是。
2026-08-09 23:02:47
602
原创 19-图像数据处理:PaddleVision Transform 实战
图像数据不能直接随便送进模型。即使模型结构完全正确,如果图像预处理错了,训练也会异常。调整图片尺寸,例如Resize。把图片转成 Tensor,例如ToTensor。按通道归一化,例如Normalize。随机裁剪、翻转、颜色扰动等数据增强。保证输入 shape 满足 CNN 要求。在 Paddle 中,图像处理常用。它可以把多个预处理步骤组合起来,和或自定义Dataset配合使用。
2026-08-09 22:58:22
401
原创 18-训练可视化:日志、指标记录与 VisualDL 入门
训练日志只打印在命令行里,很难长期观察趋势。尤其是训练轮数多、实验配置多时,只看几行输出很容易误判。VisualDL 是飞桨生态中的可视化分析工具。它可以把训练过程中的 loss、accuracy、参数分布、图像样本等写入日志文件,再通过 Web 面板展示。观察训练 loss 是否下降。对比训练集和验证集 accuracy。查看学习率变化。查看参数或梯度分布。检查输入图像是否预处理正确。对比多个实验。
2026-08-09 22:55:32
592
原创 17-正则化方法:Dropout、权重衰减与过拟合控制
train_acc 很高val_acc 明显低train_loss 持续下降val_loss 先下降后上升这通常说明模型出现了过拟合。模型把训练集里的模式甚至噪声记住了,但面对验证集或测试集时泛化不好。正则化的目标不是让训练 loss 最低,而是让模型在未见数据上表现更稳。Dropout:训练时随机丢弃部分神经元输出。:约束参数不要过大。数据增强:让模型见到更多输入变化。早停:验证集长期不提升时停止训练。减小模型容量:降低过拟合能力。
2026-08-08 10:09:26
239
原创 16-学习率与优化器:SGD、Momentum、Adam 与调度策略
其中backward()负责计算梯度,负责根据梯度更新参数。同样一份梯度,参数到底应该更新多少?要不要参考历史梯度?不同参数是不是应该有不同更新幅度?这些问题由学习率和优化器共同决定。学习率:控制单次参数更新的步幅。优化器:定义如何使用当前梯度和历史状态更新参数。学习率调度器:让学习率随着训练过程动态变化。SGD、Momentum、Adam 的核心区别。学习率太大或太小会造成什么现象。如何在 Paddle 中切换优化器。如何使用StepDecay。如何把调度器正确接入训练循环。
2026-08-08 10:06:53
480
原创 15-Paddle 高层 API 入门:paddle.Model 的训练与评估流程
这种写法最适合理解训练机制。。模型训练。模型评估。模型预测。优化器和损失函数配置。指标管理。训练日志输出。模型保存。读完本文,你应该知道何时使用,并能用它完成的基本流程。包装nn.Layer。prepare配置优化器、损失函数和指标。fit执行训练和验证。evaluate执行评估。predict执行预测。save/load可保存和加载高层模型。标准任务适合高层 API,复杂训练更适合手写循环。不改变训练原理,它只是把常规训练、评估和预测流程封装得更简洁。
2026-08-03 21:43:02
376
原创 14-模型保存与加载:参数、优化器状态与完整训练恢复
训练模型可能花几分钟,也可能花几天。训练结果如果只存在内存里,程序一结束就丢了。Paddle 中常用和保存、加载模型相关状态。。。当前 epoch、best accuracy、训练配置等元信息。场景保存内容只做推理模型参数继续训练模型参数 + 优化器状态 + epoch保存最佳模型验证集指标最好的模型参数完整恢复实验参数、优化器、指标、配置读完本文,你应该能保存和加载 Paddle 模型参数,保存最佳模型,并用 checkpoint 完整恢复训练。保存模型参数。加载模型参数。
2026-08-03 21:40:23
412
原创 13-PaddlePaddle, 飞桨, 模型评估, Accuracy, 验证集, 测试集, 混淆矩阵
模型训练过程中,loss 下降并不等于模型真的好。一个模型可能在训练集上表现很好,但对新数据预测很差,这就是过拟合。评估的目的,是判断模型在未见数据上的效果。训练集指标:模型是否学会当前训练数据。验证集指标:用于调参、选模型、早停。测试集指标:用于最终报告模型泛化效果。Accuracy:预测正确比例。混淆矩阵:查看每个类别错在哪里。读完本文,你应该能区分训练集、验证集、测试集,手写 Accuracy,封装评估函数,并知道什么时候该看哪些指标。
2026-07-28 15:39:36
390
原创 12-PaddlePaddle, 飞桨, 分类模型, 训练循环, 损失函数, 优化器, cross_entropy, Adam
前面已经有了数据读取、预处理和 MLP 模型。分类模型如何通过 loss、backward 和 optimizer 一步步学会预测。取 batch前向计算 logits计算 loss反向传播优化器更新参数清理梯度记录指标这些步骤缺一不可。只写模型结构,参数不会自动变好;只计算 loss,不调用backward()和step(),参数也不会更新。读完本文,你应该能从零写出分类模型训练循环,并理解损失函数、优化器、梯度清理和训练日志各自的作用。数据 shape 和 dtype 正确。
2026-07-28 15:37:24
526
原创 11-数据预处理入门:Transform、Batch 与 Shuffle
第 10 篇已经讲了和。这篇继续向前走一步:数据不只是“读取出来”就能训练,还要经过预处理。把原始数据转换成float32int64等模型需要的类型。对特征做归一化,让不同维度处在相近数值范围。对标签做编码,例如类别名转类别 ID。把单条样本组合成 batch。在训练阶段打乱样本顺序。对长度不一致的数据做 padding。原始样本Transform:单样本变换Batch:多样本组合Shuffle:训练顺序打乱模型输入。
2026-07-26 20:12:11
284
原创 10-使用 paddle.io 读取数据:Dataset 与 DataLoader 基础
前面几篇文章已经完成了 Tensor、自动微分、动态图、神经网络层和第一个 MLP。到这里,很多人会以为训练模型的主要难点已经解决了。模型结构能写出来,但数据没有被稳定、正确、高效地送进模型。:定义“一个样本怎么读取”。:把样本组织成 batch,并支持 shuffle、并行读取等能力。原始数据Dataset:定义样本读取规则DataLoader:按 batch 取数据训练循环:for batch_x, batch_y in loader读完这篇文章,你应该能自己写一个Dataset,用。
2026-07-26 18:49:58
362
原创 09-使用 paddle.nn 构建第一个多层感知机
前面一篇文章已经讲过、激活函数和。这一篇继续向前走一步:用paddle.nn构建并训练第一个多层感知机,也就是常说的 MLP。nn.ReLU(),但只会写这几行还不够。准备数据定义模型前向计算 logits计算损失 loss反向传播 backward优化器更新参数清理梯度评估准确率本篇文章会围绕一个可运行的二分类任务展开,用随机生成的二维数据训练一个 MLP,让你看清楚模型从输入到输出、从 loss 到参数更新的完整流程。读完这篇文章,你应该能独立写出一个基于paddle.nn。
2026-07-26 17:34:25
407
原创 08-Paddle 神经网络层入门:Linear、激活函数与 Sequential
前面几篇文章已经讲过 Tensor、数学操作、自动微分和动态图。现在开始进入paddle.nn:也就是用神经网络层来搭建模型。但真实模型通常不建议一直手写w和b。这一层Linear会帮你管理权重、偏置、初始化、参数注册和前向调用。后续优化器也能直接通过找到这些可训练参数。:全连接层,完成线性变换。激活函数:给网络引入非线性,例如ReLUSigmoidTanh。:按顺序把多个层串起来。读完这篇文章,你应该能看懂这种最基础神经网络结构,并能独立写出一个小型前馈网络。官方文档说明,Linear。
2026-07-26 17:29:52
500
原创 07-动态图基础:像写 Python 一样构建模型
前面几篇文章已经讲过 Tensor、数学操作和自动微分。现在开始进入模型构建方式:动态图。PaddlePaddle 从 2.0 版本开始默认开启动态图开发模式。在动态图模式下,每执行一个 Paddle API,就会立即得到结果;你可以像写普通 Python 程序一样写模型、打印中间变量、使用ifforwhile,也可以用断点调试。这和早期静态图写法的心智模型不同。写一行执行一行立即得到 Tensor 结果继续写后续 Python 逻辑动态图和静态图的核心区别是什么?
2026-07-19 18:28:12
496
原创 06-自动微分入门:用 Paddle 计算梯度
前面几篇文章已经讲过 Tensor、形状、数据类型、广播、索引和常用数学操作。梯度。如果 loss 变大了,每个参数应该往哪个方向调整,才能让 loss 变小?这个“调整方向”就是梯度。对于一个参数www和损失函数LLL∂L∂w∂w∂L如果没有深度学习框架,开发者需要手动推导每个参数的梯度;模型一复杂,这几乎不可维护。PaddlePaddle 的自动微分机制会记录前向计算过程,并在调用backward()或时自动计算梯度。到底控制什么?做了什么?x.grad。
2026-07-19 14:59:27
513
原创 05-Paddle 常用数学操作:线性代数、统计与随机数
前面几篇文章已经讲过 PaddlePaddle 的安装、Tensor 创建、形状、数据类型、广播和索引。数学操作。不过不要慌,这里的数学只涉及概念和如何使用。深度学习模型本质上是大量数学运算的组合。逐元素运算:加减乘除、平方、指数、对数、三角函数。线性代数:矩阵乘法、转置、范数、距离、求解线性方程。统计聚合:求和、均值、方差、标准差、最大值、最小值。随机数:随机初始化、生成测试数据、模拟输入、固定实验复现。数值稳定:避免除零、避免log(0)、检查NaN/Inf。
2026-07-19 10:43:45
404
原创 04-Paddle Tensor 基础:形状、数据类型、广播与索引
上一篇文章已经跑通了第一个 Paddle 程序,知道了如何创建Tensor、做基本计算、查看设备位置。真正写模型时,绝大多数初学错误都不是模型太复杂,而是 Tensor 的形状、数据类型、广播和索引没搞清楚。矩阵乘法报错,不知道该看哪两个维度。分类损失报错,不知道标签为什么要用int64。x + b能运行,但不理解b是怎么自动扩展的。切片后维度变了,后面的网络层输入对不上。用reshape强行改形状,结果把 batch 维和特征维搞混。
2026-07-19 10:04:28
557
原创 03-第一个 Paddle 程序:Tensor 创建、计算与设备管理
安装 PaddlePaddle 之后,很多初学者会直接搜索“如何训练模型”。这一步不算错,但有点早。深度学习模型训练的底层对象是Tensor,模型输入、模型参数、预测结果、损失值和梯度,最终都会落到Tensor上。如何把 Python 列表、标量、NumPy 数组变成 PaddleTensor?如何查看Tensor的形状、数据类型、设备位置和梯度开关?如何做基本数学计算、矩阵乘法和统计计算?如何把Tensor转回 NumPy,方便打印、调试或和其他 Python 库交互?
2026-07-14 20:00:53
420
原创 02-安装 PaddlePaddle:CPU、GPU 与环境检查入门
安装 PaddlePaddle(飞桨)看起来很简单:复制官方命令,执行,然后。但真实学习和开发中,很多问题并不是 Paddle 本身不会安装,而是环境没有先理清楚。机器上有多个 Python,pip装到了 A 环境,运行代码时却用了 B 环境。本来只需要 CPU 学习,却误装了 GPU 包,排查时间被 CUDA、驱动、显卡型号消耗掉。想用 GPU,但没有先确认 NVIDIA 驱动、显卡算力和 Paddle GPU 包对应关系。安装成功了,但没有运行,后面写训练代码才发现环境异常。
2026-07-13 23:12:07
441
原创 01-PaddlePaddle 是什么:从深度学习框架视角建立整体认知
很多人第一次接触 PaddlePaddle(飞桨)时,容易把它理解成“一个可以训练模型的 Python 库”。这个说法没有错,但不够准确。PaddlePaddle 是一个面向深度学习开发、训练、推理和产业落地的深度学习框架。它既提供Tensor、神经网络层、损失函数、优化器等基础 API,也负责自动微分、计算图执行、设备调度、分布式训练、推理部署等更底层的工程能力。刚开始学深度学习:想知道 Paddle 在整个机器学习流程中扮演什么角色。会 Python/Numpy,但没系统用过深度学习框架:想把。
2026-07-13 22:57:28
500
原创 第30篇-并查集算法-连通性问题的一把利器
上一篇我们讲了状态压缩 DP,用二进制集合处理小规模选择问题。从这一篇开始,专栏进入图论与高级专题。第一个要掌握的结构,就是并查集。两个元素是否属于同一个集合?换句话说,它擅长处理连通性。两个人是否在同一个朋友圈两个城市是否连通一条边加入后是否形成环一共有多少个连通块动态合并集合后如何快速查询关系如果用 DFS 或 BFS,每次查询都重新遍历图,成本可能很高。并查集通过维护集合代表元,让合并和查询都非常快。
2026-07-12 23:12:13
350
原创 第29篇-状态压缩DP-当状态很多时如何降维优化
前面我们讲过线性 DP、背包 DP 和区间 DP。dp[i]dp[i][j]一组元素是否已经被选择哪些任务已经完成哪些城市已经访问哪些数字已经使用哪些人已经被分配工作如果直接用数组或集合去表示这些状态,代码会很复杂。这时就可以使用状态压缩 DP。用一个整数的二进制位表示一组选择状态什么是状态压缩二进制状态如何表示集合如何枚举状态和判断某一位任务分配问题怎么写状态压缩 DPTSP 类问题的基本模板常见坑点和复杂度分析学完这篇,你应该能看懂mask1 << i。
2026-07-12 23:03:07
187
原创 26_工具调用全链路源码追踪_从tool装饰器到ToolNode执行
工具调用不是“模型执行函数”,而是一次消息协议 + 图路由 + 本地执行LLM 直接调用了 Python 函数实际上不是。LLM 不会进入你的 Python 进程,也不会真的执行这些函数。Python 函数v@tool 包装成 BaseTool / StructuredToolvcreate_agent() 把工具 schema 绑定给模型v模型返回 AIMessage.tool_callsvLangGraph 条件边路由到 ToolNodev。
2026-07-07 23:21:44
623
原创 25_ChatModel抽象层源码_init_chat_model如何屏蔽厂商差异_SPI机制与工厂模式深度剖析
为什么一行能切换不同厂商response = model.invoke("你好,介绍一下 LangChain")从使用者视角看,这叫“统一模型入口”。v解析 provider 和 model namev根据 provider 找到集成包和 ChatModel 类v动态 import 供应商包v实例化具体 ChatModel,例如 ChatOpenAIv返回 BaseChatModel 统一接口上层代码只依赖。不同供应商通过独立集成包提供具体实现。
2026-07-07 19:43:44
556
原创 24_中间件系统源码分析_Middleware链的洋葱模型与异常处理
Middleware 不是装饰器语法糖,而是被编译进 Agent 图里的节点和包装器上一篇我们讲了如何自动组装 LangGraphStateGraph。这一篇继续往下看 Middleware。try:tools=[],看起来只是把几个函数塞进。-> 收集中间件 hook-> 把 before/after hook 变成 graph node-> 把 wrap_model_call 组合成模型调用洋葱链-> 把 wrap_tool_call 组合成工具调用洋葱链。
2026-07-05 21:55:05
568
原创 23_create_agent源码全景拆解_一行代码背后_StateGraph是如何被自动组装起来的
不是创建一个对象,而是编译一张图return f"" } ] })is sunny.""}})从使用者视角看,就是“一行创建智能体”。但从源码视角看,它做的事情不是简单实例化一个Agent类,而是自动组装并编译了一张 LangGraphStateGraph。AgentState。model。tools,如果传入了工具。。多条普通边和条件边。。一个结束条件:模型不再产生 tool calls,或者工具,或者结构化输出完成。。
2026-07-05 21:30:11
357
原创 22_Runnable接口源码拆解_LCEL管道语法背后_invoke_stream_batch究竟做了什么
Runnable。如果只从使用者视角看,它像是一套链式调用 API。但从源码视角看,Runnable不同组件如何拥有统一调用接口?管道语法如何把多个组件组合成一个新组件?为什么组合后的chain仍然可以继续invoke()stream()batch()?普通 Python 函数为什么可以接进 LCEL?tracing、metadata、并发控制、异常处理这些运行时信息如何贯穿整个链路?本文会围绕Runnable抽象类的职责。__or__运算符重载如何生成。invoke()
2026-07-04 22:09:50
411
原创 21_LangChain源码总览_读源码前必看的地图
前几章讲了项目实战,有同学可能对源码的实现感兴趣,接下来我们将进入LangChain 源码学习。在学习源码容易犯一个错误:直接搜索某个类,然后顺着调用一路跳。比如想看,就直接打开。想看,就去找__or__。想看 OpenAI 模型调用,就直接点进ChatOpenAI。这样当然能读到代码,但很快会迷路。负责核心接口和基础抽象。langchain负责高层入口、Agent harness、模型初始化和中间件。承载大量社区集成和历史兼容内容。
2026-07-04 21:44:14
448
原创 第28篇-区间DP与序列DP-从最长回文子序列讲起
前面我们已经讲过线性 DP 和背包 DP。dp[i] 由前面的状态推出来dp[j] 表示容量为 j 时的最优结果一个区间 [i, j] 的答案,如何由更小的区间推出来这也是很多初学者第一次明显感觉动态规划变难的地方。因为它不再只是从左到右扫一遍,而是要处理二维状态和区间长度。什么是区间 DP区间 DP 和序列 DP 有什么区别最长回文子序列怎么定义状态为什么区间 DP 的遍历顺序很关键区间 DP 的常见模板和坑点学完这篇,你应该能看懂dp[i][j]
2026-07-02 22:03:56
219
原创 第27篇-背包问题入门-01背包-完全背包与模板总结
前面两篇我们已经讲了动态规划的基础思路和线性 DP。沿着一条线往前推在有限容量里做选择背包问题非常经典,也非常容易让初学者卡住。状态怎么定义物品能不能重复选一维优化时循环顺序怎么写01 背包完全背包**学完这篇,你应该能分清 01 背包和完全背包,并能独立写出二维 DP、一维优化和循环顺序。背包问题通常有这样一个背景:有一个容量为bagSize的背包,有若干物品,每个物品有重量和价值,问在容量限制内能获得的最大价值。物品重量:1, 3, 4物品价值:15, 20, 30背包容量:4。
2026-07-02 21:10:35
378
原创 20_项目实战六_企业文档智能检索平台_LangSmith监控_权限管控_数据看板
前面我们已经做过个人知识库问答助手、客服机器人、SQL 查询助手、代码审查 Agent 和多 Agent 日报系统。这些项目解决的是单点能力。多个部门都要上传文档。不同用户只能看自己有权限的文档。支持 PDF、Word、Markdown、网页、内部 Wiki。文档更新后要增量入库。用户提问时要返回答案和引用来源。管理员要看到 QPS、延迟、Token 消耗、用户活跃度。出问题时要能追踪每一次检索、模型调用和工具调用。部署要支持灰度、回滚、限流、鉴权、审计。
2026-07-01 22:47:49
437
原创 19_项目实战五_多Agent协作写日报_Supervisor调度Researcher_Writer_Reviewer
Researcher Agent -> Writer Agent -> Reviewer Agent -> 最终日报看起来很清楚,但真实项目里会出现一堆细节问题。Researcher 查到的任务数据不完整,Writer 却开始自由发挥。Writer 写得很像总结,但缺少工时、阻塞和明日计划。Reviewer 发现问题后,只给一句“需要修改”,没有结构化修改意见。多个 Agent 共享完整上下文,token 越滚越大。每个 Agent 都能调用所有工具,职责边界混乱。
2026-07-01 22:10:27
575
原创 18_项目实战四_AI代码审查Agent_多工具协作_GitDiff分析_自动生成审查报告
git diff -> 塞给大模型 -> 让模型输出 review 意见这个 Demo 很快能跑,但放到真实 PR 流程里会马上遇到问题。Diff 太长,超过模型上下文。模型只看到了改动行,不知道周边函数和调用关系。静态检查工具已经能发现的问题,模型又重复说一遍。安全扫描工具发现了高危漏洞,但模型没有强调严重性。模型给出“建议优化命名”这种噪音评论,打扰开发者。评论没有文件名和行号,无法自动贴到 PR 对应位置。每次 Review 输出格式不稳定,后端没法解析。
2026-06-30 21:52:17
389
原创 17_项目实战三_SQL自然语言查询助手_说人话就能查数据库
用户问题 -> LLM 生成 SQL -> 执行 SQL -> 返回结果这个流程看起来简单,但真实项目里很快会出问题。用户问“上个月销售额最高的客户是谁”,模型不知道表结构。数据库里有buyer_idowner_id,模型容易猜错字段。用户问“删除测试订单”,模型可能真的生成DELETE。查询结果有几万行,直接塞回模型会爆 token。SQL 执行失败后,系统只返回报错,用户不知道下一步怎么办。业务方要求“答案必须带 SQL、列名、分页信息”,模型却返回一段散文。
2026-06-30 21:21:34
474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅