ITPub博客

首页 > 大数据 > ELK > 面对那些复杂的 Agent 任务、全是坑的真实环境 API

面对那些复杂的 Agent 任务、全是坑的真实环境 API

投稿 ELK 作者:ecclw459 时间:2026-01-27 17:13:41 0 删除 编辑

打个比方,如果说之前的 LongCat-Flash 是在做填空题,那现在的 LongCat-Flash-Thinking-2601 就是在做复杂的应用题。

一、从“快”进化到“全能”

翻翻龙猫家族的路线图,逻辑其实很清晰:

  • Flash-Chat 版本:主打快,极速响应。
  • Omni 版本:主打全,多模态全能。
  • Thinking 版本:主打专,深度推理和 Agent 能力。

这次发布的 Thinking-2601,是一个基于混合专家(MoE)架构的 5600 亿参数高性能模型。它是专门冲着开发者构建 Agent 时最头疼的两个痛点去的。

  1. 在 Demo 里演示猛如虎,一上生产环境就因为“噪声”挂掉
  2. 遇到没见过的复杂任务,模型就开始一本正经地胡说八道

二、为什么开发者值得关注这个版本?

2.1 在噪音里长大的模型

搞过 Agent 开发的兄弟都懂,真实世界的 API 有多“脏”。网络超时、参数缺失、非标准的 JSON 返回...这些环境噪声,往往分分钟教通用模型做人。

LongCat-Flash-Thinking-2601 在这方面做了个很有极客精神的尝试:它就是在“噪音”堆里长大的。

  • 课程学习(Curriculum Learning):研发团队利用 DORA 强化学习设施,训练时故意注入了各种类型和强度的噪声。


以前为了让 Agent 稳定,你可能得写 80% 的代码来做异常处理。现在,这部分容错能力可以交给 LongCat-Flash-Thinking。它就像个经验丰富的老程序员,看到报错不会慌,而是会尝试通过逻辑推断去修补,试着把路走通。

2.2 并行思考

在处理复杂逻辑时,比如分析几万行的代码库,或制定那种牵一发而动全身的旅行计划。普通模型的思维往往是单线程的—— 一旦中间某一步走窄了或者钻了牛角尖,后面的推导就会像多米诺骨牌一样,全盘皆输。

为了治这个一步错、步步错的毛病,LongCat-Flash-Thinking 搞了个 Heavy Thinking Mode(深度推理模式),这不仅仅是算力的堆砌,它更像是咱们开会时的 多人头脑风暴:

  • 并行思考:既然一条路容易堵死,那就 同时跑多条。遇到难题,模型瞬间开启几个“分身”线程,同时尝试几种完全不同的解法。
  • 迭代摘要:分身多了容易乱,所以它还配了个 脑子清醒的裁判。这个角色负责盯着所有分身,把逻辑最通的那条路挑出来,再喂给下一轮。

实际上手的感觉就是:刚敲完回车,屏幕上“唰”地一下弹出来 8 个 Thinker 线程。说实话,这反应速度真给我整不会了——毕竟早就习惯了深度思考的速度,LongCat-Flash-Thinking 这种秒回的并发思考,确实有点东西。


你现在是一个智能 Agent。你的任务是帮助用户预订机票。 请注意:你不能直接生成最终结果,必须模拟调用 API 的过程。 你需要严格遵守 ReAct (Reasoning + Acting) 的格式进行回复。 # 虚拟工具 1. `search_flight(origin, destination, date)` : 查询航班。 2. `get_flight_details(flight_id)` : 获取价格和详情。 3. `book_ticket(flight_id, passenger_name)` : 下单。 # 要求 每次回复请只输出一步思考和一步行动,格式如下: Thinking: [你的思考] Action: [调用的工具函数] 然后等待我(用户)扮演“服务器”给你返回 Observation(观测结果)。 # 任务 用户指令:“帮我预订 2026.1.28 从北京去上海的早班机,价格在 1000 元以内。”

