我叫Fuad Ali,在Arize AI负责产品工作。我一直在Arize从事代理实验以及全栈的代理工具开发。刚才Lori已经分享过,他也是我们Arize团队的一员。Aparna是我们的联合创始人兼首席产品官,她也会在会场走动,如果在研讨会期间大家需要帮助,她会提供支持。
今天我们要讨论的是为代理构建自我学习闭环。先简单介绍一下我的背景以及我是如何进入这个领域的。我认为“自我学习闭环”这一概念对于AI工程来说是非常新的,Arize中有很多功能可以帮助支持它。为了阐述这一点,我之前曾在SpaceX从事分布式系统工作。
有趣的是,我们在遥测领域似乎正在回归原点。如果你仔细想想,火箭系统在每一毫秒都在不断进行航向修正,这实际上是在消耗自身的遥测数据,并基于这些数据进行操作以实现自我纠正。接下来我将解释我们如何在Arize中构建这种代理的自我学习闭环,以及你们如何利用它来实现自我纠正。
为了让大家对Arize的历史有所了解,我们做出了一些重大战略押注。2023年,我们是首家推出“LLM作为裁判”概念的公司。我们利用开源的Open Inference为LLM应用创建了首批语义创新工具。我们还建立了首个实时AI数据存储ADB。
2025年,我们发布了代理评估工具以及内部开发的Agent Alex,旨在帮助你们进行AI工程开发。你可以把它想象成专为AI工程打造的Cursor。而在2026年,我们下一个重大的战略押注将是如何通过反馈循环创建具备自我纠正能力的代理。
我认为大家都明白,这对于一般的代理概念而言将具有极强的威力。在软件工程领域,行业正在发生显著演变。大家熟知的是经典的软件1.0时代:应用被追踪到Datadog等可观测性平台,由人类开发人员阅读数据后编写代码进行修正。
我认为2.0时代是人类通过提示词(Prompt)与系统进行交互。本质相同,但不再是编写代码,而是撰写提示词来修正你在应用中看到的行为。而我们真正迈向的是第三阶段:完全自主的闭环循环。
在这个循环中,你的应用程序产生遥测事件和可观测性数据,而读取这些数据的不再是人类,而是编码代理。这不仅仅是人类阅读后输入提示词。如果你使用过Cursor、Claude Code或Datadog CLI等工具,你已经看到了这种趋势的雏形。
目前的差距在于,你可能仍然需要手动提示代理去从Datadog等后端读取信息。但我认为,当你扩展到全栈数以千计的代理时,让人类去阅读这些信息几乎变得不可能。因此,我将介绍Arize发布的一些支持这一流程的新功能。
希望大家将重点放在可观测性的演变上:它必须从人类阅读仪表盘,转变为代理可以消费、操作以及进行自我反思的程序化接口。
市场已证明这一点:Arize处理了超过1万亿个跨度(spans),每月运行超过6000万次评估,月下载量超过300万。我们受到Spotify、Reddit、Uber和TripAdvisor等众多优秀团队的信赖。这旨在建立信心,证明我并非只是在这里随意编码并空谈理论。
我认为整个行业也在朝这个方向迈进,这不仅限于我们的客户,还包括像Ramp Labs这样甚至不是Arize客户的团队。他们正在转向让软件具备自我改进和自我修复能力的理念。我指出这一点是为了说明,行业整体都在朝这个方向发展,而不仅仅是我们一家公司。
你们需要能够检测问题、调查原因并在同一闭环中部署修复方案的代理。这正是我今天要展示如何构建的循环。我认为这里需要概述的一个主要问题是:导致成本增加的故障在发布时往往是隐形的。
从定义上讲,如果这些故障被提前发现并修复了,它们就不会产生成本。我的核心观点是:你的代理在实验阶段和评估设置中表现良好。但在发布前,你不可能知道所有需要设置的评估场景,否则你就会提前编写好代码来覆盖它们。
某个边缘情况导致系统出错,而你的团队此前并未意识到这一点。例如,顾客询问30美元以下的生日礼物,却得到了一份50美元的物品清单。在生产环境中,代理会非常自信地购买错误的商品,因为它从未验证过产品信息。
这些问题不会出现在预演环境中(Staging)。它们会在用户投诉时出现,在收到支持工单时显现,或者在你凌晨3点被紧急呼叫通知时发现。这种“预演环境正常但生产环境出错”的差距,正是我试图弥补的关键所在。
为了让大家更直观地理解我们的讨论内容,我们有一个名为“Wonder Toys Assistant”的例子。这是一个简单的购物助手应用,具备几个可用工具:搜索产品、获取产品详情、查询特定产品信息、购买该产品、检查订单状态以及取消订单。
该应用基于OpenAI Agents SDK运行,后端采用FastAPI,搜索功能结合向量检索和文本回退机制。整个流程已接入Arise进行追踪,因此你可以看到代理在生产环境中的真实行为来源。接下来我将简要预览一下这个代理的界面,这是一个非常简单的Wonder Toys网页接口,我会放大展示。
稍后展示给大家看。我可以点击“询问产品”,让智能体购买该产品,请放心,这个演示中完全不涉及真实的信用卡。好的。这就让我们对今天将要讨论的例子有了初步了解。我认为这里的关键在于,我们将通过几条路径来解释 Arize 的一些新功能。实际上主要涉及四个命令以及界面中的一点点击操作。你们需要克隆仓库,别担心,我会切回幻灯片给你们足够的时间去查看。基本上只需要执行:git clone 仓库、进入目录、添加 API 密钥,然后运行 npm run dev。在从 Arize 获取一个 API 密钥以及用于运行 OpenAI Agents SDK 的 OpenAI API 密钥后,追踪设置就完成了。
基本上就是这样。一旦开始点击操作,你会发现追踪数据会自动流入 Arize。好的。接下来我们要看看如何实际打破这个系统,但我在这个仓库中设置的特定错误是关于“价格门槛”的概念。大多数查询都能正常工作,欢迎大家自行尝试。但是如果你要求购买 30 美元以下的生日礼物,你得到的却是超过 30 美元的商品。这是一个非常常见的边缘情况,即特定的门槛未被触发。在没有代码仓库上下文和追踪数据的情况下,很难在这种仅发出遥测数据的黑盒系统中发现此类边缘情况。智能体不会发现问题,而是会返回一份完全错误但看似自信的产品列表。
你如何为尚未见过的边缘情况编写评估标准?因此,Arize 中我们要讨论的第一个新功能叫做 Signal。Signal 是 Arize 平台沙箱中的一个开箱即用的智能体,只需在项目设置中打开一个开关即可启用。Signal 的作用是在后台持续运行于你的生产追踪数据之上。它会读取每一条进入的追踪,开始按根本原因对失败进行聚类,并在多次运行中对重复发生的相同失败去重。由于它是一个拥有完整工具链的智能体,它实际上可以调用外部工具。
你可以将 Signal 连接到你的 GitHub 仓库,也可以将其连接到底层数据源如 DataDog。Signal 坐实于你的追踪数据之上,这些数据是智能体在生产环境中实际行为的真相来源。它会进行自我反思,去查看你正在运行的智能体的代码,查阅 DataDog 等底层数据源。它可以撰写调查报告、确定严重性实体类型并收集证据,甚至为你编写并提交一个拉取请求(PR)。回想一下我演讲开始时提到的软件工程演进阶段,我们正进入第三阶段:智能体正在消费来自 Observe View 平台的自身遥测数据。
它随后查看自身的代码,并试图基于所掌握的证据提出修复方案。好的。这是第一部分:Signal。第二部分主要围绕“技能”这一概念展开,今天晚些时候我们将有一个工作坊深入探讨我们发布的所有技能。也许你不想让那个智能体在 Arize 上管理,或者只是希望从某个存储库中提取数据。为此我们还发布了“Arize Skills”的概念。Arize 技能允许你正在使用的编码智能体——无论是 Cursor、Claude Code、Codex,还是其他 40 多种如 OpenCode、Hermes 等——能够查询来自 Arize 的追踪数据。
我认为一个很好的例子是,请给我一秒钟。我可以让我的编码智能体(这里以 Claude Code 为例)在仓库中读取我的追踪数据。这样它就能同时看到智能体基于追踪数据的操作以及该智能体的实际代码,从而做出非常有效的修复。好的。我们有多种技能:包括基于失败创建数据集的技能、读取追踪并进行错误分析的技能,以及在平台上运行评估器和任务的功能。技能工作流的第一步是 Claude Code 实际上可以为你编写修复代码,因为它位于你的编码仓库中。
类似于 Signal,Signal 运行在上方并访问你的 GitHub 仓库,它可以为你推送一个 PR。因此这两条路径是等效的:使用带有 Arize 追踪技能的 Claude Code,这是一种按需方法;假设你是一位持续改进产品的工程师。而 Signal 则是始终在线的连续方法,它基于你的追踪数据不断为你提供新的见解和分析。如前所述,Signal 能够进行根本原因分析,因为它可以访问你的代码仓库。它可以撰写调查报告并尝试基于此提交 PR。
它关注的不仅仅是单个追踪,而是智能体在生产环境中实际行为的完整上下文。为了节省时间以进入演讲的核心部分,我将暂停此处并保留此幻灯片。如前所述,现场有 Laurie 和 Aparna 协助大家设置环境。Aparna 就在这里,Laurie 可能在房间其他地方但会四处走动协助。我们的团队成员 Dat 也在场。快速回顾一下,你只需运行这四个命令即可。我建议在 arize.com 注册免费账户以获取 Arize API 密钥,从而开始查看流入的追踪数据。
你还需要一个 OpenAI API 密钥用于本次演示。我将暂停此处,保留此幻灯片,然后我们将开始追踪 Wonder Toy Signal 的生成过程,接着演示该闭环如何进入生产环境。是的。如果有人需要密钥,Dat 非常乐意提供给你们。
好吧,大家目前的进展如何?如果你没有带笔记本电脑也别担心。我会 walkthrough 一下你自己操作时的流程大致是什么样的。我再给大家两到三分钟的时间来设置 API Key、运行这些命令并克隆仓库。我知道今天的 Wi-Fi 有点不稳定,所以这不能怪大家。
不,你是有的。你仍然可以访问评估器(Evaluators)。虽然像代码评估之类的功能可能没有,但基本的还是有的。在这个流程中,我们主要展示 Cloud Code 如何通过 Skills 和 Signal 为你完成追踪分析。所以这一部分其实不需要额外操作。
有人遇到麻烦吗?需要帮忙的吗?请举手,我们会到房间里去协助大家。“抱歉?”“在这里,我跳下来。抱歉。”“Git 克隆没有安装成功。”啊,好的。看来可能是 Wi-Fi 的问题。
所以如果你遇到网络问题请告诉我。当你看到仓库开始拉取时,可能只需要几秒钟。通常这个仓库的结构是这样的:有代理(Agent)、它所需的所有脚本以及其他一些东西。我再给大家几秒,因为我知道网速有点慢。一旦大家开始进入仓库,请确保注册一个 API Key 并获取你的 OpenAI API Key,这样我们就可以开始了。
我应该继续吗?提醒一下,你只需要运行那几个命令:克隆仓库,然后 CD 进入该目录(我已经进去了),接着 NPM Install。确保你的 .env 文件已加载,这就是你要放入三个密钥的地方。“等等抱歉。”“哪个?”哦,末尾的那个文档。
比如,明白了。现在改不了,但我们会搞定它。好的,我开始了。我会把这个画面保留大概 10 秒钟。很简单,确保你把 M(.env)的值填好。那里可能也有个 Bug,但请找到 .env 文件并填入你自己的密钥。举个例子,我会把画面关掉以免你看到我的密钥,但里面确实有一些密钥。然后 NPM Install 和 NPM Run Dev。
这样你就能看到你的 Wonder Toys 交互,也就是与这个聊天机器人的互动,被追踪到了 Arize。在你的 Arize 追踪中,你实际上能看到通过这个聊天机器人进来的内容。比如,我看到启动了一个代理工作流,Wonder Toys 代理随后响应了,搜索产品,又经过一轮操作,最终找到了产品并返回给我。我能看到代理输出的大致情况。这就像是一个基础的价值主张:能否追踪?能否理解发生了什么?
我想展示的第二个部分是 Signal 能在此基础上做些什么。你有所有这些进入 Arize 的追踪数据,而你真正想要做的是启用 Signal 在代理之上运行。我会展示一个 Signal 的例子。Signal 在后台连续运行,一旦追踪数据开始流入,启动需要几分钟。我会展示一个已经设置好并准备就绪的 Signal 示例,以及它是如何进行自我改进循环的。
正如我之前提到的,追踪数据通过 Arize 流入。你与应用的每次交互都会进来。这就是 Signal 的样子。Signal 会对你在应用中看到的不同问题进行聚类分析。你会看到一个表格,对这些问题的类型进行分类。你可以看到这些问题随时间的趋势。你甚至可以阅读具体的示例。“比如在这个例子中,我们可以看到 Python 的序列化问题。”这正在损坏代理输入。你会发现它已经为你打开了一个 PR(Pull Request)。
你可以一键进入该 PR 并开始查看。还有一个概念是从调查中至少写出一张工单(Ticket)。你会看到对当前 Stock 代理行为的概述,例如伪造结果;一个关于为什么会发生这种情况的假设;单个追踪中的证据;以及建议你自己去执行的修复方案。这回到了代理消费遥测数据的概念:这个代理在后台运行,消耗遥测数据,实际上写出证据并提出修复建议。
在这个例子中,代码审查仍然留给了人类。你的思维边界决定了你想把这些做到什么程度。我们也推荐你这样做。但这种自我修复软件的理念,你可以亲眼看到它是如何运作的。“大家对设置感觉怎么样?Wi-Fi 能让大家正常运行吗?”“你们……不,好的。酷。”我会继续演示,也许最后我们可以花点时间走下讲台帮大家解决问题。
我想 walkthrough 的四个步骤是:第一,检测(Detect)。在用户报告之前暴露回退失败。第二,基于该失败和你平台上运行的评估(Evals),利用真实的追踪数据调查正在发生的事情。在我们的例子中,价格检查有个 Bug。Signal 和通过 Cloud Code 的 Skills 能够查看追踪数据,看看用户在关于价格低于 $30 的询问中发生了什么,将其与检查价格过滤器的代码路径调查结合起来,然后提出修复建议。
在我的代码中,关于如何执行价格过滤器存在 Bug。通过使用 Signal、Arize 中的追踪数据以及通过 Cloud Code 的 Skills,我能够看到与真实用户的这种交互发生,然后修复代码中代理的错误过滤器。最后,我们有验证路径(Verify Path)。今天本来没打算讲到这个,因为需要一些设置工作。但如果 Wi-Fi 好转了,我很乐意讨论一下并回来继续。“所以再次简单回顾基础部分。我们有一个在真实代理上运行的核心循环,它检测到 H 过滤器(价格过滤)相关的 Bug……”
使用 Arize Trace Goal 或通过 Signal,可以修复该问题并实际修补回退机制,然后进行验证。我将简要介绍如何在 Arize 中利用“测试套件作为裁判”和智能体实验来实现这一过程。此外,Signal 也会并行执行此操作,适用于那些不想手动敲击键盘、希望在后台运行任务的情况。Signal 将根据您自己的分类体系和追踪数据进行调优,您还可以将其配置为触发警报。
例如,如果您有一个特定评估的触发率需保持在 1% 以下的警报设置,您可以配置 Signal 在检测到该警报、延迟激增或成本激增等情况时触发。随后,您可以在这些拉取请求(PR)的持续集成(CI)环境中运行自定义的测试套件裁判。您可以对这些结果进行实验,并在此基础上进一步优化各项指标。
另外提一下,下午 2:00 Lori 将举办一场研讨会,希望那时的 Wi-Fi 信号能更好一些。我们将深入探讨其中的一些工作流程。回到核心内容,我刚才提到的循环过程我想大家都已经理解了:我有一个应用,它被追踪了,这些追踪数据流入系统。除了追踪数据(无论是来自 Signal 还是您自己的编码智能体)作为反映智能体实际行为的“事实来源”外,还有定义智能体应如何操作的代码仓库数据。
结合这两者,您可以获得非常有趣的分析结果,并具备大规模进行改进的能力。我想深入探讨的一个尚未涉及的话题是:我们如何使用智能体来评估其他智能体?这类似于提取追踪数据,查看我的代码,找出错误所在。当您需要进行更自适应的分析时,我们通常称之为“测试套件作为裁判”。
我想请问在座各位有多少人熟悉“LLM 即裁判”这一概念?大概打个手势示意一下。看来几乎所有人都已经熟悉这个概念了。“LLM 即裁判”是一种非常常见的模式:您输入一个内容,作为裁判的大语言模型读取该输入(无论是摘要任务还是幻觉评估等),然后针对智能体在响应中的表现给出评分或反馈。
但我们真正转向的是“测试套件作为裁判”,原因有几个。首先,“LLM 即裁判”本质上是一个固定的评分标准。当您有明确的使用场景和想要评估的指标时,它在捕捉已知问题方面非常有效。然而,正如我刚才通过价格过滤器所解释的那样,在上线生产环境之前,您并不总是能预知所有可能出现的问题。
因此,“测试套件作为裁判”提供了一种进行自适应分析的方法:观察智能体实际执行的操作,并随着智能体的运行调整测试内容。评估标准实际上是从轨迹中浮现出来的:例如,选择的工具是否正确?参数是否有效?是否有依据另一个智能体移交的上下文进行 grounding(接地/关联)?这种对“未知”领域的捕捉能力至关重要。
之前的价格过滤器就是一个例子,我可能不会为此编写测试用例,但“测试套件作为裁判”能够利用其内置的追踪分析功能为我进行这种自适应分析。这类似于用自然语言进行验证:您不需要做列映射,也不需要编写样板代码或评估模板。评分标准仅仅是一句话,它直接读取实际的追踪树结构。
随后,它在沙箱环境中针对这些真实的追踪数据运行测试。我认为这为您提供了许多工具支持,因为它是在一个实际环境中运行的。从我看到的很多客户案例中,有一个关于访问权限检查的例子。“LLM 即裁判”可能能够读取输入和输出,但由于它除了您粘贴到系统提示词中的每个用户数据外没有其他外部数据,因此它实际上并不知道或拥有关于该用户应该做什么或拥有什么访问权限的上下文。
相比之下,“测试套件作为裁判”因为可以连接到外部系统,所以它可以发起调用以实际确认:“嘿,这个用户是否被允许执行此操作?追踪数据是否反映了他们拥有的访问权限?”因此,“测试套件作为裁判”本质上是从一个仅对输入打分并输出结果的基础模型调用,转变为一种更智能体的流程:您可以实际调用工具,从而捕捉那些未知的错误。
好的,我想我们简要讨论了“测试套件作为裁判”,以及它在这个场景中如何工作:对修复后的失败案例进行评分,并实际决定该示例是否通过。例如:“如果每个返回产品的价格在请求的最小价格和最大价格范围内,则通过;如果任何结果超出预算,则失败。”它实际上能够进入代码内部检查这些过滤器是否正常工作。
现在这个评分标准将在随后的每次运行中捕捉到此类问题,而不仅仅是在您之前编写的个别测试用例中。快速回顾一下,我们讨论了检测、调查和修复发布环节。关于“发布修复”的部分是我现在想通过智能体实验来重点讨论的内容。也许我们发现了一个问题,将其基于真实的追踪数据进行了定位,调查了原因,知道为什么它是错误的,并决定有一个值得发布的修复方案。
在发布修复之前,您可能希望在一系列结果上测试它。我不确定大家目前是如何做这一点的,也许是将代码部署到开发环境然后手动测试。Arize 推出的智能体实验允许您通过 CI(持续集成)以自动化的方式进行测试。我想我们对收集随时间推移的失败案例数据集这一概念并不陌生。
使用智能体实验,您可以在端点背后搭建开发版智能体,并直接从 Arize 的数据集对其进行测试。该数据集将是您的智能体曾经失败过的真实追踪数据。在之前的例子中,我展示了 Wonder Toys 的案例:也许我有几个询问“30美元以下生日礼物”的追踪数据,但它们实际上失败了。
我可以使用 Arize Skills 来创建这样一个数据集:比如收集25个因预算约束而失败的搜索示例。然后我运行这些测试……
工作流结合云代码,我进行了一些追踪分析,在代码中发现了错误,并准备了一个修复补丁作为拉取请求(PR)。或者也许是 Signal 在后台自动完成了这一切。我该如何实际使用这个数据集来测试我的智能体,以确保提出的修复方案确实有效?这正是 Agent 实验允许你做的事情。借助产品中的智能体实验和智能体游乐场,你可以针对修复后的版本运行测试。将其部署到开发环境后,它会在一个端点背后启动,你将数据集输入流式传输给该智能体,而智能体会做出响应。
随后你可以使用与生产环境中相同的评判标准对其进行评分。这样你就可以并排比较开发模式下带有修复方案的智能体与生产环境中的智能体的表现,查看是否真正捕捉到了任何边缘情况。与其他数据集实验工作流类似,你需要在修复前后进行对比:查看评判标准(在本例中是价格正确性评判),检查示例和查询,观察延迟或成本是否增加。因此,你还需要对这些运营指标有一个概览,并量化实验结果。
这又回到了自我修正循环的概念上作为一个完整的故事线:你拥有一个自主在追踪数据中运行的智能体,旨在发现是否出现问题。例如,我看到用户要求价格低于 30 美元,但回复明显超过 30 美元。智能体会参考代码库调查原因,并以拉取请求的形式提出修复方案以改善状况。在本例中是一个过滤错误。由于我们的实验通过技能和 API 暴露出来,智能体实际上可以在通知你或决定值得人工审查之前,针对新的拉取请求重新部署并验证自身。
智能体会完全自主地完成这一整个循环:收集失败案例,为自己创建数据集,将其与自身的新版本进行比对测试,然后向你准备一份回复:“嘿,我认为发现了这个问题。我进行了调查,知道可能出错的原因。我已推送了一个拉取请求。随后我在开发环境中针对发现的失败案例数据集运行了该补丁,结果显示在此特定评估器上性能提升了 36%。”
所有这些信息都在拉取请求中提供给你,你可以直接阅读、验证代码并进行审查,然后发布。这让我想到回到循环的概念上:这使得整个过程非常强大且形成闭环,包括检测、调查、假设和修复的循环;同时也拥有验证循环。我如何确切知道这个修正是正确的,而不仅仅是沙箱中的智能体声称它是正确的?如何在真实失败案例和我工作示例的边缘情况下进行测试,并自动搭建测试环境?
我们将回到之前的幻灯片,以便大家可以自行 walkthrough。首先启动追踪:如果不收集追踪数据,其他一切都无法工作。这在你自己的智能体上只需不到 10 分钟即可完成。我们提供 Instrumentation Skills,支持所有主流的智能体框架和基础模型提供商。启用 Signal 并深入分析,或使用 Cloud Code 利用 Arize Skills 为你进行调查。
使用测试套件作为评判者进行验证,然后通过智能体实验来衡量结果。在结束之前,我会回到这一页幻灯片,并在房间内走动尝试帮助大家设置环境。如果你在使用 M 文件时遇到困难,只需在仓库中搜索或询问编码代理该文件的位置即可。除此之外,请确保克隆了仓库并从 Arize 平台获取 API 密钥,然后你就可以看到这些追踪数据汇聚在一起。
本着 AI 研讨会的精神,我认为让大家亲自观看和操作并实际尝试效果会更好。希望 Wi-Fi 能正常工作,我会四处走动提供帮助。如果你有任何疑问或遇到阻碍,请随时问我。很可能房间里的其他人也遇到了同样的问题。我很乐意在过程中提供一些建议。如果安装 Skills 也有困难,幻灯片上显示了方法:运行 npx skills add ariseai arise-skills。
这将为你提供交互模式,你可以选择安装所需内容或全部安装。其中包括用于追踪分析、数据集策展以及评估器的 Skills。例如,你可以要求 Claude Code:“嘿,检查我的追踪数据是否有任何错误或可修复的问题。”然后使用 acquire circumference 命令获取仓库中智能体的代码,并使用 Agent Skills。我们将发送本次研讨会的录屏以及所有入门所需的资源。
如果今天网络状况不佳,请见谅;否则你们也能很快上手运行起来。好了各位,我们现在要结束本次研讨会了。再次感谢大家。我想留给大家一张关于检测、调查、修复和验证的幻灯片,这涵盖了如何使用 Arize 以及如何创建自我改进智能体的主线思路。再次欢迎大家通过 Twitter 或 LinkedIn 与我联系。
如果你想要一年的免费 Arize Pro,请使用屏幕上的代码。我们有一个永久免费的层级供使用。针对本次大会,我们还免费提供 Arize Pro 版本,这提供了更高的使用限额,适合那些运行着成千上万条追踪数据的智能体应用。非常感谢大家!下午 2:00 我们将举办另一场由 Lori 带领的研讨会,会包含更多代码示例。希望那时的 Wi-Fi 也能好一些,我们届时再见。谢谢大家,感谢你们的到来。