96SEO 2026-02-20 01:34 18
id="content_views">
在AI驱动开发的时代,提示词(Prompt)是连接人类需求与AI能力的核心桥梁。

尤其对于爬虫+神经网络这类技术密集型项目,优秀的提示词能让AI精准输出可用代码、高效解决调试问题,甚至缩短50%以上的开发周期。
本文将先拆解优秀提示词的核心条件,再以“图片爬虫+ResNet18分类模型”项目为案例,复盘从初始需求到最终落地的全流程提示词设计与迭代,带你掌握技术类项目的提示词工程技巧。
结合提示词工程理论与实操经验,优秀的技术类提示词需满足「五大核心条件」,既兼顾通用逻辑,又适配代码开发、调试优化的特殊需求,具体如下:
目标明确性:精准锁定“做什么+要什么”
拒绝模糊表述,需明确任务边界、技术目标与输出要求,让AI无需猜测。
核心是“不遗漏关键约束”,比如技术栈、功能范围、输出格式。
-
反例:“帮我写个爬虫爬图片,再做个分类模型”(无技术栈、无目标对象、无输出标准);
-
正例:“用Python+Selenium(Edge浏览器)爬取百度图片中‘少年带土’前20张图片,按人物名称创建文件夹存储,代码需包含异常处理和详细注释”。
实操要点:技术场景中需额外明确“输出物形态”(如可运行代码、模块拆分、注释要求),避免AI输出伪代码或残缺逻辑。
场景具象化:绑定“角色+环境+约束”
给AI设定清晰角色与开发环境,同时明确技术约束(必用/禁用方案),让输出更贴合实际开发场景。
技术项目中,“环境前提”和“技术限制”是具象化的核心。
-
示例:“作为资深PyTorch工程师,基于我已整理的火影人物图片数据集(6类,每类20张,按文件夹分类),用ResNet18迁移学习实现分类模型,要求不使用TensorFlow,适配Python3.7版本,显存限制8G”。
实操要点:角色设定需匹配任务难度(如“爬虫工程师”“神经网络专家”),环境信息需包含版本、硬件限制、数据集情况,技术约束需明确“必选工具”和“排除项”。
逻辑结构性:拆解“步骤+优先级”
复杂项目需按开发流程拆分需求,明确步骤顺序与优先级,帮助AI建立清晰的执行框架。
尤其适合“爬虫→数据处理→模型开发→优化”这类多环节任务。
-
示例:“分两步实现项目:第一步,开发百度图片爬虫,需支持多人物批量爬取、图片去重;第二步,基于PyTorch搭建分类模型,优先保证代码可运行,再优化准确率。
每步代码需独立成模块,附带调用说明”。
实操要点:技术项目可按“流程阶段”或“功能模块”拆分,同时标注优先级(如“先保证运行,再优化性能”),避免AI本末倒置。
细节完整性:补充“参数+反馈机制”
技术开发的卡壳多源于细节缺失,优秀提示词需提供关键参数(如路径、接口信息),并预留动态反馈通道,方便迭代优化。
-
示例:“爬虫代码中,EdgeDriver路径为r"C:\Users\86139\AppData\Local\Programs\Python\Python37\Scripts\msedgedriver.exe",爬取关键词包括‘少年带土’‘鹰佐’等6个角色;若运行报错,先分析错误原因,再提供修改后的完整代码”。
实操要点:关键参数(路径、版本、硬件参数)需精准提供,同时明确“错误反馈方式”,让AI能基于报错信息定向修正。
动态可调性:预留“迭代优化空间”
首次提示词无需追求完美,需设计“追加指令”的接口,根据AI输出结果微调需求,尤其适合调试阶段。
-
示例:“先按上述需求开发爬虫代码,运行后若出现‘提取不到图片链接’的问题,再优化定位逻辑,优先使用XPath定位,不依赖类名”。
实操要点:技术项目中可预设常见问题场景,明确优化方向,减少反复沟通成本。
以下以“火影人物图片爬虫+PyTorch分类模型”项目为核心,按开发流程复盘提示词设计、AI响应、迭代优化的全过程,所有提示词均为实战原版,附设计思路与效果分析。
“帮我爬取百度图片中6个火影人物的图片,每个人物前20张,分别存入对应名称的文件夹;之后用卷积神经网络实现分类模型,能预测单张图片的人物类别。
用Edge浏览器,Python语言。
”
-
优点:明确了核心任务(爬虫+分类)、工具(Edge+Python)、基础需求(6类人物、前20张);
-
不足:缺少关键细节(驱动路径、图片定位方式、神经网络框架、数据集结构),易导致AI输出通用代码,需二次调试。
豆包首次输出基础爬虫代码(Selenium+Edge)和简单CNN模型,但未包含具体路径配置、图片定位逻辑模糊。
用户优化提示词(补充细节+结构):“基于之前的需求,补充以下信息:1.
EdgeDriver路径:r"C:\Users\86139\AppData\Local\Programs\Python\Python37\Scripts\msedgedriver.exe";2.
爬取关键词:少年带土、白面具、破面带土、青年水门、鹰佐、九喇嘛鸣人;3.
神经网络用PyTorch框架,优先考虑迁移学习(如ResNet18);4.
分两步输出代码:先爬虫,再分类模型,每步代码需可直接运行,包含异常处理和注释。
”
“运行你给的爬虫代码后报错:Exception:
未找到任何图片容器元素!
错误位置在第74行。
我用Edge浏览器检查了百度图片页面,img标签的class是img_7rSL,src属性可直接打开完整图片。
请基于这个信息修改代码,优先用src属性提取图片链接,定位逻辑改用XPath,避免依赖易变的类名,确保能爬取到图片。
”
-
满足“细节完整性”:提供报错信息、页面元素检查结果(class、src属性);
-
满足“动态可调性”:明确优化方向(XPath定位、用src属性),直指问题核心。
豆包修改代码,用XPath定位“src属性有效”的img标签,补充页面滚动逻辑触发懒加载,代码运行成功,顺利爬取6类人物各20张图片。
“代码已成功运行,帮我修改最后的单张图片预测部分,实现循环输入图片路径预测,输入‘q’可退出,若路径不存在提示错误信息,保留置信度输出。
”
“我已手动筛选完图片,数据集按类别分文件夹存储(路径:D:\无畏时刻\机器学习\vibe
coding火影人物分类\人物分类)。
作为擅长神经网络的专家,用PyTorch+ResNet18迁移学习实现分类模型,要求:1.
保留之前的循环预测逻辑,输入q退出。
不使用混淆矩阵分析,代码可直接运行。
”
-
满足“角色具象化”:设定“神经网络专家”角色,明确技术栈(PyTorch+ResNet18);
-
满足“逻辑结构性”:拆分数据处理、模型构建、训练可视化、预测交互四大需求;
-
满足“技术约束”:排除混淆矩阵,明确数据集路径和拆分比例。
输出完整模块化代码,包含数据增强、ResNet18微调(解冻layer3/layer4)、早停逻辑、训练曲线可视化,代码一次运行成功,初始验证准确率30%。
“模型运行成功,但验证准确率只有30%,请分析原因并给出优化方案,基于原代码修改:1.
每个类别我会补充到30-50张图片,代码需适配更大数据集。
”
-
满足“目标明确性”:核心目标是提升准确率,明确3个优化方向;
-
满足“动态可调性”:结合数据补充计划,让代码适配后续数据集扩容。
修改代码:强化数据增强(随机裁剪、高斯模糊、颜色抖动)、用AdamW分层设置学习率(卷积层1e-5,分类头1e-4)、提升Dropout比例至0.6,优化后准确率提升至78%。
“代码已优化,帮我做最后调整:1.
确保所有路径适配Windows系统,代码可直接运行无需修改。
”
代码完全适配需求,支持批量爬取、模型训练、循环预测全流程,验证准确率稳定在78%-82%,交互逻辑流畅,可直接用于火影人物图片分类任务。
-
技术项目中,“报错信息+页面/数据细节”是调试类提示词的黄金组合,能让AI跳过猜测,直接定位问题;
-
迁移学习、爬虫这类专业任务,需在提示词中“锁定技术细节”(如ResNet18微调策略、XPath定位规则),避免AI输出通用方案;
-
迭代式提示词更高效:首次搭框架,后续按“报错→补充细节→优化需求”的节奏微调,比一次性写长篇提示词更精准。
技术类项目提示词可复用模板
【环境前提】已安装:Python3.7、PyTorch2.x、Edge浏览器;已配置:EdgeDriver路径XXX;数据集情况:XXX(类别数、数量、存储结构);硬件限制:XXX(显存、CPU)
【核心需求】XXX(如“爬虫+ResNet18分类”“批量爬取+单张预测”)
【技术约束】必须用:XXX(工具/框架/策略,如Edge+Selenium、ResNet18迁移学习);禁止用:XXX(如TensorFlow、混淆矩阵)
【步骤与优先级】1.
第一步XXX(如爬虫开发),优先保证XXX(如图片提取成功);2.
第二步XXX(如模型训练),优先保证XXX(如可运行性)
【关键细节】XXX(如路径、页面元素属性、学习率设置)
【输出要求】代码需模块化、带注释、可直接运行;包含XXX(如异常处理、可视化、交互逻辑);报错后提供修改后的完整代码
1、文件夹结构:
src="https://i-blog.csdnimg.cn/direct/4f0fe07703c943d9b5ecdca554cc20a2.png">
2、代码:
爬虫:
selenium.webdriver.edge.service
import
selenium.webdriver.support.wait
import
r"C:\Users\86139\AppData\Local\Programs\Python\Python37\Scripts\msedgedriver.exe"
TIMEOUT
图片根目录:代码在「代码」文件夹,图片保存到上级的「人物分类」文件夹
IMG_ROOT_DIR
"https://image.baidu.com/","Accept":
"image/webp,image/png,image/jpeg,*/*;q=0.8"
核心函数
init_edge_browser():"""初始化Edge浏览器,规避反爬"""if
not
os.path.exists(EDGE_DRIVER_PATH):raise
FileNotFoundError(f"EdgeDriver文件不存在!
路径:{EDGE_DRIVER_PATH}")options
webdriver.EdgeOptions()options.add_experimental_option("excludeSwitches",
"enable-logging"])options.add_experimental_option("useAutomationExtension",
False)options.add_argument("--disable-blink-features=AutomationControlled")options.add_argument("--disable-web-security")options.add_argument("--ignore-certificate-errors")options.add_argument(f"--user-agent={HEADERS['User-Agent']}")options.add_experimental_option("prefs",
{"profile.managed_default_content_settings.images":
2})service
Service(executable_path=EDGE_DRIVER_PATH)browser
webdriver.Edge(service=service,
options=options)browser.execute_script("Object.defineProperty(navigator,
'webdriver',
undefined})")browser.maximize_window()browser.set_page_load_timeout(TIMEOUT)return
browser
create_folder(keyword):"""创建人物命名的文件夹(保存在「人物分类」下)"""#
拼接路径:../人物分类/关键词(比如
os.path.exists(folder_path):os.makedirs(folder_path)print(f"
已在「人物分类」创建文件夹:{folder_path}")return
folder_path
count):"""提取图片链接(跳过第一张)"""img_urls
[]try:browser.get("https://image.baidu.com/search")time.sleep(3)search_box
TIMEOUT).until(EC.element_to_be_clickable((By.ID,
"kw")))search_box.clear()search_box.send_keys(keyword)search_box.send_keys(Keys.ENTER)print(f"
搜索「{keyword}」完成,等待结果加载...")time.sleep(5)for
range(3):browser.execute_script("window.scrollBy(0,
TIMEOUT).until(EC.presence_of_all_elements_located((By.XPATH,
'http')
src_url:img_urls.append(src_url)except
Exception
提取单张图片链接失败:{e}")continueprint(f"✅
「{keyword}」提取到
提取「{keyword}」链接失败:{str(e)}")traceback.print_exc()return
img_urls
save_path):"""下载图片,强制保存为标准RGB格式JPG"""try:response
requests.get(img_url,headers=HEADERS,timeout=15,stream=True,allow_redirects=True)response.raise_for_status()#
response.headers.get("Content-Type",
"")if
非图片链接,跳过:{img_url[:50]}...")return#
response.contentif
文件过小,跳过:{img_url[:50]}...(大小:{len(img_data)}字节)")return#
打开图片img
Image.open(io.BytesIO(img_data))#
转换为RGB格式(JPG不支持透明通道,避免编码异常)img_rgb
img.convert("RGB")#
保存为标准JPG(覆盖原后缀的异常文件)img_rgb.save(save_path,
"JPEG",
图片编码异常,跳过:{img_url[:50]}...(错误:{e})")returnexcept
Exception
crawl_baidu_images():"""主爬虫函数"""browser
Nonetry:print("
os.path.exists(IMG_ROOT_DIR):os.makedirs(IMG_ROOT_DIR)print(f"
已创建图片根目录:{IMG_ROOT_DIR}")input_str
input("请输入需要爬取的目标关键词(多个关键词用空格分隔):")PERSONS
[keyword.strip()
「{person}」无有效图片链接,跳过下载")continuefor
idx,
保存路径:../人物分类/关键词/关键词_1.jpgsave_path
os.path.join(folder,
f"{person}_{idx}.jpg")download_img(img_url,
save_path)time.sleep(1)print("\n
所有关键词图片爬取完成!
图片均保存在「人物分类」文件夹下")except
FileNotFoundError
爬虫执行异常:{str(e)}")traceback.print_exc()finally:if
browser:browser.quit()print("\n
浏览器已关闭,爬虫程序结束!")
"__main__":crawl_baidu_images()
训练,预测模型:
input("是否跳过爬虫,继续执行分类训练?
(y/n):")
warnings.filterwarnings("ignore")
核心配置(路径隔离关键:图片路径指向「人物分类」,代码在「代码」文件夹)
"./naruto_classifier_resnet18_data_opt.pth"
torch.cuda.is_available():device
torch.device("cuda:0")print(f"✅
使用GPU训练:{torch.cuda.get_device_name(0)}")elif
torch.backends.mps.is_available():device
clean_invalid_images(data_dir):"""仅清洗「人物分类」文件夹内的图片,彻底隔离代码文件"""print("\n
开始清洗「人物分类」下的无效图片...")invalid_count
Image.open(file_path).convert("RGB")img.verify()if
64:os.remove(file_path)invalid_count
1print(f"删除过小图片:{file_path}")except:os.remove(file_path)invalid_count
1print(f"删除损坏图片:{file_path}")print(f"✅
数据清洗完成,共删除{invalid_count}张无效图片")
calculate_dataset_stats(data_dir):print("\n
计算「人物分类」数据集的RGB均值和标准差...")transform
transforms.Compose([transforms.Resize(IMAGE_SIZE),transforms.ToTensor()])dataset
datasets.ImageFolder(root=data_dir,
images.std(2).sum(0)total_images
自定义归一化参数:")print(f"均值:{mean.numpy().round(4)}
标准差:{std.numpy().round(4)}")return
torch.randperm(batch_size).to(device)bbx1,
dataset.dataset.classesself.class_to_idx
dataset.dataset.class_to_idxself.samples
dataset.dataset.samples[dataset.indices[idx]]self.samples.append((img_path,
label))self.labels.append(label)ros
RandomOverSampler(random_state=42)X_resampled,
ros.fit_resample(np.arange(len(self.samples)).reshape(-1,
self.labels)self.resampled_indices
X_resampled.flatten()print(f"\n⚖️
类别均衡处理:")print(f"原样本数:{len(self.samples)}
均衡后样本数:{len(self.resampled_indices)}")for
cls_idx)print(f"{cls}:{count}张")def
self.resampled_indices[idx]img_path,
Image.open(img_path).convert("RGB")img
self.dataset.dataset.transform(img)return
create_data_loaders():clean_invalid_images(DATA_DIR)
calculate_dataset_stats(DATA_DIR)
transforms.Compose([transforms.Resize((256,
256)),transforms.RandomCrop(IMAGE_SIZE),transforms.RandomHorizontalFlip(p=0.5),transforms.RandomRotation(20),transforms.ColorJitter(brightness=0.3,
hue=0.1),transforms.RandomGrayscale(p=0.1),transforms.GaussianBlur(kernel_size=(3,
2.0)),transforms.ToTensor(),transforms.Normalize(mean=mean,
transforms.Compose([transforms.Resize(IMAGE_SIZE),transforms.ToTensor(),transforms.Normalize(mean=mean,
datasets.ImageFolder(root=DATA_DIR,
transform=train_transform)dataset_size
torch.utils.data.random_split(full_dataset,
val_size])val_dataset.dataset.transform
val_transformtrain_dataset_balanced
BalancedDataset(train_dataset)train_loader
DataLoader(train_dataset_balanced,
最终数据集信息:")print(f"原始总样本数:{dataset_size}
训练集(均衡后):{len(train_dataset_balanced)}
验证集:{len(val_dataset)}")print(f"类别数:{len(full_dataset.classes)}
类别映射:{full_dataset.class_to_idx}")return
models.resnet18(weights=ResNet18_Weights.IMAGENET1K_V1)for
range(epochs):model.train()train_loss
CUTMIX_BETA)optimizer.zero_grad()outputs
labels_b)loss.backward()optimizer.step()_,
predicted.eq(labels_a.data).cpu().sum()
predicted.eq(labels_b.data).cpu().sum()).item()else:optimizer.zero_grad()outputs
labels)loss.backward()optimizer.step()train_loss
labels).sum().item()pbar.set_postfix({"loss":
train_totaltrain_losses.append(epoch_train_loss)train_accs.append(epoch_train_acc)model.eval()val_loss
labels).sum().item()epoch_val_loss
len(val_loader.dataset)epoch_val_acc
val_totalval_losses.append(epoch_val_loss)val_accs.append(epoch_val_acc)if
epoch_val_accbest_model_weights
model.state_dict()early_stop_count
总结:")print(f"训练损失:{epoch_train_loss:.4f}
训练准确率:{epoch_train_acc:.4f}")print(f"验证损失:{epoch_val_loss:.4f}
验证准确率:{epoch_val_acc:.4f}")print(f"当前最优验证准确率:{best_val_acc:.4f}")if
0:print(f"早停计数器:{early_stop_count}/{early_stop_patience}")print("-"
early_stop_patience:print(f"\n⚠️
验证集准确率连续{early_stop_patience}轮未提升,触发早停")breakmodel.load_state_dict(best_model_weights)if
SAVE_MODEL:torch.save({'model_state_dict':
train_loader.dataset.class_to_idx},
最优模型已保存至「代码」文件夹:{MODEL_SAVE_PATH}")return
plot_training_curves(train_losses,
val_accs):plt.figure(figsize=(12,
color="blue")plt.plot(val_losses,
color="red")plt.title("训练/验证损失曲线(路径隔离版)")plt.xlabel("Epoch")plt.ylabel("Loss")plt.legend()plt.grid(True)plt.subplot(1,
color="blue")plt.plot(val_accs,
color="red")plt.title("训练/验证准确率曲线(路径隔离版)")plt.xlabel("Epoch")plt.ylabel("Accuracy")plt.legend()plt.grid(True)plt.tight_layout()plt.savefig("./training_curves_data_opt.png")
训练曲线已保存至「代码」文件夹:training_curves_data_opt.png")
transforms.Compose([transforms.Resize(IMAGE_SIZE),transforms.ToTensor(),transforms.Normalize(mean=mean,
Image.open(image_path).convert("RGB")image_tensor
transform(image).unsqueeze(0)image_tensor
image_tensor.to(device)model.eval()with
model(image_tensor)probabilities
torch.nn.functional.softmax(outputs,
idx_to_class[predicted_idx.item()]confidence
probabilities[0][predicted_idx.item()].item()print(f"\n
预测结果:")print(f"图片路径:{image_path}")print(f"预测类别:{predicted_class}
create_data_loaders()num_classes
build_model(num_classes)criterion
LEARNING_RATE}],weight_decay=1e-4)model,
std)plot_training_curves(train_losses,
os.path.exists(test_image_path):predict_single_image(model,
测试图片不存在:{test_image_path},请重新输入")
3、运行结果
src="https://i-blog.csdnimg.cn/direct/13bebef897e0460d87540dd3cb779f83.png">
提示词工程不是“堆砌需求”,而是“精准传递意图”的艺术。
对于爬虫+神经网络这类技术项目,优秀的提示词需兼顾“理论框架”与“实操细节”,既符合目标明确、逻辑清晰的通用原则,又能适配技术开发的特殊性(如报错调试、参数配置、版本兼容)。
通过本文的案例复盘可见,从模糊需求到完整项目,提示词的迭代过程也是需求逐步清晰、问题逐个解决的过程。
掌握本文的提示词条件与模板,能让你在AI驱动开发中更高效地落地技术项目,将更多精力放在核心逻辑设计上,而非重复调试与沟通。
class="post-meta-container">
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback