LangChain框架-PromptTemplate 详解

摘要

        本文聚焦于 LangChain 框架中PromptTemplate提示词模板模块的深度解析,主要参考langchain_core.prompts源码模块与官方文档。系统梳理 LangChain 对提示词模板的封装逻辑与设计思路,旨在帮助读者构建全面、深入的知识体系,为高效运用LangChain 框架的提示词模板开发应用奠定坚实基础。

PromptTemplete 模块静态类图

BasePromptTemplate 继承树

BaseMessagePromptTemplate 继承树

        上面的类图展示了 LangChain 中 Prompt Template 相关类的继承体系 。主要分为BasePromptTemplate 继承树和BaseMessagePromptTemplate 继承树。

BasePromptTemplate

        BasePromptTemplate作为根类,定义了提示模板的基本属性和方法,它还提供了格式化提示、异步格式化提示、部分填充等方法。

相关子类

  • PipelinePromptTemplate:允许将多个提示模板组合在一起,构建复杂的提示。不过,该类已被弃用,从 0.3.22 版本开始不推荐使用,计划在 1.0 版本移除。

  • StringPromptTemplate:用于处理字符串类型的提示模板,它继承了 BasePromptTemplate 的基本功能,并提供了同步和异步格式化提示的方法,支持使用不同的字符串格式化语法,如 f - 字符串、Jinja2、Mustache 等。

StringPromptTemplate 的子类

  • PromptTemplate:最常用的提示模板类,它接受一个字符串模板和一组输入变量,通过格式化方法生成最终的提示字符串。支持 f - 字符串、Jinja2 和 Mustache 三种模板格式,但使用 Jinja2 时需要注意安全问题。

  • FewShotPromptTemplate:用于基于少量示例生成提示,通常用于需要提供示例来引导模型生成结果的场景。

  • FewShotPromptWithTemplates:与 FewShotPromptTemplate 类似,但支持使用模板来格式化示例。

BaseChatPromptTemplate

        聊天提示模板的基类,派生出多个具体的聊天提示模板类。

  • AutoGPTPrompt:用于 AutoGPT 场景的特定提示模板。

  • FewShotChatMessagePromptTemplate:基于少样本学习的聊天提示模板类

  • ChatPromptTemplate:通用的聊天提示模板类,可用于构建多轮对话的提示。

    • AgentScratchPadChatPromptTemplate:用于代理 scratch pad 场景的聊天提示模板。

BaseMessagePromptTemplate

        消息提示模板的基类,定义了格式化消息的抽象方法。

  • MessagesPlaceholder:用于占位符的消息提示模板。

  • BaseStringMessagePromptTemplate:使用字符串提示模板的消息提示模板基类。

  • ChatMessagePromptTemplate:通用的聊天消息提示模板。

  • HumanMessagePromptTemplate:用于人类消息的提示模板。

  • AIMessagePromptTemplate:用于 AI 消息的提示模板。

  • SystemMessagePromptTemplate:用于系统消息的提示模板。

专用模板/工具
  • ImagePromptTemplate:专门用于处理图片,适配多模态大模型的Prompt。

  • load_prompt:从文件中读取模板

  • DictPromptTemplate:将模板组装成dict ,方便后续的取用

重点Template介绍

BasePromptTemplate

简介

        BasePromptTemplate 是 LangChain 中用于所有提示模板的基类,它定义了提示模板的基本结构和行为,为创建和格式化提示提供了统一的接口。

