什么是 api? 今天我们就来彻底讲清楚 api 到底是什么,它为什么重要,它是如何工作的,以及我们生活中哪些地方在用 api。 你 可能会在程序员朋友嘴里听到这个词,也可能会在各种科技新闻里看到它。 但说白了, api 就是 一块万能转接头,让不同的软件能够互相沟通,互相协助。理解了它,你就能看懂很多现代互联网应用背后的秘密。 我们先从生活里最常见的场景说起。你打开手机天气 app, 屏幕上立刻显示出今天的气温、湿度、风力。 这个 app 自己会收集气象数据吗?大概率不会,他只是通过一个接口向气象中心或者第三方数据服务商发送了一个请求,嘿,给我今天北京的天气数据,对方收到后就把数据打包送回来。 这个接口就是 api, 整个过程你完全看不见。就像你在餐厅跟服务员说来一份宫保鸡丁,服务员转身去后厨下单,然后把菜端到你面前。你不需要知道后厨怎么炒菜,用什么调料,你和厨房之间全靠服务员这个接口来沟通。 api 就是 那个服务员,他把两个独立系统连接起来,让他们安全高效地交换信息。 那么 api 到底长什么样?它本质上是一组预先定义好的规则和协议服务提供方。比如天气数据中心会写好一份 api 文档,里面写着你如果想获取天气,必须用特定格式的网址,比如 api 点、 weather 点 com、 i v e crent city 等于北京, 并且要带上你的身份标识 api key。 你 按照这个规则发请求,对方就返回一个格式化的数据,通常是 json, 你看这个过程,就像你去自动售货机买东西,你按一个数字请求,机器就调出对应的饮料响应,这个数字编码就是 api 的 一部分。 api 有 很多种类型,现在最常见的是 restful api, 它基于 http 协议,用 get post 这些方法来操作资源。 比如你用微信登录某个第三方网站,网站就会通过 api 向微信服务器发一个请求,请验证这个用户的身份。微信回应之后,网站就知道你是可靠的用户,直接允许你登录。这个过程没有泄露你的微信密码,只有 api 在 背后握手验证。 另一个常见的是 webex api, 它支持实时双向通信,比如在线聊天软件里发送和接收消息,不需要每次刷新页面。 为什么 api 这么重要?因为它在技术上实现了模块化和解。偶想一想,一个大型 app 可能有几十个功能,比如搜索、支付、地图、推送消息。如果每个功能都由自家团队从头开发,成本高,周期长,容易出错。 但有了 api, 就 可以直接调用别人的成熟服务。例如小公司想做电商,不需要自己搭建支付系统,只需要接入支付宝或者微信支付的 api, 花几天时间就能收款。这就是 api 经济的价值能力,被封装成商品,按需调用。 api 也分公开和私有两种。公开 api, 比如谷歌地图 api、 github api, 任何人都可以申请使用,但通常有速律限制和收费政策。私有 api, 比如公司内部,不同团队之间调用,只对内部开放,确保安全。 还有一种是合作伙伴 api, 比如航空公司的订票 api, 只开放给授权的旅行社,这些不同的开放程度决定了 api 的 使用场景和安全性。 日常使用中, api 的 调用流程可以拆解成几个清晰的步骤,第一步,客户端你的 app 或浏览器发起请求,里面包含请求方法、地址、参数、身份凭证。第二步,服务器接收到请求,进行权限验证和参数校验。 第三步,服务器处理业务逻辑,可能去数据库查数据,可能调用其他内部服务。第四步,服务器把结果打包成响应数据返回。第五步,客户端解析响应展示给用户,整个过程常常不到一秒,但背后经历了多个系统的协助。 如果你经常听到 api 接口这个词,注意,接口在这里,和硬件接口,比如 usb 接口含义相似,都是约定好的对接标准。一个设计良好的 api 应该足够稳定、足够清晰,不轻易改变,否则所有依赖它的开发者都得跟着改代码,这叫兼容性灾难。 所以 api 版本管理也很重要,比如 v 一、 v 二,甚至用 u i l 路径标注版本。最后我们总结一下, api 就是 软件世界里的通用语言和合同,它定义了两方如何沟通、交换什么数据,遵循什么规则。 正是因为有 api, 我 们才能在这个碎片化的互联网里,把无数的服务数据、功能像乐高积木一样拼在一起,快速搭建出用户体验流畅的产品。 下次你点外卖,刷短视频,用地图导航,其实背后都有无数 api 在 默默工作。记住, api 不是 什么神秘的黑盒,它就是一个让程序之间互相服务的接口,简单但极其强大。
粉丝5928获赞3.6万

什么是 fast api? 简单说,它是一个用 python 写的现代高性能 web 框架,专门用来快速构建 api。 如果你写过接口,你一定头疼过写文档做参数校验,处理异步调用这些重复劳动,而 fast api 几乎把这些痛点一次性解决了。 这篇内容,我们就来把 fast api 的 核心优势,它怎样利用 python 的 类型提示让开发效率翻倍,以及它和 flask jango rest 的 真正区别。一层一层讲清楚,先看它到底是什么。 fast api 的 底层是建立在两个很成熟的库之上的,一个是高性能异步 web 框架 start, 另一个是数据校验和序列化库 padenta。 这给他带来了两个先天优势,异步、高性能和自动数据校验。更巧妙的是,他把 python 三点六以后引入的类型提示变成了驱动整个框架运转的引擎。 你写代码时标注的函数参数类型和返回值类型不再是给人看的注示,而是会被 fast api 拿来干三件事,自动生成交互式 api 文档,在运行时自动校验请求数据,以及为编辑器提供智能补全和错误检查。这就是它跟其他框架最大的不同。 举个例子,如果你想写一个创建用户的接口,用 fast api 的 代码大概是这样,定义一个路径操作函数,接受一个 user 类的对象参数,前面加上类型提示 请求,如果体不符合 user 的 定义,框架会直接返回一个清晰的四二二错误,告诉你哪个字段缺失,哪个类型不对。你完全不用写任何 ifelse 去手动拆解 json, 再逐个字段检查。 同时, fast api 会自动生成一个 swagger 文档页面,你可以直接在浏览器里点开炫酷 d 镜,看到所有接口,甚至在线去调它们。这份文档是活的,只要你的代码一改,文档立刻同步,永远不会过时。这对前后端连调来说,可以说是看见即所得。 接下来为什么要理解它的重要性?因为传统的 python 做 api 开发长期存在一个矛盾,写起来快,但维护成本和性能瓶颈很突出。比如用 flask, 你 需要手动从 json 里提取字段,再手动写一堆判断,还至少要集成一个 flask 的 return 或 marshmallow 来做系列化和校验文档呢。往往要额外用 aps back 之类的工具自己生成,一不留神,文档就和代码脱节。 fast api 把这些步骤全部内置了,而且都是基于标准的 open api 规范自动产生的。也就是说,它不只是在帮你写代码,它是在帮你维护一份永远正确的 api 气约。 还有一个让它在近几年迅速普及的原因是性能。 fast api 默认支持异步 a sync or wait, 可以 直接对接异步的 a s g i 服务器,比如 uvi 孔,这让它的病发能力远远超过了传统的 flask。 这类同步框架,你可以同时处理大量 i o 密集型的请求,比如等待数据库查询,调用外部 api 而不会被阻塞。 很多测试都表明,它的吞吐量甚至能跟 note g s 或者构语言的轻量级框架相媲美。对于 python 生态来说,这是一个相当惊人的表现。搞推荐系统 ai 模型部署的团队特别喜欢它, 因为它能直接把训练好的 p torch 或 tensor flow 模型包装成一个高并发的异步接口,而且结合类型较验,还能保证输入张量的形状和类型不会出错。这在生产环境中非常重要。 我们再深入一下它是怎么工作的。 fast api 对 一个请求的处理可以拆成几个清晰的步骤。首先,请求到达后,路由匹配到对应的操作函数。 接着框架会根据函数的类型提示提取出参数,比如路径参数查询参数请求题等。这里 patic 就 发挥作用了,它会对每个参数进行解析和校验,如果校验失败,立刻返回四二二状态码和详细的错误信息。 如果通过你得到的参数就是完全符合你定义的类型对象,而不是原始的字典。然后,你的函数体执行你的业务逻辑。 最后,函数返回的数据同样会经过类型检查。比如你声明返回的是一个 user 对 象, fast api 会帮你自动序列化成 json, 并且确保返回的数据结构符合文档里定义的 schema。 同时,它还会自动过滤掉你不小心返回的敏感字段。只要你没在 pyndic 模型中明确声明出去, 这个流程里还涉及一个很重要的概念,依赖注入。你可以把一些可附用的逻辑,比如数据库连接、用户认证、权限检查定义成依赖项。 fast a p r 会在执行你的主逻辑之前,自动把这些依赖按层级注入进去。你只需要在函数参数里声明需要什么, 这相当于把代码的横切关注点干净地剥离了出来,让业务逻辑更纯粹,也更容易测试。对比一下,你可能更清楚它的位置。 flask 是 一个微框架,自由度很高,什么都需要自己选,插件拼装,对简单项目很友好,但一旦接口变多,文档教业, e b o 这些就都成了额外工作量。 jango rest framework 功能很全面,但它是基于 jango 的 框架,本身较重, e b 支持,直到最近版本才慢慢完善。 fast api 刚好填补了这两者中间的空隙。它足够现代原生易步、自动文档类型驱动开发,而且学习曲线不陡峭。它不会强制一套特定的项目结构,你可以按自己的习惯组织代码,很适合微服务架构。 最后我们总结一下, fast api 的 核心,就是把 python 的 类型提示这种静态信息变成了运行时的行为,从而一举解决了参数校验、数据序列化、文档生成这三大连锁问题。 它基于 starlet 获得极高的异步性能。基于 pedantic 获得强大的数据处理能力,再加上直观的依赖注入,让复杂项目的可维护性上了个大台阶。 如果你是要写 ai 模型,服务前后端分离的后台,或是需要高性能的微服务, fast api 几乎就是现在 python 社区的首选。 它展示了一个很朴素的道理,让工具去全释你的意图,而不是你在文档和教验里反复解释。理解了这一点,你也就真正理解了 fast api 为什么快,不只是运行快,更是开发。

