Code generation model task design

background:

The model should have the ability to understand the code, the ability to know the code rules, the ability to know the keywords and variables, the ability to know the code logic, the ability to translate text to code, the ability to associate code, and the ability to continue writing code.

Code understanding ability: pretrain allows the model to read enough code, remember some rules of the code, code Q&A, and rewrite the code based on conditions

Code correlation capabilities: code continuation, code completion, code error correction

Code generation capabilities: Annotation generation code, function description generation code, summary generation code, code function description, code comment generation

Code standardization: function description to code COT,

Technical points:

Code comprehension data preparation:

pretrain data

1. Source code reading

2. Reading the annotated source code

3. Read source code with project requirements

4. Language rules + code examples

Code question and answer data

1. Read the source code and fill in the blank variables

2. Read the source code description function

3. Read the source code, describe how the code implements the function, and list the code logic.

4. Read the source code and rewrite the code as needed (such as changing a certain value to another, adding a certain function, how to rewrite the code...)
5. Read the code generation comments

#这是一份代码项目工程,设计50个重不同角度提问prompt
chooseSymbols函数的作用是什么?
chooseSymbols函数如果选股失败会做什么处理?
useDefaultSymbolPool函数从哪里获取默认股票列表?
querySymbolInfo函数使用了哪个客户端查询股票信息?
toSymbolVOs函数的主要逻辑是什么?
pipeline中的takeWhile方法有什么作用?
如何获取选股策略对应的股票池?
当股票策略为兜底策略时会发生什么?
模型如何转换处理股票的快照数据?
流水线各步骤的执行顺序是什么?
如何判断当前资产是否需要降级返回空数据?
输出参数symbols是如何生成的?
chooseSymbols函数的异常处理逻辑是什么?
querySymbolInfo函数用到了哪些参数?
toSymbolVOs函数对快照数据做了哪些处理?
为什么需要先查询股票基础信息再查询快照数据?
流水线中用到了哪些外部依赖服务?
useDefaultSymbolPool函数的返回值是什么类型?
chooseSymbols函数返回了什么数据?
模型是如何获取策略决策服务的实例的?
toSymbolVOs函数返回了什么数据结构?
流水线的主要处理步骤有哪些?
为什么需要用ImmutableList封装默认股票代码?
选股失败时的日志记录在哪里?
如何获取股票最新快照信息?
股票快照信息包含哪些字段?
toSymbolVOs是如何关联快照和股票基础信息的?
流水线ufd的作用是什么?
模型从哪里获取策略代码参数?
默认股票代码是如何配置的?
chooseSymbols的主要逻辑是什么?
流水线最后一步执行的是什么操作?
为什么要对选股结果做非空判断?
模型是如何获取接口调用服务的?
如何限制选股结果的数量?
流水线的作用是什么?
对快照数据做了哪些转换处理?
如何处理选股接口调用失败的情况?
toSymbolVOs返回了哪些股票数据字段?
资产降级机制的作用是什么?
流水线中用到了哪些DRM组件?
选股结果为空时会做哪些处理?
整个处理流程的入口是什么?
模型如何组装和返回最终结果?
为什么需要包装默认股票池?
流水线各步骤的依赖关系是什么?
选股策略失败怎么处理?
如何获取股票价格和涨跌信息?
模型的主要目标是什么?
兜底逻辑在什么地方?

Code correlation capability data preparation:

Code continuation

1."根据已有的chooseSymbols函数,续写选股结果过滤处理函数filterStocks",
2."基于parseSnapshots函数,续写组装结果数据函数assembleResult",
3."1.给定下面这段代码,能否进行逻辑续写:def ASSET_ID = 'finscprod.chooseStockCard'"
4."设计一个函数,其输入参数包括接口使用场景、策略代码和请求的推荐股票数量,返回推荐标的列表。",
5."根据给定的策略代码和推荐数量,编写一个功能,返回推荐的股票列表。",
6."编写一个函数,它使用默认的股票池,并依据策略代码和推荐数返回结果。"

code completion

1. "请补全以下代码:'def strategyDecisionDrm = ...' "
2. "请补全以下代码:'return strategyDecisionDrm.getDefaultStrategyMap(). ...'"
3. "请完成以下代码:'output select: ...'"
4. "补全chooseStocks函数的异常捕获逻辑",
5. "补全parseSnapshots函数的快照数据处理逻辑"

Code error correction

