Prompt Engineer 使用、设计、优化

文章目录

    • [1. LangChain 中的 Prompt 模块怎么使用](#1. LangChain 中的 Prompt 模块怎么使用)
      • [1.1 最简单的模板](#1.1 最简单的模板)
      • [1.2 聊天模板](#1.2 聊天模板)
      • [1.3 示例模板(Few-Shot)](#1.3 示例模板(Few-Shot))
      • [1.4 动态日期模板](#1.4 动态日期模板)
    • [2. 如何在实际项目中设计 Prompt](#2. 如何在实际项目中设计 Prompt)
      • [2.1 Prompt 设计的四大要素](#2.1 Prompt 设计的四大要素)
      • [2.2 如何进行 Prompt 优化](#2.2 如何进行 Prompt 优化)
        • [Prompt 优化的方法论](#Prompt 优化的方法论)
        • 性能评估
    • [3. 零样本与少样本学习](#3. 零样本与少样本学习)

1. LangChain 中的 Prompt 模块怎么使用

提示词模板就是把"问问题"这件事标准化,不用每次都手写完整的提示词。


1.1 最简单的模板

定义模板,用 {} 占位。

python 复制代码
from langchain_core.prompts import PromptTemplate

# 定义模板,用 {} 占位
template = PromptTemplate.from_template(
    "请用{language}语言介绍一下{topic},不超过100字。"
)

# 填充变量
prompt = template.format(language="中文", topic="人工智能")
print(prompt)
# 输出: 请用中文语言介绍一下人工智能,不超过100字。

1.2 聊天模板

可定义多轮对话模板。

python 复制代码
from langchain_core.prompts import ChatPromptTemplate
from dotenv import load_dotenv
import os
from langchain_openai import ChatOpenAI

load_dotenv()

# 定义多轮对话模板
chat_template = ChatPromptTemplate.from_messages([
    ("system", "你是一位{role},擅长用简洁易懂的方式解释复杂概念。"),
    ("human", "请解释一下:{concept}"),
])

# 生成消息列表
messages = chat_template.format_messages(
    role="物理学教授",
    concept="量子纠缠"
)

# 创建模型
llm = ChatOpenAI(
    model="deepseek-chat",
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url="https://api.deepseek.com"
)

# 调用模型
response = llm.invoke(messages)
print(response.content)

1.3 示例模板(Few-Shot)

通过给几个例子,教 AI 按你想要的格式输出。

python 复制代码
from langchain_core.prompts import ChatPromptTemplate
from dotenv import load_dotenv
import os
from langchain_openai import ChatOpenAI

load_dotenv()

# 创建模型
llm = ChatOpenAI(
    model="deepseek-chat",
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url="https://api.deepseek.com"
)

# 创建包含示例的模板
few_shot_template = ChatPromptTemplate.from_messages([
    ("system", "你是一个情绪表达助手。"),
    ("human", "示例:\n情绪: 开心\n表达: 我今天非常开心!\n\n情绪: 难过\n表达: 我感到有些难过..."),
    ("human", "现在请表达这个情绪: {emotion}")
])

messages = few_shot_template.format_messages(emotion="兴奋")
response = llm.invoke(messages)
print(response.content)
# 情绪: 兴奋
# 表达: 我兴奋得快要跳起来了!

1.4 动态日期模板

除了可以设置一些输入变量,也可以定义一些自动填充的变量。

python 复制代码
from langchain_core.prompts import PromptTemplate
from dotenv import load_dotenv
import os
from langchain_openai import ChatOpenAI
from datetime import datetime

load_dotenv()

# 创建模型
llm = ChatOpenAI(
    model="deepseek-chat",
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url="https://api.deepseek.com"
)

template = PromptTemplate(
    template="今天是{date},请告诉我关于{topic}的最新消息。",
    input_variables=["topic"],
    partial_variables={
        "date": datetime.now().strftime("%Y年%m月%d日")  # 自动填充
    }
)

# 只需要传 topic
prompt = template.format(topic="AI发展")

response = llm.invoke(prompt)
print(response.content)

2. 如何在实际项目中设计 Prompt

2.1 Prompt 设计的四大要素

  • 角色设定:限定模型回答视角
  • 任务描述:使用 STAR 原则(场景、任务、行动、结果)
  • 格式规范:如分点列表、表格呈现、代码格式等
  • 约束条件:包括长度、风格、内容、要求引用来源等限制

2.2 如何进行 Prompt 优化

Prompt 优化的方法论
  • 迭代优化:从简单到复杂,逐步完善
  • A/B 测试:比较不同版本的效果
  • 用户反馈:收集实际使用情况
  • 性能指标:准确率、相关性、一致性等
性能评估
  • 定量指标:响应时间、成功率
  • 定性指标:输出质量、相关性
  • 用户体验:易用性、满意度
  • 成本效益:API 调用成本、资源使用

3. 零样本与少样本学习

  • 零样本学习(Zero-Shot):无需示例,直接通过指令让大模型完成任务,依赖模型预训练知识,适合通用、简单任务(如翻译、分类、通用问答)。
  • 少样本学习(Few-Shot):通过给出少量高质量示例,引导模型理解任务格式和规则,适合复杂、专业任务(如法律文档解析、医疗术语抽取)。
  • 区别:零样本输出可控性较低,少样本通过示例提升输出可控性和准确率。
相关推荐
拾贰_C17 小时前
【Agent | openai | Streaming | 】流式输出Streaming
ubuntu·面试·prompt
码点滴20 小时前
从“失忆症“到“数智分身“:Hermes Agent 如何重塑你的 AI 交互体验?
人工智能·架构·prompt·ai编程·hermes
猫头虎21 小时前
如何搭建 24 小时 AI 直播平台:魔珐星云数字人打造无人值守 “AI 销冠” 全流程实战教程
人工智能·langchain·开源·prompt·aigc·embedding·agi
Flying pigs~~1 天前
大模型Prompt-Tuning技术进阶 - 完整总结
人工智能·大模型·prompt
合合技术团队1 天前
智能合同审查搭建教程:低质量PDF怎么处理?先解析清洗,再分路审阅(附GitHub项目地址)
pdf·prompt·github·textin
三无推导1 天前
深入解析 ComposioHQ/awesome-codex-skills:从 Prompt 复用到 AI 工程技能化的实践路径
人工智能·性能优化·开源·prompt·github
optimistic_chen1 天前
【AI Agent 全栈开发】提示词技巧(prompt)
java·人工智能·ai·prompt·agent
Cxiaomu1 天前
AI Agent 核心概念全景图:Prompt、RAG、微调、Tool Call、状态机、Workflow 与 MCP
人工智能·prompt
疯狂成瘾者1 天前
Prompt分层策略
前端·数据库·prompt
胡利光1 天前
Context Engineering 实战 02|System Prompt 是架构决策,不是写说明书
java·架构·prompt