碼農編寫代碼的方式即將改變,快加入等待列表吧

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文件:

<code>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)/<code>

在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上關注我。

(本文翻譯自Dimitris Poulopoulos的文章《The Way you Write Code Is About to Change: Join the Waiting List》,參考:https://towardsdatascience.com/the-way-you-write-code-is-about-to-change-join-the-waiting-list-8c9e544e5de0)


分享到:


相關文章: