LangChain: 提示词

如何有效组合提示词:LangChain提示词模板的高级用法 本文介绍了如何使用LangChain框架来组合和构建复杂的提示词模板。通过字符串提示词的组合、聊天提示词的组合以及使用,我们可以创建更灵活和强大的AI对话系统。LangChain官方文档: https://python.langchain.com/docs/get_started/introductionOpenAI的GPT最佳实践指南: https://platform.openai.com/docs/guides/gpt-best-practices。 阅读详情

1)示例选择器、提示词、大语言模型的协作流程机制

        1、输入处理:

                  用户提供输入(例如一个问题或任务描述)。

                 示例选择器根据输入内容,从预定义的示例集中选择最相关的示例。选择依据可以是语义相似度、长度限制或其他策略。

        2、动态构建提示词:

                选择的示例被注入到提示词模板(PromptTemplate)中,与用户输入一起组成完整的提示词。

                提示词通常包含:

                        1)系统指令(System Prompt):定义模型的任务或角色。

                        2)选择的示例:作为上下文或示范,展示输入-输出的范例。

                        3)用户输入:当前需要模型处理的内容。

        3、提示词传递给模型:

                完整的提示词被发送到大语言模型(LLM)或嵌入模型。

                模型根据提示词中的示例和输入生成输出,示例起到引导作用,帮助模型理解期望的输出格式或内容。

        4、模型生成输出:

                模型利用提示词中的示例作为参考,生成与输入匹配的回答。

                示例选择器的作用在于通过提供高质量的上下文示例,减少模型生成无关或错误内容的可能性。

        5、后处理(可选):

                如果需要,LangChain 可以通过输出解析器(Output Parser)对模型的输出进行结构化处理,确保格式符合预期。

2)常见示例选择器类型

        LangChain 提供多种内置示例选择器,包括:

                SemanticSimilarityExampleSelector:基于语义相似度(使用嵌入模型和向量数据库)选择与输入最接近的示例。

                MaxMarginalRelevanceExampleSelector:结合语义相似度和示例多样性,选择既相关又多样化的示例。

                LengthBasedExampleSelector:根据提示词长度限制选择示例,确保不超过上下文窗口。

                RandomExampleSelector:随机选择示例,适用于不需要严格语义匹配的场景。

3)代码示例

# 示例选择器
import os

from dotenv import load_dotenv
from langchain_community.vectorstores import FAISS
from langchain_core.example_selectors import SemanticSimilarityExampleSelector, MaxMarginalRelevanceExampleSelector
from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate
from langchain_ollama import ChatOllama, OllamaEmbeddings


