Chain链 | 豆包MarsCode AI刷题

57 阅读6分钟

LLMChain

调用方法

差不多5种方法

  1. 直接调用

    • llm_chain("玫瑰")

      直接调用链对象时,实际上是在调用对象内部实现的__call__方法。

    • llm_chain({ 'flower': "玫瑰",'season': "夏季" }) 如果提示模板中包含多个变量,可以在调用链时使用字典一次性输入这些变量(:或许这也算一种方法)。

  2. 通过run方法

    • llm_chain.run("玫瑰") 通过run方法调用链,这与直接调用__call__方法等价。
  3. 通过predict方法

    • llm_chain.predict(flower="玫瑰") predict方法类似于run,但输入参数被指定为关键字参数而不是Python字典。
  4. 通过apply方法

    • apply方法允许我们针对输入列表运行链,一次处理多个输入。
    • 示例中,创建了一个包含三个字典的输入列表,每个字典包含flowerseason键值对。
    • 调用LLMChainapply方法,传入输入列表,处理并返回结果列表。
    input_list = [
         {"flower": "玫瑰",'season': "夏季"},
         {"flower": "百合",'season': "春季"},
         {"flower": "郁金香",'season': "秋季"} 
    ] 
    result = llm_chain.apply(input_list)
  1. 通过generate方法

    • result = llm_chain.generate(input_list) generate方法类似于apply,但它返回一个LLMResult对象,而不是字符串。
    • LLMResult对象通常包含模型生成文本过程中的一些相关信息,例如令牌数量、模型名称等。

路由模板(router template)和路由提示(router prompt)区别

看的时候感觉模板和提示这两概念容易搞混(好吧,多敲就明白了)但是还是简单理理它们的区别吧。

路由模板(Router Template)

  • 定义:路由模板是一个字符串模板,它包含了引导语言模型(LLM)如何根据用户输入选择最合适的处理模板的指令和格式。
  • 内容:它通常包含了一个描述性的文本,告诉模型它将接收输入,并需要根据输入选择一个最合适的提示来响应。它还包含了格式化输出的指示,告诉模型如何构造其输出,通常是以JSON格式。
  • 目的:路由模板的目的是提供一个框架,让模型知道如何处理用户的输入,并根据提供的候选提示列表选择一个最佳的模型提示来回应。
  • 结构:它包含了候选提示的名称和描述,以及如何格式化输出的说明。它还可能包含对模型的额外指导,比如是否需要修改输入以获得更好的响应。

路由提示(Router Prompt)

  • 定义:路由提示是基于路由模板构建的具体提示信息,它直接传递给语言模型(LLM)。
  • 内容:路由提示包含了实际的模板字符串,输入变量,以及一个输出解析器(output parser),用于解析模型的输出。
  • 目的:路由提示的目的是触发语言模型的响应,让模型根据用户提供的输入和路由模板的指导选择正确的处理链。
  • 结构:它通常包括了模板本身、输入变量的定义以及一个输出解析器。输出解析器负责将模型的输出从JSON格式中提取出来,并映射到正确的处理链或默认链。

区别

  • 抽象层次:路由模板更抽象,定义了如何构建路由逻辑和输出格式;路由提示则是具体的实现,是路由模板的具体应用。
  • 使用方式:路由模板是设计时使用的蓝图,而路由提示是运行时实际传递给模型的指令。
  • 直接交互:路由提示是模型直接接收和处理的对象,它包含了模型需要的所有信息,包括输入和如何解释输出的说明。
  • 灵活性:路由模板提供了一种方式来定义和修改路由逻辑而不需要改变模型的代码;路由提示则是这些逻辑的具体执行。

"Prompt"(提示)和"Template"(模板)的区别

ok,进一步理理prompt和template的异同。

这两个概念经常被使用,它们在某些情况下可以互换,但在具体应用中它们有着细微的区别和特定的用途。以下是对这两个概念的详细解释和理解方式:

Template(模板)

  • 定义:模板是一个预定义的结构或框架,用于指导或形成对话、文本生成或其他类型的输出。它通常包含了一些固定的文本和占位符,这些占位符在实际使用时会被具体的数据或用户输入替换。
  • 用途:模板用于确保输出的一致性和标准化。它们在需要生成具有特定格式或结构的文本时非常有用,比如报告、邮件、自动化响应等。
  • 灵活性:模板相对固定,但可以通过替换占位符来适应不同的内容。

Prompt(提示)

  • 定义:提示是一个触发或引导人工智能模型(如语言模型)生成特定类型输出的输入。它通常包含了问题、指令或上下文信息,用于激发模型产生预期的响应。
  • 用途:提示用于与模型交互,引导模型生成特定的回答或行为。它们在聊天机器人、问答系统、文本生成任务中非常常见。
  • 灵活性:提示更加灵活,可以根据需要引导模型生成不同类型的输出。

区别和联系

  • 目的性:模板更多关注于输出的结构和格式,而提示更多关注于引导模型的行为和输出内容。
  • 交互性:提示通常与模型的交互更直接,它们直接影响模型的输出;模板则更多作为一个预设的框架,通过填充模板来生成输出。
  • 动态性:提示可以根据不同的上下文和需求动态变化,而模板则提供了一个相对固定的输出模式。
  • 组合使用:在实际应用中,模板和提示经常组合使用。例如,一个提示可以包含一个模板,用于引导模型生成符合特定格式的输出。

理解方式

  • 模板作为框架:将模板想象成一个填空题,你需要根据具体情况填写正确的信息来完成它。
  • 提示作为引导:将提示想象成一个对话的开始,你说的话(提示)会影响对方(模型)如何回应。