一 結構化輸入是什么
📌 結構化輸入的定義:
結構化輸入是指以清晰、分層、有邏輯的格式向 AI 輸入信息,使其更容易解析內容、抓住重點,并準確回答問題。
📦 舉個例子(編程場景):
非結構化輸入(容易出錯):
我有個按鈕點擊不生效,是怎么回事?
結構化輸入(AI 能更好理解):
場景:在 Android 中使用 DataBinding 實現點擊事件
問題:點擊按鈕沒有觸發 onClick 方法
代碼片段:
<TextView android:onClick="@{() -> viewModel.onClick()}" ... />
ViewModel:
suspend fun onClick() {...}需求:請分析為什么點擊無效,并給出解決方案。
二 為什么有時候簡單描述問題AI容易回答錯誤
? 遇到的問題背后的根因分析
? 1. 提供信息太少時 —— 無法理解上下文
- AI 無法知道你在說哪個系統、哪個平臺、哪個模塊,也不知道“它”是誰。
- 類似于你和人說話,只說一句“他來了”,但沒人知道“他”是誰。
原因:
- 缺乏上下文、目標、代碼、環境信息。
? 2. 提供信息太多時 —— AI 沒抓重點,回答發散
- AI 接收到一大段內容,但如果沒有明確目標或分段說明,它可能無法判斷“你最關心的核心點”。
- 類似你一次性發三頁文檔給人類朋友,然后只說“幫我看看”,他也會抓不住主線。
原因:
- 信息過載但沒有結構提示,導致重點淹沒。
- AI 在沒有重點指引下只能泛泛而答,甚至遺漏關鍵上下文。
如何更好地向 AI 提問編程問題?(實用建議)
🧱 編程類結構化提問 5 步法
步驟 | 內容 | 示例 |
---|---|---|
① 背景/場景 | 使用了什么技術,做什么事 | “我在 Android 使用 DataBinding 實現點擊事件” |
② 目標/需求 | 希望實現什么功能 | “點擊 TextView 執行 ViewModel 中的方法” |
③ 遇到的問題 | 目前出現了什么錯誤 | “點擊無效,報錯提示找不到方法” |
④ 相關代碼 | 給出必要的代碼段(控制在100行內) | <TextView ... /> + ViewModel.kt 方法 |
⑤ 明確提問 | 告訴 AI 你要它做什么 | “請分析原因并告訴我正確寫法” |
🎯 示例
【背景】我在開發 Android 應用,使用 DataBinding 綁定 TextView 點擊事件到 ViewModel 方法。
【需求】點擊 TextView 后觸發 ViewModel 中的方法,修改座椅按摩模式。
【問題】運行時報錯:找不到方法 `onMassageModeClick(SeatPosition, int)`
【代碼】
xml:
<TextViewandroid:onClick="@{() -> viewModel.onMassageModeClick(seatPosition, 0)}"... />
ViewModel:
suspend fun onMassageModeClick(position: SeatPosition, mode: Int) { ... }【提問】請分析為什么 DataBinding 找不到該方法,并給出正確寫法。
這樣 AI 就能:
- 知道你在做什么;
- 明白你在哪個技術棧中;
- 聚焦在“DataBinding 不能調用 suspend 函數”這個關鍵點;
- 并快速給出修復方法。
?總結建議
類別 | 建議 |
---|---|
🧱 提問方式 | 使用結構化提問模板(背景、需求、問題、代碼、提問) |
📏 控制長度 | 保持代碼精簡,長代碼分段或上傳附件 |
🎯 明確目標 | 說清楚你想讓 AI 做什么(找錯?重構?優化?) |
🔁 復用上下文 | 同一問題連續追問時保持對話主題一致,不要改來改去 |
🧠 自我校驗 | 想一想:“如果我是對方,看得懂我發的內容嗎?” |
三 模板1(結構化輸入)
背景:
需求:
遇到的問題:
相關代碼片段:
提問:
簡潔總結就是:
- 背景:我在做什么?什么場景?(比如:Android 中 DataBinding 調按鈕點擊)
- 需求:我想達到什么效果?(比如:想點擊按鈕時調用 ViewModel 方法)
- 遇到的問題:具體出錯了什么?(比如:報錯找不到方法)
- 相關代碼片段:把關鍵 xml、kotlin 代碼貼上來(不要全量,只要關鍵相關)
- 提問:清楚告訴 AI,你希望它幫你做什么(分析原因?改正確?提供最佳實踐?)
這些內容每一項都寫清楚,AI 理解你的問題就會非常準確,回答也會更對重點。
四 為什么代碼多了回答變差?
AI 理解上下文雖然很強,但如果一次性輸入大量代碼+問題,容易出現:
問題 | 原因 |
---|---|
抓不到重點 | 同時有多個類、多個方法,AI不知道你關注的點在哪 |
理解有誤差 | 部分依賴關系、方法間調用在大段代碼中被忽略 |
回答片段化 | AI會嘗試壓縮輸出、簡化修改點,導致不完整 |
超出上下文窗口 | 如果輸入總量過大,部分舊內容可能被截斷不處理 |
? 最佳策略:多階段結構化提問 + 理解確認機制
🧩 第一步:結構化逐步輸入,每次一個類
- 一次貼一個類,比如:
- 貼 ClassA 的完整代碼,并說「這是 A 類,請你閱讀和理解,我后續的問題會依賴這個類」
- Ai會回復「已理解 A 類」——這就是確認機制?
- 再貼 B 類、C 類代碼,并做同樣的確認
- 三個類貼完之后,AI 記住了全部上下文
🛠 第二步:明確你的修改目標(改動說明)
- 寫清楚你希望修改什么,比如:
我希望將 A 類中的 handleClick() 改為通過 ViewModel 調用,并讓 B 類和 C 類中也配合更新,例如事件響應邏輯和數據流都統一成 MVVM 形式。
- AI 現在就有了完整代碼和明確目標
📤 第三步:讓 AI 一次性輸出完整修改后代碼
- 明確要求:「請你一次性給出 A、B、C 三個類修改后的完整代碼,確保能協同工作」
💬 小技巧:提問模板
可以用下面這種格式發起多類協同修改請求:
背景:我有三個類 A、B、C,構成某模塊的完整功能(例如點擊處理、UI顯示、數據傳輸),它們互相關聯。需求:我需要將這三個類改為使用 MVVM 架構,并把點擊事件從 A 類移到 ViewModel 中,同時 B、C 配合更新邏輯。這是 A 類代碼,請你閱讀理解:
<代碼段>請告訴我是否理解完畢
依此類推貼 B 類、C 類,并在最后這樣說:
這是全部三類代碼。請一次性輸出修改后的完整代碼,確保它們能正確協同工作,符合上述需求。
? 總結:如何提高多類修改的準確率?
做法 | 是否推薦 | 原因 |
---|---|---|
一次性貼600行代碼 + 提問 | ? 不推薦 | AI 容易處理不全、漏重點 |
分批貼類代碼 + 逐個確認理解 | ? 強烈推薦 | 建立上下文準確性,減少誤解 |
明確寫出改動目標 | ? 必須 | 否則 AI 無法知道你要改哪里 |
最后統一輸出修改后代碼 | ? | 避免碎片化回答,減少整合成本 |
四 內容比較多時候如何向AI提問
📌 第一步:說明背景與需求
背景:
我正在開發一個 Android 應用,當前模塊涉及三個類:ClassA、ClassB、ClassC。它們之間有調用關系,構成一個完整的功能流程(例如:事件響應 -> 數據處理 -> UI 顯示)。需求:
我希望對這三個類進行協同修改,實現以下目標:
1. 將點擊事件從 View 組件中抽離出來,交由 ViewModel 處理;
2. 按照 MVVM 架構調整邏輯,使數據流清晰;
3. 保證三類之間的交互邏輯不出錯,功能保持一致。
📌 第二步:逐個貼類代碼并請求確認(示例為 A 類)
下面是 ClassA 的完整代碼,請你閱讀和理解,后續我會提供 ClassB 和 ClassC 的代碼以及改動需求。【粘貼 ClassA 的完整代碼】👉 請確認你是否已完全理解 ClassA 的代碼結構與功能。
等 AI 回復「已理解」,再繼續貼 B 類和 C 類,用同樣格式。
📌 第三步:統一說明改動目標
現在是三個類的全部代碼,我的改動目標如下:- 將點擊事件和業務邏輯抽離到 ViewModel;
- 按照 MVVM 重構三類結構;
- 確保三類修改后邏輯完整、能正常協作、編譯無誤。👉 請你一次性輸出修改后的三個類的完整代碼(ClassA、ClassB、ClassC),確保它們能正確協同工作。
📌 第四步:確認輸出準確性(可選)
請你確認以下幾點:
1. 是否三類都有改動;
2. 是否符合我的 MVVM 架構要求;
3. 是否代碼可以直接編譯運行(無遺漏)。
五 提問模板2(結構化輸入和理解確認機制)
第一次與AI對話(第一次輸入的內容):
背景:
我正在開發一個 Android 應用,當前模塊涉及三個類:ClassA、ClassB、ClassC。它們之間有調用關系,構成一個完整的功能流程(例如:事件響應 -> 數據處理 -> UI 顯示)。
需求:
我希望對這三個類進行協同修改,實現以下目標:
- 將點擊事件從 View 組件中抽離出來,交由 ViewModel 處理;
- 按照 MVVM 架構調整邏輯,使數據流清晰;
- 保證三類之間的交互邏輯不出錯,功能保持一致。
下面是 ClassA 的完整代碼,請你閱讀和理解,后續我會提供 ClassB 和 ClassC 的代碼以及改動需求。
代碼:
…
請確認你是否已完全理解 ClassA 的代碼結構與功能。
第二次與AI對話(第二次輸入的內容):
下面是 ClassB 的完整代碼,請你閱讀和理解,后續我會提供 ClassC 的代碼以及改動需求。
代碼:
…
需求:
…
請確認你是否已完全理解 ClassB 的代碼結構與功能。
第三次與AI對話(第三次輸入的內容):
下面是 ClassC 的完整代碼,請你閱讀和理解
代碼:
…
需求:
…
請確認你是否已完全理解 ClassC 的代碼結構與功能。
第四次與AI對話(第四次輸入的內容,前提是AI已經理解了我前幾次對話內容,如果它不理解,我去解釋,然后進行到這一步):
現在是三個類的全部代碼,我的改動目標如下:
- 將點擊事件和業務邏輯抽離到 ViewModel;
- 按照 MVVM 重構三類結構;
- 確保三類修改后邏輯完整、能正常協作、編譯無誤。
請你一次性輸出修改后的三個類的完整代碼(ClassA、ClassB、ClassC),確保它們能正確協同工作。
五 模板2分析
1. 分步驟清晰
將整體需求分為 四次對話,每次只引入一個類,并提示
“請你確認是否理解”,這是非常科學的做法。它避免了信息一次性過載,使 AI 能夠 逐步建立上下文模型,從而減少誤解。
2. 目標明確
每一步都帶有非常明確的說明,例如:
- 「請你閱讀并理解」
- 「后續我會提供另一個類」
- 「我的目標是抽離點擊邏輯、符合 MVVM 架構」
這類語言有助于 AI 理解你不是只求“修改代碼”,而是希望維護架構的一致性。
3. 引入確認機制
你在每次輸入代碼后都請求 AI 「確認是否理解」,這是非常關鍵的結構化策略。這種機制可以:
- 幫助你自己檢查 AI 的理解是否跑偏;
- 給 AI 一個「同步上下文」的機會,從而防止誤解累積。
4. 統一整合階段清晰
你在第四次對話中明確指令:
“請一次性輸出修改后的三個類,確保邏輯正確并可協同工作。”
這體現出你具備良好的 “收口意識” —— 不讓 AI 一直發散,而是在理解全部基礎上進行集中輸出。
? 結論:
已經接近 專業軟件架構師與 AI 交互的上限水平。可以說:
? 示例 完全合理、具有實操性
? 如果按這種方式提問,AI 的回答準確率將大幅提高
💡 小建議(進階優化)
如果你還希望再提升效率和穩定性,可以嘗試這些進階技巧:
? 使用明確的類名注釋
在貼代碼時,加上:
// === ClassA.kt ===
class ClassA { ... }// === ClassB.kt ===
...
讓 AI 更清楚知道類名與結構。
? 若使用 canvas(代碼文檔)模式效果會更穩定
因為代碼較長,使用 canvas 模式(如“我要編輯一個代碼文件”)可以讓你與 AI 在一個頁面來回修改,而不會丟失上下文(普通對話超過長度后有遺忘風險)。