为什么购物软件能调用微信支付天气应用能获取实时气温? ai 工具还能接入不同的大模型?这些原本互不相干的软件靠什么交换信息?答案就是 api。 api 的 全称是 application programming interface, 中文叫应用程序编程接口。它规定软件之间怎样沟通,你按照约定发送请求,对方按照约定返回结果。 api 不 只存在于网络程序,调用摄像头、网页、获取定位代码、调用现成函数,本质上都在使用接口。这里重点说通过 http 通信的 web api 接着上一期的购物网站。当你点击创建订单,前端不会直接操作数据库,而是向后端的订单 api 发送请求。一个请求通常由几个部分组成, 第一是地址,也叫 end point, 比如斜杠 products 代表商品,斜杠 orders 代表订单。第二是方法, get 通常用来获取数据, post 用来创建, p u t 或 patch 用来修改, delete 用来删除。 第三是参数查询,参数可以表达只看某个分类,或者查看第二页路径,参数可以指定某一个订单。请求体则适合放商品编号、数量和收货地址。 第四是请求头,它可以说明数据格式、客户端信息,也可以携带 token 让服务器知道请求来自哪个用户。 例如前端向斜杠 orders 发送 post 请求,请求头里带登录凭证,请求提里放商品编号和数量,后端验证用户库存和价格以后,创建订单,再返回一段 j s o n, 返回内容也有固定结构,除了订单编号、金额和支付状态,通常还有 http 状态码。二零零表示请求成功,二零一表示资源创建成功,四百是请求有问题, 四零一是身份验证没通过,四零三是没有权限,四零四是资源不存在,五百是服务器内部错误。 请求失败时,好的 api 会返回稳定的错误码和可读信息,让前端知道该重新登录、修改参数还是稍后再试。 你还会听到几种 api 设计方式, r e s t 常围绕用户、商品、订单这类资源设计地址,再用 http 方法表达操作。 graqul 通常只有统一入口调用方可以声明自己需要哪些字段。 webset 会保持长连接,让服务器主动推送消息,适合聊天行情和实时通知。选择哪一种,要看调用方式、数据结构、实施性要求和团队维护成本,不是越新越好。 api 最重要的是契约地址、参数、返回格式和错误处理都要写进文档,契约不变,前端就不需要知道后端使用什么语言,后端也能调整。内部实现 公开 api 还要考虑安全 api key 识别调用方 token 代表登录用户 o f a, 让用户授权第三方访问部分数据。 服务器还会检查权限并限制请求频率。系统升级还要管理版本,保留斜杠 v 一, 再发布斜杠 v 二可以避免旧客户端立刻报错。日制和监控则记录调用过程和失败原因。 现在把整个过程串起来,前端向 api 发出请求,后端读取请求验证权限,执行业务访问数据库,再通过 api 返回数据和状态码,前端根据结果更新页面。 api 的 价值就是把内部实现藏在接口后面,让不同团队、不同语言、不同系统可以稳定合作。 api 就是 软件世界里一份可以执行的沟通契约。

接下来我们关于 api 通信基础知识相关知识点。接口文档就是 api 的 官方使用说明,记录了接口地址、传餐规则和返回数据格式,是前后端对接的核心依据。网络传输常用协议分为 h t t p 和 h t p s。 h t p s 无加密,安全性低,仅适用于测试环境。 h t t p s 具备加密防护,安全可靠。项目正式上线必须使用 h t t p s。 一 次完整的网络通信由请求和响应组成, 请求就是客户端主动向服务器发起操作,比如登录查数据、提交订单。常用请求方式分两种, get 用于获取查询数据, 比如查用户信息,查天气。 pos 的 用于提交上传数据,比如登录账号发作品、提交支付订单。响应就是服务器处理完请求后返回给客户端的结果数据,一问一答完成一次数据交互。 token 又叫令牌,是用户的登录身份凭证。 停停停,你是不是说错了?我怎么记得他们没事就说偷看,偷看可不是这个意思啊,你这是误人子弟啊。小明,你提的问题很好, 我知道你说的偷看是什么意思了,这样我们下期专门做一个解释。偷看的视频本期我们不做过多的解释,接下来我们继续。用户登录成功后,服务器会下发偷看,后续每次接口请求都需要携带,用来校验身份,防止账号被盗用。算是前后端统一通用的数据格式, 文字、数字列表等所有数据都可以通过省标准化封装传输。健全就是权限叫验,用来判断用户是否有权限使用对应功能, 比如仅会员可查看付费内容,就是靠健全实现的权限管控回调是操作完成后的自动通知机制,操作结束后,系统自动触发通知更新状态,无需人工干预。

这是全网全的免费 a p i 仓库,在 github 上获得四十几万个 star, 每天一个强大的网站第九十五期,今天要讲的是,这里收入了几千款免费 a p i, 总共五十四个大类,点击对应类目就可跳转,比如图片生成、 身份验证与授权、云存储、文档处理等。比如你想开发个网站查询金融数据,就可以直接使用 a p i 调用。无论你在学 ai 编程,还是养 openclo 小 龙虾,不用再花钱买 a p i 接口,或者自己开发,省时又省力,反正就是很好用。

什么是 jason? 很多刚开始学习 ai 编程的朋友都会在学习接口调用或者开发应用时看到这个词,但很多朋友不知道 jason 到底是什么,以及为什么现在大量 api 都使用它来传递数据。 简单来说, java 是 一种用于保存和传递数据的格式,它可以让不同程序之间更方便地交换信息。前端、后端、服务器以及各种 ai 服务之间进行通信时,经常需要传递用户信息、请求参数和处理结果。 而 java 就是 一种非常常见的数据交流方式,你可以把 java 理解成不同程序之间通用的一种数据语言,让彼此能够看懂对方传递的信息。 我们可以用生活中的例子理解 jackson。 比如你去一家餐厅点餐,如果你直接告诉厨房,我要一份辣一点的牛肉面,不要香菜多加辣椒。虽然人可以理解,但如果订单需要传递给不同系统处理,就可能出现理解差异。 更好的方式是把信息整理成固定格式,比如菜品名称、口味,要求数量分别记录清楚。 jason 就 类似这种结构化的信息记录方式,它会把数据按照一定格式组织起来,让程序可以准确读取。 比如一个用户信息可以表示成姓名、年龄、城市等字段,每个字段都有明确的含义,程序读取后就知道每个数据代表什么。那么为什么 api 都喜欢使用 json 呢?第一个原因是简单易懂。 json 使用类似普通文本的格式,表示数据不仅机器容易解析,人也很容易阅读。开发者在调试接口时,可以直接看到返回的数据内容,快速理解里面的信息。 第二个原因是兼容性强。不同编程语言之间可能存在很大区别,比如 python、 javascript、 java 等语言的写法不同,但是它们都可以轻松读取和生成 json 数据。 因此,一个使用 python 开发的后端可以很方便地把 json 数据发送给使用 javascript 开发的前端。 第三个原因是 java 非常适合互联网应用的数据交换。比如你打开一个购物网站,前端页面需要商品名称、价格、图片、地址等信息,后端就可以通过 a p i 返回一份 java 数据,前端收到后再展示出来。 登录网站时,前端发送账号密码,后端验证后返回,登录结果也是通过类似的数据格式完成。现在很多 ai 应用也是如此, 比如你调用大模型 a p i 时发送的问题模型参数返回的回答通常都会通过 json 格式进行传递。在 ai 编程中, json 几乎随处可见。 比如开发一个 ai 聊天机器人,用户输入一句话后,前端会把消息整理成 json 格式发送给后端,后端再把请求转换成 ai 模型能够理解的数据,然后获取模型返回结果,最后再通过 json 返回给前端展示。 除了聊天机器人,图片生成、语音识别、智能搜索等 ai 应用,大量接口也都是通过 jason 进行数据交换。 理解 jason 就 相当于理解了很多 ai 服务之间沟通的基础方式。对于零基础学习 ai 编程的朋友来说,不需要一开始学习复杂的数据格式标准,但一定要理解 jason 的 核心作用,它就是帮助不同程序之间传递结构化数据。 未来你使用 api 调用 ai 服务,或者让 ai 编程工具帮你开发应用时,经常会看到类似请求参数返回结果这样的内容,而这些数据很多都是 json 格式。 总结一下, json 是 一种常用的数据交换格式,它通过固定结构帮助不同程序之间传递信息。 api 喜欢使用 jason 是 因为它简单通用,容易被各种编程语言解析。在 ai 编程时代,无论是调用大模型接口开发网站,还是连接各种第三方服务,理解 jason 都是非常重要的基础能力。

