Agents.js 发布:使用 JavaScript 为 LLMs 提供工具
Hugging Face 已推出 Agents.js,一个 JavaScript 库,旨在为 Large Language Models (LLMs) 提供工具访问。这使开发者能够构建代理,以在基于浏览器或服务器端的环境中执行多模态任务。
核心功能和使用
HfAgent 对象是库的主要入口点。开发者可以使用 Hugging Face 访问令牌实例化一个代理,并使用纯文本命令与其交互。代理通过生成 JavaScript 代码来实现目标,然后评估该代码以产生结果。
执行工作流程
使用 Agents.js 执行任务有两种主要方式:
- 手动代码生成和评估:使用
generateCode创建 JavaScript 逻辑并使用evaluateCode执行它。这是出于安全原因的推荐路径。 - 直接执行:使用
run方法在一步内生成并执行代码。
数据输出
代理返回的结果以 Update 对象形式提供,其中包含 message(信息文本)和 data(可以是字符串或 Blob)。使用 Blob 使代理能够返回诸如图像或音频之类的多模态输出。
安全考虑
执行由 LLM 生成的任意代码会带来显著的安全风险。Hugging Face 警告不要在不受信任的环境中执行此操作。为了降低此风险,建议开发者使用 generateCode 和 evaluateCode 的序列,而不是 run 方法,以便在执行前手动审查生成的代码。
自定义和可扩展性
Agents.js 的设计旨在提供灵活性,使开发者能够替换默认语言模型并添加专用工具。
自定义 LLMs
默认情况下,该库通过 Inference API 使用 OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5 模型。然而,任何接受字符串输入并返回字符串承诺的异步函数都可以用作自定义 LLM。这使得可以与其他提供商集成,例如 OpenAI 的 text-davinci-003。
自定义工具
开发者可以通过定义自定义 Tool 对象来扩展代理的功能。工具定义需要:
- A name 和 description 以帮助 LLM 了解何时使用该工具。
- Examples 由提示-代码对组成,用于指导 LLM 如何调用该工具。
- A call 函数,定义实际要执行的逻辑。
这些自定义工具可以在代理初始化期间与库提供的 defaultTools 合并。
多模态输入支持
Agents.js 支持向代理传递输入文件。通过向 generateCode 或 evaluateCode 提供 FileList,代理可以将这些文件纳入其工作流。例如,可以指示代理为上传的图像生成标题,然后使用 imageToText 和 evaluateCode 的组合将该标题转换为语音。