当前位置:   article > 正文

Langchain的提示词模板_langchain prompt 模版有哪些

langchain prompt 模版有哪些

        因为做AI项目的过程中,需要处理各种提示词(prompt),其中有些是固定的文本,有些是会反复修改的。如果是简单的提示词,直接用python里面的字符串format()或者replace()函数进行处理即可。对于复杂的,还是用langchain里面的提示词模板更方便。

        为了方便处理llm的promt,langchain提供了提示词模板。具体文档参见官方文档:https://api.python.langchain.com/en/latest/core_api_reference.html#module-langchain_core.prompts

        常见的类有BasePromptTemplate、PipelinePromptTemplate和PromptTemplate。其中BasePromptTemplate是后面2个类的基类(PromptTemplate的直接父类是StringPromptTemplate,而StringPromptTemplate的直接父类则是BasePromptTemplate)。


BasePromptTemplate中常用的方法有format(),input_variables(),partial(),save()。

PromptTemplate中常用的方法有from_file()、from_template()。

具体使用请参见下面的源码:template.txt文件中的内容如下:

  1. 这是一个测试用的模板文件,用于测试模板引擎的功能。
  2. 你叫做{ai_name},你是{ai_role},
  3. {instructions}


template.json中的文件内容如下:

  1. {
  2.     "_type": "prompt",
  3.     "input_variables": [
  4.       "ai_name",
  5.       "ai_role",
  6.       "instructions"
  7.     ],
  8.     "template_path": "template.txt"
  9. }


template.py的代码如下:

  1. # coding: utf-8
  2. from langchain_core.prompts.loading import load_prompt
  3. from langchain_core.prompts.pipeline import PipelinePromptTemplate
  4. from langchain_core.prompts.prompt import PromptTemplate
  5. # 第一种情况:直接处理字符串模板
  6. simple_template = "这个是一个最简单的大语言模型的模板,请回答:{question}"
  7. simple_prompt = PromptTemplate.from_template(simple_template)
  8. prompt = simple_prompt.format(question="程序员节是哪一天?")
  9. print(f"^^^^^^^\n{prompt}\n^^^^^^^")
  10. # 会输出如下信息:
  11. """
  12. ^^^^^^^
  13. 这个是一个最简单的大语言模型的模板,请回答:程序员节是哪一天?
  14. ^^^^^^^
  15. """
  16. # 第二种情况:读取文件。load_prompt 返回的是 BasePromptTemplate
  17. main_prompt_template = load_prompt("template.json")
  18. # print(main_prompt_template)
  19. partial_variables = {}
  20. partial_variables["instructions"] = "按照给定的思路和上下文,回答问题。"
  21. # 将有值的变量填充到模板中
  22. main_prompt_template = main_prompt_template.partial(**partial_variables)
  23. # print(main_prompt_template)
  24. # 设置模板中的其它变量
  25. prompt = main_prompt_template.format(
  26. ai_name="胖胖",
  27. ai_role="智能助手机器人"
  28. )
  29. print(f"******\n{prompt}\n******")
  30. # 会输出:
  31. """
  32. ******
  33. 这是一个测试用的模板文件,用于测试模板引擎的功能。
  34. 你叫做胖胖,你是智能助手机器人,
  35. 按照给定的思路和上下文,回答问题。
  36. ******
  37. """
  38. # 第三种情况:使用PipelinePromptTemplate,可以将多个模板组合在一起
  39. templates = []
  40. task_template = """{task_description}"""
  41. task_prompt = PromptTemplate.from_template(task_template)
  42. templates.append(("task",task_prompt))
  43. print(f"task:{task_prompt.input_variables}")
  44. resources_template = """{support_resources}"""
  45. resources_prompt = PromptTemplate.from_template(resources_template)
  46. templates.append(("resources", resources_prompt))
  47. print(f"resources:{resources_prompt.input_variables}")
  48. final_template = """你的任务是:{task}
  49. 你可以使用的资源包括:{resources}
  50. """
  51. final_prompt = PromptTemplate.from_template(final_template)
  52. pipeline_prompt = PipelinePromptTemplate(
  53. final_prompt=final_prompt,
  54. pipeline_prompts=templates
  55. )
  56. print(f"pipeline: {pipeline_prompt.input_variables}")
  57. pipeline_prompt = pipeline_prompt.format(
  58. task_description="8月份的销售额是多少",
  59. support_resources="1. 你可以查阅本地文件列表。2. 你可以读取本地文件。"
  60. )
  61. print(f"======\n{pipeline_prompt}\n======")
  62. # 会输出:
  63. """
  64. ======
  65. 你的任务是:8月份的销售额是多少
  66. 你可以使用的资源包括:1. 你可以查阅本地文件列表。2. 你可以读取本地文件。
  67. ======
  68. """

执行:python template.py

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

闽ICP备14008679号