Open Interpreter - 开放解释器


文章目录


一、关于

Open Interpreter(开放解释器) 可以让大语言模型(LLMs)在本地运行代码(比如 Python、JavaScript、Shell 等)。安装后,在终端上运行 $ interpreter 即可通过类似 ChatGPT 的界面与 Open Interpreter 聊天。


本软件为计算机的通用功能提供了一个自然语言界面,比如:

  • 创建和编辑照片、视频、PDF 等
  • 控制 Chrome 浏览器进行搜索
  • 绘制、清理和分析大型数据集
  • ...

⚠️ 注意:在代码运行前都会要求您批准执行代码。


演示

Open.Interpreter.Demo.mp4


它是如何工作的?

Open Interpreter 为函数调用语言模型配备了 exec() 函数,该函数接受 编程语言(如 "Python "或 "JavaScript")和要运行的 代码

然后,它会将模型的信息、代码和系统的输出以 Markdown 的形式流式传输到终端。


与 ChatGPT 的代码解释器比较

OpenAI 发布的 Code Interpreter 和 GPT-4 提供了一个与 ChatGPT 完成实际任务的绝佳机会。

但是,OpenAI 的服务是托管的,闭源的,并且受到严格限制:

  • 无法访问互联网。
  • 预装软件包数量有限
  • 允许的最大上传为 100 MB,且最大运行时间限制为 120.0 秒
  • 当运行环境中途结束时,之前的状态会被清除(包括任何生成的文件或链接)。

Open Interpreter(开放解释器)通过在本地环境中运行克服了这些限制。它可以完全访问互联网,不受运行时间或是文件大小的限制,也可以使用任何软件包或库。

它将 GPT-4 代码解释器的强大功能与本地开发环境的灵活性相结合。


二、快速开始

安装

shell 复制代码
pip install open-interpreter

安装后,要在终端中开始交互式聊天,运行:

shell 复制代码
interpreter

Python 调用

python 复制代码
from interpreter import interpreter

interpreter.chat("Plot AAPL and META's normalized stock prices") # 执行单一命令
interpreter.chat() # 开始交互式聊天

三、更多操作

更新:生成器更新(0.1.5)引入了流:

shell 复制代码
message = "What operating system are we on?"

for chunk in interpreter.chat(message, display=False, stream=True):
  print(chunk)

1、互动聊天

要在终端中开始交互式聊天,请从命令行运行interpreter

shell 复制代码
interpreter

interpreter.chat()从. py文件:

shell 复制代码
interpreter.chat()

您还可以流式传输每个块:

shell 复制代码
message = "What operating system are we on?"

for chunk in interpreter.chat(message, display=False, stream=True):
  print(chunk)

2、程序化聊天

为了更精确的控制,您可以通过 .chat(message) 直接传递消息 :

python 复制代码
interpreter.chat("Add subtitles to all videos in /videos.")

# ... Streams output to your terminal, completes task ...

interpreter.chat("These look great but can you make the subtitles bigger?")

# ...

3、开始新的聊天

在 Python 中,Open Interpreter 会记录历史对话。如果你想从头开始,可以进行重置:

python 复制代码
interpreter.messages = []

4、保存和恢复聊天

interpreter.chat()()返回一个消息列表,可用于恢复与interpreter.messages = messages

python 复制代码
messages = interpreter.chat("My name is Killian.") # 保存消息到 'messages'
interpreter.messages = [] # 重置解释器 ("Killian" 将被遗忘)

interpreter.messages = messages # 从 'messages' 恢复聊天 ("Killian" 将被记住)

5、自定义系统消息

你可以检查和配置 Open Interpreter 的系统信息,以扩展其功能、修改权限或赋予其更多上下文。

python 复制代码
interpreter.system_message += """
使用 -y 运行 shell 命令,这样用户就不必确认它们。
"""
print(interpreter.system_message)

6、更改模型

Open Interpreter 使用LiteLLM连接到语言模型。

您可以通过设置模型参数来更改模型:

