How to get Codex to produce the code you want!(openai codex visual studio)
I. OpenAPI Codex 简介
A. OpenAPI Codex 是甚么
Codex 是 OpenAI 推出的 AI 模型系列,主要用于编码和开发任务。它基于大量的训练数据和深度学习的模型架构,能够生成符合语法和语义规则的代码。OpenAPI Codex 是 Codex 的一种集成化方案,提供了一系列 API 接口,使开发者能够快速调用和使用 Codex 模型。
- Codex 是 OpenAI 推出的 AI 模型系列,主要用于编码和开发任务。
- OpenAPI Codex 是 Codex 的一种集成化方案,提供了一系列 API 接口,使开发者能够快速调用和使用 Codex 模型。
B. Visual Studio Code (VSCode) 概述
VSCode 是一种流行的代码编辑器,被广泛使用于软件开发领域。它提供了丰富的扩大生态系统,使得开发者能够根据自己的需求进行定制和扩大。
- VSCode 是一种流行的代码编辑器。
- VSCode 提供了丰富的扩大生态系统。
C. VSCode 整合 OpenAPI Codex 的意义
将 OpenAPI Codex 整合到 VSCode 中,可以提供一站式开发利器,大大提高编码效力。开发者可以在编码进程中即时调用 API,取得代码片断、函数模板和毛病检测和修复等功能的支持。
- 整合 OpenAPI Codex 可以提供一站式开发利器。
- 整合 OpenAPI Codex 可以提高编码效力。
II. 怎样在 VSCode 中整合 OpenAPI Codex
A. 安装 VSCode 插件 vscode-openai
为了在 VSCode 中整合 OpenAPI Codex,可以安装名为 vscode-openai 的插件。安装该插件后,便可直接在 VSCode 中调用 Codex API。
- 通过命令面板安装插件:
- 在 Windows 上使用 Ctrl + Shift + P 打开命令面板
- 在 Mac 上使用 Command + Shift + P 打开命令面板
- 插件提供的高级功能:
- 毛病检测和修复
- 语法高亮和自动补全
III. 使用 OpenAPI Codex 的注意事项
A. 无需 OpenAI 权限
在 VSCode 插件中使用 Codex API 不需要特殊的权限,由于插件只是对 API 的封装。开发者安装插件后,只需在插件中配置 API 密钥便可使用。
- 在 VSCode 插件中使用 Codex API 不需要特殊的权限
- 插件只是对 API 的封装
B. 调用 OpenAPI Codex 的方式
要调用 OpenAPI Codex,首先需要获得 Codex API 密钥,然后在编码进程中根据需要调用相应的 API。开发者可以在高亮代码的情况下右键点击,选择调用 Codex API。API 将根据上下文生成相应的代码或建议。
- 获得 Codex API 密钥
- 申请 API 密钥
- 将密钥配置到 VSCode 插件中
- 在编码进程中调用 Codex API
- 高亮代码并右键点击调用 API
- API 将生成相应的代码或建议
IV. OpenAPI Codex 在编码进程中的利用示例
A. 提供代码完成和建议
OpenAPI Codex 可以根据上下文提供代码片断、方法和函数的模板等建议。开发者只需在编码进程中调用 Codex API,便可取得代码的自动补全和建议。
- 根据上下文提供代码片断
- 生成方法和函数的模板
B. 支持多种编程语言和框架
OpenAPI Codex 支持常见的编程语言,如 Python、JavaScript 等,并适用于流行的框架和库,如 React、Django 等。开发者可以根据自己的需求选择编程语言和框架,使用 Codex 提供的代码建议和补全功能。
- 支持常见的编程语言,如 Python、JavaScript 等
- 适用于流行的框架和库,如 React、Django 等
V. OpenAPI Codex 与其他编码辅助工具的比较
A. IntelliCode
IntelliCode 是微软推出的智能代码建议工具,通过分析用户的代码习惯和项目上下文,提供更加智能和个性化的代码建议。
- IntelliCode 是微软推出的智能代码建议工具
- IntelliCode 提供智能和个性化的代码建议
B. Tabnine
Tabnine 是一种基于机器学习的代码自动补全工具,通过学习大量的代码库和代码风格,提供准确和高效的代码补全功能。
- Tabnine 是一种基于机器学习的代码自动补全工具
- Tabnine 提供准确和高效的代码补全功能
VI. 结论
OpenAPI Codex 可以通过 VSCode 插件提供强大的编码辅助功能,帮助开发者提高开发效力和代码质量。用户可以根据自己的需求选择适合的编码辅助工具,如 OpenAPI Codex、IntelliCode 或 Tabnine 等。
- OpenAPI Codex 可以通过 VSCode 插件提供强大的编码辅助功能
- 整合 OpenAPI Codex 可以极大地提升开发效力和代码质量
- 用户可以根据自己的需求选择适合的编码辅助工具,如 OpenAPI Codex、IntelliCode 或 Tabnine 等。
openai codex visual studio的进一步展开说明
怎么让Codex产生您想要的代码!
您会不会见过可以为您生成代码的AI模型?如果您从未见过,那末由于像OpenAI的Codex模型这样的模型的出现,您很快将会面到它们。Codex是OpenAI的一系列AI模型,可以在十几种编程语言之间进行自然语言和代码的转换。这些AI模型的强大的地方在于您可以快速开发和迭代您的想法,并构建帮助人们更多地完成任务的产品。以下是一个例子,您可以与Minecraft角色进行对话,并通过在幕后生成Minecraft API命令来让角色遵守您的唆使。
本文将向您展现怎样使用一种称为提示工程的技术,让像Codex这样的模型生成您想要的代码。提示工程是使用提示来取得所需输出的一种实践方式。提示是文本序列,比如一个句子或一段代码。使用提示来引导输出的实践起源于人类。就像您可以通过给人们提供例如写作论文的主题来引导他们一样,使人惊讶的是您可使用提示来引导AI模型根据您心中的任务生成目标输出。
就像一个人写论文一样,AI模型接受一个提示,并根据提示中的文本继续写作。模型输出的新文本称为完成。例如,一个任务多是编写一个Python程序来添加两个数字。如果您将任务写成Python注释的情势,以下所示:
#编写一个函数,它可以添加两个数字并返回结果。
并将该注释作为提示给Codex,它将为您生成代码的完成结果以下:
def add(a, b): return a + b
开始使用OpenAI的最简单的方法是使用OpenAI Playground。下图显示了Codex在注释提示完成后生成的Playground。
学习怎样使用OpenAI模型的最好方法是尝试它们。请查看下面的获得访问权限部份,了解怎么开始使用。OpenAI有许多关于怎样使用他们的模型的示例,包括代码示例。对Codex,最好实践文档是了解怎样使用它的重要资源。
Codex还为GitHub Copilot提供支持,这是一个可在Visual Studio和Visual Studio Code中使用的AI配对程序员。Copilot从您编写的代码和注释中提取上下文,然后建议新的代码行或全部函数。我在VS Code中编写了本文,当我编写上面的Python示例时,Copilot自动使用Codex来建议代码。下面是Copilot工作时的截图。包括Python函数的灰色文本是Copilot推荐的完成。请注意,它乃至还建议了Markdown代码部份的闭引号。
那末,您怎样在自己的利用程序中利用类似Codex的模型的功能?像上面的例子一样简单,对Codex来讲很容易生成。对自定义的利用程序,您可能需要通过改进提示来更好地描写您的问题。这包括给Codex提供示例,以帮助告知它您的需求。本文的其余部份将为您展现提示工程的示例和技能,以帮助您取得所需的代码。
指点模型: 使用高级任务描写对模型进行指点
您刚才见到了如何告知Codex您想要的内容,然后它会生成它。Codex在生成代码方面的能力使人惊叹。其完成的质量取决于您告知它要做甚么。
首先,通常最好以对您要求Codex完成的高级描写开始提示。举个例子,假定您想让Codex生成一些Python代码来绘制来自标准数据集的数据。我们可以像这样描写我们的任务:
#从scikit-learn数据集加载鸢尾花数据并绘制训练数据。
Codex极可能会得出以下结果。请注意,生成的代码假定scikit-learn数据集包作为数据集被导入。
要修复这个问题,您可以告知Codex关于您想要它做的更多详细信息。您可以告知它您想要Python输出,并在使用之前先导入任何需要的库等附加说明。
#依照用户的唆使生成Python程序。#友好地导入先前需要的任何库。
现在的输出更公道了!它在使用之前先导入了预期的库。在提示中添加import还有助于Codex知道您想要先导入库。
这类模式将高级任务描写与更具体的用户指令结合在一起。这些都会作为提示传递给模型,然后返回一个完成。
展现模型: 使用示例对模型进行指点
提示是给AI模型的输入序列,模型会逐字逐句地生成输出。对给定的模型,您向模型提供的确切文本序列会影响其随后生成的所有输出。
假定您喜欢Codex生成的略微区别风格的Python代码。例如,添加两个数字时,您希望将参数命名为区别的名称,以下所示:
与Codex这样的模型一起工作的一般原则是告知它您想要它做甚么。告知Codex你想要甚么的一种非常有效的方法是向它展现示例。然后,它会努力调剂其输出与您喜欢的方式相匹配。如果您给Codex添加了一个包括上述示例的更长提示,则它的完成结果会与您给出的示例完全一样。
零样本学习、单样本学习和少样本学习
当您使用大型AI模型时,您可能会听到“零样本学习”这样的术语。零样本学习是指没有示例的提示,例如唯一任务描写。单样本学习有一个示例,而少样本学习有多个示例。
下面是捕捉少样本学习通用模式的图表:
描写模型: 使用高级上下文信息指点模型
Codex是在大量开源代码上进行训练的。就像您在Python的scikit-learn示例中看到的那样,它了解多种语言中的许多库和包。
如果您想使用Codex不了解的库怎样办?您现在应当知道让Codex做某件事的方法是…告知它或展现给它!具体而言,您可以在使用库之前向Codex描写API库。
Minecraft Codex示例使用Minecraft的摹拟玩家API来控制游戏中的角色。摹拟玩家API是一种TypeScript库,它允许您发出命令来移动、聊天、查看库存、发掘和制作物品。这是一个Codex尚不了解的较新的API。让我们看看对以下提示,Codex如作甚其生成代码:
/ *使用摹拟玩家API的Minecraft机器人命令。当评论具有对话性质时,机器人将作为乐于助人的Minecraft机器人进行回复。否则,它会按要求进行操作。* / / /略微向前移动一点。
Codex尝试通过“bot”和“摹拟玩家”来做出有根据的猜想:
但这不是正确的摹拟玩家代码。我们可使用库的函数签名向Codex展现Simulated Player API的模样。下面是API定义的一个子集。
// API REFERENCE: // moveRelative(leftRight: number, backwardForward: number, speed?: number): void – 将摹拟玩家的移动设置为相对玩家当前旋转的给定方向。 // stopMoving():void-如果摹拟玩家正在移动,停止移动/行走/跟随 // lookAtEntity(entity: Entity):void-将摹拟玩家的头部/身体旋转以查看给定的实体。 // jumpUp():boolean-致使摹拟玩家跳跃。 // chat(message: string):void-从摹拟玩家发送聊天消息。 // listInventory(object: Block | SimulatedPlayer | Player): InventoryComponentContainer-返回一个枚举玩家或财宝箱的所有物品的容器。
通过上面的API定义和一些示例,您可让Codex生成遵守API的代码。以下是使用API控制Minecraft角色的一些示例。
/ *包括API的一些示例用法* / //向左移动 bot.moveRelative(1, 0, 1); //停下来! bot.stopMoving(); // 向后移动半秒 bot.moveRelative(0, ⑴, 1); await setTimeout(() => bot.stopMoving(), 500);
请注意,第一个示例明确指定了moveRelative函数签名的值。一旦您做到了这一点,我们就能够向Codex发出向前移动角色的指令。然后,它将生成正确的代码。
这类模式通过API定义的高级上下文和帮助Codex了解您想要它做甚么的示例,允许您使用API生成更正确的代码。
提示模型: 使用对话历史指点模型
对带有自然语言输入的实际利用用例,能够使用对话的上下文是很重要的。斟酌以下唆使:
用户:我想点一杯12盎司的咖啡 用户:哦,并且您能把它放到20盎司的杯子里吗?
AI模型需要知道“它”指的是12盎司的咖啡。对人类来讲这很容易,但Codex是一个固定的模型:它不会根据用户的输入而改变。Codex不会记住从API调用到API调用的上一个提示是甚么,也不会记住它返回的完成是甚么。那末我们怎么让Codex知道“它”是指12盎司的咖啡呢?对了 – 我们告知它用户之前说过的话。您可以将上一个输入+完成对添加为提示的额外示例。这给Codex提供了足够的上下文来提供更好的完成。
让我们来看看在另外一个示例利用程序中这样做的情况:Codex Babylon。Codex Babylon是一个使用BabylonJS渲染3D场景的TypeScript利用程序。BabylonJS是一个流行的3D渲染框架。Codex Babylon提供了一个Web界面,可以输入自然语言命令来放置和操作3D场景中的对象。这些命令被发送到Codex以生成将对象放置在场景中的代码。然后,该代码由浏览器中的利用程序履行。
在下面的动画中,您可以看到进行自然语言输入以制作和操作立方体,Codex生成的BabylonJS代码,和在浏览器中显现的输出。您可以看到,它正确解读了用户“让它们旋转”的指令。
正如您所预期的,将输入/输出历史延续添加是不现实的。上下文的大小是有限的。因此,我们在提示中保存了用户输入历史的转动窗口。这使得Codex能够检索到像“它”这样的内容。我们将其称为会话缓冲区。Codex Babylon示例包括了会话缓冲区的实现。
将所有内容整合起来
现在,我们已准备好把所有这些放在一起了。对给定的利用程序,您可以向Codex提供一个由以下内容组成的提示:
高级任务描写:告知模型在输出自然语言时要使用友好的语气 高级上下文:描写背景信息,如API提示和数据库模式,以帮助模型理解任务 示例:向模型展现您想要的示例 用户输入:提示模型用户之前说过的话
下图中的方框可帮助您斟酌提示中包括的内容。OpenAI模型非常灵活,没有规定提示一定要遵守特定的结构。您可以在提示中任意混合这些部份(这可能会给您带来区别的结果),并且可以根据需要添加或删除这些部份。我们希望在未来覆盖这些模式的变化。进行实验并视察哪一种方式合适您!
基本原则以外
希望您喜欢这篇关于提示工程的介绍。提示工程是入门和了解Codex会不会合适您的利用程序的绝佳方式。您可以将这些相同的技术与其他OpenAI模型(如GPT⑶)和其他基础模型或大型语言模型一起使用。在将利用程序投入生产使用时,有一些问题您可能需要斟酌。
超参数
您可使用各种超参数来调剂OpenAI模型的行动,例如令牌数、温度等。超参数是定义模型行动的参数。超参数温度会影响模型每次更改怎么输出,即便输入相同。将温度设置为0应当可使您每次都取得相同的输出,最少在同一会话中是这样的。停止序列对Codex来讲非常有用,它可以禁止它生成类似代码的变体。您可以通过将停止序列设置为您正在使用的编程语言的注释序列来实现。例如在Python中使用#,在JavaScript中使用//。其他超参数在OpenAI文档中有描写。
微调
微调是使用精心策划的提示-完成数据集来定制模型的行动的进程,以适应您的用例。微调可以提高提示的完成准确性。我们将不会在此详细介绍微调,由于Codex目前还不支持此功能。这里是关于OpenAI和Azure的微调的一般文档链接。
用户体验
用户的感知可以决定您构建的内容的体验好坏。在欢迎用户使用利用程序时,请牢记以下因素有哪些。
性能:在提示工程中,如今已学到了可以增加提示大小,从而增加了处理Codex的完成响应的延迟。对生产利用程序,您可能需要减少提示大小以提高利用程序的感知延迟。一种方法是微调模型。除提高模型完成的准确性以外,微调还有一个附加的好处,即它可以通过使较短的上下文在提示中也能得到良好结果来提高性能。交互设计:您如何指点用户与Codex的交互方式对其成功使用该模型有很大影响。这一点特别重要,由于模型的输出其实不总是可靠的。例如,Copilot使用户可以轻松谢绝Codex的建议,由于用户一定要主动接受Codex的输出。由于VS Code是一个集成开发环境,所以用户可以在需要的时候编辑Codex的输出。负责任的使用:像OpenAI这样的大型模型是基于互联网数据进行训练的,可能会反应出训练数据中的偏见。要在生产中使用Codex或其他OpenAI模型,您需要进行诸如内容过滤之类的操作。OpenAI和Azure OpenAI Service都提供了履行此操作的功能。OpenAI内容过滤器在此处有描写。
提示工程作为“软件3.0”
编写提示是如何构建软件的新技能。特斯拉人工智能主管Andrej Karpathy在与Chris Olah的Twitter交换中分享了这张将设计提示称为“软件3.0”的图片。
通过您在本文中学到的内容,您可以迈出成为软件3.0专家的第一步:D!
获得使用Codex、Copilot和OpenAI的访问权限
注册OpenAI很容易。Codex当前处于有限预览阶段:注册Microsoft Build 2023参会者可以避不要钱注册使用Codex和其他OpenAI模型。请参阅此处的详细信息。他们还可以从同一页面注册使用Copilot。
Microsoft还在Azure OpenAI Service中提供OpenAI模型,具有Azure的企业功能,包括安全性、合规性和全球覆盖。Azure OpenAI Service遵守Microsoft对负责任AI使用的原则,并提供了帮助您负责任地向客户提供这些模型的工具。您可以在此处了解有关Azure OpenAI服务的更多信息并注册。
下一步
没有甚么能代替亲身玩转模型,以了解怎样使用这项使人兴奋的新技术。您还可以查看这些示例,以更详细地了解怎样使用基于Codex的利用程序,包括提示工程。
我们迫不及待地想看到您使用Codex构建的内容,帮助人们实现新的目标或更快地完成任务!如果您有任何问题或评论,请随时与我们联系。
贡献
Keiji Kanazawa(GitHub,Twitter)撰写了本文。Ryan Volum帮助我和其他人理解提示工程,并在示例利用程序中实行了许多这些技术。Dom Divakaruni,Seth Juarez,Brian Krabach,Jon Malsan,Jennifer Marsman,Adam Zukor等人审核了这篇博客文章,并提供了有价值的反馈。
openai codex visual studio的常见问答Q&A
问题1:怎么将OpenAPI Codex集成到VSCode IDE中?
答案:要将OpenAPI Codex集成到VSCode IDE中,可以依照以下步骤进行操作:
- 打开VSCode,并确保已安装最新版本的VSCode和相关依赖。
- 在VSCode中打开插件市场,搜索并安装名为”vscode-openai”的扩大。
- 安装终了后,重新启动VSCode。
- 在VSCode的侧边栏中找到并点击”Extensions”图标。
- 在Extensions中找到已安装的”vscode-openai”扩大,并点击启用。
- 配置OpenAPI Codex的API密钥,以便与OpenAPI Codex进行通讯。
- 现在,您可以在VSCode中开始使用OpenAPI Codex的功能了,例如代码提示、代码生成等。