langchain说明文档:langchain 0.2.6 — 🦜🔗 langChain 0.2.6https://api.python.langchain.com/en/latest/langchain_api_reference.html#module-langchain.chat_models
1:模型
(1)自定义模型导入:
'''
在自定义llm里面接入langchain
'''
from wenxin_llm import Wenxin_LLM
from dotenv import find_dotenv, load_dotenv
import os
# 读取本地/项目的环境变量
# find_dotenv()寻找并定位.env文件的路径
# load_dotenv()读取该.env文件,并将其中的环境变量加载到当前的运行环境中
load_dotenv(find_dotenv())
# 获取环境变量 API_KEY
wenxin_api_key = os.environ["QIANFAN_AK"]
wenxin_secret_key = os.environ["QIANFAN_SK"]
llm = Wenxin_LLM(api_key=wenxin_api_key, secret_key=wenxin_secret_key, system="你是一个nlp领域的学者!")
output = llm.invoke("你好,请问你是谁?")
print('outpu_1:', output)
(2)langchain直接导入:
'''
langchain直接调用文心一言模型
'''
from dotenv import find_dotenv, load_dotenv
import os
load_dotenv(find_dotenv())
QIANFAN_AK = os.environ["QIANFAN_AK"]
QIANFAN_SK = os.environ["QIANFAN_SK"]
# # Install required dependencies
# %pip install -qU langchain langchain-community
from langchain_community.llms import QianfanLLMEndpoint
llm = QianfanLLMEndpoint(streaming=True)
res = llm("你好,请你自我介绍一下!")
print(res)
2:prompt模板
我们知道聊天模型的接口是基于消息(message),而不是原始的文本。PromptTemplates 也可以用于产生消息列表,在这种样例中,prompt
不仅包含了输入内容信息,也包含了每条message
的信息(角色、在列表中的位置等)。通常情况下,一个 ChatPromptTemplate
是一个 ChatMessageTemplate
的列表。每个 ChatMessageTemplate
包含格式化该聊天消息的说明(其角色以及内容)。
'''
prompt模板
'''
from langchain.prompts.chat import ChatPromptTemplate
template = "你是一个翻译助手,可以帮助我将 {input_language} 翻译成 {output_language}."
human_template = "{text}"
chat_prompt = ChatPromptTemplate.from_messages([
("system", template),
("human", human_template),
])
text = "我带着比身体重的行李,\
游入尼罗河底,\
经过几道闪电 看到一堆光圈,\
不确定是不是这里。\
"
messages = chat_prompt.format_messages(input_language="中文", output_language="英文", text=text)
print('messages:', messages)
output = llm.invoke(messages)
print('output:', output)
# from langchain_core.prompts import ChatPromptTemplate
# # 这里我们要求模型对给定文本进行中文翻译
# text = "我带着比身体重的行李,\
# 游入尼罗河底,\
# 经过几道闪电 看到一堆光圈,\
# 不确定是不是这里。\
# "
# prompt = """请你将由三个反引号包括的文本翻译成英文!\
# text: ```{text}```
# """
# prompt.format(text=text)
3:输出解析器(Output parser)
OutputParsers 将语言模型的原始输出转换为可以在下游使用的格式。 OutputParsers 有几种主要类型,包括:
- 将 LLM 文本转换为结构化信息(例如 JSON)
- 将 ChatMessage 转换为字符串
- 将除消息之外的调用返回的额外信息(如 OpenAI 函数调用)转换为字符串
最后,我们将模型输出传递给 output_parser
,它是一个 BaseOutputParser
,这意味着它接受字符串或 BaseMessage 作为输入。 StrOutputParser 特别简单地将任何输入转换为字符串。
'''
输出解析器
'''
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()
out = output_parser.invoke(output)
print('out:', out)
4:形成完成流程链(Chain)
我们现在可以将所有这些组合成一条链。该链将获取输入变量,将这些变量传递给提示模板以创建提示,将提示传递给语言模型,然后通过(可选)输出解析器传递输出。
(1):使用LLMChain制作链
'''
使用LLChain做链
'''
from langchain.chains import LLMChain
chain = LLMChain(
prompt=chat_prompt,
llm=llm,
output_parser=output_parser
)
# 运行链
out = chain.run(input_language="中文", output_language="英文", text=text)
print('out_chain:', out)
(2):使用管道操作符(|
)
接下来我们将使用LCEL(LCEL 起步 | 🦜️🔗 Langchain)这种语法去快速实现一条链(chain)。
'''
使用管道操作符(|)制作链
'''
chain = chat_prompt | llm | output_parser
out = chain.invoke({"input_language":"中文", "output_language":"英文","text": text})
print('out_管道:', out)