● Open Interpreter
获取桌面应用程序的早期访问权限 | 文档
本周我们发布了Local III,通过--local
引入了本地资源管理器。阅读更多 →
pip install open-interpreter
安装不成功?请阅读我们的安装指南。
interpreter
Open Interpreter 允许大语言模型在本地运行代码(Python、Javascript、Shell等)。安装后,您可以通过在终端中运行 $ interpreter
来通过类似ChatGPT的界面与Open Interpreter进行交互。
这为您的计算机提供了一个自然语言界面,可以访问通用功能:
- 创建和编辑照片、视频、PDF等。
- 控制Chrome浏览器进行研究
- 绘图、清理和分析大型数据集
- ...等等
⚠️ 注意:在运行代码之前,您将被要求批准。
演示
Google Colab上也提供了一个交互式演示:
还有一个受电影《她》启发的语音界面示例:
快速开始
pip install open-interpreter
终端
安装后,只需运行 interpreter
:
interpreter
Python
from interpreter import interpreter
interpreter.chat("绘制AAPL和META的标准化股票价格") # 执行单个命令
interpreter.chat() # 开始交互式聊天
GitHub Codespaces
在此存储库的GitHub页面上按下 ,
键创建一个代码空间。片刻之后,您将获得一个预装了open-interpreter的云虚拟机环境。然后您可以直接开始与其交互,并可以自由确认其执行系统命令,而无需担心损坏系统。
与ChatGPT的代码解释器的比较
OpenAI发布的代码解释器与GPT-4为完成现实世界任务提供了绝佳的机会。
然而,OpenAI的服务是托管的、闭源的,并且受到严格限制:
- 无法访问互联网。
- 预安装包的数量有限。
- 最大上传100 MB,运行时间限制120.0秒。
- 当环境结束时,状态会被清除(包括任何生成的文件或链接)。
Open Interpreter通过在本地环境中运行克服了这些限制。它可以完全访问互联网,不受时间或文件大小的限制,并且可以使用任何包或库。
这结合了GPT-4代码解释器的强大功能和本地开发环境的灵活性。
命令
**更新:**生成器更新(0.1.5)引入了流式处理:
message = "我们在哪个操作系统上?"
for chunk in interpreter.chat(message, display=False, stream=True):
print(chunk)
交互式聊天
要在终端中开始交互式聊天,可以从命令行运行 interpreter
:
interpreter
或从.py文件中运行 interpreter.chat()
:
interpreter.chat()
您也可以流式处理每个块:
message = "我们在哪个操作系统上?"
for chunk in interpreter.chat(message, display=False, stream=True):
print(chunk)
程序化聊天
为了更精确的控制,您可以直接将消息传递给 .chat(message)
:
interpreter.chat("为/videos中的所有视频添加字幕。")
# ... 将输出流式传输到您的终端,完成任务 ...
interpreter.chat("这些看起来不错,但你能让字幕更大一些吗?")
# ...
开始新的聊天
在Python中,Open Interpreter会记住对话历史。如果您想重新开始,可以重置它:
interpreter.messages = []
保存和恢复聊天
interpreter.chat()
返回一个消息列表,可以用来恢复对话,使用 interpreter.messages = messages
:
messages = interpreter.chat("我的名字是Killian。") # 将消息保存到'messages'
interpreter.messages = [] # 重置解释器("Killian"将被遗忘)
interpreter.messages = messages # 从'messages'恢复聊天("Killian"将被记住)
自定义系统消息
您可以检查和配置Open Interpreter的系统消息,以扩展其功能、修改权限或提供更多上下文。
interpreter.system_message += """
使用 -y 运行shell命令,这样用户就不需要确认它们。
"""
print(interpreter.system_message)
更改您的语言模型
Open Interpreter使用LiteLLM连接到托管的语言模型。
您可以通过设置模型参数来更改模型:
interpreter --model gpt-3.5-turbo
interpreter --model claude-2
interpreter --model command-nightly
在Python中,在对象上设置模型:
interpreter.llm.model = "gpt-3.5-turbo"
在本地运行Open Interpreter
终端
Open Interpreter可以使用OpenAI兼容的服务器在本地运行模型。(LM Studio、jan.ai、ollama等)
只需使用您的推理服务器的api_base URL运行interpreter
(对于LM studio,默认为http://localhost:1234/v1
):
interpreter --api_base "http://localhost:1234/v1" --api_key "fake_key"
或者,您可以通过运行以下命令使用Llamafile而无需安装任何第三方软件:
interpreter --local
如需更详细的指南,请查看Mike Bird的这个视频
如何在后台运行LM Studio
- 下载https://lmstudio.ai/然后启动它。
- 选择一个模型,然后点击**↓ 下载**。
- 点击左侧的**↔️**按钮(在💬下方)。
- 在顶部选择您的模型,然后点击启动服务器。
服务器运行后,您就可以开始与Open Interpreter对话了。
注意: 本地模式将您的
context_window
设置为3000,max_tokens
设置为1000。如果您的模型有不同的要求,请手动设置这些参数(见下文)。
Python
我们的Python包让您可以更好地控制每个设置。要复制并连接到LM Studio,请使用以下设置:
from interpreter import interpreter
interpreter.offline = True # 禁用在线功能,如Open Procedures
interpreter.llm.model = "openai/x" # 告诉OI以OpenAI的格式发送消息
interpreter.llm.api_key = "fake_key" # LiteLLM(我们用来与LM Studio通信)需要此项
interpreter.llm.api_base = "http://localhost:1234/v1" # 指向任何兼容OpenAI的服务器
interpreter.chat()
上下文窗口,最大令牌数
您可以修改本地运行模型的max_tokens
和context_window
(以令牌为单位)。
对于本地模式,较小的上下文窗口将使用更少的RAM,因此如果失败或变慢,我们建议尝试更短的窗口(~1000)。确保max_tokens
小于context_window
。
interpreter --local --max_tokens 1000 --context_window 3000
详细模式
为了帮助您检查Open Interpreter,我们有一个用于调试的--verbose
模式。
您可以通过使用其标志(interpreter --verbose
)或在聊天中途激活详细模式:
$ interpreter
...
> %verbose true <- 打开详细模式
> %verbose false <- 关闭详细模式
交互模式命令
在交互模式下,您可以使用以下命令来增强您的体验。以下是可用命令列表:
可用命令:
%verbose [true/false]
: 切换详细模式。不带参数或带true
时进入详细模式。带false
时退出详细模式。%reset
: 重置当前会话的对话。%undo
: 从消息历史中删除上一条用户消息和AI的回复。%tokens [prompt]
: (实验性)计算将随下一个提示作为上下文发送的令牌数,并估算其成本。如果提供了prompt
,则可选择计算该提示的令牌数和估算成本。依赖于LiteLLM的cost_per_token()
方法进行成本估算。%help
: 显示帮助信息。
配置/配置文件
Open Interpreter允许您使用yaml
文件设置默认行为。
这提供了一种灵活的方式来配置解释器,而无需每次都更改命令行参数。
运行以下命令打开配置文件目录:
interpreter --profiles
您可以在那里添加yaml
文件。默认配置文件名为default.yaml
。
多个配置文件
Open Interpreter支持多个yaml
文件,使您可以轻松切换配置:
interpreter --profile my_profile.yaml
示例FastAPI服务器
生成器更新使Open Interpreter可以通过HTTP REST端点控制:
# 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
pip install fastapi uvicorn
uvicorn server:app --reload
您也可以通过简单运行interpreter.server()
来启动一个与上述相同的服务器。
Android
在Android设备上安装Open Interpreter的分步指南可以在open-interpreter-termux仓库中找到。
安全注意事项
由于生成的代码在您的本地环境中执行,它可能会与您的文件和系统设置交互,可能导致意外结果,如数据丢失或安全风险。
⚠️ Open Interpreter在执行代码之前会要求用户确认。
您可以运行interpreter -y
或设置interpreter.auto_run = True
来绕过此确认,在这种情况下:
- 请谨慎请求修改文件或系统设置的命令。
- 像看自动驾驶汽车一样监视Open Interpreter,并准备好通过关闭终端来结束进程。
- 考虑在受限环境(如Google Colab或Replit)中运行Open Interpreter。这些环境更加隔离,降低了执行任意代码的风险。
有一个实验性的安全模式支持,可帮助减轻一些风险。
它是如何工作的?
Open Interpreter为函数调用语言模型配备了一个exec()
函数,该函数接受language
(如"Python"或"JavaScript")和要运行的code
。
然后,我们将模型的消息、代码和系统输出作为Markdown流式传输到终端。
离线访问文档
完整的文档可以在无需互联网连接的情况下随时访问。
Node是先决条件:
- 18.17.0版本或任何更高的18.x.x版本。
- 20.3.0版本或任何更高的20.x.x版本。
- 从21.0.0版本开始的任何版本,没有指定上限。
安装Mintlify:
npm i -g mintlify@latest
切换到docs目录并运行适当的命令:
# 假设您在项目的根目录
cd ./docs
# 运行文档服务器
mintlify dev
应该会打开一个新的浏览器窗口。只要文档服务器在运行,文档就可以在http://localhost:3000访问。
贡献
感谢您有兴趣贡献!我们欢迎社区的参与。
请查看我们的贡献指南以获取更多关于如何参与的详细信息。
路线图
访问我们的路线图预览Open Interpreter的未来。
注意: 本软件与OpenAI没有关联。
在您指尖上拥有一名以您的速度工作的初级程序员...可以使新的工作流程变得轻松高效,并将编程的好处带给新的受众。
— OpenAI的Code Interpreter发布