LangChain实战技巧之五:让模型“自动生成”Prompt(提示词)的两种方式

devtools/2024/12/23 20:20:27/

预备知识

  • with_structured_output

  • bind_tools

对这两种方式不了解的朋友,可以翻阅我的这篇文章找到用法哈

LangChain实战技巧之三:关于Tool的一点拓展

实现方法

方法一

步骤一

# 首先,新建一个提示词抽取器
prompt_extractor = ChatPromptTemplate.from_template(
template="""你从用户的输入中提取出一些`关键信息`,然后根据关键信息生成一个提示词模板, 提示词模板应该是一个有效的Prompt Template。`关键信息`包含以下内容:- 找到有效的提示词的目标- 找到有效的要求内容- 找到传递给提示词模板的变量用户的输入内容是: {input}"""
)# 再来一个Prompt
prompt_generator = ChatPromptTemplate.from_messages([("system", "请根据以下输入的内容,生成一个有效的Prompt Template。"),("human", "{input}"),])

步骤二

# 用好Pydantic,记得继承BaseModel
class PromptExtractor(BaseModel):object: str = Field(description="提示词目标")requirement: str = Field(description="提示词要求")input_variable: str = Field(description="提示词变量")

步骤三

# 来个你熟悉的chain,记得加上with_structured_output
chain_extractor = prompt_extractor | model.with_structured_output(PromptExtractor)

步骤四

prompt_generator = chain_generator.invoke({"input": f"""提示词目标:{res_extractor.object}提示词要求:{res_extractor.requirement}placeholder:{res_extractor.input_variable}"""})

见效:)

content='"寻找一份深度解析并以易于理解方式讲解最新AI技术和人工智能基础知识的学习资料,要求内容深入浅出且详尽,适合初学者和进阶学习者。{input}"' 

方法二

需要把上面的步骤三修改为

chain_extractor = prompt_extractor | model.bind_tools(tools=[PromptExtractor])

步骤四修改为

prompt_generator = chain_generator.invoke({"input": f"""提示词目标:{rres_extractor.tool_calls[0]["args"]["object"]}提示词要求:{res_extractor.tool_calls[0]["args"]["requirement"]}placeholder:{res_extractor.tool_calls[0]["args"]["input_variable"]}"""})

最后,我们就可以用这个生成好的提示词啦

prompt = ChatPromptTemplate.from_template(template=prompt_generator.content)chain = prompt | model

简言之,当你写的提示词Prompt不够完美,AI会帮你自动“润色”你的提示词

不过,你可以仔细想想,用这种方式可以去做哪些特别有趣的事情呢?: )


http://www.ppmy.cn/devtools/48402.html

相关文章

RWA系统系统介绍

RWA系统,即风险加权资产计量系统,是银行风险管理的一个重要工具。 RWA系统通过整合信用风险、市场风险和操作风险的风险加权资产计量,实现资本充足率等监管指标的智能化计算与监控。它采用多种计量方法,如标准法和内评法&#xf…

UPS负载箱的使用注意事项有哪些?

UPS负载箱是用于模拟电网中各种负载的设备,广泛应用于电力系统、通信系统、数据中心等领域。为了保证UPS负载箱的正常运行和使用安全,在使用过程中需要注意以下几点: 1. 选择合适的负载箱:根据实际需求选择合适的负载箱&#xff0…

RedHat9 | iSCSI磁盘配置与管理

一、实验环境 1、iSCSI介绍 iSCSI(Internet Small Computer System Interface)是一种基于因特网及SCSI-3协议下的存储技术,也称为IP-SAN。iSCSI是由IETF(Internet Engineering Task Force)提出,并于2003年…

Oracle数据库面试题-6

21. 请解释Oracle数据库中的容灾解决方案,如GoldenGate等。 Oracle数据库中的容灾解决方案旨在确保在发生严重的灾难事件(如地震、火灾、洪水等)时,数据库能够迅速恢复正常的业务操作,同时最小化损失。容灾解决方案通…

1数据库网课笔记

文章目录 前言知识点一些复习的想法考试题型分布 前言 自己真是服了自己了, 23 23 23 讲的网课没看多少,速成的网课貌似看了两个了,但也是走马观花看的,现在离期末考试还有二十多天,按道理说时间也还算充足&#xff…

STM32F103VE和STM32F407VE的引脚布局

STM32F103VE vs STM32F407VE 引脚对比表 引脚 STM32F103VE STM32F407VE 备注 1 VSS VSS 地 2 VDD VDD 电源 3 VSSA VSSA 模拟地 4 VDDA VDDA 模拟电源 5 OSC_IN OSC_IN 外部时钟输入 6 OSC_OUT OSC_OUT 外部时钟输出 7 NRST NRST 复位 8 PC13 (GPIO) PC13 (GPIO) GPIO 9 PC14 (…

oracle的json_arrayagg的用法和例子

JSON_ARRAYAGG 是 Oracle 数据库中用于将多行数据聚合为一个 JSON 数组的函数。这个函数对于将查询结果转换为 JSON 格式特别有用,尤其是在 RESTful API 或需要 JSON 输出的应用中。 语法 sql JSON_ARRAYAGG ( [ DISTINCT | UNIQUE ] expr [ ON NULL { NULL | AB…

stm32工程中的DebugConfig、Listings和Objects 3个文件夹

在USER文件夹下,startup_stm32f10x_hd.s(启动文件)和test.uvprojx(Keil MDK 5 工程文件)是我们必须用到的两个文件,DebugConfig、Listings和Objects文件夹是 Keil MDK 5 自动生成的,DebugConfig…