Experts.js

用 OpenAI Assistants API 组装可协作的多智能体工具链。

Star 数
★ 1.1k
最近更新
2 年前
License
MIT
主语言
JavaScript

30 秒速览

可在哪里用
平台专用OpenAI API
开始前需要
OpenAI Assistants APIOpenAI API keynpm package manager网络访问
典型场景
Node.js 团队要在客服或内部应用中调用 OpenAI Assistant,并希望只通过 ask() 获取回答而不处理 Run 对象。
主要局限
核心设计依赖 OpenAI Assistants API,没有记录其他模型提供商或兼容 API 的适配路径。

这个 Agent 能做什么,适合哪些场景?

Experts.js 是一个 JavaScript 库,以 Assistant、Tool 和 Thread 三个对象封装 OpenAI Assistants API。应用通过 Assistant.create() 创建或加载助手,再以 ask() 向指定 Thread 发送消息并取得输出,无需直接管理 Run 或 Run Step。Tool 是 Assistant 的子类,可由父 Assistant 调用;工具既可以由模型驱动,也可以通过 llm: false 实现自定义 ask()。库默认使用流式事件,并允许监听文本增量、工具调用、运行步骤及异步完成事件。生产部署可为 Assistant 或 Tool 提供 asst_ 格式的 id,以复用远程助手并用本地配置覆盖其配置。

开发者从 experts 导入 Assistant、Tool 和 Thread,先调用 Thread.create() 获得 thread id,再调用 Assistant.create() 创建助手,并执行 assistant.ask(message, threadID)。ask() 接受字符串或原生 OpenAI message 对象,并在内部管理 Run;调用期间可通过 on("textDelta") 等事件接收文本、图像文件和工具调用输出。父 Assistant 通过 addAssistantTool(ToolClass) 注册 Tool;LLM 驱动的 Tool 会把自身响应作为父级工具输出,非 LLM Tool 则必须自行实现 ask(message)。线程关系会写入 OpenAI thread metadata,以便在父子助手之间为 Tool 查找或创建独立线程。

  1. Node.js 团队要在客服或内部应用中调用 OpenAI Assistant,并希望只通过 ask() 获取回答而不处理 Run 对象。
  2. 需要把商品目录检索、OpenSearch 查询生成等职责拆分为可由主助手调用的 Tool 的应用开发者。
  3. Express 服务需要通过 textDelta 事件将助手回复以分块文本流式返回给浏览器。
  4. 知识库应用需要在 Assistant 配置中使用 file_search 和 vector_store_ids 检索 OpenAI Vector Store 中的文件。
  5. 需要为不同子工具维持独立上下文、避免父线程等待工具输出时发生线程锁定的多助手系统。

如何安装或部署这个 Agent?

安装:npm install experts。代码中使用 import { Assistant, Tool, Thread } from "experts";。开发环境文档要求创建 .env.development.local,其中包含 OPENAI_API_KEY=sk-...POST_IMAGES_API_KEY=...,然后可运行 ./bin/setup./bin/test。最小调用为:const thread = await Thread.create(); const assistant = await Assistant.create(); const output = await assistant.ask("Say hello.", thread.id);

如何使用这个 Agent?

定义 Assistant 子类时向 super() 传入 name、instructions、model、tools 或 tool_resources;默认模型为 gpt-4o-mini。使用 this.addAssistantTool(EchoTool) 把 Tool 加入父助手,且应在 super() 之后调用。要流式处理回复,创建助手后注册 assistant.on("textDelta", (delta) => process.stdout.write(delta.value)),再执行 ask()。部署时把已有的 asst_... id 传入构造选项;如不希望用本地配置更新远程助手,可设定 skipUpdate: true

这个 Agent 有哪些优点和局限?

优点
  • 将 Assistant、Tool 与 Thread 提炼为三个主要对象,并把 Run 管理隐藏在 ask() 接口之后。
  • Assistant 可直接作为父助手的函数工具,支持多层工具编排和父子线程关联。
  • 提供 textDelta、toolCallDelta、runStepDone、end 及对应异步完成事件,适合流式 UI 和运行指标采集。
  • 支持 OpenAI 原生工具配置,包括 file_search、code_interpreter、函数调用和 Vector Store 资源。
