LangChain框架概念及簡單的使用案例

一、LangChain介紹

LangChain是一個強大的用于開發大模型應用程序的框架,為開發提供豐富的工具和組件,使得構造復雜的自然語言處理變得更加高效和便捷。它允許開發者將大語言模型與其他數據源工具集成,從而創建出能處理各種任務的智能體應用,如問答系統,聊天機器人,文本生成。

二、LangChain核心模塊介紹

模型(Models)

在LangChain中,模型接口是與大語言模型進行交互的橋梁。它支持多種類型的模型,包含大語言模型(LLMs)和聊天模型(Chat Models)。

提示詞模板(PromptTemplates)

提示詞用于定義輸入給語言模型的提示信息,幫助模型生成更符合預期的輸出。它可以包含變量,通過填充變量來生成具體的提示。

鏈(Chains)

鏈是LangChain中一個重要的概念,它將多個組件組合在一起,按照一定的順序執行,以實現更復雜的任務。常見的鏈類型包含順序鏈(SequnentialChain)、并行鏈等。

工具(Tools)

工具是LangChain中用于執行特定任務的組件,如搜索引擎工具、數據庫查詢工具。開發者可以將工具集成到鏈中,以擴展應用的功能。

記憶(Menory)

在對話式應用中,記憶組件用于保存和管理對話中的歷史信息,使模型能工具上下文進行更連貫的回復。LangChain提供了多種類型的記憶,如短期記憶,長期記憶等。

三、LangChain安裝

安裝環境要求

  1. python版本:建議使用python 3.7及以上版本
  2. 包管理工具:推薦pip

安裝步驟

安裝LangChain和相關依賴

pip install langchain==0.3.7
pip install langchain-core==0.3.43
pip install langchain-openai==0.3.1

四、LangChain實戰

1、基本調用:簡單問答機器人

演示任何使用LangChain調用大語言模型實現簡單的問答功能

知識點:大模型配置和調用,以及SystemMessgae和HumanMessage。

在LangChain中,SystemMessage用于設置系統級別的提示詞,HumanMessage用于表示用戶的輸入

from langchain.chains.conversation.base import ConversationChain
from langchain.chains.llm import LLMChain
from langchain.chains.sequential import SequentialChain
from langchain.memory import ConversationBufferMemory
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI# 創建一個大模型對象
llm = ChatOpenAI(openai_api_base="https://ark.cn-beijing.volces.com/api/v3",api_key="",temperature=0.7,max_tokens=10240,model_name="",
)# 簡單的調用
def basic_demo():result = llm.invoke([SystemMessage(content="你是一個翻譯小助手,請將輸入的英文翻譯成中文。"),HumanMessage(content="I love programming.")])print(result)

2、內存記憶:多輪聊天機器人

展示如何使用LangChain搭建一個聊天機器人,支持多輪聊天

知識點:ConversationBuffMemory、PromptTemplate、Memory

def multi_chat_demo():# 創建一個會話內存memory = ConversationBufferMemory()# 創建一個會話對象conversation = ConversationChain(llm=llm, memory=memory)while True:user_input = input("請輸入:")if user_input == "退出":breakresult = conversation.predict(input=user_input)print(f"大模型輸出:{result}")

3、單節點鏈調用:日報生成器

演示如何搭建一個簡單的鏈(工作流)

# 單節點鏈路調用(工作流)
def basic_chat_demo():# 定義提示詞模板prompt_template = PromptTemplate(input_variables=["job", "type"],template="你是一個職場文檔專家,可以幫我生成一個{job}崗位的{type}文檔,字數不要超過300")# 定義一個鏈(工作流),verbose= True將他調試信息全部打印出來chain = LLMChain(llm=llm, prompt=prompt_template, verbose=True, output_key="content")# 執行工作流result = chain.invoke({"job": "前端", "type": "工作日報"})print(result)

4、順序鏈調用:美食推薦

實現美食推薦鏈路,根據用戶輸入的城市,推薦該城市的特殊菜譜。

知識點:順序鏈、多節點參數傳遞