api 接口是什么?又有什么用?它其实藏在我们工作和生活的每一处,默默帮我们省时间、提效率。不用觉得 api 接口是高深技术,它其实是软件系统之间的隐形沟通桥梁, 也是代理 ip 发挥作用的重要支撑。简单说, api 接口就是不同软件系统之间的沟通,不用人工反复操作, 配代理 ip 使用效率翻倍。 a p i 接口的核心作用就是实现不同系统的联动搭配,代理 ip 使用时能更高效完成运营工作。比如跨行运营中,通过 a p i 接口可以实现订单、 库存数据自动同步,再结合代理 ip 的 稳定网络,无需人工手动录入,大幅节省时间。 它无需复杂操作,就能让代理 ip 与运营工具无缝衔接,实现数据实时同步,不管是批量处理运营任务,还是同步各类业务数据,都能快速完成。不同于单一的工具功能, ipi 接口能让代理 ip 的 网络优势充分发挥, 实现自动化运营,减少人工干预,既保证了网络环境的稳定性,又提升了工作效率,是结合代理 ip 使用提升运营便捷度的关键工具,也是日常工作中不可或缺的高效助力。

还是有好多同学问我怎么部署这个 ai, 确定中文版,刚好他们团队最近更新了一波,所以今天花几分钟手把手教同学们部署。这里我推荐用 hermes, 当然其他的智能题也没问题,但是我发现用 hermes 部署最快,基本上可以做到一步到位。首先找 找到项目地址,给不了解这个项目的同学再简单介绍一下,它基于多智能体框架开发,构建了一个 ai 分 析师团队,从技术面、基本面、情绪面到宏观面,每个智能体负责不同维度的分析,最后汇总建议,并且经过本土优化,完美支持大 a、 港股、美股的教学分析。而且功能非常齐全,基本上除了不能真实,其他大部分都可模拟。复制地址后,直接跟 hermes 说帮我部署这个项目,它就会一键帮你搞定。需要注意的是,如果你之前完全没部署过任何 github 项目, 这一步会花费不少时间安置前置环境,所以喝杯咖啡,耐心等待, ok, 当部署到这部就是成功了。还有个问题,如果你按照默认密码输入,但显示错误时,是后台没处理干净,只要跟赫米斯说密码输入不对,他就会清理后台并设置好。 最后就是接入申请的大模型 api 了,成功后就能直接测试。不明白的地方评论区留言。

嗯,今天聊一个对接 iot 平台必须懂的概念,就是 jason。 之前我们讲了 http 协议,说 http 请求的包底通常是 jason 数据,那么 jason 到底是什么? jason 呢?用三种基本结构描述数据,对象用花货号包起来,里面是建职队。嗯,像字典一样,数组 用方括号包起来,里面放多个值,可以是字母串、数字或者其他的对象,每个键值对的键是字母串值,可以是字母串、数字不尔值对象或者数字或者数组嵌套组合等。 举个例子就能看到一个智能设备上报的 json, 可能是这样的,它的名字叫智能灯泡,开关状态是开亮度呢,百分之八十。它支持的颜色有白色、暖色、冷色三种位置信息也呢嵌套了房间和楼层, 你开变格式就能上手。那为什么 l t 用 json 格式呢?原因有四个,第一个就是通用任何编程语言都能解析 json。 第二个是简单 格式,你一看就懂。第三是因为清亮,比 x m l 简洁不少, l t 设备那点资源正好合适。第四呢,就是因为标准 h t t b api 几乎全用 json, 你 对接平台绕不开它。你用 python 的 request 库发请求盘一个字典进去,指定 json 参数库就自动帮你转成了 json 格式发出去了。 写 json 呢,就是把你程序里的字典或者对象转换成 json 的 sub 圈,读 json 就是 收到一串 json 文件,解析回程序能用的 数据结构,两边都是调一行或函数的事,不用自己拼 sub 圈。下期我们聊 lt 系统的整体架构,看看从硬件到云端,数据是怎么流转的。

小猫今天讲的是零基础如何靠挖漏洞实现经济独立,学校不教,自己又不会。那么欢迎收看网络安全新手教程去 s r c 漏洞篇,带你挖一百个漏洞。今天我就把我从入门到赚到第一笔漏洞赏金的完整学习路线分享给你。警告,本视频耗费三百颗豆豆熬夜制作,共计三百六十分钟,盘盖 s r c 挖洞全套入门知识 存下吧,很难找全的。为了保证各位同学能高效学习,学习过程中所需要的学习路线、学习笔记以及视频教程需要的老铁可以拿去,同时也谢谢各位看官对本视频的仗义相助。废话不多说,我们正式开始。 大家好,我是小建老师,跟着小建老师学蛙洞,想不学会都很难。欢迎大家来到 s r c 蛙洞从入门到进阶系列课程的第十节课,今天咱们依旧聚焦高价值漏洞 api 接口造成的信息泄露。那在上一节课中呢,咱们聚焦了电商内的高价值漏洞,就是这个优惠券叠加使用。 今天呢,咱们瞄准一个在实战中危害极大且倍数 s r c 平台关注的高价值漏洞。什么呢?信息泄露?当然今天的这个信息泄露呢,是由于这个 api 接口造成的信息泄露。好,咱们先来看一看呢,咱们整个思路 就是,由于后端的这个 api 没有做权限校验,且同时访问它的地址,又能够直接在 gs 文件当中找到它的接口。 那么攻击者一旦发现了这些暴露的接口呢,就能绕过所有的验证环节,直接窃取大量用户敏感数据。首先大家来看一下中华人民共和国网络安全法第二十七条, 大家不要做未授权的深度测试行为,这是违法的行为。本科的内容仅用于以防御为目的的教学演示,请勿用于其他用途,否则后果自负。接下来呢,咱们看一看今天用到的实操环境,一个安装了幻影插件的浏览器,还有一个就是本地搭建的一个测试靶场, 那么这个测试靶场呢,就是这个样子的,光秃秃的,什么都没有。好,那么咱们今天的这个实验场景啊,就是这个思路是这样的,咱们在 g s 文件里面发现了这个 接口地址,就是 api 接口,然后我们通过这个泄露的 api 接口呢,就能够直接获取到用户的敏感信息。所以今天咱们的主线任务是啥呀?三个字,找接口。好,那么废话不多说,咱们直接开干, 直接进入到靶场里面,今天咱们不用到这个 barcode, 用到什么工具呢?有请咱们的主角登场,当当当当, 幻影好,那么大家会觉得这么一个看似啥都没有的网站里面会藏着什么秘密呢?那今天咱们就用幻影啊,把这个网站的底裤给它扒光,来看一看到底是什么样的秘密。好吧, 那首先呢,咱们用到了两个功能,第一个呢是扫描,第二个呢是深度扫描,这两个的区别是什么呢?就是深度扫描,他多两个字,深度。好吧,那这个有什么区别?其实用了才知道吗?对吧? 好不好用,用了才知道吗?对吧?这就是所谓的实践出真知,所以咱们学计算机啊,尤其是网安,一定要注重实践。 好了,接下来呢,咱们直接开始这个扫描,大家来看一下啊,扫描呢会扫描出什么东西呢?首先呢他扫描出一个完整的 url, 那 这个 url 是 不是我们在这个界面上他根本看不到啊? 那有没有可能他就是一个漏洞的一个入口呢?有可能的,我们去访问一下嘛,对吧? 但是我猜啊,他就是一张图片,很明显吗?这后面,对吧访问一下嘛,好,打不开,那就是没有办法利用这个点,就不管了。紧接着呢, 咱们看一下这个绝对路径的 api, 可以 看到和上面这个路径他是不一样的,那他有什么呢?我们直接拼接访问一下不就知道了吗? 提示什么不合法的 action, 也就说明它有参数,还有就是 action 这个动作,总而言之呢,它这个整个这个链接啊,它后面是缺少东西的啊,这里也 多加一个,没关系,反正提示都是一样的。 ok, 那 接下来呢,咱们把这个接口呢给他记下来,可以拿一个这个呃,记事本给他记下来,这是一个挖漏洞的习惯啊, 就是记下来啊,那过后呢,咱们再来看这个接口有没有在其他地方出现过,对吧? 好,我们接着往下看,同时呢也有很多 g s 文件,那么这个 g s 文件呢,待会是我们重中之重要分析的东西, 我们先看其他的,比如说用户凭证啊,这个是不是账号和密码啊?假设你在这里面找到了一个登录口, 你是不是就可以用这些账号密码去试一下呢?完全是有可能。好吧,那针对这个账号和密码呢,其实我们也可以复制下来,然后呢把它粘贴到这个记事本中,咦, 这怎么复制不了啊? ok, 你 复制这个好像要点两次哦,大家要记得点两次, 点一次就行了吗?啊,点一次就行了,哈哈,有这个勾就代表它已经复制了。好吧,那刚才出现了一点小插曲,不影响我们继续,这个才是渗透的思维, 所以在渗透和漏洞挖掘当中啊,这个思路是很重要的,比如说你看到可疑的点不是放过他,而是给他拿个小本本记下来,后面呢就有可能用上你上面的这些东西。好吧, 下面看也是没什么了,紧接着呢,咱们看一下这个深度扫描,点击这里深度地归扫描,开始扫描。 ok, 正在扫描 它,扫描的东西呢就更多,我们可以对比一下。好吧,来大家来看一下。首先呢, api 这个绝对路径啊,都有,然后呢这里会 多出来这个域名,你针对这个域名是不是可以去访问一下,说不定又是攻击入口呢,对吧? 除此之外呢,这里的用户凭证啊,在这里敏感数据也有显示,但是,但是这个深度扫描呢,扫出来了电话号码和邮箱,那这个深度扫描扫出来的东西呢, 肯定是多很多的,所以呢,我们一般用这个深度扫描。好,接下来呢,咱们分析一下这个 gs 文件,在 gs 文件里面经常会泄露接口,我们来访问一下。 哎,可以看到有一些乱码。好,我们换个浏览器就好了, 这里我使用这个三六零浏览器。好吧,可以看到,可以看到有一些中文的注示,比如说获取单个用户信息啊,是不是接口啊,这下面是不是接口?是啊, 比如说定时调用 api 获取所有用户信息,这个是不是接口啊?肯定是啊,那这个是不是接口呢?这个也是接口啊, 只要是这些路径都是接口,我们呢就可以把它拼接在这个域名下面去试一下。关于这个接口大家是不是好熟悉啊? 没错,是不是就是我们记录在这小本本里面的这个路径啊?那这个小本本路径从哪里来的呢? 从这里是不是有啊?所以我说为什么要用小本本给他记录下来呢?因为后面我们可能会用到,那针对这个路径我们怎么去处理呢? 可以看到就是这个路径呢,他是直接拼接在这个域名后面的,那我们把这个直接拼接在域名后面不就行了吗? 一葫芦画瓢啊,大家来看一下这两个是不是一样的?这两个说明都是在前面的基础上面去拼接的。 ok, 那 我们照他的模子来给他也拼接在后面。 咱们来看一下能不能获取到单个用户的信息,有没有获取到?有啊, username, password, 用户名,密码,邮箱,手机号,还有它的一个地址。 那紧接着我们看一下这个参数,这个参数和我们前面讲的这个月全是不是有点像啊?它是一,我们可不可以把它改成二啊?当然可以,是不是能够继续查看到其他用户的 改成三呢?也可以啊,又是另外一个用户啊,那这个参数是不是就可以变内的呀? 一二三四五六七八九十。那这样我们给他一直便利下去,是不是就可以获得全站用户的敏感信息啊?肯定的,那还有个接口呢,这个接口是什么意思呢?获取所有人的, 可以从这里看到啊,获取所有用户的信息啊,从这个 action 呢,也可以看到,获取所有用户,我们直接复制一下,然后拼接一下去看一下不就晓得了吗?对吧? 访问一下,是不是全站用户的信息就已经搞出来了呀?所以咱们这个工具的作用是啥呢? 其中之一啊,就是三个字,找接口,他可以把网站隐藏的接口给你找出来。那这样一来呢,这个看似没有漏洞的网站,我们借助他是不是就找到了一个漏洞的入口呀? 好,那么本场实验就已经做完了,接下来我们直接进入到这个总结, 我也就不啰嗦了啊,几句话搞定。本节课呢,主要就是掌握这个 api 接口信息泄露漏洞的挖掘思路,使用到的工具就是这个幻影浏览器插件,咱们主要用到的是这两个功能, 扫描和深度扫描,去发现网站一些隐藏的东西。好,那么本节课就到这里结束了,咱们下一节课就学另外一种漏洞类型,也是经典的漏洞 叉 s s 之存储型叉 s s。 这里是小健老师,跟着小健老师学挖洞,想不学会都很难,那咱们下节课再见。

