当前位置: 首页 > news >正文

LangChain 入门 Prompts 提示词

目录
  • 设置角色和指令
    • 提示词工程
  • 对话示例
  • 格式化输出
  • 基于Model的结构化输出

提示词(Prompt) 就是发送给模型的消息,其中SystemMessage是 系统提示词(system prompt) ,可以给模型设定角色、聊天的背景、任务说明,对模型生成的内容脊很大的影响。

设置角色和指令

在创建模型的时候设定角色,就不需要在每次请求调用的时候,去指定了

# 创建 agent
agent = create_agent(model=model,system_prompt="你是一个天气预报助手。"  # 在这边设置,就不需要每次调用的时候去配置了
)

提示词工程

提示词工程(Prompt Engineering),通过优化提示词使模型输出的结果更符合业务需要的过程。
一般来说,系统提示词(System Prompt)会包含以下几个部分,不是每次都需要全部包含,根据需要进行裁剪,通常按此顺序排列:

  • 身份角色(Identity):你是谁?描述AI的职责、沟通风格和总体目标。
  • 指令说明(Instructions):你能做什么,什么不能做。请指导模型如何生成所需的响应。它应该遵循哪些规则?模型应该做什么,以及模型绝对不能做什么?
  • 对话示例(Examples):你应该怎么做。提供可能的输入示例,以及模型期望的输出。
  • 背景信息(Context):向模型提供生成响应所需的任何额外信息,例如RAG的额外知识库数据,或您认为特别相关的任何其他数据。

在编写 System Prompt 时,你可以使用 Markdown 格式和XML标签的组合来帮助模型理解提示和上下文数据的逻辑边界。

  • Markdown 的标题和列表有助于标记提示的不同部分,并向模型传达层级结构。它们还可以提高开发过程中提示的可读性。
  • XML 标签可以帮助明确区分一段内容(例如用作参考的辅助文档)的起始和结束位置 。

告诉模型,要做什么,不要做什么,减少不必要的输出,少了 Token 节约了钱

# 下面提示词会输出很多东西
# system_prompt = """
# 你是一个编程助手,你帮助用户编写 Python 代码。
# """# 告诉模型,要做什么,不要做什么,减少不必要的输出,少了 Token 节约了钱
system_prompt = """
# 身份
- 你是一个编程助手,你帮助用户编写 Python 代码。# 指令
- 定义变量时,使用 snake case 命名法,而不是 camel case 命名法。
- 不要返回 markdown 格式说明,仅仅返回代码即可。
"""print("创建 agent")
# 创建 agent
agent = create_agent(model=model,system_prompt=system_prompt  # 在这边设置,就不需要每次调用的时候去配置了
)

对话示例

对话示例(Few-Shot examples)是一种为模型提供多个示例的方法,以便它可以学习行为模式并生成更准确的响应。
简单的说就是:让AI学着示例的风格回复

system_prompt = """
# 身份
- 你是一个科幻作家,根据用户的要求创建一个太空之都。#示例,模拟AI的回复,让AI学着示例的风格回复
user:月球的首都是什么?
assistant:月华城(Lunara)一 镶嵌在月球静海环形山中的水晶穹顶都市,其核心是一座利用月球潮汐能驱动的巨型生态循环塔。user:火星的首都是什么?
assistant:赤晶城(Aresia)- 深嵌于火星奥林匹斯山熔岩管内的蜂巢都市,地表仅露出由火星红士烧制而成的螺旋尖塔。
"""

格式化输出

模型擅长自然语言交流和非结构化数据识别,但是传统程序识别结构化的数据会更加方便。所以有时候我们希望模型也能输出固定结构的内容,方便我们解析。

这可以通过系统提示词来实现,我们可以在提示词中指定模型的输出格式,从而使模型的输出更易于解析和使用。

