嵌入式方向实践实验一
实践一_ 利用大模型将python程序转换成C++程序 实验报告
实验任务
请大家将认领到的程序, 尝试借助大语言模型将本文件夹中的 Python 代码转换为 C++ 的代码。应该提 交: 1.原始python代码, 2.大模型输出的C++代码 (标注由哪个模型输出, 以及驱动大模型的prompt), 3.以 及手动修正后的C++代码(需要通过编译, 且可执行, 执行结果正确.)
输入的 Python 代码均由两部分组成,主要功能函数(函数名不确定,函数中含有功能说明注释)与测 试函数( check(candidate) 函数); 手动修正后的 C++ 代码由三部分组成,由主要功能函数(函数名 不确定,请手动将功能说明注释同样补充在其中, 粘贴过去即可)与主函数( main 函数,用于调用主 要功能函数来进行测试,不需要包含原有 check(candidate) 中的所有用例)。
可以自行设计与大语言模型交互的 prompt ,这里给出一些建议, 例如:
1 | 请将下列python代码改成语义上等价的C++代码 (Please transfer the following python code |
或者针对注释中的说明来构建prompt, 以 000_has_close_elements.py 为例:
1 | 请按照以下要求来构造C++代码 (Please write the C++ code that following the |
以上prompt仅供参考, 同学们如果有好的prompt可以尽情发挥, 如果prompt不好, 那么后面修正C++代 码的工作量就会比较大, 最坏情况下这个C++的转换就全部是手工完成的. 即使如此, 只要最终手动修正的 C++代码完全正确, 这部分实验就会给分
实验过程
压缩包中包含python代码,模型给出的代码(该代码文件名包含后缀_unmodified),以及手工修改后的代码;
使用的python代码编号为121-125,如下:
使用的模型为chatgpt3.5
;
驱动大模型的prompt为:
1 | 请将以下python代码改成语义上相等的C++代码,原来的python代码包含一个功能函数和一个测试函数(check),新的C++代码请包含功能函数和主函数(main函数,调用功能函数进行测试)(注意代码中含有注释,可以用来帮助理解,但新的代码不需要携带这些注释): |
模型给出的cpp代码基本可用,除了以下两个问题:
未包含头文件 <assert.h> 导致无法识别`assert`
c++中 `assert` 宏只接受一个条件表达式,不能直接比较复杂的数据结构,因此模型给出的以下类似代码会报错:
1
assert(result1 == std::vector<std::string>{"Hello", "world!"});
手工给出的修改方案为:
- 增添头文件<assert.h>
- 使用if语句替代assert来比较复杂的数据结构
在修改这两个错误后,代码可以编译运行,并无报错。