python 复制代码
interpreter --model gpt-3.5-turbo
interpreter --model claude-2
interpreter --model command-nightly

在 Python 环境下,您需要手动设置模型:

python 复制代码
interpreter.llm.model = "gpt-3.5-turbo"

在此处为您的语言模型找到适当的"模型"字符串。


7、在本地运行 Open Interpreter


终端

Open解释器可以使用与OpenAI兼容的服务器在本地运行模型。(LM Studio、jan.ai、ollama等)

只需使用推理服务器的api_baseURL运行interpreter(对于LM Studio,默认http://localhost:1234/v1):

shell 复制代码
interpreter --api_base "http://localhost:1234/v1" --api_key "fake_key"

或者,您可以使用Llamafile而无需安装任何第三方软件,只需运行

shell 复制代码
interpreter --local

有关更详细的指南,请查看Mike Bird的此视频

如何在后台运行LM Studio。

  1. 下载https://lmstudio.ai/然后启动它。
  2. 选择型号,然后单击↓下载。
  3. 单击左侧(💬下方)的↔️按钮。
  4. 在顶部选择您的模型,然后单击启动服务器。

服务器运行后,您可以使用Open解释器开始对话。

**注意:**本地模式将您的context_window设置为3000,max_tokens为1000。如果您的型号有不同的要求,请手动设置这些参数(见下文)。


Python

我们的Python包让您可以更好地控制每个设置。要复制并连接到LM Studio,请使用以下设置:

shell 复制代码
from interpreter import interpreter

interpreter.offline = True # Disables online features like Open Procedures
interpreter.llm.model = "openai/x" # Tells OI to send messages in OpenAI's format
interpreter.llm.api_key = "fake_key" # LiteLLM, which we use to talk to LM Studio, requires this
interpreter.llm.api_base = "http://localhost:1234/v1" # Point this at any OpenAI compatible server

interpreter.chat()

上下文窗口,最大令牌

您可以修改本地运行模型的max_tokenscontext_window(以令牌形式)。

对于本地模式,较小的上下文窗口将使用较少的RAM,因此如果失败/速度较慢,我们建议尝试更短的窗口(约1000)。确保max_tokens小于context_window

shell 复制代码
interpreter --local --max_tokens 1000 --context_window 3000

8、Verbose 模式

为了帮助您检查开放解释器,我们有一个用于调试的--verbose模式。

您可以使用它的标志(interpreter --verbose)或聊天中激活详细模式:

shell 复制代码
$ interpreter
...
> %verbose true <- Turns on verbose mode

> %verbose false <- Turns off verbose mode

9、交互模式命令

在交互模式下,您可以使用以下命令来增强您的体验。以下是可用命令列表:

可用命令:

  • %verbose [true/false]:切换详细模式。不带参数或带true参数 进入详细模式。使用false则退出详细模式。
  • %reset:重置当前会话的对话。
  • %undo:从消息历史记录中删除上一条用户消息和AI的响应。
  • %tokens [prompt]:(实验 )计算将与下一个提示作为上下文一起发送的令牌,并估计它们的成本。如果提供了prompt,可以选择计算令牌和估计成本。依赖于LiteLLM的cost_per_token()方法来估计成本。
  • %help:显示帮助消息。

10、Configuration / Profiles

打开解释器允许您使用yaml文件设置默认行为。

这提供了一种灵活的方式来配置解释器,而无需每次都更改命令行参数。

运行以下命令打开配置文件目录:

shell 复制代码
interpreter --profiles

您可以在那里添加yaml文件。默认配置文件名为default.yaml

多个配置文件

Open解释器支持多个yaml文件,允许您在配置之间轻松切换:

shell 复制代码
interpreter --profile my_profile.yaml

四、示例FastAPI服务器

生成器更新使Open解释器能够通过HTTP REST端点进行控制:

shell 复制代码
# server.py

from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from interpreter import interpreter

app = FastAPI()

@app.get("/chat")
def chat_endpoint(message: str):
    def event_stream():
        for result in interpreter.chat(message, stream=True):
            yield f"data: {result}\n\n"

    return StreamingResponse(event_stream(), media_type="text/event-stream")

@app.get("/history")
def history_endpoint():
    return interpreter.messages

shell 复制代码
pip install fastapi uvicorn
uvicorn server:app --reload

您也可以通过简单地运行 interpreter.server() 来启动与上述服务器相同的服务器。


调试模式

为了帮助贡献者检查和调试 Open Interpreter,--verbose 模式提供了详细的日志。

您可以使用 interpreter --verbose 来激活调试模式,或者直接在终端输入:

python 复制代码
$ interpreter
...
> %verbose true <- 开启调试模式

> %verbose false <- 关闭调试模式

五、其他

1、安卓系统

在Android设备上安装Open解释器的分步指南可在open-interpreter-termux 存储库中找到。


2、离线访问文档

完整的留档可随时随地访问,无需互联网连接。

节点是一个先决条件:

  • 版本 18.17.0 或任何更高版本 18.x.x 版本。
  • 版本 20.3.0 或任何更高版本 20.x.x 。
  • 从 21.0.0 开始的任何版本,没有指定上限。

安装Mintlify

shell 复制代码
npm i -g mintlify@latest

切换到docs目录并运行相应的命令:

shell 复制代码
# Assuming you're at the project's root directory
cd ./docs

# Run the documentation server
mintlify dev

应该会打开一个新的浏览器窗口。只要留档服务器在运行,留档就http://localhost:3000可用。


3、安全提示

由于生成的代码是在本地环境中运行的,因此会与文件和系统设置发生交互,从而可能导致本地数据丢失或安全风险等意想不到的结果。

⚠️ 所以在执行任何代码之前,Open Interpreter 都会询问用户是否运行。

您可以运行 interpreter -y 或设置 interpreter.auto_run = True 来绕过此确认,此时:

  • 在运行请求修改本地文件或系统设置的命令时要谨慎。
  • 请像驾驶自动驾驶汽车一直握着方向盘一样留意 Open Interpreter,并随时做好通过关闭终端来结束进程的准备。
  • 考虑在 Google Colab 或 Replit 等受限环境中运行 Open Interpreter 的主要原因是这些环境更加独立,从而降低执行任意代码导致出现问题的风险。

实验性 支持的安全模式,以帮助减轻一些风险。


4、Roadmap

若要预览 Open Interpreter 的未来,请查看我们的路线图

请注意:此软件与 OpenAI 无关。


2024-08-03(六)

相关推荐
Mr数据杨8 小时前
【CanMV K210】显示交互 LCD1602 I2C 通信与滚动文本显示
人工智能·交互·硬件开发·canmv k210
孟陬16 小时前
一个小小 alias,提升开发幸福感
前端·后端·命令行
来尔君17 小时前
Git Bash 提示符简化(就是每次敲命令时上面显示的那一行信息)
git·命令行
Mr数据杨17 小时前
【CanMV K210】显示交互 OLED 128x64 智能状态面板设计
人工智能·交互·硬件开发·canmv k210
之歆2 天前
DAY_14JavaScript DOM 进阶:HTML DOM 接口、事件监听与经典交互实战
开发语言·前端·javascript·html·ecmascript·交互
长安第一美人2 天前
工业级实时监控系统开发:PHP+ZMQ+JS 前后端分离架构全解析
前端·嵌入式硬件·架构·交互·rk3588·zmq后端
UXbot3 天前
评审前2小时完成页面布局:前端AI工具快速出图工作流
前端·人工智能·交互·产品经理·web app·ui设计
ppandss13 天前
JavaWeb从0到1-DAY8-前后端交互(基础)
交互
纤纡.3 天前
解锁大模型应用实战:从文本处理到智能交互的全维度实践
阿里云·语言模型·交互
Bode_20023 天前
用户为中心交互系统工程在智能制造系统中应用
人工智能·交互·制造