微信扫码
添加专属顾问
我要投稿
AI时代的网络革命,WebAgent开启智能体互联网新纪元。 核心内容: 1. WebAgent定义及其与传统网站的区别 2. 第一个基于ANP的WebAgent技术细节解析 3. WebAgent对AI的意义与智能体互联网构建展望
越来越多的智能体开始尝试直接从互联网获取信息,目前有很多技术可以用,比如Computer Use、Browser Use等。然而传统网站主要面向人类用户设计,AI 想要利用这些网站常常需要模拟人类浏览器行为(例如像爬虫那样解析 HTML 页面),效率低且复杂。
为了解决这一痛点,也许我们需要构建一个WebAgent。
本文将介绍什么是 WebAgent,以及第一个基于ANP构建的WebAgent的技术细节,包括如何发现WebAgent并与其交互,WebAgent的身份认证机制,以及接入相关协议的代码示例,最后介绍如何构建一个专为 AI 打造的数据网络。
第一次接触WebAgent是在W3C的WebAgents社区。
WebAgent 是一种利用现有 Web 基础设施(如PKI、DNS、HTTP、CDN、搜索引擎等)构建的智能体,它在 Web 上运行,旨在使其他智能体能够通过 Web 方式对其进行访问和交互。它同时具备Web的开放性,以及智能体的AI能力。与传统以人类用户为核心设计的网站不同,WebAgent 专为 AI 设计,提供AI可读可理解的公开信息,以及包含结构化、自然语言等多种类型的接口,而无需用户界面。
与传统网站相比,WebAgent 有以下显著区别:
对于 AI 而言,WebAgent 的出现具有重要意义。过去 AI 访问网页信息,需要模拟人类浏览网页,复杂且低效。而 WebAgent 是专为 AI 设计的“原生网站”,AI 可以像调用应用程序服务一样,通过标准接口直接获得数据或执行任务。这使 AI 更高效、准确地利用互联网信息,开发者也能针对 AI 优化服务,不再局限于人类的浏览模式。WebAgent 将成为构建智能体互联网(Agentic Web)的基础组件,让 AI 能够直接通信与协作。
我们开发了第一个基于ANP的WebAgent,它是一个提供天气信息服务的智能体网站。
作为示范,这个 WebAgent 在遵循 AI 原生设计的同时,也特地增加了一个简单的首页,以便人类开发者能直观了解它的存在(尽管对于 AI 而言并不需要首页界面)。
下图展示了该 WebAgent 首页的示意图,你也可以通过访问链接 https://agent-weather.xyz/ 来查看:
(图:第一个 WebAgent —— 天气智能体的演示界面。实际交互中,AI 将通过其提供的 API 接口获取天气数据。)
这个天气 WebAgent 命名为 “天气智能体”,里面设计了一个虚拟人物"小晴",托管在专用域名上。天气智能体的设计完全符合ANP的规范。通过这个实例,我们会展示一个基于ANP的WebAgent是如何运行的,希望能够为WebAgent的开发者和使用者提供一个参考。
需要说明的是,在理想情况下 WebAgent 并不需要有人类可访问的网页界面;AI 完全可以通过协议与其通信。但为了便于调试和让人类开发者理解 WebAgent 的工作原理,首个 WebAgent 还是提供了一个可访问的主页,展示其基本信息和功能简介。
既然 WebAgent 不以人为访问者为中心,我们该如何发现和定位这些面向 AI 的智能体服务呢?
为此,ANP引入了一套 智能体发现机制,使得给定一个域名,AI 就能找到域名下有哪些 WebAgent 以及它们的描述文件。本质上ANP的智能体发现机制也是基于DNS的,和网站的发现机制类似。
1. 通过域名和 .well-known
路径主动发现(Active Discovery): 类似于某些互联网服务使用 .well-known
路径提供元数据(例如 .well-known/robots.txt
、.well-known/openid-configuration
等),WebAgent 也遵循这一思路。在约定上,每个托管 WebAgent 的域名下,可以提供一个智能体列表:
https://<域名>/.well-known/agent-descriptions
访问该路径将返回一个 JSON-LD 格式的发现文档,罗列该域名下公开的所有 WebAgent 描述文件的地址。详细定义在 ANP 智能体发现协议规范(https://github.com/agent-network-protocol/AgentNetworkProtocol/blob/main/08-ANP-Agent-Discovery-Protocol-Specification.md)(Agent Discovery Protocol)。
例如,对于我们的天气智能体域名 agent-weather.xyz
,访问 **https://agent-weather.xyz/.well-known/agent-descriptions
**,会返回类似下面的内容:
{
"@context": {
"@vocab": "https://schema.org/",
"ad": "https://agent-network-protocol.com/ad#"
},
"@type": "CollectionPage",
"url": "https://agent-weather.xyz/.well-known/agent-descriptions",
"items": [
{
"@type": "ad:AgentDescription",
"name": "天气智能体",
"@id": "https://agent-weather.xyz/ad.json"
}
]
}
上例表明在 agent-weather.xyz
这个域名下,有一个名为“天气智能体”的 Agent,其描述文件位于 https://agent-weather.xyz/ad.json
(通常我们也简称这个描述文件为 AD(Agent Description))。如果有多个智能体,它们都将列在 items
中。通过这种方式,AI 知道了下一步该去获取哪个 URL 来了解智能体详情。
值得一提的是,采用 .well-known/agent-descriptions
作为入口,意味着只要知道域名,AI 就能发现其中的 WebAgent 列表,而不需要人为提供具体路径。这也方便搜索引擎对其进行索引。
2. 被动发现(Passive Discovery): 除了主动查询域名的 .well-known 路径外,WebAgent 也可以将自己的信息提交给专门的智能体搜索服务或注册表,从而被动地被发现。例如,一个 WebAgent 可以将自己的描述文件 URL 提交到公共的 Agent 搜索引擎,使得别的 Agent 可以通过关键词(比如“天气”)搜索到它。这属于被动发现的一种,它让 WebAgent 主动登记自身,从而方便网络中智能体互相查找。
利用ANP设计的两种发现机制,一个智能体可以很方便的通过域名或者搜索引擎,找到它想要访问的WebAgent。
找到了 WebAgent 后,接下来就是如何与之交互。这时候就要用到 WebAgent 提供的描述文件(即上面找到的 ad.json
)。
智能体描述文件详述了该 WebAgent 的能力和接口定义,相当于一份说明书。AI 在读取这个说明书后,就能按照里面提供的数据与接口,获得智能体能够提供的能力,并且与智能体进行通信。
我们以天气智能体的描述文件 https://agent-weather.xyz/ad.json
( https://agent-weather.xyz/ad.json) 为例:
{
"@context": {
"@vocab": "https://schema.org/",
"did": "https://w3id.org/did#",
"ad": "https://agent-network-protocol.com/ad#"
},
"@type": "ad:AgentDescription",
"@id": "https://agent-connect.ai/agents/travel/weather/ad.json",
"name": "天气智能体",
"description": "天气智能体,提供全国城市天气信息查询服务。",
"version": "1.0.0",
"owner": {
"@type": "Organization",
"name": "agent-connect.ai",
"@id": "https://agent-connect.ai"
},
"ad:securityDefinitions": {
"didwba_sc": {
"scheme": "didwba",
"in": "header",
"name": "Authorization"
}
},
"ad:security": "didwba_sc",
"ad:interfaces": [
{
"@type": "ad:StructuredInterface",
"protocol": "YAML",
"url": "https://agent-connect.ai/agents/travel/weather/api_files/weather-info.yaml",
"description": "提供天气查询服务的OpenAPI的YAML文件。"
},
{
"@type": "ad:StructuredInterface",
"protocol": "YAML",
"url": "https://agent-connect.ai/agents/travel/weather/api_files/booking-interface.yaml",
"description": "提供天气信息预订服务的OpenAPI的YAML文件。"
},
{
"@type": "ad:StructuredInterface",
"protocol": "YAML",
"url": "https://agent-connect.ai/agents/travel/weather/api_files/subscription-status-interface.yaml",
"description": "提供天气订阅状态查询服务的OpenAPI的YAML文件。"
},
{
"@type": "ad:NaturalLanguageInterface",
"protocol": "YAML",
"url": "https://agent-connect.ai/agents/travel/weather/api_files/nl-interface.yaml",
"description": "提供通过自然语言与智能代理交互的接口。"
}
],
"status_code": 200,
"url": "https://agent-connect.ai/agents/travel/weather/ad.json"
}
上述示例中,智能体描述文件采用的是 JSON-LD 格式。该格式使用了 Schema.org 提供的通用词汇,使不同智能体对数据含义的理解更加一致和清晰。此外,WebAgent 也通过自定义扩展(如ad字段)来补充特定的智能体交互规范。
通过解析这些字段,AI 基本就了解了如何使用这个 WebAgent。例如,根据天气智能体的 ad:interfaces
列表,我们看到几个 OpenAPI YAML 文件链接,其中一个 weather-info.yaml
提供了“天气查询服务”的API定义。
AI 获取这个 YAML 文件后,就能知道天气智能体支持哪些HTTP接口,比如可能定义了 GET /weather?city={城市名称}
这样的端点,以及返回的天气信息数据格式。如果 AI 想查询天气,只需按照该 OpenAPI规范构造HTTP请求即可。
交互示例: 假设描述文件告诉我们天气智能体有一个获取天气的接口,那么AI可以进行如下步骤:
security
要求的话)以及找到提供天气查询的接口定义。GET https://agent-weather.xyz/api/weather?city=杭州
(此URL只是示例,实际端点需根据接口定义文件确定)。通过描述文件,AI 可以逐层深入了解 WebAgent 提供的能力:先是发现有哪些接口,然后再根据接口描述获取API文档,最后调用具体API完成任务。这种设计使得AI 可以自主爬取 WebAgent 提供的所有机器可读资源,一步步完成复杂任务,而无需人工干预。
考虑到 WebAgent 面向的是自动化的 AI 访问者,开放的接口可能会面临恶意滥用或过度调用的问题,比如最近大家诟病比较多的大模型训练公司对网站数据疯狂爬取行为。
因此,WebAgent 通常要求调用方提供身份验证,以确保请求是来自受信任的主体,并可对其进行权限管理或配额限制。这与人类访问网站时需要密码、 API Key 或 OAuth 授权有异曲同工之处。
不过,WebAgent 采用了一种更适合智能体生态的解决方案:基于 W3C DID(Decentralized Identifier,去中心化身份标识) 标准的认证机制。可以让智能体使用自己的 DID 作为身份标识访问WebAgent,而不需要每个智能体都在对方系统上额外注册账户。
AgentNetworkProtocol (ANP) 提出了专门的 DID 方法 —— did:wba
(WebAgent DID)。根据 ANP 身份认证规范(https://github.com/agent-network-protocol/AgentNetworkProtocol/blob/main/03-did%3Awba-method-design-specification.md)(DID:WBA 方法规范),did:wba
利用现有的 Web 基础设施实现了去中心化的身份认证,专为智能体之间的认证设计。简单来说,每个智能体(或使用 WebAgent 的实体)都可以拥有一个 did:wba:
开头的身份标识符,例如:
did:wba:example.com:agent:weather123
这个标识类似于一个邮箱地址或用户ID,包含域名信息。在 WebAgent 的认证体系中,有点像“对方只需知道你的 DID,就能通过现有网络基础设施确认你的身份”,而不需要每个智能体在对方系统上额外注册账户。这大大简化了跨平台的 AI-Agent 协作。
did:wba
的身份认证流程可以概括为:
did:wba
方法规定DID文档托管在对应域名的特定路径上,便于通过 HTTP 获取。例如 DID did:wba:agent-did.com:user:alice
可以解析出其 DID 文档(其中会有 Alice 的公钥)。Authorization
)中发送。由于 DID 是去中心化的,任意两个智能体可以在不依赖中心化用户数据库的情况下互信。这有点像电子邮件的体系 —— 你给对方发邮件不需要在对方邮件服务器上注册账户,只要对方能通过 DNS 找到你的域名并信任相应的公钥即可。did:wba
的出现,让 WebAgent 网络中的身份验证变得灵活且无平台障碍。对比传统的 OAuth或者 API Key 方案,DID 更适合大规模、多主体的智能体生态,因为每个 Agent 可以自有身份,一处认证,处处可用【当然,为了兼容现有系统,WebAgent 也不妨支持传统 API Key 等方式,但 DID 显然是面向未来的方案】。
防滥用与权限控制: 通过要求调用方提供 DID 身份,WebAgent 可以做到:
值得注意的是,为了降低开发者的门槛,ANP 社区还提供了一个测试用的公共 DID。这个 DID 为 did:wba:agent-did.com:test:public
,对应的 DID 文档和私钥已经公开,用于测试和体验 WebAgent 的身份认证过程。任何人都可以使用这对公私钥来尝试调用要求身份认证的 WebAgent(只用于测试,无法进行真实交易等敏感操作)。
在实际开发中,我们可以通过引入这套公共测试 DID,快速地验证 WebAgent 接口调用流程。在 ANP 示例代码库(https://github.com/agent-network-protocol/anp-examples/tree/main/use_did_test_public) 的 use_did_test_public
目录下,就提供了这个测试 DID 的 DID 文档 (did.json
) 和私钥文件 (key-1_private.pem
) 以及示范如何使用它。下节的代码实例也将展示如何利用该测试身份来调用 WebAgent 接口。
我们开发了一个用于和ANP WebAgent 交互的工具ANP Explorer,地址:https://service.agent-network-protocol.com/anp-explorer/。
它有两个功能:
这个工具使用ANP公开测试DID(did:wba:agent-did.com:test:public
)访问WebAgent.
理解了 WebAgent 的发现、描述和认证机制后,我们来看一个实际代码示例,演示如何通过简单的代码让你的 AI Agent 具备访问 WebAgent 的能力。代码已经开源:anp-examples(https://github.com/agent-network-protocol/anp-examples)。这个代码就是上面的ANP Explorer的代码。
好消息是,这个过程非常简洁——正如社区所说:“只需要一个提示词(Prompt)和一个 HTTP 函数”就可以与任意 WebAgent 通信。
先让我们看提示词,代码地址 https://github.com/agent-network-protocol/anp-examples/blob/main/anp_examples/simple_example.py:
1. 您将收到一个起始URL({{initial_url}}),这是一个智能体的描述文件。
2. 您需要了解该智能体描述文件的结构、功能和API使用方法。
3. 您需要像网络爬虫一样不断发现和访问新的URL和API端点。
4. 您可以使用anp_tool获取任何URL的内容。
5. 该工具可以处理多种格式的响应,包括:
- JSON格式:将直接解析为JSON对象。
- YAML格式:将返回文本内容,您需要分析其结构。
- 其他文本格式:将返回原始文本内容。
6. 阅读每个文档以查找与任务相关的信息或API端点。
7. 您需要自行决定爬取路径,不要等待用户指示。
8. 注意:您最多可以爬取10个URL,超过此限制后必须结束爬取。
......
这段描述指导 AI 模型像一个爬虫一样,不断的调用anp_tool工具,爬取智能体的文档或接口,循环这一过程,直到满足获得所需要的信息。
接下来是 HTTP 函数部分。anp_tool.py
定义了一个异步方法 execute(...)
,其作用是执行实际的 HTTP 请求,并处理身份认证逻辑。
具体的代码可以参考:https://github.com/agent-network-protocol/anp-examples/blob/main/anp_examples/anp_tool.py
可以看到,借助 ANPTool
,一个 AI Agent 与 WebAgent 通信的流程就像普通的HTTP调用一样简单。而对基于大模型的智能体来说,只需在其工具列表中添加这样一个具备ANP功能的工具,并通过提示让模型明白如何使用,它就能自主完成跨智能体的操作。
例如,一个具备 ANP 能力的对话Agent在收到用户问“帮我订明天上海的酒店”时,完全可以:先用 ANPTool 找到酒店预订Agent -> 获取其描述和接口 -> 按流程完成预订,并返回结果给用户。这一切都归功于 WebAgent 提供的标准化、自描述的接口,以及 ANP 协议的简洁设计。
随着第一个 WebAgent 的上线,我们看到了未来互联网的一种新形态:一个无需界面、仅对 AI 开放的数据服务网络。这个网络的构建基于本文介绍的三大关键要素:
.well-known
入口,AI 可以自动索引互联网上的智能体服务,无需人工目录。这个“AI 数据网络”具有一些显著的特性:
可以想象,在不远的将来,各行各业的数据和服务都可能以 WebAgent 的形式对 AI 开放:天气、新闻、知识库、交易平台、商家……AI 将成为主要的“用户”,直接通过网络接口完成我们如今通过APP或网页才能完成的任务。而人类用户将与AI协作,更多地让AI去调用这些 WebAgent 完成复杂的目标
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-30
如何结合多模态RAG和异步调用实现大模型内容理解?
2025-03-30
阿里发布Qwen2.5-Omni:全球首个端到端全模态AI,实时音视频交互能力碾压Gemini!
2025-03-30
OpenAI,来我司上班了
2025-03-29
Agent TARS:字节跳动版通用AI助手来了!
2025-03-29
阿里千问发布了能看首相算命的 AI 模型
2025-03-28
阿里开源“GPT-4o”,新Qwen2.5-Omni用“听说看想”感受真实世界
2025-03-28
试完GPT-4o画图,我第一次觉得人类设计师有点危险了
2025-03-26
Chat GPT文生图不用DALL·E模型了?
2024-09-12
2024-06-14
2024-08-06
2024-06-17
2024-05-30
2024-08-30
2024-10-07
2024-11-28
2024-10-16
2024-04-21