編程中如何與AI交互-結構化輸入和理解確認機制

一 結構化輸入是什么

📌 結構化輸入的定義:

結構化輸入是指以清晰、分層、有邏輯的格式向 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 顯示)。

需求:
我希望對這三個類進行協同修改,實現以下目標:

  1. 將點擊事件從 View 組件中抽離出來,交由 ViewModel 處理;
  2. 按照 MVVM 架構調整邏輯,使數據流清晰;
  3. 保證三類之間的交互邏輯不出錯,功能保持一致。

下面是 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 在一個頁面來回修改,而不會丟失上下文(普通對話超過長度后有遺忘風險)。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79272.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

13:傅里葉變換

傅立葉變換(FT, Fourier Transform)的作用是將一個信號由時域變換到頻域。其實就是把數據由橫坐標時間、縱坐標采樣值的波形圖格式&#xff0c;轉換為橫坐標頻率、縱坐標振幅(或相位)的頻譜格式。換后可以很明顯地看出一些原先不易察覺的特征。 有些信號在時域上是很難看出什么…

基于單片機的音頻信號處理系統設計(一)

項目名稱:基于單片機的音頻信號處理系統設計學院名稱:信息學院學生姓名:學號專業年級:指導教師:教師職稱:教授企業導師:目 錄 摘 要 Abstract 1 前言 1.1研究背景與意義 <

機器學習實操 第一部分 機器學習基礎 第8章 降維技術

機器學習實操 第一部分 機器學習基礎 第8章 降維技術 內容概要 第8章探討了降維技術&#xff0c;這些技術在處理高維數據時至關重要。高維數據不僅會使訓練過程變得極其緩慢&#xff0c;還會增加找到良好解決方案的難度&#xff0c;這就是所謂的維度災難問題。幸運的是&#…

微信小程序 XSS 防護知識整理

場景1&#xff1a;用戶輸入表單&#xff08;如評論框&#xff09; 錯誤做法&#xff1a;直接渲染未過濾的用戶輸入 // WXML <view>{{ userInput }}</view>// JS&#xff08;用戶輸入了惡意內容&#xff09; Page({data: { userInput: <script>alert("…

MySQL 服務搭建

&#x1f4a2;歡迎來到張翊塵的開源技術站 &#x1f4a5;開源如江河&#xff0c;匯聚眾志成。代碼似星辰&#xff0c;照亮行征程。開源精神長&#xff0c;傳承永不忘。攜手共前行&#xff0c;未來更輝煌&#x1f4a5; 文章目錄 在線安裝Ubuntu/Debian更新系統包索引安裝 MySQL …

【Java面試筆記:進階】23.請介紹類加載過程,什么是雙親委派模型?

Java的類加載機制是JVM的核心組成部分,其過程分為三個階段,并采用雙親委派模型來保證類加載的安全性和一致性。 1.類加載過程 1.加載階段(Loading) 核心任務:查找并加載類的二進制字節流(如.class文件)。具體行為: 將字節碼數據從不同數據源(如文件系統、網絡等)讀…

UN R79 關于車輛轉向裝置形式認證的統一規定(正文部分1)

UN R79法規是針對轉向裝置的型式認證法規&#xff0c;涉及A/B1/C類的橫向控制輔助駕駛功能&#xff0c;對各功能的功能邊界、性能要求、狀態提示、故障警示以及型式認證要提交的信息做了規范&#xff0c;本文結合百度文心一言對法規進行翻譯&#xff0c;并結合個人理解對部分內…

[隨筆] 升級uniapp舊項目的vue、pinia、vite、dcloudio依賴包等

匯總 # 升級uniapp項目dcloudio整體依賴&#xff0c;建議執行多次 # 會順帶自動更新/升級vue的版本 npx dcloudio/uvmlatest alpha# 檢查 pinia 的最新版本 npm view pinia version# 更新項目 pinia 到最新版本 npm update pinia# 更新項目 pinia 到特定的版本 # 首先&#xf…

【使用小皮面板 + WordPress 搭建本地網站教程】

&#x1f680; 使用小皮面板 WordPress 搭建本地網站教程&#xff08;快速上手&#xff09; 本教程將手把手教你如何使用 小皮面板&#xff08;XAMPP 類似工具&#xff09; 和 WordPress 搭建一個完全本地化的網站環境。適合 初學者 / 博主 / Web開發者 本地練習使用&#xf…

