ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

OpenCLI Hugging Face 适配器:零浏览器调用 HF 官方 API,命令行速查论文、模型、数据集与 Spaces

OpenCLI Hugging Face 适配器:零浏览器调用 HF 官方 API,命令行速查论文、模型、数据集与 Spaces OpenCLI Hugging Face 适配器零浏览器调用 HF 官方 API命令行速查论文、模型、数据集与 Spaces【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址: https://gitcode.com/gh_mirrors/ope/OpenCLI本篇基于 OpenCLI 仓库的 Hugging Face 适配器文档 docs/adapters/browser/hf.md 展开覆盖opencli hf全部 5 个命令的完整参数、返回字段与实战示例并结合 clis/hf/ 下的源码实现深入讲解各命令背后的 API 端点选择、参数校验规则、错误处理策略以及 OpenCLI 注册器中Strategy.PUBLIC免浏览器机制的原理。读完后你不仅能在终端里直接消费 Hugging Face 的公开数据还能理解这套适配器为什么无浏览器、无登录即可工作。适配器概览纯公开 API 的 PUBLIC 模式OpenCLI 的定位是把任意网站变成命令行工具Make Any Website into CLI其中大量站点需要接管用户已登录的浏览器会话。而 Hugging Face 适配器属于另一类典型场景官方提供完整的公开 REST API因此整组命令完全不需要浏览器直接对huggingface.co的公开端点发起 HTTP 请求。文档中声明的属性为Mode: Public公开数据无登录态依赖Domain:huggingface.coPrerequisites: No browser required — uses public Hugging Face API适配器注册的 5 个数据命令如下另含一个站点登录态辅助命令见后文站点认证机制一节命令说明opencli hf top按点赞数排序的 Hugging Face 论文榜opencli hf paper arxivId单篇论文详情标题 / 作者 / 摘要 / AI 关键词 / 点赞数opencli hf models热门模型榜下载量 / 点赞 / 趋势 / 新鲜度opencli hf datasets热门数据集榜opencli hf spaces热门 Spacesgradio / streamlit / docker / static 演示应用从源码结构看这 5 个命令各自是 clis/hf/ 目录下的一个独立文件top.js、paper.js、models.js、datasets.js、spaces.js每个文件都通过 OpenCLI 的cli()注册器声明命令元数据并显式设置strategy: Strategy.PUBLIC与browser: false。注册器在 src/registry.ts 的normalizeCommand中负责把strategy解码为执行路径真正读取的browser/navigateBefore字段Strategy.PUBLIC意味着不需要预导航到任何页面、不占用浏览器会话命令在纯 Node 运行时里执行。这正是该适配器可以脱离浏览器运行的底层原因。完整使用示例以下示例完整继承自官方文档可直接复制运行# 今天的热门论文 opencli hf top --limit 10 # 按 arXiv id 查看单篇论文详情镜像 HF 论文页 opencli hf paper 1706.03762 # Attention Is All You Need opencli hf paper 2005.14165 # GPT-3 论文 # 全部论文忽略 limit opencli hf top --all # 指定日期 opencli hf top --date 2025-03-01 # 周榜 / 月榜 opencli hf top --period weekly opencli hf top --period monthly # 按下载量默认查看热门模型 opencli hf models --limit 20 # 文本生成模型 名称过滤 按点赞排序 opencli hf models --pipeline text-generation --search llama --sort likes --limit 10 # 按点赞排序的数据集 opencli hf datasets --sort likes --limit 10 # 热门 Spaces opencli hf spaces --limit 20 # 按 SDK 过滤 Spaces opencli hf spaces --sdk gradio --search llm --limit 10 # JSON 输出 opencli hf top -f jsonhf top论文榜的三档周期与端点选择top命令提供 4 个参数选项说明--limit返回论文数量默认 20--all返回全部论文忽略--limit--date日期YYYY-MM-DD格式默认取最新一天--period周期daily/weekly/monthly默认daily返回列为rank, id, title, upvotes, authors其中id可直接回填给opencli hf paper id完成榜单 → 详情的往返查询。阅读 top.js 可以看到几个文档未展开、但对使用者很重要的行为细节两种不同的 API 端点。--period daily含缺省请求/api/daily_papers可附加?dateYYYY-MM-DD而weekly/monthly请求/api/papers?periodweekly|monthly。这与 Hugging Face 网页端论文页的日榜/周榜/月榜切换一一对应。--date与周/月榜互斥。源码中显式校验当period为weekly或monthly时若传入--date抛出INVALID_ARG错误并提示Omit --date when using --period …daily模式下则用正则^\d{4}-\d{2}-\d{2}$校验日期格式非法格式报Invalid date format。端点可被环境变量覆盖。top的基地址取自process.env.HF_ENDPOINT去掉尾部斜杠未设置时回落到https://huggingface.co。注意从源码结构看该环境变量仅被top与paper两个命令读取models/datasets/spaces是硬编码https://huggingface.co——如果你自托管 HF 镜像或做接口替换只有论文相关命令能受益。展示层的格式化逻辑。标题超过 60 字符会被截断为 57 字符加...作者超过 3 人时显示前 3 位加et al.表格底部footer还会自动计算并显示对应周期区间——月榜显示Mar 2025这类月份周榜显示Apr 28–May 4这类周六截止的周区间且区间是从 API 返回数据中最早/最晚publishedAt反推的而非本地日历因此跨月时会正确显示跨月区间。排序与截断在本地完成。无论哪种周期客户端都按upvotes降序重排后再按--limit截断--all时输出全量保证输出顺序即点赞数顺序。hf paper单篇论文详情与 arXiv id 校验paper命令接收一个必填的位置参数id——arXiv 编号如1706.03762可带v3之类的版本后缀请求https://huggingface.co/api/papers/id返回一行 9 列数据字段含义idarXiv idtitle论文标题authors作者列表逗号连接publishedAt发布日期截断到YYYY-MM-DDupvotes点赞数aiKeywordsHF 生成的 AI 关键词逗号连接summary原始 arXiv 摘要aiSummaryHF 的 AI 摘要较老或未收录的论文可能为空urlHF 论文页地址endpoint/papers/idpaper.js 的实现补充了三点文档级的严谨性说明id 格式强校验使用正则^\d{4}\.\d{4,5}(?:v\d)?$即现代 arXiv 形式YYMM.NNNNN可选版本后缀。传入空值或非该形式例如旧式hep-th/9901001或带arXiv:前缀会在发请求前就被ArgumentError拦截。区分没有这篇论文与接口限流HTTP 404 抛EmptyResultError对应文档中HF 无该 id 论文页时返回EmptyResultError的说法HTTP 429 抛带提示的CommandExecutionError提示 HF 对未认证流量有限流建议稍后重试其余非 2xx 状态、非法 JSON、缺失id字段也都有各自的错误分支。作者字段做了形态兼容authors元素既可能是对象取name或fullname也可能是纯字符串代码对两种形态都做了归一化。hf models/hf datasets同一套排序与过滤语义两个命令共享几乎一致的实现骨架分别见 models.js 与 datasets.js差异仅在端点/api/models与/api/datasets、models 多出的--pipeline过滤以及结果行的url分别指向https://huggingface.co/id与https://huggingface.co/datasets/id。models的选项选项说明--sortdownloads/likes/trending/created_at/last_modified默认downloads--search可选的名称/属主子串过滤如llama、mistralai/--pipeline管道标签过滤如text-generation、image-classification--limit最大条数1–100默认 20datasets的选项与之相同但无--pipeline选项说明--sort与models相同的取值集合默认downloads--search可选的名称/属主子串过滤--limit最大条数1–100默认 20源码揭示了几个值得了解的实现细节排序值做了别名容错lastmodified会自动纠正为last_modifiedcreatedat纠正为created_at其余非法值直接抛ArgumentError并列出合法取值。请求参数固定为direction-1fulltrue倒序 完整元数据limit上限 100 对应HF 单页 API 返回上限help 文本注明 Max 100; one API page因此该命令不支持翻页一次最多取 100 条。请求头携带了规范的User-Agentopencli/1.0 (https://github.com/jackwener/opencli)符合公开 API 的访问礼仪Accept固定为application/json。tags 字段做了降噪过滤掉license:前缀的标签后最多保留 10 个避免许可证标签淹没真实技术标签。空结果即错误查询无命中时抛EmptyResultErrorNo matching models/datasets on huggingface.co.方便脚本管道把查不到与空表格区分开。属主推导author列并非 API 直接字段而是从id的owner/name结构中按第一个/切分得到。hf spaces更窄的排序集与 SDK 过滤spaces命令查询/api/spaces选项为选项说明--sortlikes/created_at/last_modified默认likesHF 的 Spaces 端点不接受trending--search可选的名称/属主子串过滤如stability、openai/--sdkSDK 过滤gradio/streamlit/docker/static--limit最大条数1–100默认 20返回列为rank, id, author, sdk, likes, tags, lastModified, url。关于为什么trending不在排序集里spaces.js 头部的注释给出了实证依据开发者实际验证过 Spaces API 对trending会返回 Invalid sort parameter因此该命令的排序集刻意收窄为三项传其他值会在本地直接报错而不是把请求打到远端再失败。--sdk同样在本地做白名单校验gradio/streamlit/docker/static并且该命令对 HTTP 429 有专门的限流错误提示分支。数据往返与契约测试这组命令的设计目标之一是可组合性top输出的id列必须能无损地回填进paper命令。仓库中有一份契约测试 clis/hf/hf.test.js 专门守护这一点expect(top.columns).toEqual([rank, id, title, upvotes, authors]); expect(paper.columns).toContain(id);测试通过 OpenCLI 的全局注册器src/registry.ts 的getRegistry()取出hf/top与hf/paper两个命令对象断言列契约不被破坏。这保证即使后续重构展示逻辑榜单取 id → 详情这条最常见的 Agent 工作流路径也不会静默失效。站点认证机制公开命令之外的登录态能力值得注意的一点是尽管 5 个数据命令都不需要浏览器clis/hf/auth.js 仍通过registerSiteAuthCommands为hf站点注册了标准登录态命令。其验证策略很精巧HF 的tokencookie 是 httpOnly 的页面脚本无法直接读取因此改用文档化的/api/whoami-v2端点做无导航探测no-nav probe——在页面上下文内 fetch 该端点401/403 判定为未登录抛AuthRequiredError成功则解析出username/fullname/type三列。登录轮询poll复用同一个探测脚本等待用户在浏览器中完成登录。这意味着 OpenCLI 对 HF 的浏览器会话能力是备而不用默认路径零浏览器需要登录态时再走标准站点认证流程。小结适用前提与限制适用前提网络可访问huggingface.co的公开 API无需安装浏览器扩展、无需任何登录态。已知限制均可在源码中对应--limit硬上限 100HF 单页 API 上限不支持分页top --period weekly|monthly不接受--dateHF_ENDPOINT环境变量只影响top/paperHF 对未认证流量可能返回 429命令会给出明确的等待重试提示aiKeywords/aiSummary为 HF 生成的元数据对较老或未收录的论文可能为空。这套适配器展示了 OpenCLI 中公开 API 型站点的标准做法用Strategy.PUBLICbrowser: false声明免浏览器策略用本地参数校验把非法请求挡在发网之前用类型化错误ArgumentError/EmptyResultError/CommandExecutionError区分参数错、查无结果、远端故障三类失败再用契约测试锁定列输出的可组合性。如果你要为 OpenCLI 新增一个只提供公开 REST API 的站点clis/hf/ 下的这 7 个文件就是完整的参考实现。【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址: https://gitcode.com/gh_mirrors/ope/OpenCLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表