菜单

核心架构

相关源文件

本文档描述了 Open Interpreter 的高级架构和主要组件。它解释了这些组件如何交互,从而使自然语言能够驱动代码执行和系统交互。

有关 OpenInterpreter 具体实现的信息,请参见OpenInterpreter 类AsyncInterpreter 和服务器功能以及用户界面

核心组件概述

Open Interpreter 围绕一个中央解释器类构建,该类协调语言模型与用户计算机之间的交互。该架构遵循模块化设计模式,将语言模型交互、代码执行和用户界面之间的关注点分离。

高级架构图

来源

类结构

核心功能通过几个关键类实现,其中OpenInterpreter 作为将所有功能整合在一起的中心类。

类层级图

来源

关键类

  1. OpenInterpreter (interpreter/core/core.py)

    • 编排整个过程的主类
    • 在消息列表中管理对话历史
    • 处理与 LLM 和 Computer 组件的交互
    • 提供核心聊天功能
  2. AsyncInterpreter:

    • 扩展 OpenInterpreter 以提供异步功能
    • 支持用于 API 访问的服务器模式
    • 处理并发客户端请求
  3. Computer:

    • 提供执行多种语言代码的能力
    • 与操作系统交互,用于文件访问、鼠标/键盘控制
    • 包含用于屏幕交互的视觉能力
    • 管理浏览器控制以执行网页任务
  4. LLM:

    • 处理与语言模型的通信
    • 支持不同的模型提供商(OpenAI、Anthropic、本地模型)
    • 管理上下文窗口和 token 限制
    • 处理流式响应

来源

消息流和处理

核心功能围绕用户、语言模型和计算机系统之间的消息处理展开。

交互序列图

来源

消息处理流程

  1. 用户输入: 当chat() 被调用时,用户的消息被添加到消息历史中。

  2. LLM 交互: 系统构建一个提示,包括

    • 包含配置和指令的系统消息
    • 用户消息历史
    • 自定义指令
  3. 响应处理: LLM 的响应通过_respond_and_store() 方法分块处理

    • 文本响应显示给用户
    • 代码块被识别并准备执行
  4. 代码执行: 如果存在代码

    • 系统会请求用户批准(如果auto_run=False
    • 代码被验证并发送到 Computer 组件
    • 执行结果被捕获并存储在消息历史中
    • 活动行跟踪显示执行过程中的进度
  5. 迭代过程: 结果可能会以循环模式发送回 LLM 进行进一步处理,直到任务完成或模型指示完成。

来源

响应生成

响应生成系统管理语言模型和计算机之间的对话流程。

响应生成流程图

响应生成过程

  1. 系统消息准备:

    • 将基础系统消息与特定语言指令结合
    • 添加自定义用户指令
    • 如果启用,则包含 Computer API 信息
  2. LLM 交互:

    • 将准备好的消息发送给语言模型
    • 分块流式传输响应
  3. 代码执行处理:

    • 检测响应中的代码块
    • 解析并验证代码和语言
    • 在用户确认后执行代码(如果需要)
    • 捕获并流式传输执行输出
  4. 循环模式:

    • 如果启用,则在代码执行后继续与 LLM 对话
    • 使用预定义的“循环中断器”来检测任务完成

来源

代码执行系统

Computer 组件处理多语言代码执行,并提供系统访问能力。

代码执行流程图

代码执行系统

  1. 语言验证:

    • 检查请求的语言是否受支持并已启用
    • 如果语言不受支持,则报告错误
  2. 安全检查:

    • 如果safe_mode 启用,则扫描代码是否存在安全问题
    • 提供自动或用户提示的安全检查选项
  3. 执行过程:

    • 通过适当的语言解释器运行代码
    • 在执行过程中跟踪活动行以提供视觉反馈
    • 实时捕获输出并将其流式传输回 OpenInterpreter
  4. 输出处理:

    • 将执行结果格式化为标准化消息格式
    • 根据max_output 设置截断大输出
    • 将输出添加到消息历史

来源

终端界面和用户体验

终端界面提供了在命令行中与 Open Interpreter 交互的主要用户体验。

终端界面流程

终端界面

  1. 初始化:

    • 解析命令行参数以配置行为
    • 应用配置文件设置
    • 设置显示环境
  2. 输入处理:

    • 通过命令行接受用户输入
    • 处理魔术命令(以% 开头)
    • 检测并处理特殊输入,如图像路径
  3. 输出显示:

    • 以 Markdown 格式渲染消息
    • 显示带有语法高亮的代码块
    • 在代码执行期间显示活动行
    • 处理不同输出类型(文本、图像、HTML)
  4. 用户交互:

    • 提示进行代码执行批准
    • 提供确认对话框
    • 处理键盘中断以停止执行

来源

配置和设置管理

Open Interpreter 通过命令行参数、配置文件和环境变量提供了广泛的配置选项。

关键配置元素

类别设置描述
LLM 配置model, temperature, api_key, api_base控制使用哪个语言模型以及其行为方式
执行控制auto_run, safe_mode, max_output决定代码执行的处理方式和安全保障
界面选项verbose, plain_text_display, multi_line控制信息如何显示给用户
特殊模式os, vision, local启用操作系统控制或本地模型等特殊功能
系统配置offline, speak_messages, conversation_history控制系统行为和功能

配置通过以下方式管理

  1. 配置文件: 预定义配置(例如local.pyvision.yaml),用于为特定用例设置 Open Interpreter

  2. 命令行参数: 启动 Open Interpreter 时传递的参数(例如--model--auto_run 等)

  3. 环境变量: API 密钥和其他设置可以通过环境变量进行设置

来源

系统集成点

Open Interpreter 与各种外部系统集成,以提供其功能。

集成图示

关键集成点包括

  1. LLM 提供商 API:

    • OpenAI、Anthropic 和其他云提供商
    • Ollama 和 LM Studio 等本地模型运行器
  2. 操作系统:

    • 文件系统访问,用于读/写文件
    • 进程执行,用于运行命令和程序
    • GUI 交互,用于屏幕捕获和输入控制
  3. Python 环境:

    • 直接访问 Python 解释器和包
    • 与 Jupyter 集成以支持笔记本
  4. Web 服务:

    • 浏览器自动化,用于网页交互
    • 对外部服务的 API 请求
    • 网页搜索功能

来源

总结

Open Interpreter 的核心架构围绕一个中央解释器类构建,该类协调语言模型与用户计算机之间的交互。模块化设计提供了清晰的关注点分离,同时实现了自然语言理解和系统执行功能之间的强大集成。

该架构的关键优势在于其灵活性——支持不同的 LLM 提供商、执行环境和接口模式,同时保持一致的交互模型。基于消息的通信系统允许通过持续的 LLM-计算机交互实现流式响应、交互式代码执行和迭代问题解决。