提示工程(Prompt Engineering):释放生成式人工智能的潜力

近年来,生成式人工智能(Generative AI)的快速发展改变了我们与计算机交互的方式。如何正确地设计提示(Prompt)是解锁其潜力的关键技能之一,被称为 提示工程(Prompt Engineering)。本文将通过深度解读提示工程的理念,并展示多种代码实例,助力开发者更好地理解并运用这一技能。

什么是提示工程?

生成式 AI(如 OpenAI 的 GPT 系列、DALL-E、Stable Diffusion 等)依赖输入的文本提示来生成内容。设计高质量的提示不仅可以显著提升结果的质量,还能优化交互效率。因此,提示工程就是一种综合应用技术,它包含以下几方面的核心作用:

  1. 提高生成质量:构造逻辑性更强且准确度更高的内容。

  2. 节省开发成本:通过精确提示减少调试和反复实验的时间。

  3. 拓展应用场景:实现复杂需求,例如多步骤推理或代码生成。

本文以实际代码生成任务为例,逐步剖析如何优化提示,最终生成具备可操作性的解决方案。

应用场景示例:实现基于 FastAPI 的 CRUD 应用

我们将使用 FastAPI 和 SQLite 构建一个简单的 CRUD 接口,涵盖从初始提示到最终生成优化代码的完整过程。

示例目标

我们的目标是利用生成式 AI 创建以下功能的代码:

  • 基于 FastAPI 框架实现。

  • 数据库使用 SQLite,且通过 SQLAlchemy 管理模型。

  • 提供标准的 CRUD 路由。

  • 返回 JSON 响应,符合 RESTful API 设计。

  • 符合 PEP 8 规范,包含注释和类型注解。

初始提示:简单描述任务

复制代码
创建一个使用 FastAPI 框架的 CRUD 应用。

这种提示虽然明确了目标,但缺乏关键细节。生成的代码可能存在遗漏,例如没有数据库支持或者路由实现不完整。

优化提示 1:增加功能要求
复制代码
创建一个基于 FastAPI 框架的 CRUD 应用,要求:
- 使用 SQLite 数据库。
- 使用 SQLAlchemy 管理数据模型。
- 包括添加、读取、更新、删除四种路由。

添加了功能描述后,AI 会生成更符合需求的代码框架,但代码可能缺少标准化和细节。

优化提示 2:增加风格和质量要求
复制代码
创建一个基于 FastAPI 的 CRUD 应用,具体要求:
- 使用 SQLite 数据库,通过 SQLAlchemy 管理数据模型。
- 包括 CRUD 操作的完整 RESTful API 路由。
- 返回 JSON 格式的响应,状态码应准确。
- 代码符合 PEP 8 标准,包含类型注解与适当注释。

此提示更加明确,让生成的代码具有高质量和易读性。

示例代码:

以下是根据优化后的提示生成的代码实例:

复制代码
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Session

# 数据库设置
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

class Item(Base):
    __tablename__ = 'items'
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    description = Column(String, index=True)

Base.metadata.create_all(bind=engine)

# FastAPI 应用实例
app = FastAPI()

class ItemCreate(BaseModel):
    name: str
    description: str

@app.post("/items/", response_model=ItemCreate)
def create_item(item: ItemCreate):
    db: Session = SessionLocal()
    db_item = Item(**item.dict())
    db.add(db_item)
    db.commit()
    db.refresh(db_item)
    return db_item

@app.get("/items/{item_id}")
def read_item(item_id: int):
    db: Session = SessionLocal()
    item = db.query(Item).filter(Item.id == item_id).first()
    if not item:
        raise HTTPException(status_code=404, detail="Item not found")
    return item

@app.put("/items/{item_id}")
def update_item(item_id: int, item: ItemCreate):
    db: Session = SessionLocal()
    db_item = db.query(Item).filter(Item.id == item_id).first()
    if not db_item:
        raise HTTPException(status_code=404, detail="Item not found")
    for key, value in item.dict().items():
        setattr(db_item, key, value)
    db.commit()
    db.refresh(db_item)
    return db_item

@app.delete("/items/{item_id}")
def delete_item(item_id: int):
    db: Session = SessionLocal()
    db_item = db.query(Item).filter(Item.id == item_id).first()
    if not db_item:
        raise HTTPException(status_code=404, detail="Item not found")
    db.delete(db_item)
    db.commit()
    return {"message": "Item deleted successfully"}

多步提示工程示例

为了进一步细化提示并扩展功能,可以按如下步骤进行:

  1. 添加分页支持

    修改代码以支持分页功能。

增加分页支持的路由:

复制代码
@app.get("/items/")
def read_items(skip: int = 0, limit: int = 10):
    db: Session = SessionLocal()
    items = db.query(Item).offset(skip).limit(limit).all()
    return items
  1. 添加搜索功能

    在读取操作中支持通过名称搜索。

实现搜索功能:

复制代码
@app.get("/items/search/")
def search_items(query: str):
    db: Session = SessionLocal()
    items = db.query(Item).filter(Item.name.contains(query)).all()
    return items
  1. 添加 JWT 身份验证

结合提示工程,引入身份验证模块,确保 API 安全性。

提示工程的技巧总结

  1. 目标明确:精准描述预期结果。

  2. 分解任务:将复杂目标划分为子任务。

  3. 迭代完善:根据生成结果不断调整提示。

  4. 标准化要求:通过添加规范增强输出的可用性与一致性。

结语

提示工程不仅仅是一种与生成式 AI 交互的工具,更是一门技术与艺术相结合的学问。希望通过本文的详细讲解与丰富代码示例,能帮助读者深入理解并掌握提示工程,为自己的开发流程带来实质性的效率提升。

引用与资源

相关推荐
金融小师妹21 小时前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
HavenlonLabs21 小时前
Havenlon 思考录(十一):系统的冷,不是对人,而是对风险
人工智能·安全威胁分析·安全架构·havenlon
林澈在路上21 小时前
最新版权清晰 AI音乐写歌工具软件App推荐 商用全场景实测指南
数据库·人工智能·ai·aigc·音频
dreamread21 小时前
2026多盘对比八字排盘工具怎么选:看档案管理、对照维度和隐私边界
人工智能·软件工具·传统文化
qq_2915792521 小时前
电商AI作图工具:技术原理、主流工具横向对比与实战案例
人工智能
Litluecat21 小时前
2026年7月3日科技热点新闻
人工智能·科技·新闻·每日·速览
橘子星21 小时前
从零手写 RAG 语义检索:基于 Node.js 实现轻量级向量搜索
javascript·人工智能
czzxxxxxx21 小时前
2026年过半,AI行业正在发生哪些变化?
大数据·人工智能
新知图书21 小时前
智能体基础架构
人工智能·agent·ai agent·智能体·langgraph
Turbo正则21 小时前
群论学习入门 | 群论与李群的基本概念
人工智能·学习·算法·抽象代数