菜单

OpenInterpreter 类

相关源文件

OpenInterpreter 类是 Open Interpreter 系统的核心协调点。该类管理用户、语言模型和代码执行环境之间的交互。它处理整个对话流程、处理消息、执行代码,并在应用程序中维护状态。

有关在此类之上构建的异步实现和服务器功能的信息,请参阅AsyncInterpreter 和服务器功能

架构概述

来源:interpreter/core/core.py24-40

OpenInterpreter 类职责包括:

  1. messages 属性中维护对话历史记录
  2. 通过 llm 组件提示语言模型
  3. 通过 computer 组件执行代码
  4. 处理模型响应和代码执行结果
  5. 提供实时响应流
  6. 管理对话状态和持久性

初始化和配置

OpenInterpreter 类通过其构造函数参数提供广泛的配置选项。

主要初始化参数

参数类型默认描述
messageslist[]用于存储对话历史的列表
offlinebool是否在离线模式下运行
auto_runbool无需确认即可运行生成的代码
verbosebool显示详细日志
debugbool启用调试模式
max_outputint2800代码输出中的最大字符数
safe_modestr"off"安全模式(“off”、“ask”、“auto”)
shrink_imagesboolTrue是否调整图像大小
loopbool自动继续提示 LLM
system_messagestrdefault_system_messageLLM 的基础提示
custom_instructionsstr""额外的 LLM 指令
computerComputerComputer(self)用于代码执行的实例
llmLlmLlm(self)用于 LLM 交互的实例

来源:interpreter/core/core.py42-140

构造函数实现

构造函数初始化类的状态变量、设置和组件

来源:interpreter/core/core.py42-140

核心方法

chat 方法

chat 方法是与解释器交互的主要入口点

参数

  • message:用户输入(字符串、字典或消息列表)
  • display:是否在终端界面中显示
  • stream:是否流式传输响应分块
  • blocking:是否阻塞直到完成

返回值

  • 如果 stream=True:生成器生成响应分块
  • 如果 stream=False:新消息列表

来源:interpreter/core/core.py164-215

_streaming_chat 方法

处理消息并流式传输响应的内部方法

display=True 传递时,此方法处理不同的消息格式并与终端界面集成。

来源:interpreter/core/core.py217-296

_respond_and_store 方法

处理响应分块,添加消息分隔符,并存储消息

来源:interpreter/core/core.py297-427

其他实用方法

方法目的
reset()清除消息历史并终止进程
wait()等待响应完成
display_message(markdown)向用户显示格式化消息
local_setup()打开本地模型设置向导

来源:interpreter/core/core.py141-446

消息流图

来源:interpreter/core/core.py164-215 interpreter/core/respond.py14-464

方法调用序列

来源:interpreter/core/core.py297-427 interpreter/core/respond.py14-464

消息结构

OpenInterpreter 使用结构化消息格式来表示对话中不同类型的内容。

消息类型和格式

角色类型格式描述
usermessage-用户输入文本
userimagepath/base64来自用户的图像输入
助手 (assistant)message-LLM 的文本响应
助手 (assistant)codelanguageLLM 生成的代码
computerconsoleoutput代码执行输出
computerconsoleactive_line当前执行行
computerconfirmationexecution代码执行确认

消息流控制分块

响应分块可能包含控制消息渲染的特殊属性

  • start:表示消息段的开始
  • end:表示消息段的结束
  • content:消息的实际内容
  • format:附加格式信息(例如,代码的语言)

来源:interpreter/core/core.py297-427

与系统组件集成

终端界面集成

display=True 传递给 chat 方法时,OpenInterpreter 会与终端界面集成,以提供交互式控制台体验。

来源:interpreter/core/core.py222-224 interpreter/terminal_interface/terminal_interface.py47-542

LLM 集成

位于 interpreter/core/respond.py 中的 respond 函数处理与语言模型的交互

  1. 构建包含特定语言添加内容的系统消息
  2. 为 LLM 准备消息历史
  3. 使用准备好的消息运行语言模型
  4. 处理 LLM 的响应
  5. 如果存在,则提取并执行代码
  6. 处理错误和预算限制

来源:interpreter/core/respond.py52-101

计算机系统集成

Computer 组件处理代码执行和系统交互

  1. 验证语言和代码
  2. 设置执行环境
  3. 运行代码并捕获输出
  4. 处理用于显示的活动行信息
  5. 在需要时终止进程
  6. 同步 OpenInterpreter 和 Computer 之间的状态

来源:interpreter/core/respond.py167-402

状态管理

消息历史

messages 属性将对话历史记录存储为消息字典列表。此历史记录

  • 为语言模型提供上下文
  • 用于向用户显示对话
  • 可以保存以便将来检索

来源:interpreter/core/core.py85

对话持久化

如果 conversation_history=True,OpenInterpreter 可以将对话保存到磁盘

这允许用户

  • 回顾过去的对话
  • 从以前的会话继续对话
  • 与他人共享对话历史

来源:interpreter/core/core.py261-290

实际用法示例

基本用法

配置安全

流式响应

非阻塞操作

来源:interpreter/core/core.py164-215

总结

OpenInterpreter 类是 Open Interpreter 系统的核心组件,负责

  1. 管理用户与语言模型之间的对话
  2. 处理和执行各种语言的代码
  3. 处理响应流和状态管理
  4. 提供安全和性能配置选项
  5. 与终端界面和其他组件集成

理解此类对于有效使用、扩展或定制 Open Interpreter 系统至关重要。

来源:interpreter/core/core.py24-40 interpreter/core/core.py164-215