# 多節點鏈路調用
def sequential_chain_demo():# 第一第一個節點提示詞prompt_templeate_1 = PromptTemplate(input_variables=["city"],template="你是一個美食家,可以告訴用戶{city}地區特色菜是什么,只需要說一個菜名就可以,不需要對菜進行解釋")# 定義第一個節點city_chain = LLMChain(llm=llm, prompt=prompt_templeate_1, verbose=True, output_key="food")prompt_templeate_2 = PromptTemplate(input_variables=["food"],template="你是一個廚師,可以輸出一個{food}的菜譜,只需要輸出一個{food}的菜譜,不需要對菜進行解釋")food_chain = LLMChain(llm=llm, prompt=prompt_templeate_2, verbose=True, output_key="info")# 創建一個順序鏈,把兩個節點按照順序組裝all_chain = SequentialChain(chains=[city_chain, food_chain],input_variables=["city"],output_variables=["city","food","info"],verbose=True)result = all_chain.invoke({"city": "上海"})print(result)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91688.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓audio 架構解析

audio_port_handle_t ? 定義:audio_port_handle_t標識音頻設備(如揚聲器、耳機)或虛擬端口(如遠程 submix)。它在設備連接或策略路由時由AudioPolicyManager分配,例如通過setDeviceConnectionState()動態注…

GitHub 上 Star 數量前 8 的開源 MCP 項目

原文鏈接:https://www.nocobase.com/cn/blog/github-open-source-mcp-projects。 MCP 這個詞真正被廣泛提起,是在 2025 年年初,尤其是在 AI 工具開發圈。3 月,一場圍繞 “MCP 是否能成為未來標準協議” 的爭論徹底點燃了討論熱度…

【數據結構與算法】數據結構初階:排序內容加餐(二)——文件歸并排序思路詳解(附代碼實現)

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為…

Jetson Orin NX/NANO+ubuntu22.04+humble+MAVROS2安裝教程

MAVROS2目前不是官方提供的標準,主要區別還是通信機制的不同,以及API接口的區別,在使用的過程中,根據對應的版本安裝即可,此處進提供簡易的二進制安裝方法,源碼安裝暫不提供,前去使用mavros即可…

Ubuntu 安裝 ns-3 教程

Ubuntu 安裝 ns-3最全 教程 1. 環境更新 sudo apt update sudo apt install git2. Ns3 最低依賴要求 2.1 安裝依賴 安裝依賴網址:根據自己安裝的版本安裝對應依賴。 https://www.nsnam.org/wiki/Installation Ubuntu/Debian/Mint 以下軟件包列表在 Ubuntu 22.…

《林景媚與命運解放者》

《林景媚與命運解放者》——當數據庫成為命運的主宰,誰將成為人類自由意志的解放者?《林景媚數據庫宇宙》系列第十二部第一章:解放者的召喚公元 2098 年,隨著“命運終結者”的威脅被解除,PostgreSQL Quantum Engine&am…

linux編譯基礎知識-頭文件標準路徑

&#x1f4c2; ??1. 系統路徑結構差異?? 要查看 GCC 的默認頭文件搜索路徑&#xff0c;可通過以下方法操作&#xff08;以 Linux 環境為例&#xff09;&#xff1a; ??1. 查看 C 語言頭文件路徑?? gcc -v -E -xc - < /dev/null 2>&1 | grep -A 100 "#in…

離線語音芯片有哪些品牌和型號?

離線語音芯片的品牌有很多&#xff0c;型號也有很多&#xff0c;因為離線語音芯片的市場很大&#xff0c;幾乎所有的想要語音控制的產品都可以通過增加一顆離線語音芯片來實現語音控制的能力&#xff0c;今天主要提到的就是離線語音芯片品牌廠家之一的唯創知音。唯創知音發展歷…

Linux 軟件包管理

Linux 軟件包管理 分析 RPM 包 Linux 發行版本以 RHEL 為代表的發行版本&#xff0c;使用rpm包管理系統&#xff1a; RHEL (Red Hat Enterprise Linux&#xff09;Fedora&#xff08;由原來的RedHat桌面版本發展而來&#xff0c;免費版本&#xff09;CentOS&#xff08;RHEL的…

使用 Vue 3.0 Composition API 優化流程設計器界面

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

