码农编写代码的方式即将改变,快加入等待列表吧

fanjunjaden 2020-10-09

OpenAI API即将彻底改变编码。

码农编写代码的方式即将改变,快加入等待列表吧

您能给我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的潜力和一些用例,这些用例重新定义了使用这种自然语言理解工具的可能性。 语义搜索,客户支持,聊天机器人,文本处理应用程序和生产力工具将永远改变!

相关推荐