Open Interpreter - 开放解释器

news2024/11/15 5:00:24

在这里插入图片描述


文章目录

    • 一、关于
      • 演示
      • 它是如何工作的?
      • 与 ChatGPT 的代码解释器比较
    • 二、快速开始
    • 三、更多操作
      • 1、互动聊天
      • 2、程序化聊天
      • 3、开始新的聊天
      • 4、保存和恢复聊天
      • 5、自定义系统消息
      • 6、更改模型
      • 7、在本地运行 Open Interpreter
        • 终端
        • Python
        • 上下文窗口,最大令牌
      • 8、Verbose 模式
      • 9、交互模式命令
      • 10、Configuration / Profiles
        • 多个配置文件
    • 四、示例FastAPI服务器
      • 调试模式
    • 五、其他
      • 1、安卓系统
      • 2、离线访问文档
      • 3、安全提示
      • 4、Roadmap


一、关于

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

  • github:https://github.com/OpenInterpreter/open-interpreter
  • 官网:https://www.openinterpreter.com/
  • 文档:https://docs.openinterpreter.com/
  • discord : https://discord.gg/Hvz9Axh84z
  • interactive demo : https://colab.research.google.com/drive/1WKmRXZgsErej2xUriKzxrEAXdxMSgWbb?usp=sharing
  • voice interface, inspired by Her: https://colab.research.google.com/drive/1NojYGHDgxH6Y1G1oxThEBBb2AtyODBIK

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

  • 创建和编辑照片、视频、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 代码解释器的强大功能与本地开发环境的灵活性相结合。


二、快速开始

安装

pip install open-interpreter

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

interpreter

Python 调用

from interpreter import interpreter

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

三、更多操作

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

message = "What operating system are we on?"

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

1、互动聊天

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

interpreter

interpreter.chat()从. py文件:

interpreter.chat()

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

message = "What operating system are we on?"

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

2、程序化聊天

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

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 会记录历史对话。如果你想从头开始,可以进行重置:

interpreter.messages = []

4、保存和恢复聊天

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

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

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

5、自定义系统消息

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

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

6、更改模型

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"

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


7、在本地运行 Open Interpreter


终端

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

只需使用推理服务器的api_baseURL运行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。

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

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

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


Python

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

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

interpreter --local --max_tokens 1000 --context_window 3000

8、Verbose 模式

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

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

$ 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文件设置默认行为。

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

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

interpreter --profiles

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

多个配置文件

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

interpreter --profile my_profile.yaml

四、示例FastAPI服务器

生成器更新使Open解释器能够通过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() 来启动与上述服务器相同的服务器。


调试模式

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

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

$ 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:

npm i -g mintlify@latest

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

# 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(六)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript异步编程的Promise

目录 1.对Promise的了解 &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;Promise 的优缺点 2.Promise的基本用法 &#xff08;1&#xff09;创建Promise对象 &#xff08;2&#xff09;Promise方法then() &#xff08;3&#xff09;Promise方法catch() &…

力扣SQL50 删除重复的电子邮箱 自连接删除 连表删除

Problem: 196. 删除重复的电子邮箱 &#x1f468;‍&#x1f3eb; 参考题解 Code DELETE p1 FROM Person p1,Person p2 WHEREp1.Email p2.Email AND p1.Id > p2.Id

前端Web-JavaScript(下)

主要是补全一下JavaScript 基本对象: String对象 语法格式 方式1&#xff1a; var 变量名 new String("…") ; //方式一 例如&#xff1a; var str new String("Hello String"); 方式2&#xff1a; var 变量名 … ; //方式二 例如&#xff1a; var …

CHCSA第二次作业

#01、创建以上目录和文件结构&#xff0c;并将/yasuo目录拷贝4份到/目录下 [rootlocalhost ~]# ls /yasuo // 先检查是否有yasuo目录 ls: 无法访问 /yasuo: 没有那个文件或目录 [rootlocalhost ~]# mkdir -p /yasuo/dir1 // 递归创建目录 [rootlocalhost ~]#…

Pandas的30个高频函数使用介绍

Pandas是Python中用于数据分析的一个强大的库&#xff0c;它提供了许多功能丰富的函数。本文介绍其中高频使用的30个函数。 read_csv(): 从CSV文件中读取数据并创建DataFrame对象。 import pandas as pd df pd.read_csv(data.csv) read_excel(): 从Excel文件中读取数据…

嗖嗖移动业务大厅(JDBC)

一、项目介绍 1、项目背景: 该项目旨在模拟真实的移动业务大厅&#xff0c;。用户可以注册新卡、查询账单、管理套餐、充值话费、打印消费记录等功能。同时&#xff0c;项目还模拟了用户使用场景&#xff0c;如通话、上网、发短信等&#xff0c;并根据套餐规则进行相应的扣费…

AutoCAD ObjectArx二次开发(二) 关于程序入口的介绍