1."这段代码有个错误,能你找出来并修正吗?def useDefaultSymbolPool = { row, strategyCode, recommendCount => def strategyDecisionDrm = row.get('strategyDecisionDrm') as StrategyDecisionDrm",
2."我在写代码时发现执行结果与预期不符,下面是代码部分,能帮我检查下错误所在吗? def ASSET_ID = 'finscprod.chooseStockCard'"
3."纠正chooseSymbols函数的逻辑错误",
4."纠正parseSnapshots函数的返回值错误"

Code generation capability data preparation:

Comment generated code

1. "根据以下注释请编写相应的代码:'此方法是使用默认的股票池。它从行数据中获取策略决策,并打印。然后,它返回默认策略图中根据策略代码获取的股票代码,若找不到则返回预设的股票代码。返回的股票代码数量不超过推荐的数量。'",
2. "请根据如下描述编写代码:'这个函数接受三个参数,一个是行数据,一个是策略代码和一个推荐的数量。这个函数首先从行数据中取出策略决策并打印。然后返回从默认策略图中取出的股票代码,如果找不到对应的策略代码就返回预设的股票代码,最后要确保返回的股票代码数量不超过推荐数量。'"
3."根据注释,编写一个函数,该函数接收'scene', 'strategyCode', 'recommendCount'作为输入,并返回推荐标的列表。",

Functional description generation code

1."生成代码实现‘调用外部服务选股,选股失败使用默认池’的功能",
2."生成代码实现‘快照数据转换为股票信息’的功能"
3."设计一个函数,其主要任务是从默认股票池中选择并返回特定数量的股票。",
4."根据策略代码和推荐数量,创建一个能生成推荐股票列表的函数。",
5."创建一个函数,用于根据给定的策略代码,从默认股票池中选择股票。"

Summary generation code

1."实现一个功能,它接收策略代码和推荐数量作为输入,然后返回对应的股票列表。",
2."创建一个函数,依据策略代码,从默认股票池中选取一定数量的股票。"
3.根据‘策略选股,兜底处理’生成函数实现",
4."根据‘快照解析和转换’生成函数代码"

Code function description

1."描述如何根据已设定的策略代码和推荐数量从默认股票池中获取股票列表的代码功能。",
2."解释代码如何使用默认股票池并根据策略代码和推荐数量返回股票列表的功能。"
3."描述chooseSymbols的功能",
4."描述parseSnapshots的作用"
5."描述一下这个代码的主要功能,即从默认的股票池中,根据策略代码和推荐数量选择股票。",
6."阐述代码如何使用默认的股票池,并利用提供的策略代码和推荐数量,生成股票列表的功能。"

Code comment generation

1."请为以下代码添加详细的注释:def useDefaultSymbolPool = { row, strategyCode, recommendCount -> def strategyDecisionDrm = row.get('strategyDecisionDrm') as StrategyDecisionDrm",
2."请为这段代码添加注释,以便其他人更好地理解:return strategyDecisionDrm.getDefaultStrategyMap().getOrDefault(strategyCode, ImmutableList.of('60090', '600036', '000858')).stream().limit(recommendCount as long).collect(Collectors.toList())"
3."编写注释,描述如何通过给定的策略代码和推荐数量,从默认股票池中选取股票的过程。",
4."添加注释,详细说明代码如何实现从默认股票池中根据策略代码和推荐数量选择股票的功能。"
5."为chooseStocks生成函数注释",
6."为parseSnapshots生成注释"
7。"编写注释,描述如何通过给定的策略代码和推荐数量,从默认股票池中选取股票的过程。",
8."添加注释,详细说明代码如何实现从默认股票池中根据策略代码和推荐数量选择股票的功能。"

Code for normalized data preparation:

Function description to code COT

1."请根据以下的功能描述转化为具体的代码操作任务(COT):'我们需要一个函数来从默认的策略地图中获取策略代码,如果没有找到相应的策略代码,则返回预设的股票代码,并按照请求的推荐数量进行限制。'"
2." '首先,定义一个日志记录器和一个资产ID'",
"'然后,编写一个函数,该函数接受数据行、策略代码和推荐数量作为参数'",
"'在函数内部,获取策略决策DRM,并在日志中记录其信息'",
"'接下来,从策略决策DRM获取默认的策略映射表,并尝试从中查询给定的策略代码'",
"'如果查询结果为空,则返回一组默认的推荐股票;否则,限制查询结果的大小,并将其作为最终的推荐列表返回。'"
3."'你如何从简单的股票列表查询,逐步增加日志记录、策略决策、推荐数限制等功能来完善此代码?'",
"'从只推荐固定的股票列表开始,你会如何一步步改进这个系统,使其能够根据不同的策略推荐不同的股票?'",
"'首先只需记录基本信息,后来怎样逐步添加更详细的日志来帮助你更好地理解代码的运行情况?'",
"'在最初的版本中,你可能没有处理查询不存在的策略代码的情况,你是如何逐步意识到并添加这个功能的?'",
"'你是如何从简单的流操作开始,逐步利用Java 8的Stream API来优化和简化你的代码的?'"

