天天看點

你寫代碼的方式即将改變,你需要來了解一下

你寫代碼的方式即将改變,你需要來了解一下

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