菜单

计算机API

相关源文件

计算机 API 是核心系统,它允许 Open Interpreter 与用户的计算机交互,将自然语言指令与可执行的系统操作连接起来。该模块提供了执行代码、捕获屏幕内容、控制输入设备、浏览网页以及执行各种系统操作的功能。它是语言模型观察和与用户系统交互的主要接口。

有关代码如何在不同编程语言中执行的信息,请参阅代码执行环境。有关通过视觉、鼠标和键盘进行操作系统交互的详细信息,请参阅操作系统交互

架构概述

计算机 API 由一个主要的Computer类组成,该类协调处理系统交互不同方面的专用组件集合。

来源:interpreter/core/computer/computer.py1-238

核心组件

Computer 类

Computer类是核心组件,用于初始化和管理 API 的所有子组件

Computer类通过对解释器的引用进行实例化,并提供代码执行、屏幕捕获和系统控制的方法。它还会生成一个系统消息,列出所有可供大型语言模型(LLMs)使用的函数。

关键属性包括

  • offline: 控制是否在离线模式下运行
  • verbose: 启用详细输出以进行调试
  • debug: 激活详细调试信息
  • emit_images: 决定是否将图像发送给语言模型
  • api_base: API 调用的基础 URL(默认为“https://api.openinterpreter.com/v0”)
  • save_skills: 控制是否自动保存技能

主要方法包括

  • run(language, code, stream=False): 在指定语言中执行代码
  • exec(code): 运行 shell 命令的快捷方式
  • screenshot(): 捕获屏幕
  • view(): screenshot 的别名
  • stop(): 停止当前执行
  • terminate(): 终止所有语言运行时

来源:interpreter/core/computer/computer.py22-238

终端组件

终端组件管理跨多种编程语言的代码执行

终端组件充当代码执行的调度器,将代码路由到适当的语言运行时。它通过语言类的插件系统支持多种语言。

关键方法

  • run(language, code, stream=False, display=False): 在指定语言中执行代码
  • stop(): 停止当前执行
  • terminate(): 终止所有语言运行时
  • get_language(language): 获取给定语言名称的语言类

来源:interpreter/core/computer/terminal/terminal.py33-208 interpreter/core/computer/terminal/languages/jupyter_language.py36-553

显示组件

显示组件提供屏幕捕获和分析功能

显示组件使语言模型能够视觉感知和分析用户的屏幕。

关键方法

  • screenshot(...): 截取整个屏幕或特定区域的截图
  • find(description, screenshot=None): 使用计算机视觉在屏幕上定位图标
  • find_text(text, screenshot=None): 使用 OCR 在屏幕上查找文本
  • get_text_as_list_of_lists(screenshot=None): 从屏幕提取所有文本

来源:interpreter/core/computer/display/display.py46-339 interpreter/core/computer/utils/computer_vision.py15-214

鼠标组件

鼠标组件提供控制鼠标光标的方法

鼠标组件支持鼠标交互自动化,包括点击通过文本或图标识别的屏幕元素。

关键方法

  • move(...): 将鼠标移动到坐标、文本或图标
  • click(...): 在当前位置或指定目标处点击
  • scroll(clicks): 滚动鼠标滚轮
  • right_click(...): 执行右键点击操作
  • position(): 获取当前鼠标位置

来源:interpreter/core/computer/mouse/mouse.py20-301

浏览器组件

浏览器组件使用 Selenium 提供网页浏览功能

浏览器组件支持网页搜索和页面分析,以收集信息。

关键方法

  • search(query): 在网络上搜索指定查询
  • fast_search(query): 搜索的优化版本
  • go_to_url(url): 导航到 URL
  • analyze_page(intent): 根据意图从当前页面提取信息
  • search_google(query, delays=True): 执行 Google 搜索

来源:interpreter/core/computer/browser/browser.py13-162

技能组件

技能组件管理可重用自动化脚本

技能组件支持创建、管理和执行可在会话之间共享的可重用技能。

关键方法

  • list(): 列出可用技能
  • import_skills(): 从技能目录导入技能
  • search(query): 搜索匹配查询的技能
  • new_skill.create(): 开始创建新技能
  • new_skill.add_step(step, code): 向技能添加步骤
  • new_skill.save(): 将技能保存到磁盘

来源:interpreter/core/computer/skills/skills.py23-207

AI 组件

AI 组件为 AI 操作提供实用工具

AI 组件支持与语言模型交互以完成特定任务。

关键方法

  • chat(text, base64=None): 与语言模型进行对话
  • query(text, query, custom_reduce_query=None): 使用 MapReduce 方法查询大型文本
  • summarize(text): 总结文本内容

来源:interpreter/core/computer/ai/ai.py116-193

与 OpenInterpreter 集成

计算机 API 通过 interpreter.computer 属性与 OpenInterpreter 集成。当解释器执行代码时,它可以访问计算机 API 以与系统交互。

使用示例

计算机 API 提供多种自动化任务功能

代码执行

屏幕交互

网页浏览

技能管理

配置

计算机 API 可以通过多个属性进行配置

扩展点

计算机 API 被设计为可扩展的。可以通过以下方式添加新功能:

  1. 通过扩展 BaseLanguage 类来创建新的语言运行时
  2. 向现有组件添加新方法
  3. 创建新组件并将其添加到 Computer

例如,要添加新的语言运行时,请创建一个实现 runstopterminate 方法的类,然后将其添加到 Terminal.languages 列表中。

安全考量

计算机 API 提供了对用户系统的‘重要访问权限。Open Interpreter 包含以下安全机制:

  1. 在执行代码前要求用户确认(当 auto_run=False 时)
  2. 限制系统访问的实验性安全模式
  3. 通过 computer.terminate() 终止运行中代码的能力

用户应注意,授予语言模型访问计算机 API 的权限,等同于授予其以用户权限在系统上执行代码的能力。

来源:interpreter/core/computer/computer.py22-238