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

1.langchain中的prompt模板(Prompt Templates)

本教程将介绍如何使用 LangChain 库中的提示模板(PromptTemplate)来生成和处理文本。我们将通过具体的代码示例来解释程序的运行逻辑。

1. 导入必要的库

首先,从 langchain_core.prompts 模块中导入 PromptTemplate 类。

from langchain_core.prompts import PromptTemplate

2. 创建和使用基础提示模板

2.1 创建提示模板

使用 PromptTemplate.from_template 方法来创建一个提示模板。模板中可以使用 {topic} 这样的占位符。

prompt_template = PromptTemplate.from_template("Tell me a joke about {topic}")

2.2 调用提示模板

使用 invoke 方法并传入一个字典来填充模板中的占位符。

result = prompt_template.invoke({"topic": "cats"})
print(result.text)

输出:

Tell me a joke about cats

3. 使用聊天提示模板

3.1 创建聊天提示模板

ChatPromptTemplate 允许我们定义多轮对话的提示。每个提示由一个元组组成,包含角色和内容。

from langchain_core.prompts import ChatPromptTemplate

prompt_template = ChatPromptTemplate([
    ("system", "You are a helpful assistant"),
    ("user", "Tell me a joke about {topic}")
])

3.2 调用聊天提示模板

同样使用 invoke 方法来填充占位符并获取结果。

result = prompt_template.invoke({"topic": "cats"})
print(result.to_messages())

输出:

[SystemMessage(content='You are a helpful assistant', additional_kwargs={}, response_metadata={}), HumanMessage(content='Tell me a joke about cats', additional_kwargs={}, response_metadata={})]

4. 动态添加消息

4.1 修改模板以包含动态消息

使用 placeholder 来动态添加消息。

prompt_template = ChatPromptTemplate([
    ("system", "You are a helpful assistant"),
    ("placeholder", "{msgs}")  # 动态消息占位符
])

4.2 调用模板并添加动态消息

传入一个包含消息的列表来填充 placeholder

result = prompt_template.invoke({"msgs": [("user", "Tell me a joke about cat")]})
print(result.to_messages())

输出:

[SystemMessage(content='You are a helpful assistant', additional_kwargs={}, response_metadata={}), HumanMessage(content='Tell me a joke about cat', additional_kwargs={}, response_metadata={})]

总结

通过本教程,我们学习了如何使用 LangChain 的 PromptTemplateChatPromptTemplate 来创建和处理文本提示。这些工具可以帮助我们灵活地生成和管理多轮对话和动态内容。

参考链接:https://python.langchain.com/docs/concepts/prompt_templates/

希望这个教程对你有所帮助!如果有任何问题,欢迎随时提问。


http://www.kler.cn/a/406520.html

相关文章:

  • Matlab函数中的隐马尔可夫模型
  • Android opencv使用Core.hconcat 进行图像拼接
  • MacOS通过X11转发远程运行virt-manager进行虚机分配
  • SpringCloud实用-OpenFeign 调用三方接口
  • npm上传自己封装的插件(vue+vite)
  • 2024信创数据库TOP30之达梦DM8
  • 直播预告| 深入探索 DB-GPT GraphRAG 的设计解读与优化
  • 【K8S问题系列 |18 】如何解决 imagePullSecrets配置正确,但docker pull仍然失败问题
  • [Redis#2] 定义 | 使用场景 | 安装教程 | 快!
  • 聊聊主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
  • summernote富文本批量上传音频,视频等附件
  • ftdi_sio应用学习笔记 4 - I2C
  • Mesh路由组网
  • 端到端的专线管理与运维:实时掌握专线的运行状态
  • python pytorch 加载MNIST训练集,解释
  • 谁的年龄最小(结构体专题)
  • udp_socket
  • 初级数据结构——栈与队列的互相实现
  • 【倍数问题——同余系】
  • PDF电子发票信息转excel信息汇总
  • Elasticsearch 分词器
  • “人工智能+高职”:VR虚拟仿真实训室的发展前景
  • 安装多个nodejs版本(nvm)
  • 2024年11月最新版Adobe PhotoShop(26.0)中文版下载
  • 高性能网络SIG月度动态: 推进SMC支持基于eBPF透明替换和内存水位限制等多项功能支持
  • 在线pdf转word免费工具