LangChain学习三:链-实战

发布时间:2023年12月18日

上一节内容:LangChain学习二:提示-实战(下半部分)

LangChain学习二:提示-实战(下半部分)

学习目标:明白链是什么?有哪些?怎么用?


学习内容一:介绍

??链允许我们将多个组件组合在一起,创建一个单一的、一致的应用程序。

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

学习内容二:有那些

  • LLMChain:是一个简单的链,它接受一个提示模板,使用用户输入对其进行格式化,并从 LLM 返回响应。

学习内容三:实战

3.1 LLMChain

LLMChain:是一个简单的链,它接受一个提示模板,使用用户输入对其进行格式化,并从 LLM 返回响应。

3.1.1 声明:接入大模型、声明PromptTemplate、LLMChain

from langchain.prompts import PromptTemplate

from langchain.chat_models import ChatOpenAI
llm=ChatOpenAI(
            streaming=True,
            verbose=True,
            temperature=0,
            # callbacks=[callback],
            openai_api_key='none',
            openai_api_base='http://localhost:8000/v1',
            model_name="Qwen-7B-Chat"
        )
prompt = PromptTemplate(
    input_variables=["product"],
    template="一个制造{product}产品的公司的好名字是什么?中文",
)

from langchain.chains import LLMChain
# 将llm和prompt 进行和LLMChain关联
chain = LLMChain(llm=llm, prompt=prompt)

3.1.2 送入大模型

#只运行指定输入变量的链
print(chain.run("各种颜色的袜子"))

在这里插入图片描述
当然上面我们直接用PromptTemplate模板的,如果是聊天模型,可以是以下做法

from langchain.prompts import PromptTemplate

from langchain.chat_models import ChatOpenAI
llm=ChatOpenAI(
            streaming=True,
            verbose=True,
            temperature=0,
            # callbacks=[callback],
            openai_api_key='none',
            openai_api_base='http://localhost:8000/v1',
            model_name="Qwen-7B-Chat"
        )
from langchain.prompts.chat import (
    ChatPromptTemplate,
    HumanMessagePromptTemplate,
)
human_message_prompt = HumanMessagePromptTemplate(
        prompt=PromptTemplate(
            template="一个制造{product}产品的公司的好名字是什么?中文",
            input_variables=["product"],
        )
    )
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=chat_prompt_template)
print(chain.run("各种颜色的袜子"))

效果也是一样的

在这里插入图片描述

3.1.3.多个参数

在上面的情况我们只是定义了一个product变量,如果我们有多个变量呢,这时候我们可以传一个字典进去
字典格式{‘变量名’:变量值,‘变量名’:变量值}

  • chain.run(字典):直接出结果
  • chain(inputs=字典):变量和结果,可以return_only_outputs=True 只输出结果
from langchain.prompts import PromptTemplate

from langchain.chat_models import ChatOpenAI
llm=ChatOpenAI(
            streaming=True,
            verbose=True,
            temperature=0,
            # callbacks=[callback],
            openai_api_key='none',
            openai_api_base='http://localhost:8000/v1',
            model_name="Qwen-14B-Chat"
        )
from langchain.prompts.chat import (
    ChatPromptTemplate,
    HumanMessagePromptTemplate,
)
human_message_prompt = HumanMessagePromptTemplate(
        prompt=PromptTemplate(
            template="一个制造{product}产品的{name}公司的好名字是什么?中文",
            input_variables=["product","name"],
        )
    )
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=chat_prompt_template)

print(chain.run({'product':"食品",'name':"提供"}))

out=chain(inputs={'product':"食品",'name':"提供"})

print(out)

在这里插入图片描述

out=chain(inputs={'product':"食品",'name':"提供"},return_only_outputs=True)

print(out)

在这里插入图片描述

3.2 顺序链

未完成待续

文章来源:https://blog.csdn.net/huiguo_/article/details/134995402
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。