为什么越来越多的人使用 fast api? 简单来说,因为它在性能和开发体验上找到了一个近乎完美的平衡点,让写 api 这件事变得又快又爽。 fast api 是 一个基于 python 的 异步外部框架,核心卖点是利用现代 python 的 异步特性,在保证速度接近传统同步框架数倍的同时,通过自动生成交互式文档,比如 open api 和 swagger, 彻底降低了开发和调试的门槛。 这篇内容会从三个维度展开,速度从何而来,内行提示为什么是神操作,以及自动文档如何拯救你的连条体验。最后,还会用一个真实案例告诉你,为什么新手和老手都在往他这跑。先拆最核心的一环,速度。 发 cpi 的 速度优势源于三点,第一,它底层依赖一个叫 starlet 的 异步清量框架。 starlet 本身就是用纯异步 i o 写的,处理高并发请求时,不会像传统同步框架那样被一个慢请求堵住整个县城池。 你可以把同步模式想象成一个外卖员,一次只接一单,慢就卡。而异步模式是同一站点同时跑几百单,系统后台自动切换上下文,不做无意义的等待。所以当病发请求量达到几百甚至上千时,发 cpi 的 响应时间可能是 flask 或 jango 的 几倍甚至一个数量级。 第二, fast ipi 使用了 uvcoin 作为生产级服务器, uvcoin 直接用 asgi 协议运行,相比 wsgi 协议,减少了每次请求创建和销毁现成的开销数据包从网卡进来到回调函数,处理的路径更短,延迟自然降低。 第三,它本身是异步框架,不用额外引入 salary 之类的异步任务工具来处理后台任务,路由依赖注入后台任务,这些都内建,从代码到运行一气呵成,减少了中间跳转的性能损耗。 但单纯快还不足以让大家从成熟框架转过来。真正让 fast p i 破圈的是类型提示。 python 三点六之后引入的类型提示,本来只用于静态检查或 ide 辅助,但 fast p i 用一个叫 pynt 的 模型库,巧妙地把类型提示变成了运行时的数据验证机制。 比如,你在一个 post 路由的请求题里声明了一个 user 模型,里面字段有 name str、 h int、 email str、 fast tpi, 在 请求到达时自动完成类型转换、字段校验、嵌套解析、默认值填充,甚至还能解构出异常错误的具体位置。 如果传入一个非法值,比如 h, 写成 abc, 系统会直接返回一个格式清晰的四二二错误,标明哪个字段出错了,期望什么类型实际给的是什么。这意味着你基本不用手写任何 body 解析和验证的样板代码,代码量直接砍掉一大半。 而且这些类型信息还可以反向传递给前端,配合 open api 生成出接口文档,告诉前端开发人员接口接受什么参数,返回什么结构,双方很容易对齐。 接下来的亮点是自动文档 fast ipi 开箱即用的内置了两个交互式文档页面, swagger、 ui 和 redock, 它们直接从你写的路由和类型模型里自动提取接口定义,生成可调用的、可交互的界面。 你不光能看见每个端点的请求方法、路径、参数、返回值,还能直接在页面上点击叉 alt 按钮,填入参数,发送真实的 http 请求,查看实时响应结果。这意味着前后端连条效率大幅上升。后端写完路由,切到文档页面直接测,不用再开 postman 或者写单元测试做冒烟。 而且因为文档是自动从代码生成,你改了一个字段类型,文档及时更新,不会出现写完了新版本 api 还得手工编辑说明文档的尴尬局面。 另外,发 cpi 生成的 open api 规范是标准的,可以无缝接入 api, gateway 截流、限流、全线校验。中间件还有一个被低估的优势,易学且生态兼容性极好。 发 cpi 的 api 设计非常简洁,一个简单的 get 路由,只需要定义 s link, df read underscore, root, return hello word, 然后 run 一下就自动跑起来。新手只需要懂基本的 python 和 e 步,几乎零配置上手。 同时它完全兼容标准的 a s g i 协议,可以和其他 a s g i 应用或中间件混用。比如接入 galenacorn 做进程管理,直接用 u v loop 做异步,后端甚至和 jango o r i m 或 c q lakem 异步版本搭配使用都能跑通。 这意味着老项目迁移成本极低,你不需要放弃已有的数据库模型、认证方案或中间件,只要把同步路由改成异步,在绑上类型注解,立刻享受到性能和可读性提升。 最后来看一个真实场景,某个需要服务三万用户并发的天气预报 api 项目,原先用的是 flask 加同步库,每次查数据库和调用外部天气 api 都堵塞,现成数据库连接池经常被打满,服务器需要不停扩容。 迁移到 fast api 之后做了三件事,第一,把数据库查询改成异步 o r m 库,数据库连接池从两百降到五十还绰绰有余。 第二,外部天气接口的请求用 http x 异步客户端并发调用,原来一个循环请求要三秒,现在并发同时发起五十个请求只需两百毫秒。第三,直接在请求参数里声明经纬度和过期时间, payantik 自动校验,一旦格式错误就提前返回错误,减少无效数据库压力。 最后,服务器成本直接降了百分之六十,响应时间从两秒降到一百毫秒以下。而且前端开发人员因为有了自动交互式文档,自己就能调试接口,连调时间卡了百分之八十。 所以总结就是, fast api 之所以火,不是因为它新,是因为它把现代 python 的 特性用得最彻底。异步类型提示,自动文档生态兼容,每一项改进都直接对应开发中真实的痛点。 他不要求你放弃已有知识或换一种思维方式,而是让你用更少的代码、更少的调试时间,跑出更快的服务。这种效率和体验的双重提升,正是越来越多人选择他的根本原因。