局限
  • 核心设计依赖 OpenAI Assistants API,没有记录其他模型提供商或兼容 API 的适配路径。
  • 每个问题都需要 thread ID;应用仍需负责保存聊天场景中的线程标识。
  • LLM Tool 的函数名必须在父助手全部工具名中唯一,命名冲突会影响调用。
  • 流式 SSE 事件不适合直接 async/await;异步工作需要改用 textDoneAsync、endAsync 等扩展事件。

这个 Agent 与同类方案有什么区别?

与直接使用 OpenAI Chat Completions API 相比,Experts.js 面向 Assistants、Threads、Runs 和工具编排;与 Custom GPTs 相比,README 所述的基础是可由应用代码调用的 OpenAI Assistants API。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 Star 最近更新 主语言 完整支持的平台
Experts.js 当前 55 · 缺口较多 ★ 1.1k 2 年前 JavaScript OpenAI API
Hello-Agents 智能体教程 54 · 缺口较多 ★ 81k 1 天前 Python OpenAI API
Dynamiq 智能体编排框架 61 · 存在缺口 ★ 1.1k 1 天前 Python OpenAI API
LangGraph Multi-Agent Swarm 51 · 缺口较多 ★ 1.6k 4 天前 Python OpenAI API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
55/ 100 五分制 2.8 / 5
信任安全 10/29
可靠稳定 8/14
适用触发 12/18
规范维护 12/18
有效结果 9/13
证据核验 4/8
查看各维度的扣分理由
信任安全10 / 29 · 1.7/5

证据显示:项目使用MIT许可证,作者为Ken Collins,但发布者未经验证。代码中未发现恶意行为,但存在外部API调用(OpenAI、postimages),且测试需要API密钥。未发现用户确认机制,数据流透明度有限,敏感数据处理未明确。依赖项包括openai和eventemitter2,但未提供安全审计。外部效果包括创建和删除OpenAI资源,但未提供回滚机制。来源归属明确,但发布者身份未知。扣分原因:缺少用户确认、数据流透明度不足、敏感数据处理不明确、依赖安全未审计、外部效果无回滚。

可靠稳定8 / 14 · 2.9/5

证据显示:README和代码示例一致,测试套件存在,但测试依赖外部API,可能不稳定。依赖项在package.json中明确,但未提供版本锁定。失败消息未详细说明。扣分原因:测试依赖外部服务,失败消息不充分。

适用触发12 / 18 · 3.3/5

证据显示:README提供了多种使用场景,包括产品目录、流式传输、图像消息、向量存储等。能力边界在文档中有所说明,但未明确限制。触发精度通过工具名称和描述实现,但未详细说明。环境适配支持ES6和CommonJS,但未提供浏览器支持。扣分原因:能力边界不明确,触发精度依赖模型。

规范维护12 / 18 · 3.3/5

证据显示:README结构清晰,安装说明简单,命名稳定,示例丰富,但已知限制未明确。许可证为MIT,版本号存在,但变更日志未提供。维护责任由作者承担,但未明确。扣分原因:已知限制未列出,变更日志缺失。

有效结果9 / 13 · 3.5/5

证据显示:输出可用性高,提供了多种输出方式。边际价值高,简化了Assistants API的使用。成本效益合理,但未提供性能数据。扣分原因:成本效益未量化。

证据核验4 / 8 · 2.5/5

证据显示:README中的声明与代码一致,测试套件提供了部分验证。但未提供独立验证。事实与推断分离良好。扣分原因:跨来源验证不足。

风险与缓解建议
  • 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
  • 发布者身份未经验证,使用前应自行评估风险。
  • 测试依赖外部API和密钥,可能不稳定且存在安全风险。
  • 未提供用户确认机制,工具调用可能自动执行。
  • 依赖项未进行安全审计,建议检查依赖漏洞。
证据充分度: 评估于 2026年8月9日 审查版本 50ccd739b655
查看完整评分方法 →

常见问题

它能接入 Claude 或其他模型吗?
没有。文档只说明 OpenAI Assistants API 和 OpenAI 的相关资源,未记录其他提供商适配。
是否必须手动创建和轮询 Run?
通常不必。Assistant.ask() 管理 Run;但可在构造选项的 run_options 或单次 ask() 的 run 选项中传递创建 Run 的参数。
生产环境如何避免每次创建新的助手?
在 Assistant 或 Tool 构造选项中提供已有的 asst_ 格式 id。未提供 id 时,创建操作会新建助手。
费用如何计算?
仓库没有提供价格或成本估算。运行需要 OpenAI API key,具体费用信息未在所给材料中说明。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents