英文 | https://towardsdatascience.com/the-way-you-write-code-is-about-to-change-join-the-waiting-list-8c9e544e5de0
你能给我shell命令显示当前文件夹的名称吗?好吧,这很容易;它应该是pwd。如果要导航到/ tmp文件夹怎么办?简单:cd / tmp。
现在,你最想知道的是,用于计算当前文件夹中python文件数量的命令是什么?有点棘手:find。类型的f -name'* .py'| wc -l。这并不难,也可以通过其他方式完成,但有时我们会忘记。
如果我告诉你可以编程一个脚本,该脚本可以用自然语言查询并取回你要查找的shell命令,该怎么办?
了解复杂的Shell命令具有一定的吸引力。我明白,这也可能是自尊心的增强作用。
但是,如果我告诉你可以编程一个脚本,该脚本可以使用自然语言进行查询并取回你要查找的shell命令,该怎么办?
例如,假设你有一个自然语言外壳(nlsh),并且想要获取今天的日子。它可能看起来像这样:
nlsh> What day is it?
>>> Would you like to run: date +%A [Y/n]: _
第一行是外壳的输入,而第二行则显示了可能的输出。那太酷了吧?现在,如果我告诉你今天可以使用python在30行代码之内做到这一点呢?我认为这是革命性的!在这个故事中,我们谈论OpenAI的API,这是一种访问由OpenAI开发的新AI模型的方法。自然语言的外壳只是冰山一角。
OpenAI API
OpenAI API是一种访问由OpenAI开发的新AI模型的方法。它提供了一个通用接口,你可以通过几个示例来指定所需的操作。你可以将其集成到你的产品中,对其进行微调并开发全新的应用程序,或者只是探索其局限性。该API尚未向公众开放,但是,你可以加入等待列表。
它是如何工作的?
想象一下,你想创建一个文本完成应用程序,例如自然语言外壳程序(有人可能会说这也可以看作是一个问答应用程序)。
首先,你应该通过向API展示一些你想做的事来"编程" API。越多越好,尤其是在任务复杂的情况下:
Input: Print the current directory
Output: pwdInput: List files
Output: ls -lInput: Change directory to /tmp
Output: cd /tmpInput: Count files
Output: ls -l | wc -l...
好吧,就是这样!没有第二步。结果可能不是完美的第一天,但是你可以通过在更大的示例数据集上进行训练,或者从用户提供的人工反馈中学习,来提高其性能。
OpenAI的研究将API设计得足够灵活,以使机器学习团队的工作效率更高。同时,它是如此简单,任何人都可以使用它。在后台,API运行具有GPT-3系列权重的模型,这些模型在速度和吞吐量方面得到了改进,以使此类应用程序变得实用。
什么是GPT-3?
GPT-3是OpenAI的GPT-2的发展,它标志着自然语言处理的新里程碑。GPT代表Generative Pretrained Transformer,它引用了2017年Google一项称为Transformer的创新技术。其主要目的是弄清楚特定单词在给定上下文中出现的可能性。在此基础上,我们现在可以创建可完成文本,回答问题,汇总文档等的应用程序。
自然语言Shell示例
在本节中,我们将使用python和几行代码对在序言中看到的自然语言shell进行编码。首先,python文件:
prompt = """
Input: Print the current directory
Output: pwd
Input: List files
Output: ls -l
Input: Change directory to /tmp
Output: cd /tmp
Input: Count files
Output: ls -l | wc -l
Input: Replace foo with bar in all python files
Output: sed -i .bak -- 's/foo/bar/g' *.py
Input: Push to master
Output: git push origin master
"""
template = """
Input: {}
Output:
"""
import os, click, openai
while True:
request = input(click.style('nlsh> ', 'red', bold=True))
prompt += template.format(request) result = openai.Completion.create( model='davinci', prompt=prompt, stop='/n', max_tokens=100, temperature=.0
) command = result.choices[0]['text']
prompt += command if click.confirm(f'>>> Run: {click.style(command, "blue")}', default=True):
os.system(command)
在python脚本的开头,我们为API提供了一些我们希望其执行的示例。然后,我们创建一个完成任务并使用davinci模型。我们将max_tokens设置为100以具有足够的缓冲区,并且将温度设置为0。将温度设置为0是一个好习惯,只要我们遇到的问题只有一个正确的答案。通常,温度越高,模型具有的创意自由度就越高。
最后,我们执行python nlsh.py来测试应用程序。
> The Natural Language Shell
更多例子
与OpenAI紧密合作的组织已经在使用OpenAI API。让我们看看一些非常聪明的例子。
聊天室
AI Channels是一个面向人和人工智能代理的社交网络。AI Channels使您可以与AI代理进行交互,这些代理可以帮助您产生想法,推荐书籍和电影,讲交互式故事或参加与朋友和历史上最伟大的思想家的圆桌讨论,在此您可以要求虚拟的Albert Einstein来解释相对论 或从Jane Austen获得写作技巧。
代码补全
借助OpenAI API,我们可以生成有用的上下文感知代码建议。在对来自数千个开源GitHub存储库中的代码进行了微调之后,该API根据函数名称和注释来完成代码。
代码摘要
通过其模式识别和生成功能,API可以将密集文本转换为简化的摘要。在这里,我们展示了将NDA汇总为2级阅读级别的内容的API。
结论
在这个故事中,我们看到了OpenAI API的潜力和一些用例,这些用例重新定义了使用这种自然语言理解工具的可能性。语义搜索,客户支持,聊天机器人,文本处理应用程序和生产力工具将永远改变!
关于作者
我叫Dimitris Poulopoulos,我是BigDataStack的机器学习研究员。我也是希腊比雷埃夫斯大学的博士研究生。我曾为欧洲委员会,欧盟统计局,IMF,欧洲中央银行,经合组织和宜家等主要客户设计和实施AI和软件解决方案。
如果您有兴趣阅读有关机器学习,深度学习,数据科学和DataOps的更多帖子,请在Medium,LinkedIn或Twitter上@ james2pl上关注我。