哈喽,大家好。
如果将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
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 项目。
以上就是python代码自动转成其他编程语言代码的详细内容。