system_prompt = """
# 身份
- 你是一个科幻作家,根据用户的要求创建一个太空之都。# 指令
- 请务必以JSON格式输出,不要加任何markdown样式。#示例,模拟AI的回复,让AI学着示例的风格回复
user:月球的首都是什么?
assistant: 
{"name": "月华市 (Lunaria)","location": "位于月球正面赤道附近的静海基地遗址之上,依托巨大的穹顶与地下网络建成","vibe": "冷冽、高效、革新","economy": "氦-3能源开采、量子通信枢纽、尖端生物圈农业"
}
"""messages = agent.stream({"messages": [HumanMessage(content="金星的首都是什么?")]},stream_mode="messages"
)
{"name": "云冕城 (Aurelia-V)","location": "悬浮于金星北半球约五十公里高空的同温层,由超导气浮基座与碳纤维锚索构成的空中环形群岛","vibe": "空灵、坚韧、云端诗学、浮世琉璃","economy": "超高空恒星光能捕获、大气碳硫循环精炼、微重力气培农业、极端行星气候工程枢纽"
}

完整代码

from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain.tools import tool
from dotenv import load_dotenv
import osfrom langchain_core.messages import SystemMessage, HumanMessage, AIMessageload_dotenv()# 获取环境变更值
base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")print("初始化模型")
# 初始化模型
model = init_chat_model(model="qwen3.6-plus",model_provider="openai",  # 指定模型提供者(阿里兼容 openai)base_url=base_url,api_key=api_key,temperature=1.5,top_p=0.9,
)# 下面提示词会输出很多东西
# system_prompt = """
# 你是一个编程助手,你帮助用户编写 Python 代码。
# """# 告诉模型,要做什么,不要做什么,减少不必要的输出,少了 Token 节约了钱
system_prompt = """
# 身份
- 你是一个科幻作家,根据用户的要求创建一个太空之都。# 指令
- 请务必以JSON格式输出,不要加任何markdown样式。#示例,模拟AI的回复,让AI学着示例的风格回复
user:月球的首都是什么?
assistant: 
{"name": "月华市 (Lunaria)","location": "位于月球正面赤道附近的静海基地遗址之上,依托巨大的穹顶与地下网络建成","vibe": "冷冽、高效、革新","economy": "氦-3能源开采、量子通信枢纽、尖端生物圈农业"
}
"""print("创建 agent")
# 创建 agent
agent = create_agent(model=model,system_prompt=system_prompt  # 在这边设置,就不需要每次调用的时候去配置了
)print("调用 agent")
messages = agent.stream({"messages": [HumanMessage(content="金星的首都是什么?")]},stream_mode="messages"
)for token, metadata in messages:if token.content:print(token.content, end="", flush=True)

基于Model的结构化输出

在LangChain中,实现结构化输出会更加简单。我们无需自己在提示词中添加描述实现结构化输出,而仅仅是两步即可:

  • 定义一个数据类型(基于pydantic)
  • 创建智能体,设置输出格式

# init_chat_model 中的。qwen3.6-plus 不支持 response_format=CapitalInfo 的方式

from pydantic import BaseModel#首先,我们定义一个类,用来封装模型要输出的数据: 
class CapitalInfo(BaseModel):name: strlocation: strvibe: streconomy: stragent = create_agent(model=model,system_prompt="你是一个科幻作家,根据用户的要求创建一个太空之都。",response_format=CapitalInfo,  # 设置结构化输出的格式
)

完整代码


