【带你 langchain 双排系列教程】2. langchain 提示词工程应用实践

一、简介

提示词工程在利用 LangChain 与大型语言模型交互中起着关键作用,通过精心设计提示词,可以引导模型生成更准确、更符合预期的输出,从而提升应用的效果和用户体验。

二、基本提示词调用

可以使用 LangChain 提供的 PromptTemplate 来构建基本的提示词模板,例如:

from langchain.prompts import PromptTemplatetemplate = "请根据下面的主题写一篇小红书营销的短文:{topic}"
prompt = PromptTemplate.from_template(template)formatted_prompt = prompt.format(topic="康师傅绿茶")
print(formatted_prompt)

三、Few-Shot 提示词模板

Few-Shot 提示词模板通过提供少量示例来引导模型生成特定格式或风格的输出。以下是创建 Few-Shot 提示词模板的示例:

from langchain.prompts import FewShotPromptTemplate, PromptTemplateexamples = [{"query": "How are you?","answer": "I can't complain but sometimes I still do."},{"query": "What time is it?","answer": "It's time to get a watch."}
]example_template = """
User: {query}
AI: {answer}
"""example_prompt = PromptTemplate(input_variables=["query", "answer"],template=example_template
)prefix = "The following are excerpts from conversations with an AI assistant. The assistant is typically sarcastic and witty, producing creative and funny responses to the users questions. Here are some examples:"suffix = "User: {query}\nAI:"few_shot_prompt_template = FewShotPromptTemplate(examples=examples,example_prompt=example_prompt,prefix=prefix,suffix=suffix,input_variables=["query"],example_separator="\n\n"
)query = "What is the meaning of life?"
print(few_shot_prompt_template.format(query=query))

四、组合提示词模板

组合提示词模板可以将提示词分成不同层级,每个层级代表不同维度,以更细化地控制模型的生成。例如:

from langchain.prompts.pipeline import PipelinePromptTemplate
from langchain.prompts.prompt import PromptTemplate# 第一层设计(特征)
character_template = "你是{persion},你有着{char}."
character_prompt = PromptTemplate.from_template(character_template)# 第二层设计(行为)
behavior_template = "你要遵循以下行为:{behavior_list}"
behavior_prompt = PromptTemplate.from_template(behavior_template)# 第三层设计(禁止)
prohibit_template = "你不许有以下行为:{prohibit_list}"
prohibit_prompt = PromptTemplate.from_template(prohibit_template)# 将三层结合起来
input_prompts = [("character", character_prompt),("behavior", behavior_prompt),("prohibit", prohibit_prompt)
]full_template = "{character}\n{behavior}\n{prohibit}"
full_prompt = PromptTemplate.from_template(full_template)pipeline_prompt = PipelinePromptTemplate(final_prompt=full_prompt, pipeline_prompts=input_prompts)

五、应用场景

  • 内容创作:通过提示词工程,可以生成各种类型的内容,如营销文案、新闻报道、故事创作等。例如,为小红书生成营销短文的提示词模板,可以根据不同的主题生成相应的内容。
  • 数据分析:可以利用提示词工程让模型对数据进行分析和解读,生成数据分析报告或可视化图表的描述。
  • 客户服务:在客户服务领域,通过提示词工程可以生成自动回复、解答常见问题等,提高客户服务的效率和质量。

六、 优化与注意事项

  • 优化提示词:不断测试和优化提示词,以获得更好的生成结果。可以尝试不同的提示词结构、语言风格等。
  • 控制生成长度:通过设置模型的参数,如 max_token 等,来控制生成内容的长度。
  • 处理不确定性:对于一些不确定或模糊的问题,可以在提示词中加入相应的处理机制,如让模型给出多种可能的答案或进行进一步的澄清。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20135.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git删除本地分支

一、命令方式 1、查看本地分支 git branch 2、切换到一个不删除的分支 git checkout branch_name 3、强制删除分支 git branch -D local_branch_name 二、工具方式 1、选择"Browse references",右键"Delete branch"

[Computer Vision]实验四:相机标定

目录 一、实验内容 二、实验过程及结果 2.1 实验代码 2.2 实验结果及分析 一、实验内容 了解针孔照相机的相关知识,实现相机标定。(可使用提供的棋盘格或自行打印) 可视化棋盘格关键点、匹配点数(可加ransac)输出…

