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绕过, 自定义脚本, 逆向工具