OpenInterpreter 类是 Open Interpreter 系统的核心协调点。该类管理用户、语言模型和代码执行环境之间的交互。它处理整个对话流程、处理消息、执行代码,并在应用程序中维护状态。
有关在此类之上构建的异步实现和服务器功能的信息,请参阅AsyncInterpreter 和服务器功能。
来源:interpreter/core/core.py24-40
OpenInterpreter 类职责包括:
messages 属性中维护对话历史记录llm 组件提示语言模型computer 组件执行代码OpenInterpreter 类通过其构造函数参数提供广泛的配置选项。
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
| messages | list | [] | 用于存储对话历史的列表 |
| offline | bool | 否 | 是否在离线模式下运行 |
| auto_run | bool | 否 | 无需确认即可运行生成的代码 |
| verbose | bool | 否 | 显示详细日志 |
| debug | bool | 否 | 启用调试模式 |
| max_output | int | 2800 | 代码输出中的最大字符数 |
| safe_mode | str | "off" | 安全模式(“off”、“ask”、“auto”) |
| shrink_images | bool | True | 是否调整图像大小 |
| loop | bool | 否 | 自动继续提示 LLM |
| system_message | str | default_system_message | LLM 的基础提示 |
| custom_instructions | str | "" | 额外的 LLM 指令 |
| computer | Computer | Computer(self) | 用于代码执行的实例 |
| llm | Llm | Llm(self) | 用于 LLM 交互的实例 |
来源:interpreter/core/core.py42-140
构造函数初始化类的状态变量、设置和组件
来源:interpreter/core/core.py42-140
chat 方法是与解释器交互的主要入口点
参数
message:用户输入(字符串、字典或消息列表)display:是否在终端界面中显示stream:是否流式传输响应分块blocking:是否阻塞直到完成返回值
stream=True:生成器生成响应分块stream=False:新消息列表来源:interpreter/core/core.py164-215
处理消息并流式传输响应的内部方法
当 display=True 传递时,此方法处理不同的消息格式并与终端界面集成。
来源:interpreter/core/core.py217-296
处理响应分块,添加消息分隔符,并存储消息
来源: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 使用结构化消息格式来表示对话中不同类型的内容。
| 角色 | 类型 | 格式 | 描述 |
|---|---|---|---|
| user | message | - | 用户输入文本 |
| user | image | path/base64 | 来自用户的图像输入 |
| 助手 (assistant) | message | - | LLM 的文本响应 |
| 助手 (assistant) | code | language | LLM 生成的代码 |
| computer | console | output | 代码执行输出 |
| computer | console | active_line | 当前执行行 |
| computer | confirmation | execution | 代码执行确认 |
响应分块可能包含控制消息渲染的特殊属性
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
位于 interpreter/core/respond.py 中的 respond 函数处理与语言模型的交互
来源:interpreter/core/respond.py52-101
Computer 组件处理代码执行和系统交互
来源:interpreter/core/respond.py167-402
messages 属性将对话历史记录存储为消息字典列表。此历史记录
如果 conversation_history=True,OpenInterpreter 可以将对话保存到磁盘
这允许用户
来源:interpreter/core/core.py261-290
来源:interpreter/core/core.py164-215
OpenInterpreter 类是 Open Interpreter 系统的核心组件,负责
理解此类对于有效使用、扩展或定制 Open Interpreter 系统至关重要。
来源:interpreter/core/core.py24-40 interpreter/core/core.py164-215