class ExampleSelector:
    # llm模型
    llm = None
    __dict__ = "示例集合,根据用户的输出,匹配到最相似的示例,从而根据其样式返回"
    examples = None
    # 提示词模板
    prompt = None

    def __init__(self):
        self.llm = ChatOllama(model="llama3.1", base_url="http://localhost:11434")
        self.examples = [
            {"input": "北京今天天气如何?", "output": "北京今天晴,温度25-30°C。"},
            {"input": "上海明天会下雨吗?", "output": "上海明天多云,无降雨。"},
            {"input": "广州湿度是多少?", "output": "广州今天湿度70%。"},
            {"input": "北京明天天气如何?", "output": "北京明天晴,温度25-30°C。"},
        ]
        self.prompt = PromptTemplate(
            input_variables=["input"],
            template="你是一个天气助手,根据用户输入提供准确的天气信息。\n\n相关示例:\n{examples}\n\n用户输入: {input}\n回答:"
        )

    __doc__ = "语义相似度示例选择器,它通过找到具有与输入具有最大余弦相似度的嵌入的示例来实现这一点"

    def similarity_example(self, input):
        load_dotenv()
        tavilyKey = os.getenv("TAVILY_API_KEY")
        print("tavilyKey is:", tavilyKey)
        # 初始化嵌入模型embeddings:该模型可以将文本(句子或文档)转换成高纬度向量表示;
        embeddings = OllamaEmbeddings(model="llama3.1", base_url="http://localhost:11434")
        # 创建 FAISS 向量存储
        vectorstore = FAISS.from_texts(
            texts=[ex["input"] for ex in self.examples],
            embedding=embeddings,
            metadatas=self.examples
        )
        # 创建示例选择器
        example_selector = SemanticSimilarityExampleSelector(
            vectorstore=vectorstore,
            # 选择的示例数量
            k=1
        )
        # 动态选择示例
        selected_examples = example_selector.select_examples({"input": input})
        # 格式化提示词
        prompt_text = self.prompt.format(
            input=input,
            examples="\n".join([f"Q: {ex['input']} A: {ex['output']}" for ex in selected_examples])
        )
        response = self.llm.invoke(prompt_text)
        print(response.content)
        return

    __doc__ = "最大边际相关性选择示例。该方法结合了与输入最相似的示例以及优化多样性。它通过找到嵌入与输入具有最大余弦相似度的示例,然后在惩罚已选择示例的近似度的同时迭代地添加它们。"

    def maxmarginal_relevance_example(self, input):
        load_dotenv()
        tavilyKey = os.getenv("TAVILY_API_KEY")
        print("tavilyKey is:", tavilyKey)
        # 初始化嵌入模型embeddings:该模型可以将文本(句子或文档)转换成高纬度向量表示;
        embeddings = OllamaEmbeddings(model="llama3.1", base_url="http://localhost:11434")
        # 创建 FAISS 向量存储
        vectorstore = FAISS.from_texts(
            texts=[ex["input"] for ex in self.examples],
            embedding=embeddings,
            metadatas=self.examples
        )
        example_selector = MaxMarginalRelevanceExampleSelector(
            vectorstore=vectorstore,
            k=2,  # 选择 2 个示例
            fetch_k=3  # 初始获取 3 个最相似的示例,再从中选择 2 个多样化的示例
        )
        # 定义提示词模板  FewShotPromptTemplate 少样本示例FewShotPromptTemplate 是 LangChain 中的一种提示词模板,
        # 专门用于少样本学习场景。它通过在提示词中嵌入少量输入-输出示例(few-shot examples),指导模型理解任务的模式和期望输出格式。
        fewShotPromptTemplate = FewShotPromptTemplate(
            example_selector=example_selector,          #示例选择器
            example_prompt=PromptTemplate(              #提示词模板
                input_variables=["input", "output"],
                template="Q: {input}\nA: {output}\n"
            ),
            prefix="你是一个天气助手,根据用户输入提供准确的天气信息2。\n\n相关示例:\n", #提示词开头的固定文本,通常描述任务或模型角色
            suffix="\n用户输入: {input}\n回答:",          #提示词结尾的固定文本,通常包含用户输入和输出占位符。
            input_variables=["input"]
        )
        # 格式化提示词
        prompt_text = fewShotPromptTemplate.format(input=input)
        # 调用模型生成回答
        response = self.llm.invoke(prompt_text)
        print(response.content)
        return

LangChain智能体开发:如何组合提示词 LangChain 提供了一个用户友好的界面,用于将提示词的不同部分组合在一起。您可以使用字符串提示词或聊天提示词来实现这一点。以这种方式构建提示词可以方便地重用组件。 阅读详情

相关推荐

【LangChain编程:从入门到实践】聊天模型提示词的构建

【LangChain编程:从入门到实践】聊天模型提示词的构建 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词:LangChain, 聊

AI天才研究院 897

【LangChain入门 4 Prompts组件】提示词追加示例 FewShotPromptTemplate和示例选择器ExampleSelector

提示词中包含交互样本的作用是为了帮助模型更好地理解用户的意图,从而更好地回答问题或执行任务。 小样本提示模板是指使用一组少量的示例来指导模型处理新的输入。 这些示例可以用来训练模型,以便模型可以更好地理解和回答类似问题。

hjxu2016的博客 1475

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7860

langchain的Prompts高级

示例选择器,格式化输出

qq_51319003的博客 1477

STM32----SPI+DMA高效读写外部Flash的配置与实战

本文详细介绍了STM32通过SPI+DMA高效读写外部Flash的配置与实战方法。针对大量数据传输场景,使用DMA技术可显著提升系统效率,释放CPU资源。文章包含完整的代码实现、常见问题调试技巧以及性能优化建议,帮助开发者快速掌握这一关键技术。

pea55的博客 1030

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化)

本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。

weixin_29289821的博客 295