在上一章节中&#xff0c;我们介绍了环境搭建和程序插件的加载&#xff0c;基本的编程模板&#xff08;框架&#xff09;已经准备就绪。接下来&#xff0c;我们将开始编写自己的业务逻辑。ARX开发的核心在于将自定义函数注册到库中&#xff0c;并通过指定的调用命令来实现功能。…

【论文解读|Data Intelligence】 Large Knowledge Model: Perspectives and Challenges

论文链接&#xff1a;Large Knowledge Model: Perspectives and Challenges (sciengine.com) 来源&#xff1a; Data Intelligence 论文介绍&#xff1a; 文章简述了人类语言和世界知识的紧密关系&#xff0c;对比了语言模型和知识图谱在表示和处理人类知识方面的优缺点&…

Candance Allegro 入门教程笔记:PCB封装库的组成元素

文章目录 一、PCB封装库的组成元素二、使用Padstack Edictor制作封装焊盘引脚三、PCB Editor软件创建贴片封装&#xff08;STM32F103T8U6 QFN36 为例&#xff09;1.引入库2.读入数据 一、PCB封装库的组成元素 一般来说&#xff0c;针对于Allegro软件&#xff0c;完整的封装是由…

blender里的辉光

cycle的辉光&#xff0c; 点开支持后期效果 eevee的辉光&#xff0c;直接点bloom就行。 eevee的透明

GORM更新操作(Save、Update、Updates)

在 Go 语言的 Web 开发中&#xff0c;GORM 是一个广泛使用的 ORM (Object-Relational Mapping) 框架。它提供了一种流畅的方式来处理数据库的交互&#xff0c;其中包括记录的更新操作。GORM中的更新操作主要是update、updates、save这几种 操作前的准备工作&#xff1a;声明模…

C语言进阶版第五课—函数递归

文章目录 1. 什么是函数递归2. 函数递归的思想3. 函数递归的限制4. 函数递归练习4.1 n的阶乘4.2 按照顺序打印一个整数的每一位4.3 自定义函数不允许创建变量&#xff0c;求字符串长度 1. 什么是函数递归 函数递归就是函数自己调用自己 图片中的函数test&#xff08;&#xff0…

Monaco 使用 TypeDefinitionProvider

Monaco 中的 TypeDefinitionProvider 和 ImplementationProvider、DefinitionProvider 类似&#xff0c;右键点击变量名称&#xff0c;现在 “选择转到类型定义”&#xff0c; 跳到指定位置。 通过 registerTypeDefinitionProvider 添加 TypeDefinitionProvider 处理方法 实现…

力扣SQL50 按日期分组销售产品 group_concact

Problem: 1484. 按日期分组销售产品 &#x1f468;‍&#x1f3eb; 参考题解 select sell_date, count(distinct product) num_sold,group_concat(distinct product order by productseparator ,) products from activities group by sell_date

度量与增长——OrionX AI算力管理工具的企业价值解读

从科学计算到人工智能&#xff0c;从AI模型开发到AI模型训练&#xff0c;从双精度到半精度&#xff0c;从OPENGL到CUDA&#xff0c;GPU都扮演着关键角色。本文主要从运维的人员的角度出发&#xff0c;来探讨GPU使用过程中遇到的管理问题和创新性解决办法。 GPU的管理和监控 相…

《电容-排容》

节省电路板空间&#xff1a;将多个电容集成在一个封装里&#xff0c;减小了占用的电路板面积。 便于安装和布线&#xff1a;提高生产效率和电路布局的便利性。 一致性较好&#xff1a;由于是同一批次生产&#xff0c;各电容的性能参数较为一致。 【参数】品牌&#xff0c;封…

网络云相册实现--nodejs后端+vue3前端

目录 主页面 功能简介 系统简介 api 数据库表结构 代码目录 运行命令 主要代码 server apis.js encry.js mysql.js upload.js client3 index.js 完整代码 主页面 功能简介 多用户系统&#xff0c;用户可以在系统中注册、登录及管理自己的账号、相册及照片。 每…

Maven实战(四)- 生命周期和插件

Maven实战&#xff08;四&#xff09;- 生命周期和插件 文章目录 Maven实战&#xff08;四&#xff09;- 生命周期和插件1.何为生命周期2.生命周期2.1.Clean生命周期2.1.Default生命周期2.3.Site生命周期 3.Maven插件3.1.插件目标3.2.插件绑定3.2.1.内置插件3.2.2.自定义插件 4…

算法学习day28

一、寻找右区间(二分法) 题意&#xff1a;题目很容易理解 但是转换为二分法有点晦涩 给你一个区间数组 intervals &#xff0c;其中 intervals[i] [starti, endi] &#xff0c;且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j &#xff0c;并满足 startj > e…

gptpdf深度解析:开源文档处理技术全攻略

目录 一、引言二、gptpdf 是什么&#xff1f;三、gptpdf 的功能特性1. 精准的 PDF 元素解析能力2. 对复杂文档结构的处理示例3. 高效的处理速度4. 低成本的优势 四、gptpdf 应用场景1. 学术研究与文献处理2. 企业文档管理3. 软件开发中的文档转换 五、gptpdf 代码示例1. 基本的…