碼農(nóng)編寫代碼的方式即將改變,快加入等待列表吧
OpenAI API即將徹底改變編碼。

您能給我shell命令顯示當(dāng)前文件夾的名稱嗎? 好吧,這很容易; 它應(yīng)該是pwd。 如果要導(dǎo)航到/ tmp文件夾怎么辦? 簡單:cd / tmp。
現(xiàn)在,您最想知道的是,用于計算當(dāng)前文件夾中python文件數(shù)量的命令是什么? 有點棘手:find。 類型的f -name'* .py'| wc -l。 這并不難,也可以通過其他方式完成,但有時我們會忘記。
如果我告訴您可以編程一個腳本,該腳本可以用自然語言查詢并取回您要查找的shell命令,該怎么辦?
了解復(fù)雜的Shell命令具有一定的吸引力。 我明白,這也可以起到自尊心的增強(qiáng)作用。 但是,如果我告訴您可以編程一個腳本,該腳本可以使用自然語言進(jìn)行查詢并取回您要查找的shell命令,該怎么辦? 例如,假設(shè)您有一個自然語言外殼(nlsh),并且想要獲取今天的日子。 它可能看起來像這樣:
- nlsh> What day is it?
- >>> Would you like to run: date +%A [Y/n]: _
第一行是外殼的輸入,而第二行則顯示了可能的輸出。 那太酷了吧? 現(xiàn)在,如果我告訴您今天可以使用python在30行代碼之內(nèi)做到這一點呢? 我認(rèn)為這是革命性的! 在這個故事中,我們談?wù)揙penAI的API,這是一種訪問由OpenAI開發(fā)的新AI模型的方法。 自然語言的外殼只是冰山一角。
OpenAI API
OpenAI API是一種訪問由OpenAI開發(fā)的新AI模型的方法。 它提供了一個通用接口,您可以通過幾個示例來指定所需的操作。 您可以將其集成到您的產(chǎn)品中,對其進(jìn)行微調(diào)并開發(fā)全新的應(yīng)用程序,或者只是探索其局限性。 該API尚未向公眾開放,但是,您可以加入等待列表。
它是如何工作的?
想象一下,您想創(chuàng)建一個文本完成應(yīng)用程序,例如自然語言外殼程序(有人可能會說這也可以看作是一個問答應(yīng)用程序)。 首先,您應(yīng)該通過向API展示一些您想做的事來"編程" API。 越多越好,尤其是在任務(wù)復(fù)雜的情況下:
- 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...
好吧,就是這樣! 沒有第二步。 結(jié)果可能不是完美的第一天,但是您可以通過在更大的示例數(shù)據(jù)集上進(jìn)行訓(xùn)練,或者從用戶提供的人工反饋中學(xué)習(xí),來提高其性能。
OpenAI的研究將API設(shè)計得足夠靈活,以使機(jī)器學(xué)習(xí)團(tuán)隊的工作效率更高。 同時,它是如此簡單,任何人都可以使用它。 在后臺,API運行具有GPT-3系列權(quán)重的模型,這些模型在速度和吞吐量方面得到了改進(jìn),以使此類應(yīng)用程序變得實用。
什么是GPT-3?
GPT-3是OpenAI的GPT-2的發(fā)展,它標(biāo)志著自然語言處理的新里程碑。 GPT代表Generative Pretrained Transformer,它引用了2017年Google一項稱為Transformer的創(chuàng)新技術(shù)。 其主要目的是弄清楚特定單詞在給定上下文中出現(xiàn)的可能性。 在此基礎(chǔ)上,我們現(xiàn)在可以創(chuàng)建可完成文本,回答問題,匯總文檔等的應(yīng)用程序。
自然語言Shell示例
在本節(jié)中,我們將使用python和幾行代碼對在序言中看到的自然語言shell進(jìn)行編碼。 首先,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腳本的開頭,我們?yōu)锳PI提供了一些我們希望其執(zhí)行的示例。 然后,我們創(chuàng)建一個完成任務(wù)并使用davinci模型。 我們將max_tokens設(shè)置為100以具有足夠的緩沖區(qū),并且將溫度設(shè)置為0。將溫度設(shè)置為0是一個好習(xí)慣,只要我們遇到的問題只有一個正確的答案。 通常,溫度越高,模型具有的創(chuàng)意自由度就越高。
最后,我們執(zhí)行python nlsh.py來測試應(yīng)用程序。

> The Natural Language Shell
更多例子
與OpenAI緊密合作的組織已經(jīng)在使用OpenAI API。 讓我們看看一些非常聰明的例子。
聊天室
AI Channels是一個面向人和人工智能代理的社交網(wǎng)絡(luò)。 AI Channels使您可以與AI代理進(jìn)行交互,這些代理可以幫助您產(chǎn)生想法,推薦書籍和電影,講交互式故事或參加與朋友和歷史上最偉大的思想家的圓桌討論,在此您可以要求虛擬的Albert Einstein來解釋相對論 或從Jane Austen獲得寫作技巧。

代碼補(bǔ)全
借助OpenAI API,我們可以生成有用的上下文感知代碼建議。 在對來自數(shù)千個開源GitHub存儲庫中的代碼進(jìn)行了微調(diào)之后,該API根據(jù)函數(shù)名稱和注釋來完成代碼。
代碼摘要
通過其模式識別和生成功能,API可以將密集文本轉(zhuǎn)換為簡化的摘要。 在這里,我們展示了將NDA匯總為2級閱讀級別的內(nèi)容的API。
結(jié)論
在這個故事中,我們看到了OpenAI API的潛力和一些用例,這些用例重新定義了使用這種自然語言理解工具的可能性。 語義搜索,客戶支持,聊天機(jī)器人,文本處理應(yīng)用程序和生產(chǎn)力工具將永遠(yuǎn)改變!
關(guān)于作者
我叫Dimitris Poulopoulos,我是BigDataStack的機(jī)器學(xué)習(xí)研究員。 我也是希臘比雷埃夫斯大學(xué)的博士研究生。 我曾為歐洲委員會,歐盟統(tǒng)計局,IMF,歐洲中央銀行,經(jīng)合組織和宜家等主要客戶設(shè)計和實施AI和軟件解決方案。