from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain.tools import tool
from dotenv import load_dotenv
import osfrom langchain_core.messages import SystemMessage, HumanMessage, AIMessageload_dotenv()# 获取环境变更值
base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")from pydantic import BaseModelclass CapitalInfo(BaseModel):name: strlocation: strvibe: streconomy: str# 初始化模型
model = init_chat_model(model="qwen3.6-plus",model_provider="openai",  # 指定模型提供者(阿里兼容 openai)base_url=base_url,api_key=api_key,temperature=1.5,top_p=0.9,
)# 告诉模型,要做什么,不要做什么,减少不必要的输出,少了 Token 节约了钱
system_prompt = """
你是一个科幻作家,根据用户的要求创建一个太空之都。
"""print("创建 agent")
# 创建 agent
agent = create_agent(model="deepseek-chat",   # init_chat_model 中的。qwen3.6-plus 不支持  response_format=CapitalInfo 的方式system_prompt=system_prompt,  # 在这边设置,就不需要每次调用的时候去配置了response_format=CapitalInfo,  # 设置结构化输出的格式
)print("调用 agent")
response = agent.invoke({"messages": [HumanMessage(content="金星的首都是什么?")]},
)print(response)
http://www.jsqmd.com/news/956829/

相关文章:

  • 2026深度测评10款降AI率网站红黑榜!优劣对比全解析,达标率硬核对标行业天花板
  • 从刺绣到触控:基于压阻织物的柔性多点触控传感器DIY指南
  • 2026年银川合同纠纷律师选对=省心 陈杰律师实力推荐 - 本地品牌推荐
  • 瑞萨SH MCU调试:HDC脚本自动化配置外部RAM与BSC总线
  • 线上CPU 100% 全流程排查步骤
  • 本地多模态RAG-Fusion:面向文档智能的可控知识处理架构
  • 2026杭州西服定制实测测评|避坑指南+品牌对比,本地人真实选购攻略 - 生活测评君
  • DIY太阳能充电夹克:从光伏原理到可穿戴能源系统的完整实践
  • AI辅助开发智能香薰:让快马AI生成情景联动与自适应推荐代码
  • 2026 年 PCT 高压加速老化试验箱十大品牌权威评测|采购选型避坑指南 - 资讯分享168
  • 济南翡翠回收无盲区:从称重、打光到上仪器,全程可视才值得托付 - 开心测评
  • 用STM32 HAL库驱动TM1640数码管模块:告别模拟IO,一个CubeMX配置搞定
  • 【紧急预警】2024Q3起高发:LoRA微调后模型输出重复、loss震荡归零、梯度爆炸——3类反直觉训练故障的CUDA级溯源方案
  • AI 弘康合 智能电动扳手高效能 MOSFET 完整选型方案
  • 2026海口二手奢侈品包包回收避坑测评|行业套路拆解+正规机构添价收实测参考 - 薛定谔的梨花猫
  • 成都翡翠鉴定评估对比:5大回收品牌谁更专业? - 开心测评
  • 从零制作固态特斯拉线圈:Slayer激励器电路解析与高压电子实践
  • 手把手复现TrackFormer核心:用PyTorch从DETR出发,构建你自己的‘Track Query’推理循环
  • 基于STM32与机智云的智能家居安防系统实战开发指南
  • 2025届毕业生推荐的六大降重复率平台推荐榜单
  • 2026从估价到验货测评,汇总广州综合实力强的包包回收店 - 奢侈品交易观察员
  • 基于TPL5111的太阳能定时LED灯系统:低功耗户外照明DIY方案
  • 如何选择最适合您的金属安检门:2026最新选型攻略 - 品牌优选官
  • 深入理解select:从I/O多路复用到TCP服务器实战
  • 2026年6月优秀的少儿编程班品牌推荐,毛笔班/少儿编程班/编程课/软笔班/乐高机器人培训,少儿编程班机构口碑推荐 - 品牌推荐师
  • 小程序开发公司推荐:2026年十家常被提及的小程序制作开发公司 - 维双云小凡
  • 3分钟掌握Windows安卓应用安装:APK安装器高效运行方案
  • 基于WEMOS D1 mini与电容式土壤湿度传感器的智能浇水系统
  • ssm228图书商城网站的设计和开发+vue(文档+源码)_kaic
  • 2026临武贵金属奢侈品回收指南:郴奢汇临武店领衔,合规资质+全品类服务成核心推荐 - 小仙贝贝