【LangChain】Prompts之自定义提示模板

这篇具有很好参考价值的文章主要介绍了【LangChain】Prompts之自定义提示模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LangChain学习文档

  • 【LangChain】向量存储(Vector stores)
  • 【LangChain】向量存储之FAISS
  • 【LangChain】Prompts之Prompt templates
  • 【LangChain】Prompts之自定义提示模板

概要

假设我们希望LLM生成给定函数名称的英语解释。为了实现此任务,我们将创建一个自定义提示模板,该模板将函数名称作为输入,并格式化提示模板以提供函数的源代码。

为什么需要自定义提示模板?

LangChain提供了一组默认的提示模板,可用于生成各种任务的提示。但是,在某些情况下,默认的提示模板可能无法满足我们的需求。例如,我们可能想要创建一个提示模板,其中包含适合我们的语言模型的特定动态指令。在这种情况下,您可以创建自定义提示模板。

在此处查看当前的默认提示模板集。

创建自定义提示模板(Creating a Custom Prompt Template)

本质上有两种不同的提示模板可用 - 字符串提示模板聊天提示模板

一、字符串提示模板提供字符串格式的简单提示。

二、聊天提示模板生成更结构化的提示以与聊天 API 一起使用。

在本指南中,我们将使用字符串提示模板创建自定义提示。

要创建自定义字符串提示模板,有两个要求:

① 它有一个 input_variables 属性,该属性公开提示模板所需的输入变量。
② 它公开了一个格式方法,该方法接受与预期的 input_variables 相对应的关键字参数并返回格式化的提示。

我们将创建一个自定义提示模板,它将函数名称作为输入,并格式化提示以提供函数的源代码。为了实现这一点,我们首先创建一个函数,该函数将返回给定名称的函数的源代码。

import inspect


def get_source_code(function_name):
    # 获取函数的源码
    return inspect.getsource(function_name)

接下来,我们将创建一个自定义提示模板,它将函数名称作为输入,并格式化提示模板以提供函数的源代码。

from langchain.prompts import StringPromptTemplate
from pydantic import BaseModel, validator

#给定函数名称和源代码,生成该函数的英语解释。
#函数名称:{函数名称}
#源代码:
#{源代码}
#解释:
PROMPT = """\
Given the function name and source code, generate an English language explanation of the function.
Function Name: {function_name}
Source Code:
{source_code}
Explanation:
"""


class FunctionExplainerPromptTemplate(StringPromptTemplate, BaseModel):
    """A custom prompt template that takes in the function name as input, and formats the prompt template to provide the source code of the function."""

    @validator("input_variables")
    def validate_input_variables(cls, v):
    	# 验证输入变量是否正确。
        """Validate that the input variables are correct."""
        if len(v) != 1 or "function_name" not in v:
        	# 提示错误,函数名称必须唯一
            raise ValueError("function_name must be the only input_variable.")
        return v

    def format(self, **kwargs) -> str:
        # 获取函数的源码
        source_code = get_source_code(kwargs["function_name"])

        # 生成要发送到语言模型的提示
        # __name__是当前模块名
        prompt = PROMPT.format(
            function_name=kwargs["function_name"].__name__, source_code=source_code
        )
        return prompt

    def _prompt_type(self):
        return "function-explainer"

参考api:

  • StringPromptTemplate from langchain.prompts

使用自定义提示模板(Use the custom prompt template)

现在我们已经创建了自定义提示模板,我们可以使用它来为我们的任务生成提示。

fn_explainer = FunctionExplainerPromptTemplate(input_variables=["function_name"])

# 生成函数“get_source_code”的提示
prompt = fn_explainer.format(function_name=get_source_code)
print(prompt)

结果:

    给定函数名称和源代码,生成该函数的英语解释。
    函数名称: get_source_code
    源码:
    def get_source_code(function_name):
        # Get the source code of the function
        return inspect.getsource(function_name)
    
    Explanation:
    

总结

本文讲解的就是如何创建自定义提示:

  1. 先定义一个包含变量的字符串,变量用{},如:
"""\
Given the function name and source code, generate an English language explanation of the function.
Function Name: {function_name}
Source Code:
{source_code}
Explanation:
"""
  1. 使用PROMPT.format(xxx)函数,进行格式化,如:
prompt = PROMPT.format(
            function_name=kwargs["function_name"].__name__, source_code=source_code
        )

参考地址:

https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/custom_prompt_template文章来源地址https://www.toymoban.com/news/detail-641355.html

到了这里,关于【LangChain】Prompts之自定义提示模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[基础知识]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(54)
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[示例选择器(Example Selectors)]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月14日
    浏览(41)
  • 【LangChain】Prompts之Prompt templates

    【LangChain】向量存储(Vector stores) 【LangChain】向量存储之FAISS 【LangChain】Prompts之Prompt templates 编程模型的新方法是通过提示( prompts )。 prompts 是指模型的输入。该输入通常由多个组件构成。 LangChain 提供了多个类和函数,使构建和使用 prompts 变得容易。 Prompt templates(提示模板)

    2024年02月14日
    浏览(40)
  • 【LangChain】Prompts之示例选择器

    【LangChain】向量存储(Vector stores) 【LangChain】向量存储之FAISS 【LangChain】Prompts之Prompt templates 【LangChain】Prompts之自定义提示模板 【LangChain】Prompts之示例选择器 如果您有大量示例,您可能需要选择要包含在提示中的哪个示例。示例选择器是负责执行此操作的类。 基本接口定义

    2024年02月13日
    浏览(33)
  • [LangChain核心模块]模型的输入和输出->Prompts

    ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:@逐梦苍穹 ⭐所属专栏:人工智能。 任何语言模型应用的核心元素是 模型的输入和输出 。LangChain提供了与任何语言模型进行接口交互的基本组件。 ● 提示 prompts: 将模型输入模板化、动

    2024年02月16日
    浏览(38)
  • LangChain手记 Models,Prompts and Parsers

    整理并翻译自DeepLearning.AI×LangChain的官方课程:Models,Prompts and Parsers(源码可见) 模型:大语言模型 提示词:构建传递给模型的输入的方式 解析器:获取模型输入,转换为更为结构化的形式以在下游任务中使用 为什么使用提示词模板 提示词会非常长且具体 在可以的时候能直

    2024年02月13日
    浏览(39)
  • langchain系列:Model I/O模块之-Prompts

      langchain是基于大语言模型而开发的一个框架,既然是基于大语言模型,自然最重要的就是先要介绍Model I/O模块。   Model I/O模块其实就是提供了语言模型的基础构建接口,那既然是提供构建的接口,我们首先要知道,构建一个模型到底需要哪一些部分。官方给出了一个图例

    2024年02月16日
    浏览(34)
  • 【Java-LangChain:使用 ChatGPT API 搭建系统-6】处理输入-链式 Prompt Chaining Prompts

    在本章中,我们将学习如何通过将复杂任务拆分为一系列简单的子任务来链接多个 Prompt。 您可能会想,为什么要将任务拆分为多个 Prompt,而不是像我们在上一个视频中学习的那样,使用思维链推理一次性完成呢?我们已经证明了语言模型非常擅长遵循复杂的指令,特别是像

    2024年02月07日
    浏览(49)
  • LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(43)
  • LangChain(2)提示工程 Prompt Engineering

    提示一般包含如下部分: Instructions:整体结构,模型的人设 Instructions tell the model what to do, how to use external information if provided, what to do with the query, and how to construct the output. External information:额外提供给模型的信息 External information or context(s) act as an additional source of knowledge for t

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包