appendix:

Q:针对这段代码设计50个promt,要求围绕代码生成能力、代码补全能力、代码续写、代码纠错、代码注释能力、代码理解能力、代码问答能力、注释生成代码、功能描述生成代码、摘要生成代码、代码功能描述、代码注释生成、功能描述到代码COT来做prompt生成,答案json格式输出:{“代码生成能力prompt”:[1.“”]}
A:{
"代码生成能力prompt": [
"1.请基于以下需求生成一段代码:需要一个函数,用于从默认的策略图中获取策略代码并返回安全推荐的股票数量。如果找不到相应的策略代码,则返回预设的股票代码。",
"2.根据以下描述生成代码:创建一个函数,该函数接收行数据,策略代码和推荐数量作为参数。该函数会从行数据中获取策略决策,并打印出来。然后返回从默认策略图中获取的或者预定的股票代码,数量限制为推荐数量。"
],
"代码补全能力prompt": [
"1.针对以下部分代码进行补全:def useDefaultSymbolPool = { row, ******Code, recommendCount ->",
"2.我有一段未完成的代码,需要你帮助完成:def logger = LoggerFactory.getLogger("
],
"代码续写能力prompt": [
"1.下面这段代码是获取默认股票池,你能否在其后添加一段代码,满足在获取股票池失败时,可以提供一个备用的股票池?",
"2.对于这个'logger'变量已经定义好,能否续写一段代码,使得当执行某个操作时,可以将操作日志记录下来?"
],
"代码纠错能力prompt": [
"1.这段代码有个错误,能你找出来并修正吗?def useDefaultSymbolPool = { row, ******Code, recommendCount => def ******DecisionDrm = row.get('******DecisionDrm') as ******DecisionDrm",
"2.我在写代码时发现执行结果与预期不符,下面是代码部分,能帮我检查下错误所在吗? def ASSET_ID = 'finscprod.chooseStockCard'"
],
"代码注释能力prompt": [
"1.请为以下代码添加详细的注释:def useDefaultSymbolPool = { row, ******Code, recommendCount -> def ******DecisionDrm = row.get('******DecisionDrm') as ******DecisionDrm",
"2.请为这段代码添加注释,以便其他人更好地理解:return ******DecisionDrm.getDefault******Map().getOrDefault(******Code, ImmutableList.of('60090', '6000', '000')).stream().limit(recommendCount as long).collect(Collectors.toList())"
],
"代码理解能力prompt": [
"1.请解读一下这段代码的主要功能: def useDefaultSymbolPool = { row, ******Code, recommendCount -> def ******DecisionDrm = row.get('******DecisionDrm') as ******DecisionDrm",
"2.能否解释一下这行代码的含义和功能:return ******DecisionDrm.getDefault******Map().getOrDefault(******Code, ImmutableList.of('60090', '60003', '000')).stream().limit(recommendCount as long).collect(Collectors.toList())"
],
"代码问答能力prompt": [
"1.'******DecisionDrm.getDefault******Map().getOrDefault(******Code, ImmutableList.of('6009', '6000', '0008'))'这段代码的作用是什么?",
"2.在'getOrDefault'方法中,如果找不到'******Code'会怎样?"
],
"注释生成代码prompt": [
"1.根据以下注释请编写相应的代码:'此方法是使用默认的股票池。它从行数据中获取策略决策,并打印。然后,它返回默认策略图中根据策略代码获取的股票代码,若找不到则返回预设的股票代码。返回的股票代码数量不超过推荐的数量。'",
"2.请根据如下描述编写代码:'这个函数接受三个参数,一个是行数据,一个是策略代码和一个推荐的数量。这个函数首先从行数据中取出策略决策并打印。然后返回从默认策略图中取出的股票代码,如果找不到对应的策略代码就返回预设的股票代码,最后要确保返回的股票代码数量不超过推荐数量。'"
],

A:{
"注释生成代码prompt": [
"1. '编写一个函数,该函数使用默认的股票池'",
"2. '创建一个用于记录信息的日志'",
"3. '定义一个常量ASSET_ID'",
"4. '对传入的数据行和策略代码进行处理,获取需要的推荐股票'",
"5. '在日志中记录策略决策DRM的信息'"
],
"功能描述生成代码prompt": [
"6. '编写一个函数来限制推荐股票的数量'",
"7. '创建一个映射表,该表为每种策略代码提供默认的推荐股票'",
"8. '实现一个方法,该方法返回特定策略代码对应的推荐股票列表'",
"9. '设计一个日志记录系统,用于调试和追踪代码运行情况'",
"10. '开发一个可以根据不同的投资策略推荐股票的系统'"
],
"摘要生成代码prompt": [
"11. '实现股票推荐系统的核心功能'",
"12. '创建推荐股票的数据结构'",
"13. '实现策略和推荐数控制的功能'",
"14. '为股票推荐系统添加日志记录功能'",
"15. '为股票推荐系统添加错误处理和默认值设置'"
],
"代码功能描述": [
"16. '解释'useDefaultSymbolPool'函数的功能和工作原理'",
"17. '描述日志记录在此代码中的作用和重要性'",
"18. '解释此代码中的策略决策DRM的概念和用途'",
"19. '简述如何使用这段代码来获取股票推荐'",
"20. '描述getDefault******Map()方法的功能和输出结果是什么'"
],

代码补全能力 prompt:
1. ******DecisionDrm.__________ 是什么? 
2. getDefault******Map() 方法的返回值是什么类型?
3. 如何从一个 List<String> 中随机选择指定数量的字符串?
4. 请为以下变量添加类型声明:row, ******Code, recommendCount
5. 使用 Java 8 中的什么方法可以将一个 List<String> 中的元素限制在指定数量?

代码续写 prompt:
1. 编写一个函数,根据给定的场景和策略代码,从指定的股票池中生成推荐标的列表,并将结果存储到数据库中。
2. 对于给定的场景和策略代码,编写一个函数,从默认股票池中生成推荐标的列表,并将结果存储到 Redis 中。
3. 请完成函数 useDefaultSymbolPool 的代码实现,使其返回一个包含推荐标的列表的 JSON 对象。
4. 请编写一个函数,根据给定的场景和策略代码,从指定的股票池中生成推荐标的列表,并将结果输出到文件中。
5. 请补全函数 useDefaultSymbolPool 中缺失的部分,使其能够正确地生成推荐标的列表。

代码纠错 prompt:
1. 在函数 useDefaultSymbolPool 中,如何避免 recommendCount 参数不是正整数的情况?
2. 在函数 useDefaultSymbolPool 中,如何避免 ******DecisionDrm 变量为空引起的空指针异常?
3. 请修复函数 useDefaultSymbolPool 中可能存在的语法错误。
4. 在函数 useDefaultSymbolPool 中,如何避免 ******Code 参数为空字符串或 null 的情况?
5. 请检查函数 useDefaultSymbolPool 中是否存在潜在的逻辑错误。

代码注释能力 prompt:
1. 函数 useDefaultSymbolPool 的作用是什么? 
2. row.get("******DecisionDrm") 的返回值是什么类型?
3. getDefault******Map() 方法返回值的含义是什么?
4. recommendCount 参数表示什么意思?
5. 请为函数 useDefaultSymbolPool 中使用到的变量添加注释。

代码理解能力 prompt:
1. 函数 useDefaultSymbolPool 的输入参数有哪些?输出参数有哪些? 
2. getDefault******Map() 方法返回值是什么?它表示什么意思?
3. ******DecisionDrm.getDefault******Map() 的返回值是什么?它表示什么意思?
4. 请解释如何从一个 List<String> 中随机选择指定数量的字符串。
5. 请解释为什么在函数 useDefaultSymbolPool 中要使用 stream() 方法。

代码问答能力 prompt:
1. 请问如何使用 Java 8 中的方法从一个 List<String> 中随机选择指定数量的字符串?
2. getDefault******Map() 方法返回值是什么?它表示什么意思?
3. 请解释如何使用 Java 8 的 stream() 方法将一个 List<String> 中的元素限制在指定数量。
4. 在函数 useDefaultSymbolPool 中,如何避免 recommendCount 参数不是正整数的情况?
5. 如何避免 ******Code 参数为空字符串或 null 的情况?

注释生成代码 prompt:
1. //打印策略决策DRM 这句注释是用来干什么的?
2. // 定义日志 这句注释是用来干什么的?
3. //使用默认股票池 这句注释是用来干什么的?
4. // 输出 这句注释是用来干什么的?
5. //给定场景、策略代码和推荐数量 这句注释是用来干什么的?

Guess you like

Origin blog.csdn.net/liangwqi/article/details/132281642
Recommended