09课思考题及总结 |豆包MarsCode AI刷题

75 阅读3分钟

09课思考题01

import os
from langchain import PromptTemplate, LLMChain
from langchain_openai import ChatOpenAI
# 设置提示模板
prompt = PromptTemplate(
    input_variables=["price", "flower_name"], template="您是一位专业的鲜花店文案撰写员。对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?"
)
# 初始化大模型
llm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"), temperature=0)
# 初始化链
llm_chain = LLMChain(llm=llm, prompt=prompt)
# apply方法允许您针对输入列表运行链
input_list = [
    {"price": "50","flower_name": "玫瑰"},
    { "price": "30","flower_name": "百合",},
    { "price": "20","flower_name": "郁金香",},
]
result = llm_chain.apply(input_list)
print(result)
# generate方法
result = llm_chain.generate(input_list)
print(result)

image.png

09课思考题02

# 初始化链
llm_chain = LLMChain(llm=llm, 
                    prompt=prompt,
                    output_key="introduction_text" 
                    )

image.png

链的总结

1. 什么是Chain?

  • Chain 是LangChain中的关键组件,用于链接LangChain的各个组件和功能,包括模型之间彼此链接,或模型与其他组件链接。
  • 链简化了复杂应用程序的实现,并使之更加模块化,便于调试、维护和改进应用程序。

2. Chain的实现和使用

  • LangChain通过设计好的接口实现具体的链功能,例如LLMChain,它整合了PromptTemplate、语言模型(LLM或聊天模型)和Output Parser。
  • 链可以被视为LangChain中的基本功能单元,内部封装一系列功能,外部可以组合串联。

3. LangChain中的预置链

  • LangChain提供了多种类型的预置链,使各种任务实现起来更加方便、规范。

4. LLMChain:最简单的链

  • LLMChain整合了提示模板、语言模型和输出解析器,相当于把Model I/O放在一个链中整体操作。
  • 使用LLMChain可以简化代码结构,将提示模板的构建和模型的调用封装在一起。

5. 链的调用方式

  • 直接调用:直接调用链对象,相当于调用内部实现的__call__方法。
  • run方法:通过run方法,等价于直接调用__call__函数。
  • predict方法predict方法类似于run,输入键被指定为关键字参数而不是Python字典。
  • apply方法apply方法允许针对输入列表运行链,一次处理多个输入。
  • generate方法generate方法类似于apply,返回一个LLMResult对象,包含模型生成文本过程中的一些相关信息。

6. Sequential Chain:顺序链

  • Sequential Chain可以将多个LLMChain串起来,形成一个顺序链,按顺序运行。
  • 通过Sequential Chain,可以实现更复杂的流程,例如:生成鲜花的知识性说明、评论和社交媒体文案

7.RouterChain

RouterChain是LangChain中的一个基础组件,它负责根据输入动态选择下一个要调用的链条。RouterChain可以包含多种类型,其中LLMRouterChainEmbeddingRouterChain是两种常见的实现。

  • LLMRouterChain:这种路由链使用大型语言模型(LLM)来决定如何路由输入。它通过提示(Prompt)的形式让大语言模型来进行路由。
  • EmbeddingRouterChain:这种路由链通过向量搜索的方式,将用户输入路由到不同的处理链。

8.MultiPromptChain

MultiPromptChain是LangChain中的另一个重要组件,它使用一个LLM路由器链在多个提示之间进行选择。MultiPromptChain的关键元素包括:

  • router_chain(RouterChain):用于决定目标链和其输入的链。
  • destination_chains(Mapping[str, LLMChain]):将名称映射到可以将输入路由到的候选链。
  • default_chain(LLMChain):当router_chain无法将输入映射到destination_chains中的任何一个链时,使用此默认链。

9.MultiPromptChain的工作流程

  1. 输入首先传递给router_chain。
  2. router_chain根据某些标准或逻辑决定应该使用哪一个destination_chain。
  3. 输入随后被路由到选定的destination_chain,该链进行处理并返回结果。
  4. 如果router_chain不能决定正确的destination_chain,则输入会被传递给default_chain。