2025Nacos安裝Mac版本 少走彎路版本

https://github.com/alibaba/nacos 一開始看網上文章&#xff0c;隨便下了一個最新的3.0.2&#xff0c;然后出現很多錯誤 密鑰等等問題&#xff0c;最后啟動了&#xff0c;但是打不開鏈接&#xff1a;http://localhost:8848/nacos 然后開始找問題日志&#xff0c;/.nofollow/…

sifu mod制作 相關經驗

sifu mod制作一遍流程數據傳遞后拆開是ok的&#xff0c;沒必要合并 斷片不能使用原材質不然導入ue里沒法片段選擇 效果拔群 帶自動權重就會有跟隨骨骼的效果&#xff0c;空頂點組會跟隨父級的原點 這個選負的會抵消膠囊的碰撞效果 應用并刷新布料模擬&#xff08;相當于工程圖的…

論文精讀筆記:Overview

本文檔記錄了一些經典論文的講解筆記。 重讀經典&#xff1a;《ImageNet Classification with Deep Convolutional Neural Networks》 重讀經典&#xff1a;《Generative Adversarial Nets》 重讀經典&#xff1a;《Deep Residual Learning for Image Recognition》 重讀經典…

Elasticsearch+Logstash+Filebeat+Kibana單機部署

目錄 一、配置準備 下載java&#xff0c;需要java環境 二、單機模式 ELK部署 修改域名解析 elasticsearch配置 啟動elasticsearch服務 查看是否啟用 查看監聽端口 logstash服務 創建配置文件 kibana 啟動服務kebana 驗證 網頁訪問 ?編輯 生成圖表 回到網頁 一、配置準…

redis快速部署、集成、調優

redis快速部署、集成、調優 1.部署 1.1 docker部署 參考&#xff1a;https://blog.csdn.net/taotao_guiwang/article/details/135508643 1.2 redis部署 資源見&#xff0c;百度網盤&#xff1a;https://pan.baidu.com/s/1qlabJ7m8BDm77GbDuHmbNQ?pwd41ac 執行redis_insta…

大學生HTML期末大作業——HTML+CSS+JavaScript音樂網站

HTMLCSSJS【音樂網站】網頁設計期末課程大作業 web前端開發技術 web課程設計 網頁規劃與設計&#x1f4a5; 文章目錄一、&#x1f3c1; 網站題目二、&#x1f6a9; 網站描述三、&#x1f38c; 網站介紹四、&#x1f3f4; 網站效果五、&#x1f3f3;? 網站代碼六、&#x1f3f3…

ARP協議是什么?ARP欺騙是如何實現的?我們該如何預防ARP欺騙?

ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析協議&#xff09;是一個工作在數據鏈路層&#xff08;OSI第二層&#xff09;和網絡層&#xff08;OSI第三層&#xff09;之間的基礎網絡協議&#xff0c;它的核心功能是將網絡層地址&#xff08;IP地址&#xf…

一個物理引擎仿真器(mujoco這種)的計算流程

物理仿真的核心循環 一個典型的物理仿真引擎&#xff0c;在每一個時間步&#xff08;dt&#xff09;內&#xff0c;大致會執行以下流程&#xff1a; 確定當前狀態 (State)&#xff1a;獲取所有物體當前的位置 q 和速度 v。計算力 (Forces)&#xff1a;根據當前狀態&#xff0c;…

自然語言處理NLP(3)

上文&#xff1a; 自然語言處理NLP&#xff08;1&#xff09; 自然語言處理NLP&#xff08;2&#xff09; Gated RNN & LSTM 簡單RNN存在的問題 隨著時間的回溯&#xff0c;簡單RNN不能避免梯度消失或者梯度爆炸 梯度裁剪 用來解決梯度爆炸問題 code: g&#xff1a;所有參…

內循環全部滿足條件后,為true

### 實現方式在 C 中&#xff0c;可以通過在內循環外部定義一個布爾變量&#xff0c;并在內循環的每次迭代中檢查特定條件是否滿足。如果所有迭代均滿足條件&#xff0c;則在內循環結束后將布爾變量設置為 true。以下是一個示例代碼&#xff1a;cpp #include <iostream>i…