Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Code Interpreter API

使用 LibreChat 的 Code Interpreter API 安全地执行代码并无缝管理文件

简介

LibreChat 的 Code Interpreter API 提供了一种安全且便捷的方式,通过简单的 API 接口来执行代码并管理文件。无论您是通过 LibreChat 的 Agents 使用它,还是将其直接集成到您的应用程序中,该 API 都为您提供了一个强大的沙盒环境,用于运行多种编程语言的代码。

Code Interpreter 演示

开源

LibreChat 的 Code Interpreter 由 ClickHouse/code-interpreter 提供支持,这是一个开源(Apache 2.0)的沙盒代码执行服务。您可以自行托管该服务,并将 LibreChat 指向您自己的实例。

入门指南

  1. 部署 code-interpreter 服务(使用 Docker Compose 或 Helm,请参阅该仓库的 README)
  2. 通过 LIBRECHAT_CODE_BASEURLLIBRECHAT_CODE_API_KEY 环境变量将 LibreChat 指向它。
  3. 通过 LibreChat 的 Agents 或“运行代码”按钮安全地执行代码并生成文件

核心功能

支持的语言

在多种编程语言中执行代码:

  • Python, Node.js (JS/TS), Go, C/C++, Java, PHP, Rust, Fortran, Rscript

无缝文件处理

  • 上传文件以进行处理
  • 下载生成的输出
  • 安全文件管理
  • 基于会话的文件组织

安全与便捷

  • 安全的沙盒执行环境
  • 强隔离模式(通过 NsJail 或 libkrun 实现的 microVM)
  • 最终用户无需进行本地设置
  • 基于会话的隔离文件存储

程序化工具调用

程序化工具调用 (Programmatic Tool Calling) 让 LibreChat Agent 能够通过 Code Interpreter 沙盒路由选定的 MCP 工具。LibreChat 不再要求模型直接调用每个工具,而是提供了一个由 Code Interpreter 支持的编排工具;生成的沙盒代码可以调用已注册的工具存根 (tool stubs)、使用循环和条件判断、处理中间结果并返回最终答案。

沙盒仍然无法获得常规的网络访问权限。工具调用通过 Code Interpreter Tool Call Server 和 LibreChat 的已注册工具映射进行中转,因此只有代理(agent)可用的工具才能被调用。

使用 API

在 LibreChat 中

LibreChat 通过以下主要方法为 API 提供了一流的支持:

  1. AI Agents:在您的 agent 配置中启用 Code Interpreter,以允许其自动执行代码并处理文件。

  2. 手动执行:使用聊天界面中代码块内的“Run Code”按钮,如下所示:

  3. 程序化工具调用:启用 programmatic_tools 功能并将选定的 MCP 工具标记为 Programmatic,以便智能体(agents)能够从沙盒代码中编排这些工具。

LibreChat 中的代码解释器

设置 API key

  • 用户个人设置: 在 LibreChat 提示时输入您的 API 密钥(使用上述方法)
  • 全局设置: 在项目的 .env 文件中使用 LIBRECHAT_CODE_API_KEY 环境变量(为所有用户提供访问权限)

直接 API 集成

Code Interpreter API 可以通过简单的 API 密钥认证集成到任何应用程序中:

  1. 部署您自己的 code-interpreter 实例并创建一个 API key
  2. 在请求中使用 x-api-key 请求头包含 API 密钥

自托管基础 URL

设置 LIBRECHAT_CODE_BASEURL 环境变量,将 LibreChat 指向您自托管的 code-interpreter 实例,并使用在该部署上生成的 API 密钥,其使用方式与上述相同。

核心功能

代码执行

  • 在支持的语言中运行代码片段
  • 接收 stdout/stderr 输出
  • 获取执行统计信息(内存使用量、CPU 时间)
  • 处理程序参数
  • 访问执行状态和结果

文件操作

  • 上传输入文件
  • 下载生成的输出
  • 当 LibreChat 可以安全地提取/渲染 Office、CSV、文本和类 PDF 的工件时,可在内联预览中生成它们。
  • 列出可用文件
  • 删除不必要的文件
  • 管理文件会话

生成的工件预览在大小上受到限制。在 LibreChat 的 .env 中设置 FILE_PREVIEW_MAX_EXTRACT_BYTES 以更改用于内联预览提取的源文件大小限制;较大的文件仍可供下载。

局限性

  • 代码无法访问网络
  • 每次运行最多只能生成 10 个文件
  • 资源限制(每次执行的内存、文件上传大小以及请求配额)取决于您如何配置和部署您的环境。

使用场景

  • 代码测试:测试多种语言的代码片段
  • 文件处理 (File Processing):以编程方式转换和分析文件
  • AI Applications: 安全地执行 AI 生成的代码
  • Development Tools: 构建交互式编码环境
  • Objective Logic: 验证代码逻辑与正确性,提升 AI 模型性能

开源与自托管

Code Interpreter 服务在 Apache 2.0 许可证下开源,地址为 ClickHouse/code-interpreter。将代码执行作为独立服务可以保持核心 LibreChat 应用程序的轻量化:你仅在需要时部署沙盒基础设施,并且可以将其与聊天应用独立扩展。

该服务作为一组可独立扩展的组件(API 网关、沙盒工作进程和文件服务器)运行,并支持强隔离模式(NsJail 或通过 libkrun 实现的 microVM),因此您可以安全地运行不受信任的代码。有关 Docker Compose 和 Helm 的部署说明,请参阅该存储库的 README。


结论

Code Interpreter API 提供了一种安全、便捷的方式,可在隔离的沙盒中执行代码并管理文件。无论您是通过 LibreChat 的 Agents 使用它,还是将其直接集成到您的应用程序中,它都能为代码执行需求提供强大的解决方案。

有关详细的技术规范、部署指南和 API 参考,请参阅 code-interpreter repository

#LibreChat #CodeExecution #API #Development

这篇指南怎么样?