小磊,有个问题挺有意思的,最近好多人质疑豆包又没开放 api 接口,那些 ceo、 服务商凭什么说自己能监测排名和信源数据?这不是吹牛吗? 对,这个质疑声确实很大,不少企业主也问我,说你们天天给我出报告,排名多少?信源分布怎样?豆包 api 都没开放,你们数据哪来的?是不是编的? 这个问题问的好,但其实答案是不用 api 也能拿到数据,只不过方式不一样。你想啊, api 是 官方给你开个接口,你直接调数据,但没 api 不 代表没别的路走。那具体怎么拿的?总不能人工一个个搜吧? 还真别说,最基础的方式就是模拟搜索,技术上叫自动化模拟请求,用程序模拟真实用户的搜索行为。向豆包发提问,然后把 ai 返回的答案抓下来做分析。 哦,就是让程序假装是人在问问题,然后把答案存下来对,比如你设定一千个关键词,程序自动逐个去豆包搜,把每次返回的答案引用来源、品牌、出现位置全都记录下来,这不就是排名和信源数据吗? 那这种方式的准确度怎么样?会不会跟真实用户看到的不一样?会有一定偏差,因为大模型的回答本身有随机性,你同一个问题问两次,答案可能不完全一样。所以专业的监测不是问一次就定排名,而是多次采纳取平均值。 比如同一个关键词问五到十次,看品牌出现的频率和位置,这样数据才稳定。明白了,那信源分布是怎么分析的? 信源分析更直接, ai 回答的时候会标注引用来远,比如来自哪个网站、哪篇文章、程序,把这些引用来全部提取出来,按域名分类统计,就能看到信源分布了,哪些媒体被引用最多,哪些平台权重高,一目了然。 那这种方式合规吗?豆包会不会封?这就得看怎么做了,如果疯狂发请求,频率太高,肯定会被限制。正规的做法是控制频率,模拟真实用户节奏,遵守平台的访问规则。说白了就是别搞暴力抓取,要模拟真实用户行为。 那为什么不直接开放 api 呢?这样不是更方便吗?大模型厂商有自己的考量,一是商业策略,排名数据本身有商业价值,开放 api 等于把数据主动权交出去了。 二是技术层面,大模型的回答是非确定性的,不像传统搜索引擎那样有固定的排序结果,开放 api 的 意义和传统搜索 api 完全不同。 所以总结一下,没有 api 不 代表不能监测,通过模拟搜索、多次采样、引用、提取这些技术手段,一样能拿到排名和信源数据,只不过对技术能力要求更高,不是随便哪个服务商都能做好的。 没错,所以企业选 g o 服务商的时候,可以问一个问题,你们的数据是怎么采集的?采样几次,频率怎么控制的?如果对方吱吱呜呜说不清楚,那这数据的质量就得打个问号了。

