赞
踩
LangChain是一个用于大语言模型(LLM)应用开发的框架,它简化了LLM应用的开发难度,帮助开发者快速构建复杂的LLM应用。
LangChain 包的主要价值主张是:
现成的链使得开始变得容易。组件使得定制现有链和构建新链变得容易。
LangChain 库本身由几个不同的包组成。
langchain-core
:基础抽象和 LangChain 表达式语言。langchain-community
:第三方集成。langchain
:构成应用程序认知架构的链、代理和检索策略。这是与各种大语言模型进行交互的基本组件。它允许开发者管理提示(prompt),通过通用接口调用语言模型,并从模型输出中提取信息。简单来说,这个组件负责与大语言模型“对话”,将我们的请求传递给模型,并接收模型的回复。
- from langchain.prompts import PromptTemplate
-
- template = PromptTemplate.from_template("给我讲个关于{subject}的故事")
- print(template.format(subject='星座'))
- from langchain.prompts import (
- ChatPromptTemplate,
- HumanMessagePromptTemplate,
- SystemMessagePromptTemplate,
- )
- from langchain_openai import ChatOpenAI
- template = ChatPromptTemplate.from_messages(
- [
- SystemMessagePromptTemplate.from_template(
- "你是{product}的客服助手。你的名字叫{name}"),
- HumanMessagePromptTemplate.from_template("{query}"),
- ]
- )
- llm = ChatOpenAI()
- prompt = template.format_messages(
- product="手机客服",
- name="小花",
- query="你是谁"
- )
-
- ret = llm.invoke(prompt)
-
- print(ret.content)
- from langchain.prompts import (
- ChatPromptTemplate,
- HumanMessagePromptTemplate,
- MessagesPlaceholder,
- )
- from langchain_core.messages import AIMessage, HumanMessage
- human_prompt = "Translate your answer to {language}."
- human_message_template = HumanMessagePromptTemplate.from_template(human_prompt)
-
- chat_prompt = ChatPromptTemplate.from_messages(
- [MessagesPlaceholder(variable_name="conversation"), human_message_template]
- )
- human_message = HumanMessage(content="Who is Elon Musk?")
- ai_message = AIMessage(
- content="Elon Musk is a billionaire entrepreneur, inventor, and industrial designer"
- )
- messages = chat_prompt.format_prompt(
- # 对 "conversation" 和 "language" 赋值
- conversation=[human_message, ai_message], language="中文"
- )
- result = llm.invoke(messages)
- print(result.content)
- from langchain_openai import ChatOpenAI
-
- llm = ChatOpenAI(model="gpt-3.5-turbo") # 默认是gpt-3.5-turbo
- response = llm.invoke("你是谁")
- print(response.content)
- from langchain.schema import (
- AIMessage,
- HumanMessage,
- SystemMessage
- )
-
- messages = [
- HumanMessage(content="今天天气怎么样?"),
- AIMessage(content="已收到您的问题,正在查询..."),
- SystemMessage(content="今天天气晴朗,气温适宜。")
- ]
-
- ret = llm.invoke(messages)
-
- print(ret)
Class hierarchy:
BaseLanguageModel --> BaseLLM --> LLM --> Examples: AI21, HuggingFaceHub, OpenAI --> BaseChatModel --> Examples: ChatOpenAI, ChatGooglePalm
LangChain 内置的 OutputParser 包括:
等等
大语言模型的知识来源于其训练数据集,但并不包含用户信息或最新时事。数据连接模块提供了加载、转换、存储和查询数据的组件,使得大语言模型能够在训练数据集的基础上,利用自有数据中的信息来回答问题。这样,模型就能给出更有用的答案。
对于复杂的需求,可能需要将多个大语言模型或其他组件进行链式组合。链允许将多个组件组合在一起,创建一个连贯的应用程序。例如,可以创建一个链,接受用户输入,对其进行格式化,然后将格式化后的提示词传递给大语言模型。
简单的LLMChain形式:
- from langchain.prompts import PromptTemplate
- from langchain.llms import OpenAI
-
- llm = OpenAI(temperature=0.9)
- prompt = PromptTemplate(
- input_variables=["product"],
- template="What is a good name for a company that makes {product}?",
- )
-
- from langchain.chains import LLMChain
- chain = LLMChain(llm=llm, prompt=prompt)
-
- # Run the chain only specifying the input variable.
- print(chain.run("colorful socks"))
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"))
LCEL可以实现:
1)配置运行时变量:https://www.wpsshop.cn/w/知新_RL/article/detail/687735
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。