LangChain系列文章
LangChain提供许多模块,可用于构建语言模型应用程序。模块可以作为简单应用程序中的独立模块使用,并且它们可以组合用于更复杂的用例。组合由LangChain表达语言LangChain Expression Language(LCEL)提供支持,它定义了许多模块实现的统一可运行接口,从而使得能够无缝地链接组件成为可能。
最简单和最常见的链包含三个要素:
在本指南中,我们将分别介绍这三个组件,然后讨论如何将它们组合在一起。了解这些概念将为您使用和定制LangChain应用程序奠定良好基础。大多数LangChain应用程序允许您配置模型和/或提示,因此知道如何利用这一点将是一个重要的促进因素。
有两种类型的语言模型:
字符串很简单,但是消息究竟是什么?基本消息接口由BaseMessage定义,其中有两个必需属性:
LangChain提供了几个对象,以便轻松区分不同的角色:
如果没有这些角色中的任何一个听起来合适,还有一个ChatMessage类,您可以在其中手动指定角色。
LangChain提供了一个通用接口,被LLM和ChatModel共享。然而,要最有效地构建给定语言模型的提示,了解它们之间的区别是很有用的。
调用LLM或ChatModel的最简单方法是使用.invoke()
,这是LangChain表达语言(LCEL)对象的通用同步调用方法:
LLM.invoke
:接受一个字符串,返回一个字符串。ChatModel.invoke
:接受一个BaseMessage列表,返回一个BaseMessage。这些方法的输入类型实际上比这更一般化,但为了简单起见,我们可以假设LLMs只接受字符串,而Chat模型只接受消息列表。请查看下面的“深入了解”部分,了解有关模型调用的更多信息。
让我们看看如何处理这些不同类型的模型和这些不同类型的输入。首先,让我们导入一个LLM和一个ChatModel。
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
#llm = OpenAI()
#chat_model = ChatOpenAI()
llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0)
chat_model = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
LLM和ChatModel对象实际上是配置对象。您可以使用温度等参数对它们进行初始化,并将它们传递给其他地方。
from langchain.schema import HumanMessage
text = "制造彩色袜子的公司取什么好名字呢?"
messages = [HumanMessage(content=text)]
response = llm.invoke(text)
print("string >>", response)
# >> Feetful of Fun
response = chat_model.invoke(messages)
print("message >>", response)
# >> AIMessage(content="Socks O'Color")
输出
[zgpeace@zgpeaces-MacBook-Pro langchain-llm-app (develop ?)]$ python Basic/chat_msg.py
string >> 1. 彩虹袜子公司
2. 绚丽袜子制造厂
3. 艳丽袜业有限公司
4. 缤纷袜子制造商
5. 魅力袜业集团
6. 彩绘袜子制造厂
7. 七彩袜子有限公司
8. 色彩世界袜业
9. 炫彩袜子制造商
10. 色彩缤纷袜业公司
message >> content='1. 彩虹袜子公司\n2. 绚丽袜子制造厂\n3. 艳丽袜业有限公司\n4. 缤纷袜子制造商\n5. 魅力袜业集团\n6. 彩绘袜子制造厂\n7. 时尚彩袜有限公司\n8. 色彩世界袜业\n9. 炫彩袜子制造商\n10. 梦幻袜子公司'
LLM.invoke
和ChatModel.invoke
实际上都支持Union[str, List[BaseMessage]
, PromptValue]
作为输入。PromptValue
是一个定义了自己的返回输入的自定义逻辑的对象,可以将其输入作为字符串或消息。LLMs有逻辑将这些中的任何一个强制转换为字符串,而ChatModels有逻辑将这些中的任何一个强制转换为消息。LLM和ChatModel接受相同的输入意味着你可以在大多数链中直接交换它们,而不会破坏任何东西,尽管重要的是要考虑输入是如何被强制转换以及这可能会影响模型性能。要深入了解模型,请前往语言模型部分。
https://github.com/zgpeace/pets-name-langchain/tree/develop
https://python.langchain.com/docs/get_started/quickstart