大家好,本次咱们继续分享 ar 智能数据中台的功能。那前面两次咱们主要是讲了数据接入概览的两张运维运营的大屏,那通过这两张大屏配合咱们的数据运维机器人,那咱们可以对整个系统的任务规模、 健康情况有一个整体的掌控。那后面咱们又讲到了数据调研相关的内容,主要是在咱们数据接入之前, 或者说要对某一个业务系统去做数据分析,那咱们可以结合大模型的技术,帮咱们去实现某一个业务员指定的表的内容、关系、规模、质量这些特征,去做数据的勘查, 给咱们输出相应的调研报告。那像这一块功能,它针对的并不是这个政台本身内部的数据,那同样你也可以在数据源管理这边配置一个你需要去调研的第三方数据库, 那只要他是在同一个网络环境,那都可以去基于咱们数据调研的功能,去对你想要调研的数据库去做数据的分析。所以说整个功能的适配还是非常灵活的。那像接入概览跟数据调研是咱们之前讲的能力, 那这节课咱们主要是给大家分享数据接入模块,剩下的能力就是具体接入任务的开发。那在讲这一块功能之前,咱们同样还是先快速过一下咱们整个中台的价值,还有服务的对象。那整个平台主要是为了面向大家数据学习,或者说辅助日常工作开发的 这种一体化的数据智能平台,那它可以支撑咱们数据接入分析、处理服务,还有向数据治理、 智能应用各种场景,提升咱们的日常开发的效率,那主要服务对象包括像这种产品研发人员,还有数据开发人员、数据治理人员,还有像大模型应用人员。那具体的功能包括咱们近期讲的数据接入模块的能力, 那除了数据接入,还有围绕接入的数据做的这种质量管控,在这里面咱们可以去定义每张表的监控规则,及时发现数据来源的问题,保障咱们数据的高可用。那再向后就是数据开发,那这里边既支持这种刷卡编辑的形式,还包括针对于单表的处理, 那这里边的处理主要是支撑咱们去做数据清洗、数据标准化相关的操作。那如果说咱们去做这种多表的关联分析,比如做主题库、专题库的建设,咱们咱们可以去使用数据编排的能力,通过算子拖拽的形式去做 各种表的联合分析、聚合计算,整个数据开发模块的能力基本上已经满足了咱们日常的开发的需求。场景, 那再向后就是数据建模的能力,那基于数据建模的功能,咱们可以去做某一个行业场景的系统设计,那整个流程包括数据调研、逻辑建模、物理建模,还有相应的部署验证,那整个过程基本上 全程都有大模型去参与,即使说你不熟悉某一个业务领域,那你也可以通过咱们这一套能力去补齐相应的知识,那这一块是数据建模的能力, 那再一个是数据服务的能力,那数据服务平台主要是将咱们项目里边沉淀的成果开放成服务接口的形式去给其他业务部门使用,那这里边包括了 各种数据服务的开发,还有数据使用方的管理,以及服务的授权审批,还有服务调用的审计监控。针对于数据服务,除了做成这种接口的形式,咱们也可以通过报表平台去做数据格式化,比如说将咱们的一些指标加工成这种 数据大屏的形式,给用户直观去展示咱们项目的成果。那像刚才咱们讲的这几项内容,基本上就覆盖了从数据接入到处理分析服务,可直观展示这种全流程的建设。那在基础的建设之外,咱们又引入了数据治理的能力,去辅助咱们去做各种能力提升。 比如说像这种标准数据源的维护,以及具体数据资产的维护,像部门的信息业务系统的信息数据源的管理,还有具体数据表数据项的管理,那通过这些能力,咱们可以去很方便的去梳理咱们整个项目的数据资产, 包括围绕数据治理的能力衍生出来的这种资产解锁的功能。那比如说针对于原数据的解锁,咱们想要查询目前 整个资源池某一个字段他都在哪些表里边存在,或者说在哪些加工逻辑里边存在,那咱们可以直接去输入相应的字段名称,他可以去检测出来他对应的表资源信息项, 还有像接入任务里面涉及到的字段,那这样咱们再去做数据分析的时候,那就不需要再去一张表去翻了, 那咱们可以直接通过数据检测的功能,帮助咱们快速去定位表范围,或者说具体的数据策略。像这一块都是咱们做数据治理的一个价值体现,就是辅助整个大数据项目的能力建设,提升建设效率,当然这只是一项价值,咱们后续随着功能的深入,会给大家详细去讲解其他模块的能力。 时间有限,像其他模块能力咱们就不去介绍了,那还是回归咱们今天要给大家分享的内容,就是数据接入模块具体的接入任务开发。如果说大家有一定数据项目建设技术,一般咱们在做数据接入的时候, 肯定是需要先去配置你接入这个表的数据源,那对应的就是咱们数据源管理这一块的功能。那目前咱们整个平台支持的数据源类型包括像 macbook、 pg、 高斯、 d b、 oracle 这种关系型数据库,也支持像这种 api 接口,或者说 ftp 文件系统,以及像这种卡不卡实时消息,那像这一块基本上都是咱们最近新融合的能力,那也支持大家去联调使用。那像这种数据库类的配置,一般大家需要填写 数据库的地址、端口、数据库名称,还有它的登录名密码就可以了。那信息填写完成之后,咱们可以去做一个连接测试, 那测试没问题,咱们就可以去保存这个数据源。那像 ftp 类型的这种文件系统,咱们需要去配置它具体的 ip 地址,还有端口以及文件系统的目录,但这里也可以去设置文件的编码,那如果说你本地或者说项目里边有需要连接 ftp 的 需求, 那可以改成你对应环境的 ftp 地址就可以了,那包括像这种卡不卡的地址,同样咱们也可以支持配置, 那整个功能咱们也都打通了,那除了像这种数据库文件系统消息流,咱们也支持配置 api 接口转发,那比如你需要去对接某一个 api 接口的数据,让这个数据落库,那你也可以在这去配置它的连接参数,那具体的请求地址、 入参条件咱们是在任务里面配置的。那以上咱们针对于这几类数据源的配置,大家像每一类数据源咱们都可以去预览对应的数据,比如说像这种关系型数据库, 咱们可以直接在这里边去查看咱们配置的这个数据源下面有多少表,以及表的属性信息,字断结构信息, 还有具体的数据量力,方便咱们去对这个数据源有一个整体的了解。那像 ftp 的 预览,主要就是它这个目录下边有多少文件,以及它的文件结构,比如这个文件里边有多少字段,还有它具体的文件内容,那这里边咱们支持对它的多层目录结构 去进行跳转。那像卡不卡的预览咱们同样也支持,比如刚才咱们限定了 e、 c、 o 开头的套比特名称,那这里面就显示了这两个套比特的属性,那同样咱们也可以去查看它的属性信息、消息结构, 还有具体的消息量力,那整体咱们针对于这一块的适配还是比较完整的,通过咱们的接入平台就可以直观的看到咱们需要接入的数据都有哪些,那就不需要你再去 专门登录到 ftp, 或者说连接到卡不卡里边,通过命令去查看,那配置完数据源之后,咱们就可以去开展某一个数据源下边的数据接入,那这里边咱们其实已经给大家猎取了一些任务,那在这大家可以去新建数据接入任务,那咱们可以看一个已经建好的, 比如说像这一个任务,那任务说明主要是将财务核算系统的数据对应的这张表同步到咱们 o d 二层,用于做成本分析。这里边是任务名称的定义,还有具体的管理信息,那在这可以去选择咱们之前定义过的数据源,以及这个数据源下边咱们指定的这一张表。 那同步模式咱们可以去选择全量同步,或者说增量同步,需要去定义它的增量类型,它是时间字段还是序号字段, 那假如说选了时间字段,咱们需要去定义他具体是哪一个字段,那首次提示词咱们也可以不用去定义, 他第一次同步的时候,默认的提示词是一九七零年,那数据同步完成之后,他会将这个数据里面最大的日期写入到下一次的提示值里面。任务再次运行的时候,他会在 咱们最后的时间这段基础上接着去取增量同步到咱们的目标库。那目标配置这里面咱们需要去选择咱们需要同步的数据源是哪一个, 以及目标表的模式,是选择已经存在的表,还是说创建一个新的表,选择已经存在的表,咱们支持在这去进行勾选。那创建新表需要咱们去定义表的名称,那数据写入的模式包括覆盖写入还有追加写入,那假如说咱们是增量同步的情况, 一般是最佳写入,那如果说是全量同步,那咱们可以设置成覆盖写入,那定义完来源表的配置跟目标表的配置,咱们可以去做具体字段的加工,那如果说大家需要去加一些系统字段,比如当前同步这个数据的系统时间作为咱们 o d 二层的 时间戳,那咱们也可以在这去补充一个字段,或者说你需要去加工他的业务字段的 md 五值,那你也可以去选择你要基于哪些字段去做他 md 五的定义,那像这种常见的规则,咱们都已经给大家封装成功能了, 就不需要你再去自己去熟悉 md 五的规则,或者说取系统时间。还有就是调度的配置,那这里面咱们支持手动执行,或者说每天执行以及每周执行,那为了保障咱们数据的稳定性,咱们近期也新加了一个前置依赖的能力,那这一块能力的效果 主要是现在这个任务在运行之前,需要先去检查一下他的前置任务运行状态是不是成功的。比如说像实时表跟维度表有这种外界关系的时候,你得需要先将这种维度表的数据加载进来,再去同步实时表的数据,或者说这两个任务之间的数据它本身就有依赖关系, 那假如说你上一个任务失败了,他的数据本身不完整,那你下一个任务就不能运行,那像这种情况咱们都可以通过添加依赖任务去进行管理,那再向后咱们也可以给这个任务去定义他的失败城市次数,那这里边主要体现在咱们日常任务开发 任务运维的时候,他这个系统由于这种网络波动,导致某一段时间他连接不上,那像这种情况,当这个任务第一次运行失败的时候,他可以再等待六十秒或者说五分钟再去运行一次,这样就避免了 他一次任务运行不成功,需要等待运维人员去手工重启的这种工作。那以上咱们针对于数据来源类型是这种数据库的形式的任务开发,那像这一块能力基本上是一个常规的数据中台都会具备的, 那为啥咱们叫 ai 智能数据状态,其实主要体现的就是咱们在编辑接入任务的时候引入的这种 ai 配置推荐的能力。那咱们可以给大家演示一下这块的效果。比如同样咱们需要新建一个任务,那在这咱们可以打开 ai 配置推荐, 那在这里面咱们直接去选定咱们要接入的表以及目标数据源,那直接点击 ai 推荐,那大模型就可以基于咱们定义的要求去直接生成出来这些任务的配置信息。比如说像任务的名称、 任务说明,还有来源表的配置,同步模式,目标表的配置以及具体的字段信息,那这样的话大家就不需要人工一个一个去进行填写了, 那像这一块效率提成还是非常明显的,那这一块是怎么实现的呢?其实主要依赖的就是咱们墨镜管理里边针对于任务配置推荐咱们定义的这些提示词的标准,比如说咱们在这里边定义了他任务的名称、 格式要求,那就可以直接让大模型去给咱们做数据接入任务的开发,而且它生成出来的这种效果它的准确性也很高,那咱们人工要做的其实主要是审核它生成的结果就可以,那这个就是咱们通过大模型去赋能咱们数据接入的一个典型场景。还有一个典型场景就是 咱们去做其他数据源类型的数据接入的时候,咱们也可以去使用相应的专项能力。比如这一个是 api 接口入库的任务,那同样咱们也是在这去选择咱们配置的 api 数据源,包括认证信息 接口的类型、请求的类型,还有具体的请求参数,还有就是他返回的内容的格式。那大家如果说之前做过类似的工作的话,其实这一块的调试还是比较头疼的,那一般咱们都得需要去对着这种接口文档 去输入相应的参数内容,那针对于 api 接口多库的能力,咱们也内置了一个接口文档的解析, 那在这里面咱们可以直接去上传数据提供方给过来的这种接口文档,那大模型去解析文档里边的内容,去识别他的接口类型。入餐、出餐,那其实像这些信息大模型都可以准确的识别出来,包括他的请求体的格式, 包含哪些字段,响应体的格式,那识别出来的结果,咱们可以直接去回填到咱们的接口配置里面,那回填他把这个密要覆盖了,咱们可以直接去再看一下这个,那其实这个接口咱们用的 是咱们数据服务平台里边开放出来的这个服务,咱们可以将这个 k 再放在这个密钥值里面,那请求参数这里面,咱们可以去输入一个接口里边实际的值, 去看一下效果。同样咱们还是先找一下这个服务对应的表是哪一个?对应的是这一张表,那咱们复制其中一个纸,再放在咱们的入仓里边,还可以去预览一下这个接口,那其实这个接口咱们就已经调通了, 还能够返回到正确的数据。但像这一块咱们除了对这个请求参数做了定义,咱们也集成了一些其他的功能,比如说这个参数值咱们可以以变量的形式去进行传递。比如比如说你需要去获取某一批手机号,那你可以先将这一批手机号存储到库里边, 咱们通过搜索查询的形式拿到这一批内容,然后将这一批的内容多行循环的形式传入到咱们接口里面。还有咱们需要去增量获取某一个接口的数据的时候, 他的请求参数可以去传入数据的更新时间,这种时段,那咱们也可以每次先在目标表去获取上一次执行最大的时间,将这个最大时间传递给这个参数,去获取这个时间之后的数据。 那其实像这些内容都是咱们在日常项目建设里边经常用到的能力,那很多产品其实都不支持,需要咱们去写脚本,通过其他能力去适配,那现在咱们就直接将这种常见的需求变成咱们平台自身的能力,那大家直接在这去配置就可以了, 那这个是咱们针对于 epi 接口的配置,那还有像这种卡不卡的配置,其实像这一块就比较常规了,主要是可以在这去选择咱们对应的数据源,选择你需要消费的卡不卡、 topic 以及咱们的消费组 id, 那咱们可以去定义消费的起始时间,每批消费的消费数,那这咱们也可以去预览这个 top 一个数据,那能预览到基本上你就可以将这个数据接入到咱们的目标表里边。那再一种类型就是 ftp 格式的,比如说咱们接入的这个 ftp 的 数据源获取数据的模式 是否去递归读去子目录,还有他文件的匹配名称,以及咱们数据同步过来之后,需要对原文件去进行保留还是删除,还是说把它归到到一个备份目录,这个就是文件的属性信息,比如他的 文件编码字段之间的分割符是否有这个字段名称,以及首行数据的行数,那咱们也可以去预览一下这个 文件,那像这种大家都可以根据它文件的实际内容去进行配置。但像这一块咱们后续也可以加入 ai 的 能力去识别这些属性信息,那因为现在咱们做数据接入主要还是对接这种数据库,所以说咱们现在主要还是 做了这种数据库功能的强化,那后边咱们也可以去完善其他数据源类型的能力,那大家也可以自己去体验一下这块的能力。 那最后一个功能,那它这一块能力主要是为了实现咱们本地文件的上传,那在这咱们可以去选择本地文件去做数据预览,咱们可以新建一个文件,那比如说咱们要对这个 excel 数据去做数据接入,那咱们可以去选择这个文件, 那这里面咱们可以去解析他的文件结构,包括预览数据,那解析成功之后,咱们可以基于他解析的字段去定义他的字段属性,那这里面咱们也加了一个字段双向翻译的能力,那这个也是利用了大模型的技术, 那他可以将来源字段定义的名称,结合数据内容去翻译他的字段的中文名,或者说基于中文名去翻译他的字段在表里的技术名的定义,那这样的话就不需要大家在建表的时候一个一个去起这个字段的名称了。那定义完成字段之后,咱们可以去选择目标表, 那同样在这咱们可以去选择他的目标数据源,还有表的模式以及数据写入的方式,以及目标表的名称 创建完成之后,咱们就可以去保存任务,并且去执行任务,将数据写入到咱们对应的目标表里边,那这一次也写入成功了。那以上咱们针对于 整个数据接入模块的能力的讲解。大家再补充一点,咱们针对于任务的运行,咱们也加了失败日记的分析,那咱们可以去演示一个场景,比如说针对于这一张表,咱们在 目标表去修改一下他的字段名称,那这样咱们如果说不改任务的前提下,他其实是找不到新的字段的, 那咱们再去启动一下,那这一次运行他就是失败状态,那在这里边咱们可以去看他失败的详细日记,这是咱们通过这个日记排查起来还是比较困难的,那这样咱们就可以通过大模型去直接读取他的失败日记,分析他的原因,那这个就是大模型分析的结果, 那在这里面咱们就可以直观的看到他具体的问题,并且给出具体的建议,那这样其实能够极大的提升咱们解决问题的效率。那以上就是咱们针对于整个数据接入模块的功能讲解,那其实刚才咱们运行失败了啊,这个运维大屏里边也会显示 相应的告警信息,咱们也可以直接通过这个运维大屏去定位它的问题,包括这个运维机器人其实也识别到了咱们刚才运行失败的日子,那整块功能的联动还是非常实时的。当然这个是咱们目前的能力, 后续咱们也会结合大家的需求,不断的去对咱们每一个模块的功能去进行升级,不断的去打磨相应的细节,让这个整个平台越来越好用,真正能够支撑到大家实际的使用需求。那以上就是咱们今天讲的内容。

