跳到主要内容

代码生成任务实践

代码生成任务在开发辅助,功能代码生成的场景上被大量使用。代码的逻辑表达尽可能清晰,生成的代码越贴近实际可以使用的代码。为了使生成的代码更加贴近开发人员编写的代码,这是需要在提示词的额外信息上给出更多的有关代码一些描述要求,例如:执行参数名称,方法名,执行步骤等。

代码提示词模板

这里我们给出一个通用的代码生成的提示词结构模板

## 角色(Role):
- Xxx开发者

## 任务(Task):
- 编写代码,按照输出要求,每个模块生成一个源码文件
- 代码符合编码规则要求
- 按执行流程生成代码

## 技能(Skills):
> 这里列出当前明确开发角色需要的技能
- 熟练使用 xx 语言,熟悉 xx 语言规范;
- 精通 xx 设计模式和接口设计
- 熟悉 xx 技术,xx 规范,xx 技能
- 设计的程序符合 xx 风格

## 输入内容:
- **模块名称**
- 模块命名:
- 模块功能:
- 方法定义:
- 返回类型:
- **模块名称**
- 模块命名:
- 模块功能:
- 方法定义:
- 返回类型:

## 编码规则(Rules):
- **兼容性**:生成的代码应遵循目标xx版本的语法规则。
- **安全性**:避免生成可能导致安全漏洞(如SQL注入、XSS攻击)的代码。
- **可扩展性**:设计工具时考虑未来的扩展性和功能扩展的便捷性。
- **遵循编码规范**:确保生成的代码遵循业界认可的编码风格,如xxx规范。

## 执行流程:
- 第一步,生成 xx 模块

## 输出要求:
- **输出语言**:xx
- **输出格式**:源代码文件(`.xx`
- **表达方式**:结构清晰、逻辑严谨的面向对象编程风格。
- **代码注释**:为每个模块,每个方法都包含详细的注释和参数说明,注释使用 中文/英文

PYTHON代码提示词模板

这里我们以PYTHON代码生成作为示例:

提示词:

## 角色(Role):
- PYTHON 开发工程师

## 任务(Task):
- 编写代码,按照输出要求,每个模块生成一个源码文件
- 代码符合编码规则要求
- 按执行流程生成代码

## 技能(Skills):

- 熟练使用 Python 语言,熟悉 Python 语言规范;
- 精通 Python 设计模式和接口设计;
- 熟悉 Python 技术框架和常用 API;
- 设计的程序符合 Python 风格。


## 编码规则(Rules):
- **兼容性**:生成的代码应遵循Python3版本的语法规则。
- **安全性**:避免生成可能导致安全漏洞(如SQL注入、XSS攻击)的代码。
- **可扩展性**:设计工具时考虑未来的扩展性和功能扩展的便捷性。
- **遵循编码规范**:确保生成的代码遵循业界认可的编码风格。

## 执行流程:
1. 生成模块名称为 SrtGenerator;
1.1 模块中方法名称 generate,参数为输入文件路径,输出文件路径。输入文件格式为文本格式,输出文件格式为 srt字幕格式
1.2 生成的代码实现读取文本文件中的内容,每行作为一个字幕的一个时间轴,时间轴的时间间隔按字符计算,5个字符为1 秒钟进行计算。
1.3 对空行跳过,不生成时间轴

## 输出要求:
- **输出语言**:PYTHON
- **输出格式**:源代码文件(`.py`
- **表达方式**:结构清晰、逻辑严谨的面向对象编程风格。
- **代码注释**:为每个模块,每个方法都包含详细的注释和参数说明,注释使用 中文

输出返回:

class SrtGenerator:
"""
SrtGenerator 类用于生成 SRT 字幕文件。
"""

def __init__(self):
pass

def generate(self, input_path: str, output_path: str):
"""
生成 SRT 字幕文件。

参数:
- input_path: 输入文本文件的路径
- output_path: 输出SRT字幕文件的路径
"""
# 初始化变量
subtitle_index = 1
start_time = 0
end_time = 0

# 打开输入文件并读取内容
with open(input_path, 'r', encoding='utf-8') as file:
lines = file.readlines()

# 打开输出文件并准备写入
with open(output_path, 'w', encoding='utf-8') as output_file:
# 遍历每行文本
for line in lines:
# 计算时间戳
line_length = len(line)
end_time = start_time + line_length * 0.2 # 5个字符为1秒

# 写入SRT字幕格式
output_file.write(f"{subtitle_index}\n")
output_file.write(f"{self.format_time(start_time)} --> {self.format_time(end_time)}\n")
output_file.write(f"{line.strip()}\n\n")

# 更新时间戳和字幕索引
start_time = end_time
subtitle_index += 1

@staticmethod
def format_time(time_seconds: float) -> str:
"""
将时间(以秒为单位)格式化为 SRT 时间戳格式。

参数:
- time_seconds: 时间(秒)

返回:
- 格式化后的时间戳字符串
"""
hours, remainder = divmod(time_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
milliseconds = int((seconds - int(seconds)) * 1000)
seconds = int(seconds)
return f"{int(hours):02}:{int(minutes):02}:{seconds:02},{milliseconds:03}"

# 示例用法
# generator = SrtGenerator()
# generator.generate("input.txt", "output.srt")

总结

在使用代码生成任务时,我们建议生成的代码以一个方法,也就是一个最小的功能组件为生成目标,作为一个个代码生成的小任务。针对复杂的业务逻辑描述,先对逻辑描述拆分为若干步骤,将不同的步骤作为一个小的功能组件方法,再组合成复杂的逻辑调用。

当然复杂逻辑的拆分和组件的划分,我们仍然可以作为一个任务让哆啦 完成。再基于哆啦 拆分完成的结果作为输出,进行代码生成任务。再后续的整体实践中,我们再介绍复杂场景下的多任务协作。