shreyashankar/gpt3-sandbox
GitHub: shreyashankar/gpt3-sandbox
一个基于 OpenAI GPT-3 API 的 Python 工具包,帮助用户通过少量代码快速创建可交互的 Web 演示应用,简化了 GPT-3 的 priming 过程和前端开发工作。
Stars: 2872 | Forks: 862
# GPT-3 沙盒:只需几分钟,将你的想法转化为演示
首次发布日期:2020 年 7 月 19 日
请注意,此仓库未处于任何活跃开发状态;仅进行基本维护。
## 描述
该项目的目标是让用户**只需几行 Python 代码**,即可使用新发布的 OpenAI GPT-3 API 创建出色的 Web 演示。
本项目解决了以下问题:
1. 自动格式化用户的输入和输出,以便模型能够有效进行模式匹配
2. 创建一个 Web 应用,供用户在本地部署并展示他们的想法
这是一个引导 GPT 将英语转换为 LaTeX 的快速示例:
```
# 构建 GPT 对象并展示一些示例
gpt = GPT(engine="davinci",
temperature=0.5,
max_tokens=100)
gpt.add_example(Example('Two plus two equals four', '2 + 2 = 4'))
gpt.add_example(Example('The integral from zero to infinity', '\\int_0^{\\infty}'))
gpt.add_example(Example('The gradient of x squared plus two times x with respect to x', '\\nabla_x x^2 + 2x'))
gpt.add_example(Example('The log of two times x', '\\log{2x}'))
gpt.add_example(Example('x squared plus y squared plus equals z squared', 'x^2 + y^2 = z^2'))
# 定义 UI 配置
config = UIConfig(description="Text to equation",
button_text="Translate",
placeholder="x squared plus 2 times x")
demo_web_app(gpt, config)
```
将此代码作为 python 脚本运行,会自动为你启动一个 Web 应用,以便你测试新的输入和输出。在 `examples` 目录中已经有 3 个示例脚本。
你也可以从 UI 中引导 GPT。为此,请将 `show_example_form=True` 连同其他参数一起传递给 `UIConfig`。
技术细节:后端使用 Flask,前端使用 React。请注意,此仓库目前不适合在生产环境中使用。
## 背景
GPT-3([Brown et al.](https://arxiv.org/abs/2005.14165))是 OpenAI 最新的语言模型。它在[之前](https://arxiv.org/abs/1706.03762)[研究](https://arxiv.org/abs/1810.04805)中设计的模型架构基础上进行了增量构建,但其关键进步在于极其擅长“少样本”(few-shot)学习。它[能](https://twitter.com/sharifshameem/status/1282676454690451457)[做](https://twitter.com/jsngr/status/1284511080715362304?s=20)[很](https://twitter.com/paraschopra/status/1284801028676653060?s=20)[多](https://www.gwern.net/GPT-3)事情,但最大的痛点之一是“priming”(即引导或播种),需要向模型提供一些输入,以便模型能够智能地创建新的输出。许多人对 GPT-3 有很好的想法,却苦于无法实现,因为 priming 是一种全新的机器学习范式。此外,要快速开发一个演示来展示一个酷炫的想法,需要大量的 Web 开发工作。我们构建这个项目是为了让我们自己产生想法的实验变得更加容易。
这个[开发者工具包](https://www.notion.so/API-Developer-Toolkit-49595ed6ffcd413e93ebff10d7e70fe7)为那些正在试验 API 的人提供了一些很棒的资源,包括示例 prompt。
## 要求
在编码方面,你只需要 Python。但要运行该应用,你需要:
* OpenAI API beta 邀请提供的 API key
* Python 3
* `yarn`
* Node 16
安装 Python 3 的说明在[这里](https://realpython.com/installing-python/),安装 `yarn` 的说明在[这里](https://classic.yarnpkg.com/en/docs/install/#mac-stable),我们建议使用 nvm 来安装(并管理)Node(说明在[这里](https://github.com/nvm-sh/nvm))。
## 设置
首先,克隆或复刻此仓库。然后要设置你的虚拟环境,请执行以下操作:
1. 在根目录下创建一个虚拟环境:`python -m venv $ENV_NAME`
2. 激活虚拟环境:` source $ENV_NAME/bin/activate`(适用于 MacOS、Unix 或 Linux 用户)或 ` .\ENV_NAME\Scripts\activate`(适用于 Windows 用户)
3. 安装依赖项:`pip install -r api/requirements.txt`
4. 添加你的 secret key:在你的电脑上的任意位置创建一个名为 `openai.cfg` 的文件,内容为 `OPENAI_KEY=$YOUR_SECRET_KEY`,其中 `$YOUR_SECRET_KEY` 看起来像 `'sk-somerandomcharacters'`(包含引号)。如果你不确定你的 secret key 是什么,请导航至 [API Keys 页面](https://beta.openai.com/account/api-keys) 并点击“Secret Key”下显示的 token 旁边的“Copy”。如果没有,请点击“Create new secret key”,然后复制它。
5. 设置你的环境变量以读取 secret key:运行 `export OPENAI_CONFIG=/path/to/config/openai.cfg`(适用于 MacOS、Unix 或 Linux 用户)或 `set OPENAI_CONFIG=/path/to/config/openai.cfg`(适用于 Windows 用户)
6. 在根目录中运行 `yarn install`
如果你是 Windows 用户,要运行这些演示,你需要修改 `api/demo_web_app.py` 中的以下行:
将 `subprocess.Popen(["yarn", "start"])` 修改为 `subprocess.Popen(["yarn", "start"], shell=True)`。
要验证你的环境是否已正确设置,请运行 `examples` 目录中的 3 个脚本之一:
`python examples/run_latex_app.py`。
你的浏览器中会弹出一个新标签页,你应该能够与 UI 进行交互了!要停止此应用,请在你的终端中运行 ctrl-c 或 command-c。
要创建你自己的示例,请查看[“入门”文档](https://github.com/shreyashankar/gpt3-sandbox/blob/master/docs/getting-started.md)。
## 交互式 Priming
GPT-3 的真正威力在于它能够在给定几个示例的情况下,学习并专门适应特定的任务。然而,priming 有时与其说是一门科学,不如说是一门艺术。使用 GPT 和 Example 类,你可以轻松试验不同的 priming 示例,并立即查看它们对 GPT-3 性能的影响。下面是一个示例,展示了当我们在 python 解释器中向它提供更多示例时,它在将英语翻译为 LaTeX 方面的逐步改进:
```
>>> from api import GPT, Example, set_openai_key
>>> gpt = GPT()
>>> set_openai_key(key)
>>> prompt = "integral from a to b of f of x"
>>> print(gpt.get_top_reply(prompt))
output: integral from a to be of f of x
>>> gpt.add_example(Example("Two plus two equals four", "2 + 2 = 4"))
>>> print(gpt.get_top_reply(prompt))
output:
>>> gpt.add_example(Example('The integral from zero to infinity', '\\int_0^{\\infty}'))
>>> print(gpt.get_top_reply(prompt))
output: \int_a^b f(x) dx
```
## 作者
以下作者提交了 20 行或更多代码(根据 Github 贡献者页面排序):
* Shreya Shankar
* Bora Uyumazturk
* Devin Stein
* Gulan
* Michael Lavelle
标签:Flask, MITM代理, OpenAI, Python, React, Syscall, Syscalls, Web开发, 人工智能, 内存规避, 无后门, 用户模式Hook绕过, 自定义脚本, 逆向工具