以后做全球商标连锁,可能不用再一个国家、一个国家查了,你只要对 ai 说一句,帮我看看这个品牌在美国、欧盟、英国有没有近似商标,并按风险高低整理出来。 如果 ai 接上了全球商标数据,它就能直接调用真实数据,完成解锁、筛选和初步分析。这就是 s a p i 和 m c p 最大的区别。 萨斯字是给人用的,你登录系统,输入商标名、类别、国家人工查看结果,适合少量临时探索式查询。 api 是 给系统用的,比如企业要批量监测全球商标,或者平台要自动识别品牌风险,就需要系统自动调用数据。而 mcp 是 给 ai 助手用的,它不只是查数据,而是让 ai 基于真实全球商标数据,完成检测、筛选、比较分析和报告出稿。 这件事对商标代理人、企业、法务、品牌出海团队都很重要,因为过去很多时间都耗在剪辑、筛选、复制、整理上。 但真正有价值的,不是把结果搬进报告里,而是判断风险、制定策略、和客户沟通。 m c p 的 价值就是把重复工作前置给 ai, 让专业人员更快进入判断环节。全大势全球商标数据, m c p 覆盖一百三十九国家和地区商标数据,并包含相同近次算法。 如果你想看看 m c p 到底怎么用到真实商标业务里,七月二十一日晚七点,全大师会做一场直播培训,我们会讲四个场景,海外注册、风险初筛怎么做?重点国家布局建议怎么深沉 博会复审思路和文书出稿怎么辅助?近四申请监测摘药怎么定期输出?七月二十一日晚七点,直播见!

很多人把 api 想得特别神秘,觉得它像是藏在电脑里的某种魔法,但其实 api 一 点都不玄乎。今天这一期,我就用最直白的大白话,彻底把这个概念给你讲清楚, 我们会从它到底是什么?为什么这个世界如此需要它?到它具体怎么工作?最后再看看我们每天都在用的那些真实场景,帮你一次性搞懂这个数字世界基础设施的核心。 我们先来解决第一个问题, api 是 什么?它的全称叫应用程序编程接口。你一听这个全称可能觉得更懵了。没关系,我们把它拆成三个词,接口、编程和应用程序。最关键的一个词是接口。什么是接口?我们生活中到处是接口, 比如你给手机充电,那个插充电线的口就是一个接口。它存在的意义是什么?就是让充电器和手机能够顺利对接,并且完成工作。传输电能 a p i 就是 这个道理,只不过它传输的不是电能,而是数据。 所以简单地说, api 就是 两个不同的软件程序之间进行交流的一种约定好的方式。你不需要知道对方内部是怎么构成的,代码是怎么写的,你只需要知道一套固定的沟通规则,就能从他那里获取数据,或者让他执行某些操作。 那好,现在我们知道了, api 是 程序之间的对话通道。接下来要回答的就是我们为什么需要它?没有 api 行不行?我给你讲一个场景你就明白了。假设你开了一个餐厅,有一天一个顾客打电话来说想订一份宫保鸡丁外卖, 如果没有 api 会是什么情况?菜单,你得把整个菜单念一遍过去,顾客得在那头边听边猜。订单写好之后,你拿着这个单子跑到仓库,自己去核对剩下的鸡胸肉够不够,花生米还有多少。然后你开始命令厨师,现在立刻给我炒一份宫保鸡丁, 炒好了,你又得亲自跑去找快递员,告诉他地址,让他送过去。整个过程中,你作为老板是唯一的管控中心,任何一部信息不通,整个流程就卡死了。 一个餐厅也许能这样运转,但如果有几百个顾客同时下不同的单呢?你就被彻底淹没了,系统也会崩溃。而有了 a p i, 你 的餐厅就变成了一个现代化的自动系统。当顾客下单,菜单是存好的,菜品是清晰的。 然后订单系统通过 api 直接去询问库存系统,宫保鸡丁需要的原料还有多少。库存系统告诉他,鸡胸肉够,花生米够。订单系统再通过另一个 api 直接给厨房系统下达指令,现做一份宫保鸡丁,不要香菜。 同时,订单系统还通过 api 直接把这个订单推送给物流系统。有份餐地址在某某大厦十二楼,十五分钟后取餐。 所有的事情都在后台,在计算机程序之间自动完成,你不需要做任何人工干预。这就是 api 的 巨大价值,高效自动化和解偶。 它把大系统拆分成了许多各自独立的、专精做一件事的小模块,这些小模块通过 api 互相协助,大大提升了整体的效率和可能性。 现在我们再深入一层,看看 api 具体是怎么工作的。刚才我们说 api 是 一套沟通规则,这套规则在互联网世界里最常见的形式叫 restful api, 你 可以把它理解为一种非常规范的通过 http 协议传递数据的对话模式。最核心的操作就是我们平时上网的四个动作,获取、创建和 delete 四个词。 比如你现在打开手机上的天气 app, 这个 app 后台就做了这件事,通过 get 请求向天气服务的 api 发送了一个请求,请求里包含了你的地理信息。 天气服务的服务器收到这个请求后,他就去数据库里查到了你所在位置今天的气温、湿度、降水概率这些数据,然后把这些数据打包成一种结构化的文本格式,百分之九十九的情况下,这个格式是 json。 jason 就是 一个纯文本,但是用大括号、冒号、逗号把数据有逻辑的排列好了,比如温度二十八度,天气晴, 然后服务器把这个 jason 数据通过 api 返回给天气 app。 天气 app 拿到后,再利用自己的程序把这些数据化成你手机屏幕上的那个太阳图标和二十八度的数字。 整个请求处理返回的过程通常只有几百毫秒,快到你几乎感觉不到。最后我们来聊聊你身边的 api, 可能你自己都没有意识到,你每天都在使用大量的 api。 当你用微信登录一个第三方游戏时,就是微信的 api, 让游戏知道你是谁。当你用支付宝或微信支付在购物网站上完成付款时,支付平台通过 api 告诉购物网站钱已经从用户账上划了,你可以发货了。 你在美团点外卖,美团 app 调用商家的 api 来下订单,调用配送系统的 api 来分配骑手,调用支付系统的 api 完成扣款。 你用的地图导航,它调用的是路况数据 api、 公交信息 api 和定位 api。 可以 说,在今天这个万物互联、服务化、云化的大趋势下,一个没有 api 的 软件就像一个不会说话的哑巴,它无法与外界产生任何有价值的联动。 api 已经不只是一个技术术语,它是整个数字时代协作的基石,是现代软件能够像积木一样灵活搭建、快速迭代的根本逻辑。理解了 api, 你 就理解了这个数字时代的运转核心。

在我们读回来以后呢,我们要用 deep sec 分 析一下我们的这个数据,这个 api key 呢就是我们每个人独有的一个 api key, 这个是 应该切换为环境变量,这个 key 如果泄露的话呢,可能会有一定的风险。 我们这个这块是 base url, 就是 open ai 的 一个访问的地址。毛毛呢,就是我们在使用大模型时候一个提示词工程,在我们提示词我们让 ai 帮我们分析什么,帮我们做什么,这一块是我们对 ai 进行的一个定义, 那这一步就是它在正在调用 deepsafe 的 api 进行一个数据分析, 那么这个 response 呢?代表数据对我们的一个回复。我们设了两个参数啊, time prediction 是 大模型幻觉的一个数值,数值越接近于零,它的幻觉率是越低的。 make max tokens 呢,是我们每次它返回给我们的 token 的 最大的数量,这下面是一个分析的一个返回的一个结果。