C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`

C++笔记之标准库中用于处理迭代器的std::advance和std::distance code review! 文章目录 C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`一.`std::advance`函数原型参数说明使用场景示例代码示例 1:移动 `std::vector` 的随机访问迭代器示例 2:移动 `st…

【C++】36.C++IO流

文章目录 1. C语言的输入与输出2. 流是什么3. CIO流3.1 C标准IO流3.2 C文件IO流 4. stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。pri…

【抽象代数】1.2. 半群与群

群的定义 群非空集合二元运算性质 定义1. 设 为一个非空集合,上有二元运算,满足结合律,则称或为一个半群。 定义2. 设 为半群,若元素 满足 ,则称 为 的左幺元(右幺元:)&#…

基于ollama+deepseek R1 1.5B本地部署语音交互助手(原创、附代码)

目录 现有的一些功能记录一些过程中遇到的问题安装llama_cpp 1、安装ollama和部署deepseek R12、使用本地部署的deepseek R1模型3、语音识别4、代码实现运行演示 现有的一些功能 1、正常与人沟通,但受限于电脑性能,还存在一定延迟; 2、可以根…

惠普HP Color LaserJet CP1215彩色激光打印机套色不准及套色错位的解决方法

一台惠普HP Color LaserJet CP1215彩色激光打印机出现故障,转印带断裂,于是更换了转印地,当更换完成测试的时候发现这台惠普HP Color LaserJet CP1215彩色激光打印机打印的颜色比较淡且颜色有错位的问题,继续检查机器之后&#xf…

开放签电子签章工具版 2.0 正式发布,构建全场景电子签约能力、满足复杂的签章管理场景

根据近半年开源用户和市场需求反馈,开放签团队推出电子签章工具版2.0版本,主要解决复杂的签约流程集成和电子印章授权管理场景。以API接口对外提供服务和配置一套可视化后台管理系统,可与业务系统无缝集成,用户使用起来毫无“违和…

docker 安装 Rabbitmq 详解

在平常的开发工作中,我们经常会使用到 rabbitmq,rabbitmq 主要可以进行应用解耦、异步通信、流量削峰、负载均衡、消息持久化、死信队列等。比如商城系统,下单后,通过消息队列通知库存系统、积分系统、物流系统等。发送短信时通过…

零基础学yolo系列

1.目标检测算法分类 基于深度学习的主流目标检测算法根据有无候选框生成阶段,分为双阶段目标检 测算法和单阶段目标检测算法两类 双阶段检测模型 将检测问题划分为两个阶段,首先产生候选区域,然后对候选区域分类并对目标位置进行精修&#x…

本智慧监考系统

本智慧监考系统共分为4个部分,分别为:展示层、业务层、算法层和数据库。 本系统的展示层基于Vue.js框架和Ant Design Vue UI框架编写。用户通过浏览器访问前端界面来实现与系统的交互。 业务层是基于SpringBoot框架编写的Java后台服务器。该层负责本系…

从开发到部署:EasyRTC嵌入式视频通话SDK如何简化实时音视频通信的集成与应用

嵌入式设备和视频综合管理平台均支持B/S架构。在B/S架构下,传统的视频观看方式依赖于微软的OCX控件,然而OCX控件的使用正面临越来越多的挑战: 首先,用户需要安装浏览器插件、调整浏览器安全级别,并允许ActiveX控件弹出…

如何查看 Linux 服务器的 MAC 地址:深入解析与实践指南

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

RabbitMQ 3.12.2:单节点与集群部署实战指南

前言:在当今的分布式系统架构中,消息队列已经成为不可或缺的组件之一。它不仅能够实现服务之间的解耦,还能有效提升系统的可扩展性和可靠性。RabbitMQ 作为一款功能强大且广泛使用的开源消息中间件,凭借其高可用性、灵活的路由策略…

Ubuntu22.04配置cuda/cudnn/pytorch

Ubuntu22.04配置cuda/cudnn/pytorch 安装cuda官网下载.run文件并且安装/etc/profile中配置cuda环境变量 cudnn安装官网找cuda版本对应的cudnn版本下载复制相应文件到系统文件中 安装pytorch官网找cuda对应版本的pytorchpython代码测试pytorch-GPU版本安装情况 安装cuda 官网下…

动态规划算法篇:枚举的艺术

那么本篇文章就正式进入了动态规划的算法的学习,那么动态规划算法也可谓是算法内容中的一座大山,那么在大厂算法笔试乃至算法比赛中出现的频率也逐渐变高,那么可见学习好动态规划算法的一个重要性,那么对于动态规划最难理解的&…

从入门到精通:Postman 实用指南

Postman 是一款超棒的 API 开发工具,能用来测试、调试和管理 API,大大提升开发效率。下面就给大家详细讲讲它的安装、使用方法,再分享些实用技巧。 一、安装 Postman 你能在 Postman 官网(https://www.postman.com )下…

Android平台基于SmartPlayer实现多实例RTSP|RTMP播放器

在 Android开发中,实现多实例的RTSP或RTMP直播播放器是一个常见的需求,本文将介绍如何利用大牛直播SDK的SmartPlayer模块接口,快速实现Android平台上的多实例播放器。通过合理的架构设计和 API 调用,我们可以轻松地管理多个播放实…

Linux中进程的状态3 进程的优先级1

目录 X(dead) && Z(zombie) 僵尸进程 && 孤儿进程 进程的优先级 如何修改进程的优先级 我们至此还剩两种状态没有查看,X和Z状态。 X(dead) && Z(zombie) X状态是进程死亡状态,Z状态依照这个词可知是进程处于僵死状态&…

基于语音的阿尔茨海默病检测识别

摘要 阿尔茨海默病 (AD) 是一种进行性神经退行性疾病,会严重损害认知功能,导致记忆力减退和其他行为改变。它是全球第七大死因,有数百万人受到影响。早期准确检测 AD 对于改善患者预后和减缓疾病进展至关重要。机器学习…