主要属性
  • input_variables:一个字符串列表,包含了提示模板所需输入变量的名称。这些变量的值是格式化提示所必需的。

  • optional_variables:一个字符串列表,包含了可选的变量名称,用于占位符或 MessagePlaceholder。这些变量会自动从提示中推断出来,用户不需要提供。

  • input_types:一个字典,指定了提示模板期望的变量类型。如果未提供,则所有变量都被假定为字符串类型。

  • output_parser:一个可选的 BaseOutputParser 对象,用于解析调用大语言模型(LLM)对格式化提示的输出。

  • partial_variables:一个字典,包含了提示模板携带的部分变量。这些部分变量会填充模板,使得用户在每次调用提示时不需要传递它们。

  • metadata:一个可选的字典,用于追踪提示的元数据。

  • tags:一个可选的字符串列表,用于追踪提示的标签。

 主要方法
  • 验证方法

    • validate_variable_names:验证变量名不包含受限名称,如 "stop",并检查输入变量和部分变量是否有重叠。

  • 命名空间与序列化方法

    • get_lc_namespace:返回 LangChain 对象的命名空间,即 ["langchain", "schema", "prompt_template"]

    • is_lc_serializable:返回该类是否可序列化,返回值为 True

  • 输入模式方法

    • get_input_schema:获取提示的输入模式,根据输入变量和可选变量创建一个 BaseModel 类型的输入模式。

  • 输入验证与格式化方法

    • _validate_input:验证输入是否为字典类型,并检查是否缺少必需的输入变量。

    • _format_prompt_with_error_ha

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

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

相关文章

中小企业设备预测性维护三步构建法:从零到精的技术跃迁与中讯烛龙实践

在工业4.0浪潮中,中小企业常陷入"设备故障频发"与"数字化成本高企"的双重困境。本文基于半导体、食品加工等行业实证数据,结合中讯烛龙系统技术突破,为中小企业提供一套零基础、低门槛、可扩展的预测性维护实施框架&…

C30-函数

一 函数的优点 避免代码冗长模块化的设计思路(十分类似组装电脑)按功能划分,每个函数代表一个功能 二 函数的三要素 函数要先定义再使用(就像是变量一样)三要素: 函数名→体现功能参数列表 比如yf(x)→x就是参数又如yf(x,y)→x,y就是参数→参数的个数取决于需求 返回值:比如…

【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案

在使用 Spring Boot 构建多模块项目,集成 MyBatis-Plus 时,很多开发者会遇到类似如下启动报错: Error creating bean with name mapperScannerConfigurer ... Caused by: java.lang.IllegalArgumentException: Property basePackage is requ…

pimpl与unique_ptr的问题

PImpl与std::unique_ptr组合 pimpl(Pointer to Implementation)是C程序开发中非常常用的技巧之一,它的好处有: 节省程序编译时间保持程序/库的二进制兼容性隐藏实现细节 举例一个常见的pimpl的使用示例: // a.h class Impl; //前置声明 c…

C++类和对象:构造函数、析构函数、拷贝构造函数

引言 介绍:C类和对象:构造函数、析构函数、拷贝构造函数 _涂色_博主主页 C基础专栏 一、类的默认成员函数 先认识一下类中的默认成员函数: 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。⼀个类…

CTF - PWN之ORW记录

CTF - Pwn之ORW记录https://mp.weixin.qq.com/s/uiRtqCSopn6U6NqyKJ8I7Q

RabbitMQ 中的六大工作模式介绍与使用

文章目录 简单队列(Simple Queue)模式配置类定义消费者定义发送消息测试消费 工作队列(Work Queues)模式配置类定义消费者定义发送消息测试消费负载均衡调优 发布/订阅(Publish/Subscribe)模式配置类定义消…

民宿管理系统6

普通管理员管理&#xff1a; 新增普通管理员&#xff1a; 前端效果&#xff1a; 前端代码&#xff1a; <body> <div class"layui-fluid"><div class"layui-row"><div class"layui-form"><div class"layui-f…

vue3+ant design vue + Sortable实现多级表格列拖动

1、最近遇到个需求&#xff0c;需使用vue3ant design vue Sortable实现多级表格的表头允许用户拖拽移动。即当用户拖拽一级表头时&#xff0c;其对应的子级表头及数据应同步移动&#xff0c;并且只允许一级非固定表头允许拖拽。 2、代码 <a-table:data-source"rowDat…

第五十四篇 AI与数据分析

一、AI数据分析就像做菜 想象你在厨房做一道新菜&#xff0c;AI数据分析的流程其实非常相似&#xff1a; 买菜&#xff08;获取数据&#xff09; 去市场挑选新鲜蔬菜 从Excel/数据库获取数据例&#xff1a;pd.read_csv(超市销售表.csv) 洗菜切菜&#xff08;清洗数据&#x…

差分OPA verilogaA 模型