这是又一篇补档文章,Chats已经发布了1.10,但2025年11月5日发布的1.8版本对我个人来说意义非凡,因为它彻底改变了项目对“模型提供商”的支持方式,从“写死在代码里”变成了“完全配置化”,为后续的可维护性和扩展性打下了坚实基础。

如果你还不了解  Sdcb Chats:简单说,这是一个支持多家主流模型服务商的 AI 网关。它不只能让你在一个统一界面里聚合管理所有模型,同时也兼容标准 API 协议,支持 Docker 一键部署。


除此之外,代码中还有大量根据模型名称写死的逻辑,这导致越来越难以维护。我和项目的合作维护者讨论过许多次,有许多不同的意见,有的说可以继续沿用这种写死的方式,有的说应该做成配置化的方式,但我觉得可持续的维护能力才是我对 chats 项目最重要的承诺,所以我决定在 1.8 版本里彻底重构模型提供商的支持方式,做成完全配置化的方式,这样未来无论是新增模型提供商,还是调整已有模型的支持逻辑,都可以通过配置来完成,而不需要动代码。这个改动虽然在短期内增加了不少工作量,但我相信从长远来看,这会大大提升项目的可维护性和扩展性。


1.8.1:在“架构变好”之后,把“体验也抠到位”

如果说 1.8.0 是地基,那么 1.8.1 更像是把常用路径都重新打磨了一遍:权限、推理内容展示、文件预览、聊天列表性能……这些都是你每天用 Chats 时能立刻感知到的变化。

全新的“用户-模型权限”管理:终于能规模化授权了

1.8.1 新增了  /admin/user-models(按用户维度管理),同时在模型管理页也增加了“按模型维度管理用户”的入口。更关键的是它的交互设计: URL 作为状态唯一数据源,筛选/搜索/展开状态都能分享、刷新不丢。


兼容性与稳定性:OpenAI 2.6 升级后推理内容解析修复

1.8.1 还处理了一个很“现实”的问题:OpenAI 客户端升级到 2.6.0 后,推理内容的解析/解码出现兼容性问题,导致部分推理段无法正确读取。这个点不显眼,但它直接影响你对推理模型的信任感,所以也被纳入 1.8.1 里修掉了。


升级提醒:1.8 系列需要手动跑 SQL Server 迁移脚本

和 1.7 一样:Sdcb Chats 的数据库变更  不支持自动数据迁移。升级到 1.8 时请务必先备份数据库,并手动执行迁移脚本:

  • 1.8.0: src/scripts/db-migration/1.8/1.8.0.sql
  • 1.8.1: src/scripts/db-migration/1.8/1.8.1.sql(清理 Azure AI Foundry 的 Host 参数)

如果你用的是 SQLite/Postgres……老规矩:把脚本丢给 AI 先改,再边跑边修;或者能接受删库的话,让 Chats 启动时自动建新表结构也行。

DeploySharp 为 YOLOv26 提供了三层架构设计:

接口层 (IYolov26XxxModel)

在核心库  DeploySharp 中定义了统一的接口:

// YOLOv26 检测接口// IYolov26DetModel 继承自 IYolov10DetModel// 这种设计使得 YOLOv26 可以复用 YOLOv10 的成熟实现public abstract class IYolov26DetModel : IYolov10DetModel{    /// <summary>
    /// 构造函数,接收模型配置
    /// </summary>
    /// <param name="config">YOLOv26 检测模型配置对象</param>
    public IYolov26DetModel(Yolov26DetConfig config) : base(config)
    {        // 使用日志系统记录模型初始化信息
        MyLogger.Log.Info($"Initializing {this.GetType().Name}, Config:\n{config}");
    }
}

配置层 (Yolov26XxxConfig)

每种模型类型都有对应的配置类,提供灵活的参数设置:

// YOLOv26 检测配置类// 继承自 Yolov10DetConfig,复用 YOLOv10 的成熟配置public class Yolov26DetConfig : Yolov10DetConfig{    /// <summary>
    /// 默认构造函数
    /// </summary>
    public Yolov26DetConfig() { }    /// <summary>
    /// 带模型路径的构造函数
    /// 自动设置合理的默认参数
    /// </summary>
    /// <param name="modelPath">模型文件路径</param>
    public Yolov26DetConfig(string modelPath)