[更新完畢]2025五一杯A題五一杯數學建模思路代碼文章教學:支路車流量推測問題

完整內容請看文章最下面的推廣群 支路車流量推測問題 摘要 本文針對支路車流量推測問題展開研究&#xff0c;通過建立數學模型解決不同場景下的車流量分析需求。 針對問題一&#xff08;Y型道路場景&#xff09;&#xff0c;研究兩支路匯入主路的車流量推測。通過建立線性增長…

前端面試寶典---webpack原理解析,并有簡化版源碼

前言 先看一下webpack打包后的bundle.js&#xff0c;前邊的直接掃一眼就過&#xff0c;可以發現這個立即執行函數的形參就是一個&#xff0c;key為引入文件路徑&#xff0c;value為該模塊代碼的函數。 所以比較重要的就是通過webpack的配置文件中的entry的入口文件&#xff0c…

面試的各種類型

面試是用人單位選拔人才的重要環節&#xff0c;常見的面試類型有結構化面試、半結構化面試、非結構化面試和壓力面試&#xff0c;每種類型都有其特點和應對策略。 一、結構化面試 特點&#xff1a; 標準化流程 面試流程固定&#xff0c;考官會按照預先設計好的問題清單依次向…

vue3定義全局防抖指令

文章目錄 代碼參數講解 在寫項目時&#xff0c;總會有要進行防抖節流的時候&#xff0c;如果寫一個debounce函數的話 用起來代碼總會是有點長的&#xff0c;因此想到了用一個全局指令進行輸入框的防抖&#xff0c;畢竟全局指令使用時只要v-xxx就行了&#xff0c;非常方便 代碼…

WebDeveloper 流量分析、sudo提權,靶場通關WP

一、信息收集 1、主機探測 arp-scan -l netdiscover -i eth0 -r 192.168.33.0/24 nmap -sP 192.168.66.0/24 2、端口掃描 nmap -sS -sV 192.168.66.141 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 80/tcp op…

某化工廠運維升級:智和信通運維平臺實現工業交換機智能管理

隨著某化工廠數字化轉型的加速推進&#xff0c;其生產過程對復雜網絡和IT設備的依賴程度日益加深。當前的網絡不僅承載著生產控制系統&#xff08;如DCS、PLC等&#xff09;的通信需求&#xff0c;還同時支持辦公自動化、安防監控、工業物聯網&#xff08;IoT&#xff09;等多種…

React:封裝一個編輯文章的組件

封裝一個編輯文章的組件,就要用到富文本編輯器,支持標題、內容、標簽等的編輯,并且能夠保存和取消。 首先,我需要考慮用戶的具體需求。編輯文章組件通常需要哪些功能?標題輸入、內容編輯、標簽管理、保存和取消按鈕。可能還需要自動保存草稿、驗證輸入、錯誤提示等功能。用…

數據結構與算法:圖論——并查集

先給出并查集的模板&#xff0c;還有一些leetcode算法題&#xff0c;以后遇見了相關題目再往上增加 并查集模板 整體模板C代碼如下&#xff1a; 空間復雜度&#xff1a; O(n) &#xff0c;申請一個father數組。 時間復雜度 路徑壓縮后的并查集時間復雜度在O(logn)與O(1)之間…

精品推薦-湖倉一體電商數據分析平臺實踐教程合集(視頻教程+設計文檔+完整項目代碼)

精品推薦&#xff0c;湖倉一體電商數據分析平臺實踐教程合集&#xff0c;包含視頻教程、設計文檔及完整項目代碼等資料&#xff0c;供大家學習。 1、項目背景介紹及項目架構 2、項目使用技術版本及組件搭建 3、項目數據種類與采集 4、實時業務統計指標分析一——ODS分層設計與…

Git 基本操作(一)

目錄 git add git commit git log git status git diff git 版本回退 git reset git add git add 指令為添加工作區中的文件到暫存區中。 git add file_name; //將工作區名稱為file_name的文件添加進暫存區 git add .; //將工作區中的所有文件添加進暫存區 git comm…

docker打包鏡像時提示permission denied

sudo usermod -aG docker $USER //讓當前用戶加入docker用戶組 sudo systemctl restart docker //重新啟動docker服務 newgrp docker //更新組權限 來源&#xff1a;docker命令出現permission denied的解決方法_permission denied while trying to connect…