哈嘍,大家好。
如果將Python程式碼自動轉換成其他程式語言,你會嘗試嗎?
今天要跟大家分享一個有趣的項目,它能將Python程式碼自動轉換成C 程式碼。這或許對搞演算法的同學有點幫助。
該專案是 GitHub 開源項目,使用非常簡單,下載後安裝依賴,運行對應的Python腳本即可。
python3 python2cppconverter.py
以下面的Python 程式碼為例
def add_something(x, y): print("casually adding some stuff together") z = x + y return z if __name__ == "__main__": print('Okay, lets go') print(add_something(5, 2))
轉換成C 程式碼如下:
// C++ Code generated from Python Code: #include <iostream> using namespace std; int add_something(int x, int y) { cout << "casually adding some stuff together" << endl; int z = x + y; return z; } int main() { cout << "Okay, lets go" << endl; cout << add_something(5, 2) << endl; return 0; }
python2cppconverter.py實際上是呼叫OpenAI的API來完成程式碼轉換。核心程式碼如下:
openai.Completion.create(engine='code-davinci-002', prompt=input_prompt, temperature=temperature, max_tokens=num_tokens, stream=STREAM, stop='===================n', top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0)
本質上就是一個函數調用,其中engine參數是程式碼轉換模型。
介紹code-davinci-002之前,先來了解下GPT-3模型。
GPT-3是OpenAI在 2020年 5 月發布的一個模型,這個模型包含1750億的參數,比GPT-2多了兩個數量級,比GPT-2有了極大的改進。
GPT-3 在許多 NLP 資料集上實現了強大的效能,包括翻譯、問答和完形填空任務,以及一些需要即時推理或領域適應的任務,例如解讀單字或執行算術運算。
code-davinci-002模型是GPT-3的後代,它的訓練資料包含自然語言和來自 GitHub 的數十億行公共代碼。因此,它可以理解和產生程式碼,精通十多種程式語言,最擅長Python。
所以,code-davinci-002模型不只實現程式語言之間相互轉換,還可以與自然語言互轉、找程式碼中的BUG、根據程式編寫文件等。
例如下面的例子就是為程式碼功能產生文字性描述
#程式碼轉自然語言
是不是以後就不用愁寫註釋了?
再看看下面這個例子,可以為Python程式碼產生docstring
#docstring
其他例子大家可以看OpenAI官網。
上面說得很美好,然而現實很殘酷。
我自從下載了這個項目,從開始運行就一步一個坑。
上面用到的OpenAI API,並不對國內開放,國內的朋友申請使用時會看到下面的提示
##國內無法使用上來就被卡脖子了! 當然,國內有團隊提供了解決方案,花 18 元可以買一個現成的國外帳號,有效期將近 3 個月,帳號內自備 18 美元。所以,OpenAI的模型是要收費的,一點不清楚。 當你買了帳號,獲取了API key,把它配置到項目中,運行項目,準備見證時刻的奇蹟時,會發現如下報錯:No such model: code-davinci-002這是因為code-davinci-002模型處於私有測試中,需要提交申請,通過後才能呼叫。 最後,我不建議大家運行code-davinci-002模型,對國內朋友來說,成本太高了。如果想看效果,可以到OpenAI官網看看文件、線上運行一些example即可。 雖然專案沒有成功運作起來,但這並不妨礙我們學習技術,這波強行不虧。 希望今天的內容對你有用,感謝你的關注,我將持續分享優秀的 AI 專案。
以上是Python程式碼自動轉成其他程式語言程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!