分别提供 ImageSharp 和 OpenCvSharp 两种实现,开发者可以根据需求选择。

2.3 类继承关系图

YoloDetConfig (基类)
    ├── Yolov8DetConfig
    ├── Yolov10DetConfig
    └── Yolov26DetConfig (继承自 Yolov10DetConfig)
YoloModel (基类)
    ├── Yolov8DetModel



using DeploySharp.Data;         // 引入数据处理相关 using DeploySharp.Engine;       // 引入推理引擎核心 using DeploySharp;             // 引入 DeploySharp 主库 using SixLabors.ImageSharp;     // ImageSharp 图像处理库 using SixLabors.ImageSharp.PixelFormats; // ImageSharp 像素格式 namespace DeploySharp.ImageSharp.Demo {  m.hhnmsj.com   /// <summary>     /// YOLO26目标检测演示类     /// 该类展示了如何加载 TensorRT 引擎文件,对图像进行推理并可视化结果。     /// </summary>     public class YOLOv26DetDemo    {         public static void Run()        {             // ==========================================             // 1. 路径配置             // ==========================================                         // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载             // 设置 .engine 文件路径。             // 注意:TensorRT 的 .engine 文件是硬件相关的,即在 RTX 3090 上生成的 engine 通常不能在 RTX 4090 上运行。             string modelPath = @"D:\Program Files\TensorRT-10.13.0.35-cu11\bin\yolo26s.engine" ;                         // 设置待推理的图片路径             string imagePath = @"E:\Data\image\bus.jpg" ;             // ==========================================             // 2. 模型配置初始化             // ==========================================                         // 创建  YOLO26 的配置对象,传入模型路径            Yolov26DetConfig config = new Yolov26DetConfig(modelPath);                         // 设置最大批处理大小。             // 即使只推理一张图片,设置适当的 BatchSize 有时也能利用 GPU 并行能力。             // 此处设为 2 表示引擎内部最大可以一次处理 2 张图,但要首先保证模型支持。            config.MaxBatchSize = 2 ;                         // 显式指定推理后端为 TensorRT。             // DeploySharp 支持多种后端(如 ONNX Runtime, OpenVINO 等),这里强制使用 TensorRT 以获得最佳性能。            config.SetTargetInferenceBackend(InferenceBackend.TensorRT);             // ==========================================             // 3. 类别字典定义             // ==========================================                         // COCO 数据集的 80 个类别名称列表             // YOLO 模型通常输出的是类别的索引(0-79),我们需要将其映射为人类可读的字符串。            List< string > d = new List< string > { "person" , "bicycle" , "car" , "motorcycle" , "airplane" , "bus" ,                 "train" , "truck" , "boat" , "traffic light" , "fire hydrant" , "stop sign" , "parking meter" , "bench" ,                 "bird" , "cat" , "dog" , "horse" , "sheep" , "cow" , "elephant" , "bear" , "zebra" , "giraffe" , "backpack" , wap.hhnmsj.com                "umbrella" , "handbag" , "tie" , "suitcase" , "frisbee" , "skis" ,ggsxjd.com "snowboard" , "sports ball" , "kite" ,                 "baseball bat" , "baseball glove" , "skateboard" , "surfboard" , "tennis racket" , "bottle" , "wine glass" ,                 "cup" , "fork" , "knife" , hhnmsj.com "spoon" , "bowl" , "banana" , "apple" , wap.ggsxjd.com "sandwich" , "orange" , "broccoli" , "carrot" ,                 "hot dog" , "pizza" , "donut" ,nbemc.cn "cake" , "chair" , "couch" , "potted plant" , "bed" , "dining table" , "toilet" ,                 "tv" , "laptop" , "mouse" , "remote" , "keyboard" , "cell phone" , "microwave" , "oven" , "toaster" , "sink" ,                 "refrigerator" , "book" , "clock" , "vase" , "scissors" , "teddy bear" , "hair drier" , "toothbrush" };             // 将列表转换为字典,Key 为索引,Value 为类别名称            Dictionary< int , string > CategoryDict = new Dictionary< int , string >();             for ( int i = 0 ; i < d.Count; i++)            {                CategoryDict[i] = d[i];            }                         // 将类别字典赋值给配置对象,用于后续结果解析            config.CategoryDict = CategoryDict;             // ==========================================             // 4. 模型实例化             // ==========================================                         // 根据配置初始化检测器模型。             // 此步骤会加载 engine 文件到内存,并初始化 GPU 上下文。            Yolov26DetModel model = new Yolov26DetModel(config);                         // 使用 SixLabors.ImageSharp 加载图片。             // Image.Load 会自动根据文件扩展名解码图片。             var img = Image.Load(imagePath);             // ==========================================             // 5. 模型推理与性能测试             // ==========================================                         // 执行第一次推理。             // 注意:TensorRT 的推理通常包含 Kernel 初始化等开销,速度会比后续推理慢。            DetResult[] result m.qdjwdL.cn= model.Predict(img);                         // 执行第二次推理。             // 这次推理的时间更能代表模型在实际场景中的平均推理速度。            result = model.Predict(img);                         // 执行第三次推理(可选),用于进一步取平均值或确保稳定性。            result = model.Predict(img);                         // 打印推理性能分析记录。             // 这通常会输出预处理、推理、后端处理各阶段的耗时(毫秒级)。            model.ModelInferenceProfiler.PrintAllRecords();                         // 初始化一个列表,虽然本例未直接使用,但在处理多图结果时可能会用到。            List<Image<Rgb24>> resultsMat = new List<Image<Rgb24>>();             // ==========================================             // 6. 结果可视化与保存             // ==========================================                         // 将推理结果绘制在原图上。             // Visualize.DrawDetResult 会根据 DetResult 中的坐标和置信度画框和文字。             // 需要将 img 强制转换为 Image<Rgb24>,因为 DrawDetResult 通常需要特定的像素格式。             var resultImg =wap.qdjwdL.cn Visualize.DrawDetResult(result, (Image<Rgb24>)img, new VisualizeOptions( 1.0f ));             // 保存带有检测框的图片到当前目录下。 using DeploySharp.Data;       // 引入数据处理相关的类 using DeploySharp.Engine;     // 引入推理引擎核心接口和枚举 using DeploySharp;             // 引入 DeploySharp 主库和可视化工具 namespace DeploySharp.OpenCvSharp.Demo {     /// <summary>     ///  YOLO26 目标检测演示 (基于 ONNX Runtime + OpenCvSharp)     /// 本示例展示了如何加载 ONNX 模型,并配置使用 DirectML 在 GPU 上进行推理。     /// </summary>     public class Yolov26DetDemo    {         public static void Run()        {             // ==========================================             // 1. 路径配置             // ==========================================                         // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载             // 注意:此处加载的是标准的 .onnx 模型文件,而不是 TensorRT 的 .engine 文件。             // ONNX 模型具有良好的跨平台特性。             string modelPath @"E:\Model\yolov28\yolo26s.onnx" ;                         // 设置待检测的图片路径             string imagePath = @"E:\Data\image\bus.jpg" ;             // ==========================================             // 2. 模型配置与推理后端设置             // ==========================================                         // 创建  YOLO26 的配置对象,传入模型路径            Yolov26DetConfig config = new Yolov26DetConfig(modelPath);                         // [关键步骤] 设置推理后端为 ONNX Runtime。             // 这意味着模型将通过qdjwdL.cn ONNX Runtime 进行加载和执行,而不是 TensorRT。            config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);                         // 设置目标设备类型为 GPU 0。             // 这是一个逻辑设定,具体执行取决于 ONNX Runtime 的提供程序。            config.SetTargetDeviceType(DeviceType.GPU0);                         // [关键步骤] 设置 ONNX Runtime 的具体执行提供程序为 DML (DirectML)。             // DirectML 是 Windows 上的高性能硬件加速接口,支持 AMD、NVIDIA 和 Intel 显卡。             // 如果不加这一行,ONNX Runtime 可能默认使用 CPU 进行推理,速度较慢。            config.SetTargetOnnxRuntimeDeviceType(OnnxRuntimeDeviceType.DML);             // ==========================================             // 3. 类别字典定义 (COCO 80类)             // ==========================================                         // 定义 COCO 数据集的 80 个类别名称             // 这些名称将用于在结果可视化时标注检测到的物体            List< string > d = new List< string > { "person" , "bicycle" , "car" , "motorcycle" , "airplane" , "bus" ,                 "train" , "truck" , "boat" ,wap.qczypx.cn "traffic light" , "fire hydrant" , "stop sign" , "parking meter" , "bench" ,                 "bird" , "cat" , "dog" , "horse" , "sheep" , "cow" , "elephant" , "bear" , "zebra" , "giraffe" , "backpack" ,                 "umbrella" , "handbag" , "tie" , "suitcase" , "frisbee" , "skis" , "snowboard" , "sports ball" , "kite" ,                 "baseball bat" , "baseball glove" , "skateboard" , "surfboard" , "tennis racket" , "bottle" , m.qczypx.cn "wine glass" ,                 "cup" , "fork" , "knife" , "spoon" , "bowl" , "banana" , "apple" , "sandwich" , "orange" , "broccoli" , "carrot" ,                 "hot dog" , "pizza" , "donut" , "cake" , "chair" , "couch" , "potted plant" , "bed" , "dining table" , "toilet" ,                 "tv" , "laptop" , "mouse" , "remote" , "keyboard" , "cell phone" , "microwave" , "oven" , "toaster" , "sink" ,                 "refrigerator" , "book" , "clock" , "vase" , "scissors" , "teddy bear" , "hair drier" , "toothbrush" };             // 构建<索引, 类别名>字典            Dictionary< int , string > CategoryDict = new Dictionary< int , string >();             for ( int i = 0 ; i < d.Count; i++)            {                CategoryDict[i] = d[i];            }                         // 将类别字典赋值给配置对象            config.CategoryDict = CategoryDict;             // ==========================================             // 4. 模型初始化             // ==========================================                         // 实例化模型,传入配置。             // 此时 DeploySharp 会根据配置加载 ONNX 模型,并初始化 DirectML 会话。            Yolov26DetModel model = new Yolov26DetModel(config);                         // 使用 OpenCvSharp 读取图片到 Mat 对象中             // Mat 是 OpenCV 中用于存储图像数据的核心矩阵结构            Mat img qczypx.cn=m.sanjiaomao.net Cv2.ImRead(imagePath);             // ==========================================             // 5. 模型推理 (预热与测试)             // ==========================================                         // 执行多次推理。             // 第一次推理通常包含模型加载、内存分配等初始化开销,耗时较长。            Result[] result = model.Predict(img);                         // 后续推理用于测试稳定的推理速度。            result = model.Predict(img);            result = model.Predict(img);            result =wap.sanjiaomao.net model.Predict(img);                         // 打印性能分析记录。             // 这将输出推理过程中各阶段(如预处理、推理执行、后处理)的耗时统计。            model.ModelInferenceProfiler.PrintAllRecords();                         // 初始化列表,用于存储处理后的图像(本例主要用于演示)            List<Mat> resultsMat = new List<Mat>();             // ==========================================             // 6. 结果可视化与显示             // ==========================================                         // 调用可视化工具,将检测框(矩形框)和类别标签绘制在原图上。             // VisualizeOptions(1.0f) 可能指定了缩放比例或字体大小等参数。             var resultImg = Visualize.DrawDetResult(result, img, new VisualizeOptions( 1.0f ));                         // 将绘制好的图像加入列表            resultsMat.Add(resultImg);                         // 使用 OpenCV 的窗口显示结果图像。             // "image"www.sanjiaomao.net 是窗口的标题。            Cv2.ImShow( "image" , resultImg);                         // 等待按键输入。             // 参数 0 表示无限期等待,直到用户按下键盘任意键。             // 这是为了防止控制台程序执行完毕后窗口立即闪退。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048957/viewspace-3109155/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2026-01-07

  • 博文量
    108
  • 访问量
    102139