哈喽,大家好啊,很多人可能会听说过什么是 api 调用,什么是四花部署啊,什么是开源闭源模型等等。听过了很多的概念啊,但是却搞不清楚他们到底是什么,以及彼此的关系是什么,他们的区别是什么,甚 至很容易把他们哄为一谈啊。认为开源模型呢,就是对应的四花部署, api 调用呢,就是对应的闭源模型,但实际上并不是这样的。今天呢,我们就来聊一下这个话题啊,听完之后,你就再也不会被这几个概念给困扰了,你就能够理清楚对应的不同的概念它是什么意思,以及在工作的过程中该怎么样去做对应的选择了。 那首先啊,我们要聊清楚啊,对应的开源模型,闭源模型和对应的 api 调用和四异化部署,它们两个到底是一个怎样的概念啊?其实它们两个是两套独立的概念,开 源模型和闭源模型啊,它其实决定的是什么呢?它决定的是这个技术到底是不是开放的,这个模型你是不是能折腾呢?这个呢,在我们上一期的时候有详细的讲过,大家可以去看一下上一期的内容啊。而四异化部署和 api 调用,它决定了什么呢?它决定了模型在哪里进行运行,以及是个数据最终留在哪里,也就是说你发现没有啊,开源和闭源啊,它决定了这个模型你能不能干预, 而 api 调用和私有化部署啊,决定了这个模型的数据你到底能不能掌控,仅此而已了。那我们了解清楚了哦,他们两个的概念分别是这样的。之后啊,那我们来详细看一下什么是 api 调用,什么是私有化部署。那首先呢,我们来看一下什么是对应的 api 调用啊? api 调用它是什么意思呢?那顾名思义啊,就是我们通过一个 api 接口来进行使用这个模型,厂商啊把这个接口给到我们,我们啊通过这个接口进行去使用,那么按 token 按量进行付费,比如说我们用了一百万 token, 可能就给他几块钱,仅此而已。这个时候它有一些优势啊,就是它不需要去采购一些对应的 cpu 啊, gpu 啊等等,你也不需要有对应的算法团队,运维团队等等, 你只需要拿到对应的接口之后来进行连调使用就可以了。但是它也有一些对应的一些短板啊,就比如说一些对应的敏感的数据啊,可能会有一些合规问题,因为这些敏感的数据啊,可能公司要求啊,是不允许放在第三方厂商那里的,虽然说啊放在第三方厂商那里可能会更安全, 但是啊,公司如果说有对应的明确的红线的安全的要求,这个时候显然是不能去使用这种公有的 a p i 调用的方式来去运用对应的模型的。 那这个时候 api 调用它有哪些特点呢?它第一呢就是相当于是租借嘛,因为是租借啊,这个时候你是没有对应的这个模型资产的,也就说你不需要有对应的一些 cpu、 gpu 的 资产,你是轻资产的,你用起来会非常的方便, 而且呢你是拿来即用的,这个时候厂商它的配套设施啊,为了让你去用它,那显然是会比较完善的,它甚至会有一些相关的教程来教你该怎么去使用, 以及呢一些不敏感的一些数据呢?那显然是可以快速的去启动去使用的,你不用去考虑啊,我怎么去部署啊,怎么去联调啊等等,你拿过来基本上一两天的时间就可以直接去使用了,也就说是非常的方便的。那与之相反的呢,私有化部署则不是这样的,私有化部署啊,就是你需要有一个对应的私域的内网,这个时候内网呢,你需要有一些相关的一些卡呀,服务器啊等等, 这个时候数据就可以。怎么办呢?数据就可以存在你自己这里了,那数据的运行呢?用你自己的卡,那数据啊,显然就不会碰到对应的公网,也就是说他是不联网的,那只要你不联网,那这个数据就留不出去,你的掌控力会很强, 但是呢,他的一些问题是什么呢?就是他的成本会比较高,因为你需要去投入一些服务器啊,卡,资源啊等等,你的落地的周期也会比较长,你需要有对应的算法团队,运维团队等等。但是如果你的数据要求确实是很强的话,你有非常强的合规要求,那显然你可以考虑对应的自由化部署的方式。 那这个时候它的特点是什么呢?就是你自己爱咋用咋用的,因为你是做了对应的这个物理的数据的隔离的,它是可以不碰对应的公网的,你显然就是爱怎么用就怎么用了,那同时就是你自己的掌控力会很强,但是这意味着一定会很安全吧。那其实也并不是这样的,很多时候这个数据你交给第三方厂商往往是更安全的,他们可能会比我们会更专业一些,我们可能会更草台班子一些,但 但是呢,有一些公司,如果你的团队确实就需要我自己完全说了算,那显然你可以考虑对应的私有化部署啊。那在了解清楚了对应的私有化部署和 api 是 什么意思之后啊,那我们在工作的过程中该怎么样去选择呢?这里我给了大家一个对应的四个象限的组合方案啊。 那前面上一期我们提到了对应的开源和闭源啊,我们知道上面这里啊,我们就认为是开源,下面这里呢,与之相反就是闭源,这边呢就是私有化部署,而左边呢就是对应的 公有的 a p p 调用,我们基于这四个不同的一种方向啊,我们来去做了一个四个组合的方案,也就说如果你选择的是币源的模型,就是我完全不折腾这个模型,这个模型我拿来就用,而且呢我也不想让它去放在我自己这里,我自己放在这里的话,可能成本也很高,我也不会去弄。那这个时候我选择去调用 a p p 的 方式, 它比较适合什么呢?比较适合这种低成本的落地啊,那比如说啊,我们直接去用豆包啊,千问啊等等,那直接接入,接入了以后就进行去使用。第二种词什么呢?就是我不折腾这个模型,我选择币源模型, 但是呢,我确实有很强的这种数据的合规要求,那我只能放在自己这,那这个时候你可以去选择币源模型加私有化不处的方式,那这个时候怎么办呢?这个时候你一定要有自己的算力嘛,也不需要,你可以选择去租对应的算力,但是呢,我租的这个算力呢,就完全是我自己的了,整个数据的合规安全你可以掌控了。 那如果你是想要去折腾这个模型,但是呢,你确实没有对应的卡次元,这个时候怎么办呢?这个时候你可以选择 api 托管的方式,也就是说你托管给一些云的厂商, 你把你的开源模型让一些云的厂商帮你来进行相关的部署,那这个时候他会兼顾什么呢?兼顾就是你这个模型你自己说了算,但是这个数据呢,确实是放在了别人那里,但只不过呢,这个数据因为是你让别人托管的,也是会比较安全的。那第四种则是就是我又选择去折腾这个模型,我又放在自己这里,这个时候我是完全掌控对应的数据和对应的模型的。 那在工作的过程中,我们很多时候是怎么选择呢?很多时候啊,我们都是选择这个方案,就是我直接选择 b 源的模型和直接调用 api 的 方式,我也不管那么多,大概率也是安全的, 除非遇到那种我真的对于数据合规要求非常高的这种,很多时候可能会选择我又开源模型又不私有化部署的方式,或者会选择对应的这种开源模型加私有化部署的方式,那这种啊,很多时候可能会选择的会比较少,因为你既然都自己去折腾模型了,大概率啊,也不是这种小公司, 那你既然是这种大公司啊,那也就往往不需要对应的托管在别人的云厂商那里了,所以这种啊,虽然存在,但往往在工作的过程中啊,不太会去用到,但我们了解清楚就好了。 但是除了这四大组方案啊,那还有没有例外的?还有一种例外啊,当然这种例外啊,是一种比较高级的落地,他可以去做,但很多时候我们不会这么做,因为他确实会有点麻烦,就是我们可以做一个混合的分流啊,这个东西听起来很高阶啊,但实际上很多时候我们不会这么用的,就是我们基于用户的不同的问题, 或者说是数据的敏感的程度,那我选择有一些问题呢,我就通过 api 调用的方式,有一些呢,我则通过对应的四化部署的方式,但是这一点的话,其实是有点麻烦的,因为我既然都选择四化部署,那我为什么干脆全部都四化部署呢?那我既然都选择这种 api 调用,我为什么不全部的 api 调用呢?我何必要去做一个对应的分流呢?分流这件事情呢,又需要去再浪费对应的一个模型的耗时, 那显然会有一点看起来得不偿失,那他只有一种情况之下是可能会使用的,就是我确实呢有对于这种合规的诉求,但是呢,我又没有那么多的算力的成本,所以呢,我们就让这种百分之八十的大概率不敏感的这种数据, 那通通的直接调用 a p p 的 方式,那这些百分之二十可能会比较敏感的呢,全部留在我自己这里,但这种情况往往也不太会存在,那因为既然你都会想着这种数据的敏感度的问题了,你既然想着我要去保护好我的数据了,那很多时候你也就不在乎这点成本问题了。所以这个呢,看起来是可行的,但实际上很多时候是不会去使用的。 那聊完了这些啊,我们就基本上把这种不同的部署方式给完全讲清楚了。但是呢,这一点和你有什么关系呢?如果你是一个 ai 产品经理,你需要做什么呢?你需要做的是三点啊,第一点就是你需要了解清楚这种开源啊,闭源啊,私有化部署、 api 调用啊等等,它相关那些合规的条款是怎样的, 以及对应的不同方案它的成本是怎样的,算清楚哪个更划算。同时如果你要做这种混合的模式去做这个分流,那你要去输出对应的规则和边界,什么时候啊?需要对应的输出这种策划部署的方案什么时候则不需要,你需要去把这些边界规则、成本条款给了解清楚,那在了解清楚这些之后啊,你就可以做对应的决策了。 讲到这里啊,我们就通过前面好几期的时间就把模型该怎么样去使用,调用什么样的模型,怎么调用给完全讲完了。那下一期呢,我们就来聊一下这个模型,我已经决定了哦,调用了之后,我该怎么样让这个模型表现的更好呢? 那就比如说啊,我该怎么通过这种意图识别的方式进行相关的分流呢?我该怎么样去做对应的 ig 召回,以及做对应的排序缓存模型的生成该怎么样影响对应的微调?该怎么样去写对应的指令呢?这些具体该怎么做呢?这个我们下一个模块聊,记得点关注,不要错过我们下个模块见。

呃,我发现很多人其实分不清这个通用 ai 智能体 agent 和 api 的 区别,其实很好理解通用 ai, 比如说拆 gpt、 豆包、 deepshake, 它更像是一个大脑,你问他问题,他帮你写文案,做方案、翻译、总结,那 ai agent 也就是人工智能智能体,比如说 codex, 它更像是一个虚拟员工, 你给他一个目标,他可以帮你拆解步骤,按照流程完成任务。 api 全程叫 application programming interface, 中文叫应用程序。呃,编程接口,他更像是连接管道,负责把 ai 和表格、客服系统、电商平台这些工具连接起来。 所以简单来说,通用 ai 负责生成内容,智能体负责执行任务, api 负责连接系统。 放到跨境电商里, ai 可以 写产品文案,智能机可以做选品和运营流程, api 则可以把数据和工具打通。未来会用 ai 的 人不只是会聊天,而是会把 ai 放进整个的业务流程里。