获取桌面应用早期访问权限 | 文档
Open Interpreter 可以让大语言模型(LLM)在本地运行代码(Python、Javascript、Shell 等)。安装后,通过在终端中运行 $ interpreter,你可以通过类似 ChatGPT 的界面与 Open Interpreter 聊天。
这为你的计算机提供了一个自然语言界面,以使用其通用功能:
⚠️ 注意:代码运行前会请求你的批准。
https://github.com/OpenInterpreter/open-interpreter/assets/63927363/37152071-680d-4423-9af3-64836a6f7b60
pip install git+https://github.com/OpenInterpreter/open-interpreter.git
安装不成功?请阅读我们的设置指南。
安装后,直接运行 interpreter:
interpreter
from interpreter import interpreter
interpreter.chat("绘制 AAPL 和 META 的归一化股价图") # 执行单条命令
interpreter.chat() # 开始交互式聊天
在此仓库的 GitHub 页面上按下 , 键以创建一个代码空间。稍等片刻,你将获得一个预装了 open-interpreter 的云虚拟机环境。然后你可以直接开始与它交互,并可以自由地确认其系统命令的执行,而无需担心损坏系统。
OpenAI 发布的 GPT-4 代码解释器为使用 ChatGPT 完成现实世界任务提供了一个绝佳的机会。
然而,OpenAI 的服务是托管的、闭源的,并且受到严格限制:
Open Interpreter 通过在本地环境中运行来克服这些限制。它拥有完整的互联网访问权限,不受时间或文件大小的限制,并且可以使用任何包或库。
这结合了 GPT-4 代码解释器的强大功能和你本地开发环境的灵活性。
更新: Generator 更新 (0.1.5) 引入了流式输出:
message = "What operating system are we on?"
for chunk in interpreter.chat(message, display=False, stream=True):
print(chunk)
要在终端中启动交互式聊天,可以从命令行运行 interpreter:
interpreter
或者在 .py 文件中运行 interpreter.chat():
interpreter.chat()
你也可以流式输出每个片段:
message = "What operating system are we on?"
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 来连接托管的语言模型。
你可以通过设置 model 参数来更改模型:
interpreter --model gpt-3.5-turbo
interpreter --model claude-2
interpreter --model command-nightly
在 Python 中,在对象上设置模型:
interpreter.llm.model = "gpt-3.5-turbo"
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。
服务器运行后,你就可以开始与 Open Interpreter 对话了。
注意: 本地模式会将你的
context_window设置为 3000,将max_tokens设置为 1000。如果你的模型有不同的要求,请手动设置这些参数(见下文)。
我们的 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" # 我们用来与 LM Studio 通信的 LiteLLM 需要这个
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
Generator 更新使得 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 设备上安装 Open Interpreter 的逐步指南可以在 open-interpreter-termux 仓库 中找到。
由于生成的代码在你的本地环境中执行,它可以与你的文件和系统设置交互,可能导致数据丢失或安全风险等意外结果。
⚠️ Open Interpreter 在执行代码前会请求用户确认。
你可以运行 interpreter -y 或设置 interpreter.auto_run = True 来绕过此确认,在这种情况下:
目前有实验性支持,通过 安全模式 来帮助减轻一些风险。
Open Interpreter 为 函数调用语言模型 配备了一个 exec() 函数,该函数接受一个 language(如 "Python" 或 "JavaScript")和要运行的 code。
然后我们将模型的消息、代码以及你系统的输出以 Markdown 格式流式传输到终端。
完整的文档可以在没有互联网连接的情况下随时随地访问。
Node 是前提条件:
安装 Mintlify:
npm i -g mintlify@latest
切换到 docs 目录并运行相应的命令:
# 假设你在项目的根目录
cd ./docs
# 运行文档服务器
mintlify dev
一个新的浏览器窗口应该会打开。只要文档服务器在运行,文档就将在 http://localhost:3000 可用。
感谢你有兴趣贡献!我们欢迎社区的参与。
请参阅我们的贡献指南以获取更多关于如何参与的详细信息。
访问我们的路线图以预览 Open Interpreter 的未来。
注意:本软件与 OpenAI 无关。
拥有一个能以你指尖速度工作的初级程序员……可以使新的工作流程变得轻松高效,并将编程的好处带给新的受众。
— OpenAI 代码解释器发布说明