安装python库
pip install langchain
下载对应大模型的库(此例为openai)
pip install openai
创建LLMclient便于操作
from langchain.llms import OpenAI
#若是其他大模型,则使用对应客户端
llm = OpenAI(openai_api_key="...")
LangChain拥有三个最关键的部分:
- LLM: 语言模型是核心推理引擎。要使用LangChain,您需要了解不同类型的语言模型以及如何使用它们。
- Prompt Templates: 提供语言模型的指令。这控制了语言模型的输出,因此了解如何构建提示和不同的提示策略至关重要。
- Output Parsers: 将LLM的原始响应转换为更易处理的格式,使得在下游使用输出变得容易。
LLM
LLM含有两种大模型:
- LLMs: 这是一个以字符串作为输入并返回字符串的语言模型
- ChatModels: 这是一个以消息列表作为输入并返回消息的语言模型(NVDIA的就是该模型)
不同之处?
不同之处在于ChatModels输入一个ChatMessage
列表,但只返回一个ChatMessage
一个ChatMessage包含两个必须的组件:
content
: 这是消息的内容。role
: 这是ChatMessage
来自的实体的角色。
-
HumanMessage
: 来自人类/用户的ChatMessage
。AIMessage
: 来自AI/助手的ChatMessage
。SystemMessage
: 来自系统的ChatMessage
。FunctionMessage
: 来自函数调用的ChatMessage
。
LangChain为两者提供了一个标准接口,但了解这种差异以便为给定的语言模型构建提示非常有用。LangChain提供的标准接口有两种方法:
predict
: 接受一个字符串,返回一个字符串predict_messages
: 接受一个消息列表,返回一个消息。(消息是一个类)
predict的方法
text = "What would be a good company name for a company that makes colorful socks?"
llm.predict(text)
# >> Feetful of Fun
chat_model.predict(text)
# >> Socks O'Color
predict_messages的方法
from langchain.schema import HumanMessage
text = "制造多彩袜子的公司的好名字是什么?"
messages = [HumanMessage(content=text)]
llm.predict_messages(messages)
# >> Feetful of Fun
chat_model.predict_messages(messages)
# >> Socks O'Color
Template提示模板(Prompt模板)
类似于python里的字符串替换,灵活的编写prompt
创建模板
from langchain.prompts.chat import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
#系统消息
template = "You are a helpful assistant that translates {input_language} to {output_language}."
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
#用户消息
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
#
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chat_prompt.format_messages(input_language="English", output_language="French", text="I love programming.")
结果
[
SystemMessage(content="You are a helpful assistant that translates English to French.", additional_kwargs={}),
HumanMessage(content="I love programming.")
]
输出解释器(OutputParsers)
就是一个将返回的消息结果或是字符串转换为自己想要的格式
例如:
- 将LLM的文本转换为结构化信息(例如JSON)
- 将ChatMessage转换为字符串
- 将除消息之外的其他信息(如OpenAI函数调用)转换为字符串。
LLMChain*
LangChain的一大特色,能够将上一个方法的结果作为下一个方法的输入,以此形成一个链