快速入門 LLM Chain
使用 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” 來處理我們邏輯。具體怎麼使用。
相關文章
- 快速排序快速入門排序
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- JavaScript快速入門JavaScript
- vim快速入門
- Webpack快速入門Web
- Lumen快速入門
- TypeScript 快速入門TypeScript
- phpunit 快速入門PHP
- React快速入門React
- WebSocket 快速入門Web
- Pipenv 快速入門
- MQTT 快速入門MQQT
- Zookeeper快速入門
- DvaJS快速入門JS
- SnakeYaml快速入門YAML
- RabbitMQ快速入門MQ
- 快速入門reactReact
- pipenv快速入門
- Promise快速入門Promise
- PHP快速入門PHP
- GitHub 快速入門Github
- mongodb快速入門MongoDB
- mysqlsla快速入門MySql
- Express快速入門Express
- Python快速入門Python
- NuxtJS快速入門UXJS
- MySQL 快速入門MySql
- jackson快速入門
- Composer 快速入門
- zookeeper 快速入門
- Spark 快速入門Spark
- Envoy 快速入門
- Thymeleaf【快速入門】
- Feign快速入門
- Redis快速入門Redis
- IMGUI快速入門GUI
- 反射快速入門反射
- RxJava快速入門RxJava