今天想让 codex 访问 coles 的商品页面去搜集一下商品的 list, 但是很遗憾访问被拒绝了。不过我记得之前是有成功过的,于是我准备一探究竟。在我的追问下,codex 表示,之前「成功」的访问,实际上是访问的「搜索快照」。那么,什么是快照?什么又是搜索快照呢?
快照,又称 snapshot, 即一个关于某个东西在特定时刻的一个记录。快照没有固定的存储格式,例如对于网页快照,可用 .html 文件存储。
而搜索快照,又称 search snapshot, 是搜索引擎抓取网页时保存的历史副本,可能过时。
但是当我进一步询问 codex 的时候,它表示无法获得原始网页的 .html 文件,而是只能获得 HTML 网页(而不是原始 HTML 代码),然后调用工具返回解析后的文字。这让我想到一个问题:HTML 网页和 HTML 代码之间又是什么关系呢?
HTML 代码是源码,而 HTML 网页是源码经过某种方式渲染之后得到的展示。但是对于人类来说,是通过视觉的方式读取 HTML 网页的,感觉可以类比成「许多可交互的图片」。那么对于 codex 来说,它是怎么读取 HTML 网页的呢?答案是调用专门的浏览工具去解析页面。
至于这个工具是内置网页浏览工具 web.run,codex 调用了它的 open 功能打开网址,它返回处理后的网页内容。它的实际输入是:
{
"open": [{"ref_id": "https://www.coles.com.au/browse"}],
"response_length": "short"
}
实际输出是带元数据和行号的文本:
Browse our products to order your next shop | Coles
(https://www.coles.com.au/browse)
Crawled: today; Content type: text/html;
Total lines: 88
L0: Skip to main content
L2: Search Products
L4: [Input: Search products & recipes]
L20: Set shopping method
L21: # Shop products
而这里的内置,指的是这个工具已经被集成在了当前 codex 会话的运行环境中。那么,什么是环境呢?
环境就是指程序运行时可用的条件和资源,比如操作系统、文件、网络和工具等等。对于这个回答,我比较关心:这些工具都是储存在哪里的呢?事实上,web.run 工具由平台提供,codex 只能访问工具的调用借口,俗称 API. 这里的平台,是指 OpenAI 的系统。
了解完这段解释之后,我突然感觉 codex 就是一个带有很多工具的 LLM, 其中 codex 所宣传的执行能力,也和这些被调用的工具的能力息息相关,不过最后进行「汇报」的「人」是 LLM 而已。
顺着这个思路往下,我又思考了一下:AI 是如何搜索信息的呢?调用的是什么工具?
总体上还是依赖上述工具 web.run, 通过 search_query 功能搜索关键词,再用 open 打开结果。
以下是 web.run 的一个示例输入和输出:
{
"search_query": [
{"q": "Coles 商品分类"}
],
"response_length": "short"
}
标题:Browse products | Coles
网址:https://www.coles.com.au/browse
摘要:浏览商品分类……