如果將Python
代碼自動轉成其他編程語言,你會嘗試嗎?
今天給大家分享一個有意思的項目,它能將Python
代碼自動轉成C++
代碼。這或許對搞算法的同學有點幫助。
1. 如何實現
該項目是 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
官網。
2. 一個壞消息
上面說得很美好,然而現實很殘酷。
我自從下載了這個項目,從開始運行就一步一個坑。
上面用到的OpenAI
API
,並不對國內開放,國內的朋友申請使用時會看到下面的提示
國內無法使用
上來就被卡脖子了!
當然,國內有團隊提供了解決方案,花 18 元可以買一個現成的國外賬號,有效期將近 3 個月,賬號內自帶 18 美元。所以,OpenAI
的模型是收費的,一點不清真。
當你買了賬號,獲取了API key
,把它配置到項目中,運行項目,准備見證時刻的奇跡時,會發現如下報錯:
No such model: code-davinci-002
這是因為code-davinci-002
模型處於私有測試中,需要提交申請,通過後才能調用。
最後,我不建議大家運行code-davinci-002
模型,對國內朋友來說,成本太高了。如果想看效果,可以到OpenAI
官網看看文檔、在線運行一些example
即可。
雖然項目沒有成功運行起來,但這並不妨礙我們學習技術,這波強行不虧。
希望今天的內容對你有用,感謝你的關注,我將持續分享優秀的 AI 項目。
項目地址:https://github.com/alxschwrz/codex_py2cpp
【python學習】
學Python的伙伴,歡迎加入新的交流【君羊】:1020465983
一起探討編程知識,成為大神,群裡還有軟件安裝包,實戰案例、學習資料