常德网站建设开发公司,店铺推广渠道有哪些,潍坊专科院校,游戏网页制作素材LangChain学习文档
【LangChain】向量存储(Vector stores)【LangChain】向量存储之FAISS【LangChain】Prompts之Prompt templates【LangChain】Prompts之自定义提示模板 概要
假设我们希望LLM生成给定函数名称的英语解释。为了实现此任务#xff0c;我们将创建一个自定义提示…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 inspectdef 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 vdef format(self, **kwargs) - str:# 获取函数的源码source_code get_source_code(kwargs[function_name])# 生成要发送到语言模型的提示# __name__是当前模块名prompt PROMPT.format(function_namekwargs[function_name].__name__, source_codesource_code)return promptdef _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_nameget_source_code)
print(prompt)结果 给定函数名称和源代码生成该函数的英语解释。函数名称: get_source_code源码:def get_source_code(function_name):# Get the source code of the functionreturn 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_namekwargs[function_name].__name__, source_codesource_code)参考地址
https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/custom_prompt_template