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-communityfrom 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 StrOutputParseroutput_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)