AI 日报

OpenAI Codex 教程:使用 OpenAI Codex 进行自然语言到 SQL 查询




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未来站