吃透LangChain(一),入门和提示词模版

‌ 机制,将自然语言处理任务拆解为可复用、可组合的组件,并支持与外部工具、数据源和记忆系统的集成。‌ 的开源框架,旨在简化构建复杂语言驱动应用的开发流程。‌,使开发者能够快速构建可扩展的、上下文感知的 AI 应用。

窦再兴的博客 1082

ANFIS实现数据非线性回归附Matlab代码

在本文中,我们将介绍如何使用Matlab实现基于MSE的ANFIS非线性回归,并提供相应的源代码。ANFIS是一种融合了模糊逻辑和神经网络的方法,它可以通过学习数据集中的模式来构建一个模糊推理系统。ANFIS的训练过程基于最小化MSE,以提高模型的拟合能力。通过上述代码示例,我们可以使用基于MSE的ANFIS模型对数据进行非线性回归,并获得相应的预测结果。在示例中,我们定义了一个包含两个样本的新输入数据集 X_new,然后使用训练好的ANFIS模型进行预测,并将结果存储在变量 Y_pred 中。

2301_79326588的博客 473

LangChain开发(二)LangChain提示词模板Template使用

提示词模板本质上跟平时大家使用的邮件模板、短信模板没什么区别,就是一个字符串模板,模板可以包含一组模板参数,通过模板参数值可以替换模板对应的参数。发给大语言模型(LLM)的指令。一组问答示例,以提醒AI以什么格式返回请求。发给语言模型的问题。

Java全栈开发者 1877

高通Camx功能feature分析之二:remosaic流程

本文介绍了Remosaic技术及其在图像处理中的应用。Remosaic是将4cell1像素排布还原为普通Bayer结构的过程,分为硬件和软件两种实现方式。文章详细解析了Remosaic流程,包括配流情况、Feature选择、初始化过程,以及触发拍照的完整流程。重点分析了从普通预览切换到全尺寸拍照的关键步骤:激活全尺寸RDI会话、生成请求、等待就绪、唤醒离线线程和重启预览。通过代码层面的分析,揭示了Remosaic技术如何实现高分辨率图像还原,同时说明了该过程中可能出现的预览定屏现象及其原因。

1880

2026华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2025华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

算法大师! 5万+

【LangChain】使用LangChain的提示词模板:技巧与总结

提示模板有助于将用户输入和参数转换为语言模型的指令。这可用于指导模型的响应,帮助它理解上下文并生成相关且连贯的基于语言的输出。Prompt Templates 将一个对象作为输入,其中每个键代表 Prompt 模板中要填写的变量。提示模板输出 PromptValue。此 PromptValue 可以传递给 LLM ChatModel 或 ChatModel,也可以强制转换为字符串或消息数组。此 PromptValue 存在的原因是便于在字符串和消息之间切换。

m0_56132701的博客 1240

华为OD机试真题 新系统 2026-07-22 Java&Go&C 实现【最小代价完成论文评审】

某校有 n 篇论文需要分配给教师评审。 每篇论文 i 可由 files[i] 对应的教师列表中任一教师评审。 每篇论文至少需要一名教师评审。 每位教师 t 不论被分配多少篇论文,其评审费用固定为 cost[t]。 请给出参与评审教师数量最少时的总费用。 如果存在多种方案满足教师数量最少,则选择总费用最小的方案。

MISAYAONE的博客 148

LangChain 8:提示词模板

LangChain中的提示词模板(PromptTemplate)及其应用

2301_80414229的博客 609

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数。

qq_39541524的博客 827

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

基于LangChain构建提示词自优化系统:从原理到工程实践

提示词(Prompt)是与大语言模型(LLM)交互的核心指令,其质量直接决定了模型输出的准确性与实用性。其工作原理在于,通过精心设计的文本指令,引导模型理解任务意图、调用内部知识并生成符合预期的结构化输出。优化提示词的技术价值在于,它能显著提升模型的任务完成度、输出稳定性及与人类意图的对齐程度,是构建高效、可靠AI应用的关键环节。在应用场景上,无论是日常与ChatGPT等对话模型的交互,还是开发基于LLM的智能体(AI Agent)和复杂自动化流程,都离不开高质量的提示词工程。本文聚焦于**提示词自优化**

