本页面介绍了 Open Interpreter 的异步解释器实现和服务器功能。它解释了 AsyncInterpreter 类如何支持非阻塞操作,并提供了服务器接口,以便外部应用程序通过 WebSockets 和 HTTP 端点与解释器进行交互。
有关基础 OpenInterpreter 类的更多信息,请参阅OpenInterpreter Class。有关使用服务器接口的详细信息,请参阅Server Mode。
AsyncInterpreter 扩展了核心 OpenInterpreter 的异步功能,使其能够:
来源:interpreter/core/async_core.py44-61
AsyncInterpreter 类继承自 OpenInterpreter,并增加了异步处理功能。它维护内部队列、线程管理和服务器集成。
| 属性 | 描述 |
|---|---|
respond_thread | 用于处理响应的线程 |
stop_event | 用于控制执行流程的线程事件 |
output_queue | 消息响应队列 |
unsent_messages | 未能发送的消息队列 |
id | 解释器实例的唯一标识符 |
服务器 | 用于处理 HTTP/WebSocket 连接的服务器实例 |
context_mode | 控制 OpenAI 兼容模式下的行为 |
来源:interpreter/core/async_core.py44-64
来源:interpreter/core/async_core.py44-61
AsyncInterpreter 通过队列和线程实现了异步消息流。消息以块(chunk)为单位发送,允许流式传输响应。
来源:interpreter/core/async_core.py65-104 interpreter/core/async_core.py105-108 interpreter/core/async_core.py110-207
accumulate() 方法负责从块(chunk)构建完整消息
"start": true,它会初始化一条新消息这使得消息能够逐片进行流式构建。
来源:interpreter/core/async_core.py209-277
Server 类与 FastAPI 集成,提供 HTTP 和 WebSocket 端点。它是在 AsyncInterpreter 初始化过程中创建的。
来源:interpreter/core/async_core.py300-896
WebSocket 接口(/ 端点)是与 AsyncInterpreter 进行实时通信的主要方法。
INTERPRETER_REQUIRE_AUTH,则进行可选身份验证require_acknowledge,则提供可选的确认机制// Input message chunk (start)
{
"role": "user",
"start": true
}
// Input message chunk (content)
{
"role": "user",
"type": "message",
"content": "Please help me analyze this data"
}
// Input message chunk (end)
{
"role": "user",
"end": true
}
// Output message examples
{
"role": "assistant",
"type": "message",
"content": "I'll help you analyze the data."
}
{
"role": "assistant",
"type": "code",
"format": "python",
"content": "import pandas as pd\n..."
}
{
"role": "computer",
"type": "console",
"format": "output",
"content": " A B C\n0 1 4 7\n..."
}
来源:interpreter/core/async_core.py437-632
服务器提供了多个 REST API 端点
| 端点 | 方法 | 描述 |
|---|---|---|
/heartbeat | GET | 健康检查端点 |
/ | GET | 返回用于 WebSocket 交互的 HTML 接口 |
/settings | POST | 更新解释器设置 |
/settings/{setting} | GET | 检索特定的解释器设置 |
这些端点仅在 INTERPRETER_INSECURE_ROUTES 设置为 "true" 时启用
| 端点 | 方法 | 描述 |
|---|---|---|
/run | POST | 无需 LLM 干预即可直接执行代码 |
/upload | POST | 将文件上传到服务器文件系统 |
/download/{filename} | GET | 从服务器文件系统下载文件 |
来源:interpreter/core/async_core.py300-711
服务器在 /openai/chat/completions 提供一个 OpenAI 兼容的 API 端点。这允许使用 OpenAI Python SDK 的应用程序以最少的修改与 Open Interpreter 交互。
OpenAI 端点支持用于控制行为的特殊消息令牌
| 标记 | 功能 |
|---|---|
{STOP} | 停止当前处理 |
{CONTEXT_MODE_ON} | 启用上下文累积模式 |
{CONTEXT_MODE_OFF} | 禁用上下文累积模式 |
{AUTO_RUN_ON} | 启用自动代码执行 |
{AUTO_RUN_OFF} | 禁用自动代码执行 |
{START} | 在上下文模式下,触发响应生成 |
OpenAI 兼容的 API 支持以标准 OpenAI 格式流式传输响应
data: {"id":0,"object":"chat.completion.chunk","created":1234567890,"model":"open-interpreter","choices":[{"delta":{"content":"Hello"}}]}
data: {"id":1,"object":"chat.completion.chunk","created":1234567890,"model":"open-interpreter","choices":[{"delta":{"content":" world"}}]}
来源:interpreter/core/async_core.py715-897
AsyncInterpreter 使用与核心 OpenInterpreter 相同的 LLM 集成,但异步处理响应。
AsyncInterpreter 支持具有函数调用功能的 LLM,这使得代码执行流程更加结构化。该系统使用:
execute 函数的工具 Schema来源:interpreter/core/llm/run_tool_calling.py1-316 interpreter/core/llm/llm.py1-467
AsyncInterpreter 和服务器实现包括多种安全功能
INTERPRETER_API_KEY 环境变量进行可选认证auto_run 被禁用时,在代码执行前进行确认来源:interpreter/core/async_core.py279-294 interpreter/core/async_core.py680-681
要将 AsyncInterpreter 与服务器一起使用,您可以:
这将在默认主机和端口上启动一个服务器。然后,您可以通过 WebSockets 或 REST API 连接到它。
有关从客户端应用程序使用服务器的更多详细信息,请参阅Server Mode。