Chains(链)

LangChain学习文档

Chains(链)

【LangChain】不同的调用方式(Different call methods)

概述

单独使用 LLM 对于简单的应用程序来说是OK的,但更复杂的应用程序需要 LLM链 - 彼此链接或与其他组件链接。

LangChain为此类“链式”应用提供了Chain接口。我们将链非常笼统地定义为对组件的调用序列,其中可以包括其他链。基本接口很简单:

class Chain(BaseModel, ABC):
    """Base interface that all chains should implement."""

    memory: BaseMemory
    callbacks: Callbacks

    def __call__(
        self,
        inputs: Any,
        return_only_outputs: bool = False,
        callbacks: Callbacks = None,
    ) -> Dict[str, Any]:
        ...

这种将组件组合成一个链的想法很简单但很强大。它极大地简化了复杂应用程序的实现并使之更加模块化,从而使调试、维护和改进应用程序变得更加容易。

欲了解更多信息,可以查看:

为什么我们需要chains

链允许我们将多个组件组合在一起以创建一个单一的、连贯的应用程序。例如,我们可以创建一个链,它接受用户输入,使用 PromptTemplate 对其进行格式化,然后将格式化的响应传递给 LLM。我们可以通过将多个链组合在一起,或者将链与其他组件组合来构建更复杂的链。

开始使用

使用LLMChain

LLMChain是构建区块链的基础。它采用提示模板(Prompt template),根据用户输入对其进行格式化,然后返回LLM的响应。
要使用LLMChain,首先创建一个提示模板。

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

# temperature=0.9是随机度,0-1,越大随机度越高,信息回答越不准确
llm = OpenAI(temperature=0.9)
prompt = PromptTemplate(
    input_variables=["product"],
    template="What is a good name for a company that makes {product}?",
)

我们现在可以创建一个非常简单的链,它将接受用户输入,用它格式化prompt,然后将其发送给LLM

from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)

# Run the chain only specifying the input variable.
print(chain.run("colorful socks"))

结果:

    Colorful Toes Co.

如果有多个变量,可以使用字典(键值对)一次性输入它们。

prompt = PromptTemplate(
    input_variables=["company", "product"],
    template="What is a good name for {company} that makes {product}?",
)
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run({
    'company': "ABC Startup",
    'product': "colorful socks"
    }))

结果:

    Socktopia Colourful Creations.

你也可以在LLMChain中使用聊天模型:

from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    HumanMessagePromptTemplate,
)
human_message_prompt = HumanMessagePromptTemplate(
        prompt=PromptTemplate(
            template="What is a good name for a company that makes {product}?",
            input_variables=["product"],
        )
    )
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
# 这里创建的是聊天模型
chat = ChatOpenAI(temperature=0.9)
chain = LLMChain(llm=chat, prompt=chat_prompt_template)
print(chain.run("colorful socks"))

结果:

    Rainbow Socks Co.

总结

  1. 创建大模型 llm = OpenAI(temperature=0.9)
  2. 创建提示:prompt:本质上就是向大模型提出的问题:
prompt = PromptTemplate(
    input_variables=["company", "product"],
    template="What is a good name for {company} that makes {product}?",
)
  1. llm、prompt作为参数,创建chain:chain = LLMChain(llm=llm, prompt=prompt)
  2. 执行chain:chain.run("colorful socks")

参考地址:

https://python.langchain.com/docs/modules/chains/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值