您能给我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和软件解决方案。