快速入門 LLM Chain

爱学习的饲养员發表於2025-02-10

使用 LangChain 構建應用

LangChain 支援構建應用程式,將外部資料來源和計算源連線到 LLM。我們將從一個簡單的 LLM 鏈開始,它只依賴於提示模板中的資訊來響應。 接下來,我們將構建一個檢索鏈,該鏈從單獨的資料庫獲取資料並將其傳遞到提示模板中。 然後,我們將新增聊天記錄,以建立對話檢索鏈。這允許您以聊天方式與此 LLM 進行互動,因此它會記住以前的問題。 最後,我們將構建一個代理,利用 LLM 來確定它是否需要獲取資料來回答問題。

LLMChain

LangChain 可以透過 API 提供的模型(如 OpenAI)和本地開源模型(如 Ollama)等整合。開源模型的部署依賴於我們擁有的硬體配置,我將不做過多分析。
這裡我將使用 OpenAI 提供的 API 做示例。
首先,我們需要匯入 LangChain x OpenAI 整合包

pip install langchain-openai

訪問 API 需要一個 API 金鑰,您可以透過建立一個帳戶並前往此處來獲取該金鑰。
一旦我們有了金鑰,我們就要透過執行以下命令將其設定為環境變數(非必須):

export OPENAI_API_KEY="..."

然後,我們可以初始化模型:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

如果您不想設定環境變數,則可以在啟動 OpenAI LLM 類時直接透過命名引數傳入金鑰:openai_api_key

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(openai_api_key="...")

一旦你安裝並初始化了你選擇的 LLM,我們就可以嘗試使用它了!

讓我們問它 “請介紹一下李白?” 。

輸出如下:

AIMessage(content='李白(701年-762年),字太白,號青蓮居士,唐朝時期偉大的浪漫主義詩人,被後人譽為“詩仙”。他出生於今天的陝西省鳳翔縣,自幼聰明好學,擅長詩詞歌賦,一生創作了大量的詩歌,其作品風格豪放奔放,語言優美,富有想象力,具有極高的藝術價值。
李白的詩歌題材廣泛,包括山水田園、歷史人物、神話傳說、飲酒抒懷等,他的詩歌充滿了浪漫主義色彩,表現出對自由、理想和自然的熱愛。他的代表作有《靜夜思》、《將進酒》、《廬山謠》、《早發白帝城》等,這些作品在中國文學史上佔有重要地位。
李白的一生充滿了傳奇色彩,他曾遊歷過許多地方,與當時的文人墨客交往甚廣,他的詩歌也深受人們的喜愛。然而,他的生活並不平穩,曾多次遭遇政治挫折,但他始終保持樂觀豁達的態度。晚年,李白因病返回故鄉,最終在安徽當塗去世。
李白的詩歌對中國文學產生了深遠影響,他的作品被後世廣為傳頌,成為中國古代詩歌的瑰寶。 ')

我們還可以使用提示模板來指導它的響應。 提示模板用於將原始使用者輸入轉換為更好的 LLM 輸入。

from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是世界級的歷史人物研究人員,擅長用一句話輸出回答。"),
    ("user", "{input}")
])

現在,我們可以將它們組合成一個簡單的 LLM 鏈:

chain = prompt | llm

我們現在可以呼叫它並提出相同的問題,理論上它應該輸出一句介紹李白的話。

chain.invoke({"input": "請介紹一下李白?"})

輸出:

AIMessage(content='李白,唐朝浪漫主義詩人,被譽為“詩仙”。 ')

模型的輸出是一條訊息。但是,使用字串通常要方便得多。讓我們新增一個簡單的輸出解析器,將聊天訊息轉換為字串。

from langchain_core.output_parsers import StrOutputParser

output_parser = StrOutputParser()

現在,我們可以將其新增到上一個鏈中:

chain = prompt | llm | output_parser

我們現在可以呼叫它並提出相同的問題。答案現在將是一個字串(而不是 AIMessage)

輸出:

李白唐朝浪漫主義詩人被譽為詩仙”。 

總結

至此,我們就學會了 LangChain 中所謂的 “Chain” 的基本使用。既然是基本使用,肯定也有高階用法,甚至我們可以自己 “自定義 Chain” 來處理我們邏輯。具體怎麼使用。