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:
总结
本文讲解的就是如何创建自定义提示:
- 先定义一个包含变量的字符串,变量用
{}
,如:
"""\
Given the function name and source code, generate an English language explanation of the function.
Function Name: {function_name}
Source Code:
{source_code}
Explanation:
"""
- 使用
PROMPT.format(xxx)
函数,进行格式化,如:
prompt = PROMPT.format(
function_name=kwargs["function_name"].__name__, source_code=source_code
)
参考地址:文章来源:https://www.toymoban.com/news/detail-641355.html
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模板网!