OpenAI Codex 教程:使用 OpenAI Codex 进行自然语言到 SQL 查询
什么是 OpenAI 法典?
OpenAI Codex 是 OpenAI 开发的人工智能模型。它解析自然语言并生成代码作为响应。它用于为编程自动完成工具 GitHub Copilot 提供支持。Codex 是 OpenAI 的 GPT-3 模型的后代,经过微调以用于编程应用程序。OpenAI 在封闭测试版中发布了 Codex 的 API。
您可以在此处访问 Codex 候补名单:https://openai.com/blog/openai-codex/ 并且通常会在几天内被接受。
这个想法
这个想法是从自然语言生成 SQL 查询。比如我们要获取所有年龄在25岁以上的用户,我们可以这样写:
获取所有年龄大于 25 岁的用户
该模型将生成以下 SQL 查询:
从年龄 > 25 岁的用户中选择 *
这使我们能够在不知道 SQL 语法的情况下编写 SQL 查询。这对于想要查询数据库的非技术人员非常有用。
让我们开始吧
确保您可以访问 Codex。如果您没有访问权限,您可以在此处访问 Codex 候补名单:https://openai.com/blog/openai-codex/ 并且通常会在几天内被接受。在我们编写任何代码之前,您可以先在 OpenAI playground 上做一些测试:https://beta.openai.com/playground。我真的建议你先做一些测试,因为它会帮助你理解模型的工作原理。
首先,我们需要安装 OpenAI Codex 库:
!pip install openai
你可以在这里找到这个库的完整文档:https://github.com/openai/openai-python
然后,我们需要导入库并设置 API 密钥
import openaiopenai.api_key = "YOUR_API_KEY"
现在,我们可以开始编写一些代码了。我们将从创建一个函数开始,该函数将从自然语言生成 SQL 查询。我们将使用该openai.Completion.create
函数生成 SQL 查询。我们将传递以下参数:
engine
:将用于生成 SQL 查询的引擎。davinci-codex
我们将在本教程中使用。prompt
:将用于生成 SQL 查询的自然语言。max_tokens
:将生成的最大令牌数。temperature
:模型的温度。温度越高,文字越随机。较低的温度会产生更可预测的文本。top_p
:top-p 采样的累积概率。1.0 意味着没有限制。较低的 top_p 导致更多的随机完成。frequency_penalty
:top-p 采样的累积概率。1.0 意味着没有限制。较低的 top_p 导致更多的随机完成。presence_penalty
:top-p 采样的累积概率。1.0 意味着没有限制。较低的 top_p 导致更多的随机完成。stop
:将停止生成的令牌序列。
def generate_sql_query(prompt, max_tokens=100, temperature=0.5, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0, stop=["\n"]): response = openai.Completion.create( engine="code-davinci-002", prompt=prompt, max_tokens=max_tokens, temperature=temperature, top_p=top_p, frequency_penalty=frequency_penalty, presence_penalty=presence_penalty, stop=stop ) return response.choices[0].text
现在,我们可以测试我们的功能了。我们将使用以下提示:
获取所有年龄大于 25 岁的用户
generate_sql_query("Get all the users that are older than 25 years old")
该模型将生成以下 SQL 查询:
SELECT * FROM users WHERE age > 25
现在我们将它们放在一个文件中,并通过控制台添加输入。
import openaiopenai.api_key = "YOUR_API_KEY"def generate_sql_query(prompt, max_tokens=100, temperature=0.5, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0): response = openai.Completion.create( engine="davinci-codex", prompt=prompt, max_tokens=max_tokens, temperature=temperature, top_p=top_p, frequency_penalty=frequency_penalty, presence_penalty=presence_penalty, ) return response.choices[0].textprompt = input("Enter your prompt - What data do you need?: ")print(generate_sql_query(prompt))
现在运行该文件并输入您的提示并返回 SQL 查询。
结论
在本教程中,我们学习了如何使用 OpenAI Codex 从自然语言生成 SQL 查询。我们还学习了如何使用 OpenAI Codex 库。您可以通过添加数据库和 Web 界面来继续改进此项目。您还可以在请求中添加更多提示,以引导模型朝着正确的方向发展并使其更加准确。您还可以在提示中添加您的数据库架构以使其更加准确。例如像这样:
USER: ID (INT), NAME (VARCHAR), AGE (DATE)POST: ID (INT), TITLE (VARCHAR), BODY (VARCHAR), USER_ID (INT)COMMENT: ID (INT), BODY (VARCHAR), POST_ID (INT), USER_ID (INT)
谢谢你!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站