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

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

时间:2024-06-07 13:31:54浏览次数:14  
标签:extractor prompt input chain 提示 generator LangChain 之五 Prompt

预备知识

  • 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会帮你自动“润色”你的提示词

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

标签:extractor,prompt,input,chain,提示,generator,LangChain,之五,Prompt
From: https://blog.csdn.net/soukingang/article/details/139513208

相关文章

  • ChatGPT Prompt技术全攻略-入门篇:AI提示工程基础
    系列篇章......
  • Stable diffusion prompts 使用语法、参数讲解、插件安装教程
    Stablediffusionprompts使用语法、参数讲解、插件安装教程本文基于StablediffusionWebUI进行讲解(安装在AutoDL上,安装在本地电脑上的也同样适用本教程)。初始界面:文件目录结构:上图红框中的4个文件夹是我们常用到的,embeddings放置训练的embedding模型,它可......
  • Xshell或其他命令行终端中,提示符(prompt)中的主机名太长,影响视觉体验或阅读方便性
    如果在Xshell或其他命令行终端中,你发现提示符(prompt)中的主机名太长,影响视觉体验或阅读方便性,你可以通过修改Linux系统的配置来缩短或美化这个提示符。这里有两种方法来解决这个问题:###1.暂时修改提示符你可以在当前终端会话中临时改变提示符,这不会影响其他用户或重启后的设置。......
  • AI菜鸟向前飞 — LangChain系列之十六 - Agent系列:从现象看机制(下篇)一款“无需传递中
    前言    AI菜鸟向前飞—LangChain系列之十四-Agent系列:从现象看机制(上篇)    AI菜鸟向前飞—LangChain系列之十五-Agent系列:从现象看机制(中篇)一个Agent的“旅行”    回顾前两篇文章,大家会发现一个问题    为什么每次Agent在invoke的时候需要多加......
  • Prompt提示词 | ChatGPT 1分钟快速生成学习计划
    我们在使用ChatGPT的时候,可能会遇到上下文记忆和限制的问题,这两天碰到类似的问题。大概场景是这样的,作为一个prompt的学习者,想要系统化的学习,需要ChatGPT帮我生成一份14天的学习打卡计划,学习方法采用经典的SQ3R学习法。SQ3R学习法,来自易学师姐丢丢可能是由于记忆和文本限......
  • 大模型应用框架-LangChain
    LangChain的介绍和入门......
  • 阿里开源superAGI代码分析【prompt部分】-核心还是react
    superAGI.txtYouareSuperAGIanAIassistanttosolvecomplexproblems.Yourdecisionsmustalwaysbemadeindependentlywithoutseekinguserassistance.PlaytoyourstrengthsasanLLMandpursuesimplestrategieswithnolegalcomplications.Ifyouh......
  • 使用Prompt,轻松实现你的第一个全栈项目
    前言还有程序员没有应用过大模型技术吗?是工具也可以!如果你还未使用过大模型技术,那么我劝你尽早行动,它会成为你开发的一大神器。如果你对大模型感兴趣,同时想使用大模型技术来开发产品,我接下来这个实战案例相信可以帮助到你。如今,大模型的崛起使得编程变得前所未有的容易,哪......
  • LangChain 0.2 - 构建本地 RAG应用
    本文翻译整理自:BuildaLocalRAGApplicationhttps://python.langchain.com/v0.2/docs/tutorials/local_rag/文章目录一、项目说明二、文档加载三、模型1、LLaMA22、GPT4All3、llamafile四、链式使用五、问答六、检索问答一、项目说明PrivateGPT、llama.cpp、......
  • 一起学大模型 - 动手写一写langchain调用本地大模型(2)
    文章目录前言一、自动选择1.使用AutoTokenizer和AutoModel的示例2.解释二、怎么实现自动选择的呢总结前言前一篇文章里,fromtransformersimportGPT2LMHeadModel,GPT2Tokenizer如果模型替换了,就得更改代码,很麻烦,那有没有更简单的方法呢?一、自动选择trans......