当前位置:   article > 正文

【LangChain系列 6】Prompt模版——自定义prompt模版_customprompttemplate

customprompttemplate

原文地址:【LangChain系列 6】Prompt模版——自定义prompt模版

本文速读:

  • 自定义prompt模版

LangChain提供了很多默认的prompt模版,同时LangChain提供了两种基础prompt模版:

  • 字符串prompt模版

  • 对话prompt模版

基于这两种模版,我们可以自定义prompt模版,自定义prompt模版有两个步骤是必不可少的:

  1. 要有input_variables属性,这是prompt模版对外暴露的接口,表示它需要接受输入在变量。

  2. 定义format方法,接受input_variables变量,然后返回一个格式化的prompt。

自定义prompt模版


下面将基于字符串prompt模版,定义一个prompt模版,实现的功能是:给定一个输入的函数名,然后输出该函数功能的prompt。

1. 创建一个函数:输入函数名字,返回函数源码

  1. import inspect
  2. def get_source_code(function_name):
  3. # Get the source code of the function
  4. return inspect.getsource(function_name)

2. 创建自定义prompt模版

  1. from langchain.prompts import StringPromptTemplate
  2. from pydantic import BaseModel, validator
  3. PROMPT = """\
  4. Given the function name and source code, generate an English language explanation of the function.
  5. Function Name: {function_name}
  6. Source Code:
  7. {source_code}
  8. Explanation:
  9. """
  10. class FunctionExplainerPromptTemplate(StringPromptTemplate, BaseModel):
  11. """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."""
  12. @validator("input_variables")
  13. def validate_input_variables(cls, v):
  14. """Validate that the input variables are correct."""
  15. if len(v) != 1 or "function_name" not in v:
  16. raise ValueError("function_name must be the only input_variable.")
  17. return v
  18. def format(self, **kwargs) -> str:
  19. # Get the source code of the function
  20. source_code = get_source_code(kwargs["function_name"])
  21. # Generate the prompt to be sent to the language model
  22. prompt = PROMPT.format(
  23. function_name=kwargs["function_name"].__name__, source_code=source_code
  24. )
  25. return prompt
  26. def _prompt_type(self):
  27. return "function-explainer"

3. 使用自定义prompt模版

  1. fn_explainer = FunctionExplainerPromptTemplate(input_variables=["function_name"])
  2. # Generate a prompt for the function "get_source_code"
  3. prompt = fn_explainer.format(function_name=get_source_code)
  4. print(prompt)

执行程序,输出如下:​​​​​​​

  1. Given the function name and source code, generate an English language explanation of the function.
  2. Function Name: get_source_code
  3. Source Code:
  4. def get_source_code(function_name):
  5. # Get the source code of the function
  6. return inspect.getsource(function_name)
  7. Explanation:

本文小结

本文介绍了自定义prompt模版的两种方式:字符串prompt模版和对话prompt模版,并基于字符串prompt模版,实现了一个prompt模版:输入一个方法名,输出该方法功能的prompt。

 更多最新文章,请关注公众号:大白爱爬山

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/336655
推荐阅读
相关标签
  

闽ICP备14008679号