做电路设计&#xff0c;需要提前用理想模型如VerilogA模型做验证。这里分享一个由ahdlib库里单端opamp改造而来的差分opamp。参考何乐年的《模拟集成电路设计与仿真》10.4节423页&#xff1b; 描述的小信号模型如上。 VerilogA 用到了SRI/C&#xff0c;GBWgm/C,gaingm*r1等概念…

Solidity语言基础:区块链智能合约开发入门指南

一、Solidity概述 Solidity是以太坊生态系统中最重要的智能合约编程语言&#xff0c;由Gavin Wood于2014年提出。作为面向合约的高级语言&#xff0c;它结合了JavaScript、Python和C的语法特点&#xff0c;专为在以太坊虚拟机&#xff08;EVM&#xff09;上运行而设计。 核心…

开启智能Kubernetes管理新时代:kubectl-ai让操作更简单!

在如今的科技世界中,Kubernetes 已经成为容器编排领域的标杆,几乎所有现代应用的基础设施都离不开它。然而,面对复杂的集群管理和日常运维,许多开发者常常感到无所适从。今天,我们将为大家介绍一款结合了人工智能的强大工具——kubectl-ai。它不仅能帮助开发者更加顺畅地与…

2003-2020年高铁站开通时间数据

2003-2020年高铁站开通时间数据 1、时间&#xff1a;2003-2020年 2、来源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指标&#xff1a;高铁站名称、开通时间、所在省份、所在城市、所属线路名称 4、说明&#xff1a; Hsrwsnm[高铁站名…

神经网络—感知器、多层感知器

文章目录 前言一、生物神经元与感知器的类比二、感知器1、简单感知器2、多层感知器&#xff08;1&#xff09;多层感知机结构 3、神经网络结构 总结1、感知器的局限性如何突破感知器的局限性&#xff1f; 2、感知器的应用 前言 感知器&#xff08;Perceptron&#xff09;是神经…

避免数据丢失:在存储测试数据之前,要做好Redis持久化

Redis提供两种持久化方法&#xff1a; 一、RDB&#xff08;Redis DataBase&#xff09;&#xff1a; 1、周期性保存内存快照到磁盘&#xff08;生成 dump.rdb 文件&#xff09;。 2、配置save 相关参数。 我本地的配置如下&#xff1a; &#xff08;1&#xff09;配置文件re…

Oracle EBS FORM快捷键与触发器的关系与使用

Oracle EBS FORM快捷键与触发器的引用 1、快捷键作用&#xff0c;可以看文档fmrweb.res 2、文件内容&#xff1a;标识了快捷键的作用 9 : 0 : “Tab” : 1 : “Next Field” 9 : 1 : “ShiftTab” : 2 : “Previous Field” 116 : 0 : “F5” : 3 : “Clear Field” 38 : 0 :…

Java 24:重构数字信任边界 —— 后量子时代的智能安全防御体系构建

引言 在量子计算阴影与 AI 驱动攻击交织的网络安全新纪元&#xff0c;Java 平台正经历着自诞生以来最深刻的安全架构革新。作为企业级应用的核心基础设施&#xff0c;Java 24 不仅延续了 “一次编写&#xff0c;处处运行” 的跨平台基因&#xff0c;更以后量子密码学引擎、动态…

【故障定位系列】容器CPU问题引起的故障如何快速排查

原文地址&#xff1a;https://mp.weixin.qq.com/s/0VlIjbeEdPZUbLD389disA 当生产环境中的容器CPU出现异常时&#xff0c;可能会引发上层业务出现一系列问题&#xff0c;比如业务请求缓慢、网页卡顿甚至崩溃等&#xff0c;如果没有一个有效的故障定位方法&#xff0c;运维人员很…

DeepSeek 智能客服应用指南:构建、策略与成效升级

目录 一、引言二、DeepSeek 与智能客服的相遇2.1 DeepSeek 的技术亮点2.2 智能客服&#xff1a;企业不可或缺的 “数字助手”2.3 DeepSeek 如何适配智能客服需求 三、基于 DeepSeek 搭建智能客服系统3.1 需求分析3.2 技术选型3.3 系统架构设计3.4 搭建步骤实操 四、基于 DeepSe…