背景:
模型應該具備,理解代碼的能力、知道代碼規則的能力、知道關鍵詞和變量的能力、知道代碼邏輯的能力、文本到代碼翻譯能力、代碼關聯能力、代碼續寫能力。
代碼理解能力:pretrain讓模型讀足夠多代碼、記住代碼一些規則、代碼問答、基于條件改寫代碼
代碼關聯能力:代碼續寫、代碼補全、代碼糾錯
代碼生成能力:注釋生成代碼、功能描述生成代碼、摘要生成代碼、代碼功能描述、代碼注釋生成
代碼規范化:功能描述到代碼COT、
技術點:
代碼理解力數據準備:
pretrain數據
1.源碼閱讀
2.帶注釋源碼閱讀
3.帶項目需求源碼閱讀
4.語言規則+代碼例子
代碼問答數據
1.閱讀源碼填空變量
2.閱讀源碼描述功能
3.閱讀源碼描述代碼如何實現功能,列出代碼邏輯
4.閱讀源碼,根據需要對代碼改寫(比如把某個值改成另一個、增加某個功能如何改寫代碼...)
5.閱讀代碼生成注釋
#這是一份代碼項目工程,設計50個重不同角度提問prompt
chooseSymbols函數的作用是什么?
chooseSymbols函數如果選股失敗會做什么處理?
useDefaultSymbolPool函數從哪里獲取默認股票列表?
querySymbolInfo函數使用了哪個客戶端查詢股票信息?
toSymbolVOs函數的主要邏輯是什么?
pipeline中的takeWhile方法有什么作用?
如何獲取選股策略對應的股票池?
當股票策略為兜底策略時會發生什么?
模型如何轉換處理股票的快照數據?
流水線各步驟的執行順序是什么?
如何判斷當前資產是否需要降級返回空數據?
輸出參數symbols是如何生成的?
chooseSymbols函數的異常處理邏輯是什么?
querySymbolInfo函數用到了哪些參數?
toSymbolVOs函數對快照數據做了哪些處理?
為什么需要先查詢股票基礎信息再查詢快照數據?
流水線中用到了哪些外部依賴服務?
useDefaultSymbolPool函數的返回值是什么類型?
chooseSymbols函數返回了什么數據?
模型是如何獲取策略決策服務的實例的?
toSymbolVOs函數返回了什么數據結構?
流水線的主要處理步驟有哪些?
為什么需要用ImmutableList封裝默認股票代碼?
選股失敗時的日志記錄在哪里?
如何獲取股票最新快照信息?
股票快照信息包含哪些字段?
toSymbolVOs是如何關聯快照和股票基礎信息的?
流水線ufd的作用是什么?
模型從哪里獲取策略代碼參數?
默認股票代碼是如何配置的?
chooseSymbols的主要邏輯是什么?
流水線最后一步執行的是什么操作?
為什么要對選股結果做非空判斷?
模型是如何獲取接口調用服務的?
如何限制選股結果的數量?
流水線的作用是什么?
對快照數據做了哪些轉換處理?
如何處理選股接口調用失敗的情況?
toSymbolVOs返回了哪些股票數據字段?
資產降級機制的作用是什么?
流水線中用到了哪些DRM組件?
選股結果為空時會做哪些處理?
整個處理流程的入口是什么?
模型如何組裝和返回最終結果?
為什么需要包裝默認股票池?
流水線各步驟的依賴關系是什么?
選股策略失敗怎么處理?
如何獲取股票價格和漲跌信息?
模型的主要目標是什么?
兜底邏輯在什么地方?
代碼關聯能力數據準備:
代碼續寫
1."根據已有的chooseSymbols函數,續寫選股結果過濾處理函數filterStocks",
2."基于parseSnapshots函數,續寫組裝結果數據函數assembleResult",
3."1.給定下面這段代碼,能否進行邏輯續寫:def ASSET_ID = 'finscprod.chooseStockCard'"
4."設計一個函數,其輸入參數包括接口使用場景、策略代碼和請求的推薦股票數量,返回推薦標的列表。",
5."根據給定的策略代碼和推薦數量,編寫一個功能,返回推薦的股票列表。",
6."編寫一個函數,它使用默認的股票池,并依據策略代碼和推薦數返回結果。"
代碼補全
1. "請補全以下代碼:'def strategyDecisionDrm = ...' "
2. "請補全以下代碼:'return strategyDecisionDrm.getDefaultStrategyMap(). ...'"
3. "請完成以下代碼:'output select: ...'"
4. "補全chooseStocks函數的異常捕獲邏輯",
5. "補全parseSnapshots函數的快照數據處理邏輯"
代碼糾錯
1."這段代碼有個錯誤,能你找出來并修正嗎?def useDefaultSymbolPool = { row, strategyCode, recommendCount => def strategyDecisionDrm = row.get('strategyDecisionDrm') as StrategyDecisionDrm",
2."我在寫代碼時發現執行結果與預期不符,下面是代碼部分,能幫我檢查下錯誤所在嗎? def ASSET_ID = 'finscprod.chooseStockCard'"
3."糾正chooseSymbols函數的邏輯錯誤",
4."糾正parseSnapshots函數的返回值錯誤"
代碼生成能力數據準備:
注釋生成代碼
1. "根據以下注釋請編寫相應的代碼:'此方法是使用默認的股票池。它從行數據中獲取策略決策,并打印。然后,它返回默認策略圖中根據策略代碼獲取的股票代碼,若找不到則返回預設的股票代碼。返回的股票代碼數量不超過推薦的數量。'",
2. "請根據如下描述編寫代碼:'這個函數接受三個參數,一個是行數據,一個是策略代碼和一個推薦的數量。這個函數首先從行數據中取出策略決策并打印。然后返回從默認策略圖中取出的股票代碼,如果找不到對應的策略代碼就返回預設的股票代碼,最后要確保返回的股票代碼數量不超過推薦數量。'"
3."根據注釋,編寫一個函數,該函數接收'scene', 'strategyCode', 'recommendCount'作為輸入,并返回推薦標的列表。",
功能描述生成代碼
1."生成代碼實現‘調用外部服務選股,選股失敗使用默認池’的功能",
2."生成代碼實現‘快照數據轉換為股票信息’的功能"
3."設計一個函數,其主要任務是從默認股票池中選擇并返回特定數量的股票。",
4."根據策略代碼和推薦數量,創建一個能生成推薦股票列表的函數。",
5."創建一個函數,用于根據給定的策略代碼,從默認股票池中選擇股票。"
摘要生成代碼
1."實現一個功能,它接收策略代碼和推薦數量作為輸入,然后返回對應的股票列表。",
2."創建一個函數,依據策略代碼,從默認股票池中選取一定數量的股票。"
3.根據‘策略選股,兜底處理’生成函數實現",
4."根據‘快照解析和轉換’生成函數代碼"
代碼功能描述
1."描述如何根據已設定的策略代碼和推薦數量從默認股票池中獲取股票列表的代碼功能。",
2."解釋代碼如何使用默認股票池并根據策略代碼和推薦數量返回股票列表的功能。"
3."描述chooseSymbols的功能",
4."描述parseSnapshots的作用"
5."描述一下這個代碼的主要功能,即從默認的股票池中,根據策略代碼和推薦數量選擇股票。",
6."闡述代碼如何使用默認的股票池,并利用提供的策略代碼和推薦數量,生成股票列表的功能。"
代碼注釋生成
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."添加注釋,詳細說明代碼如何實現從默認股票池中根據策略代碼和推薦數量選擇股票的功能。"
代碼嗎規范化數據準備:
功能描述到代碼COT
1."請根據以下的功能描述轉化為具體的代碼操作任務(COT):'我們需要一個函數來從默認的策略地圖中獲取策略代碼,如果沒有找到相應的策略代碼,則返回預設的股票代碼,并按照請求的推薦數量進行限制。'"
2." '首先,定義一個日志記錄器和一個資產ID'",
"'然后,編寫一個函數,該函數接受數據行、策略代碼和推薦數量作為參數'",
"'在函數內部,獲取策略決策DRM,并在日志中記錄其信息'",
"'接下來,從策略決策DRM獲取默認的策略映射表,并嘗試從中查詢給定的策略代碼'",
"'如果查詢結果為空,則返回一組默認的推薦股票;否則,限制查詢結果的大小,并將其作為最終的推薦列表返回。'"
3."'你如何從簡單的股票列表查詢,逐步增加日志記錄、策略決策、推薦數限制等功能來完善此代碼?'",
"'從只推薦固定的股票列表開始,你會如何一步步改進這個系統,使其能夠根據不同的策略推薦不同的股票?'",
"'首先只需記錄基本信息,后來怎樣逐步添加更詳細的日志來幫助你更好地理解代碼的運行情況?'",
"'在最初的版本中,你可能沒有處理查詢不存在的策略代碼的情況,你是如何逐步意識到并添加這個功能的?'",
"'你是如何從簡單的流操作開始,逐步利用Java 8的Stream API來優化和簡化你的代碼的?'"
附件:
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. //給定場景、策略代碼和推薦數量 這句注釋是用來干什么的?