编程中如何与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.mzph.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…