weixin_33778544的博客 1153

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LangChain提示词模板其一:PromptTemplate

摘要:本文介绍了提示词模板(PromptTemplate)的概念与应用,通过固定格式和可变变量实现模板复用。详细讲解了两种创建方式:构造方法PromptTemplate()和from_template()函数,并展示了部分提示词插入的两种方法(partial_variables参数和partial()函数)。同时比较了format()与invoke()在参数传递和返回值类型上的区别,最后演示了如何将提示词模板应用于大模型交互。这些方法能有效提升提示词管理的标准化和便利性。

2403_87628537的博客 1094

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【LangChain系列七】提示词模板与少样本提示:把 Prompt 工程玩出花

本文介绍了LangChain中提示词模板的核心用法,主要包括: PromptTemplate:基础文本模板,支持占位符填充 ChatPromptTemplate:多角色聊天模板,适合对话场景 MessagesPlaceholder:动态消息占位符,用于插入对话历史 FewShotChatMessagePromptTemplate:标准化少样本提示实现 LangChain Hub:提示词共享仓库 文章通过代码示例展示了各类模板的创建和使用方法,并提供了部分填充等实用技巧。这些模板是构建LangChain应用的

Yeeear的博客 298

Prompt提示词工程化:用LangChain把提示词从字符串变成资产

本文探讨了提示词管理的工程化解决方案,重点介绍了LangChain的PromptTemplate体系。文章首先揭示了提示词"野蛮生长"的问题:散落在代码各处、难以维护和更新。随后提出将提示词视为"资产"而非"字符串"的理念,并详细解析了PromptTemplate的三种核心形态:简单模板、聊天消息模板和Few-Shot模板。

一名80后IT人的成长记录,记录自己在工作、学习中的点点滴滴,在成长的喜悦与忧心的故事里,铭记反脆弱的勇气。 513

Langchain学习(3):提示词模板

建议: 实践建议:

Jackylw6的博客 604

Langchain提示词模板工程:三大核心模板的原理与实践

摘要:本文深入解析Langchain框架中的三大提示词模板,帮助开发者高效构建动态提示词。PromptTemplate通过“模板框架+变量注入”实现单轮提示词的复用与动态填充,支持变量校验与默认值机制,适用于文本总结等场景。ChatPromptTemplate专为多轮对话设计,通过“角色-消息”结构(System/Human/AI)生成对话历史列表,确保上下文连贯性,适用于客服机器人等对话应用。这两种模板分别解决了单轮任务和多轮对话中的提示词标准化问题,提升开发效率与模型输出质量。

没事学AI的博客 1081

Langchain极简教程: 四、提示词

提示词(Prompt)是指向模型提供的输入。这个输入通常由多个元素构成。LangChain提供了一系列的类和函数,简化构建和处理提示词的过程。提示词模板(Prompt Template):对提示词参数化,提高代码的重用性。示例选择器(Example Selector):动态选择要包含在提示词中的示例本节课程中,我们简要介绍了LLM中的重要概念提示词并学习了如何使用Langchain的重要组件提示词模板。

南宫贇的博客 889

LangChain入门②:从模型调用到提示词模板与LCEL实战

本章介绍了LangChain中的提示词模板和LCEL表达式链的核心概念。主要内容包括: 提示词模板:使用ChatPromptTemplate创建可复用的对话模板,通过{变量}占位符实现动态内容填充。 LCEL表达式链:通过管道符|将多个Runnable组件连接成链,形成可执行的流程。链中的每个组件都遵循Runnable协议。

i235Uranium的博客 583

LangChain教程(一):提示词工程与任务编排

这篇文章介绍了 LangChain,一个开源的 Python AI 应用开发框架,用于构建基于大型语言模型(LLM)的 AI 应用,如文本生成、问答、翻译、对话等。文章包括 LangChain 的组件介绍、特性、框架组成、库、任务处理流程、核心概念、应用场景和快速入门指南。此外,还介绍了提示词工程应用实践、工作流编排等内容,展示了如何使用 LangChain 降低 AI 应用开发门槛,实现与不同 LLM 的轻松集成。

君子可欺以其方,难罔以非其道 1414
上一篇: 什么是向量?
下一篇: Langchain:输出解释器
BoneToBone
博客等级 码龄10年 24粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值