LangChain核心解析:掌握AI開發的“鏈“式思維

0. 思維導圖

在這里插入圖片描述

1. 引言 ??

在人工智能快速發展的今天,如何有效地利用大語言模型(LLM)構建強大的應用成為眾多開發者關注的焦點。前面的課程中,我們學習了正則表達式以及向量數據庫的相關知識,了解了如何處理文檔并將其附加給大模型。本章我們將深入探討LangChain中的核心概念——“Chain”(鏈)。

LangChain作為一個強大的框架,讓我們能夠將LLM與其他計算資源或知識源結合起來,創建更加智能的應用。而Chain則是這個框架的重要組成部分,它就像是將各種功能模塊串聯起來的紐帶,使得復雜的AI工作流成為可能。

2. 什么是Chain(鏈)??

2.1 鏈的基本概念

在LangChain中,Chain(鏈)是一個核心概念,它代表一系列組件的連接,這些組件按照特定的順序執行,以完成復雜的任務。簡單來說,Chain就是將多個步驟組合成一個可調用的單元,讓信息能夠從一個組件流向另一個組件。

鏈的基本工作流程是:接收輸入 → 處理數據 → 產生輸出。而這個處理過程可能涉及到與LLM的交互、文檔的檢索、信息的提取等多個步驟。

2.2 鏈的重要性

鏈的設計理念使得我們可以:

  • ?? 模塊化地組合不同功能
  • ?? 封裝復雜的邏輯流程
  • ??? 重用常見的處理模式
  • ?? 靈活地擴展應用功能

正是這種靈活性和模塊化的特性,使得LangChain能夠適應各種各樣的AI應用場景,從簡單的問答系統到復雜的智能助手。

3. 四種基本的內置鏈 ??

LangChain提供了多種內置的鏈類型,其中最基礎的四種分別是LLM鏈、順序鏈、路由鏈和檢索鏈。這些內置鏈為我們提供了處理不同任務的基本工具。

3.1 LLM Chain

LLM Chain(LLM鏈)是最基礎也是最常用的鏈類型,它將提示模板(PromptTemplate)和語言模型(LLM)結合在一起,形成一個簡單但強大的處理單元。

工作原理

  1. 接收用戶輸入
  2. 根據提示模板格式化輸入
  3. 將格式化后的提示發送給LLM
  4. 返回LLM的響應

代碼示例

from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate# 創建提示模板
template = "請告訴我{topic}的三個重要知識點"
prompt = PromptTemplate(input_variables=["topic"], template=template)# 初始化LLM
llm = OpenAI(temperature=0.7)# 創建LLM鏈
chain = LLMChain(llm=llm, prompt=prompt)# 使用鏈
response = chain.run("人工智能")
print(response)

3.2 Sequential Chain(順序鏈)

順序鏈允許我們將多個鏈按照特定順序連接起來,前一個鏈的輸出可以作為后一個鏈的輸入,從而實現更復雜的處理流程。

順序鏈主要有兩種類型:

  1. SimpleSequentialChain:每個鏈只有一個輸入和一個輸出,鏈之間一對一串聯
  2. SequentialChain:支持多輸入多輸出,更加靈活

代碼示例(SimpleSequentialChain)

from langchain.chains import SimpleSequentialChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplatellm = OpenAI(temperature=0.7)# 第一個鏈:生成一個故事概要
first_prompt = PromptTemplate(input_variables=["subject"],template="請為{subject}寫一個簡短的故事概要"
)
chain_one = LLMChain(llm=llm, prompt=first_prompt)# 第二個鏈:基于故事概要寫一個完整故事
second_prompt = PromptTemplate(input_variables=["概要"],template="基于以下概要,寫一個完整的故事:\n\n{概要}"
)
chain_two = LLMChain(llm=llm, prompt=second_prompt)# 創建順序鏈
overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two])# 運行鏈
response = overall_chain.run("一只迷路的貓")
print(response)

代碼示例(SequentialChain)

from langchain.chains import SequentialChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplatellm = OpenAI(temperature=0.7)# 第一個鏈:為電影生成標題
first_prompt = PromptTemplate(input_variables=["genre"],template="為{genre}類型的電影想一個標題"
)
title_chain = LLMChain(llm=llm, prompt=first_prompt, output_key="title")# 第二個鏈:為電影生成簡介
second_prompt = PromptTemplate(input_variables=["title"],template="為電影《{title}》寫一個簡短的簡介"
)
synopsis_chain = LLMChain(llm=llm, prompt=second_prompt, output_key="synopsis")# 創建順序鏈
overall_chain = SequentialChain(chains=[title_chain, synopsis_chain],input_variables=["genre"],output_variables=["title", "synopsis"]
)# 運行鏈
response = overall_chain.run("科幻")
print(f"標題: {response['title']}\n簡介: {response['synopsis']}")

3.3 Router Chain(路由鏈)

路由鏈是一種能夠根據輸入動態決定調用哪個子鏈的高級鏈。它根據輸入的內容或特征,選擇最適合處理該輸入的鏈,類似于一個智能分發器。

Router Chain由三個主要部分組成:

  1. 路由器(決定使用哪個鏈)
  2. 目標鏈(可選擇的鏈集合)
  3. 默認鏈(當無法確定路由時使用)

代碼示例

from langchain.chains.router import MultiPromptChain
from langchain.chains.router.llm_router import LLMRouterChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplatellm = OpenAI(temperature=0.7)# 定義各專業領域的提示模板
physics_template = PromptTemplate(template="你是一位物理學專家。回答以下物理學問題:{question}",input_variables=["question"]

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

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

相關文章

Error:java: 程序包lombok不存在

使用Maven package打包項目發現報錯 一、Maven配置文件修改 1.找到本地 maven的配置文件settings.xml 2.修改配置文件中,指向本地倉庫的地址使用 ‘’ \ \ ‘’ 隔開, 要么使用 正斜線 / 隔開 不要使用 反斜線 \ windows OS 電腦,使用 \ …

WordPress 未授權本地文件包含漏洞(CVE-2025-2294)(附腳本)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 0x0…

基于 C# 開發視覺檢測系統項目全解析

引言 在當今高度自動化的制造業領域,視覺檢測系統的重要性愈發凸顯。它憑借高速、高精度的特性,在產品外觀缺陷檢測、尺寸測量等環節發揮著關鍵作用,顯著提升了生產效率和產品質量。C# 作為一種功能強大且易于學習的編程語言,結合.NET 框架豐富的類庫以及 Windows Forms、…

GISBox:核心功能免費的一站式三維GIS處理平臺

大家好,今天為大家介紹的軟件是GISBox:一款核心功能免費的一站式三維GIS處理平臺,主要是適用于數字孿生。下面,我們將從軟件的主要功能、支持的系統、軟件官網等方面對其進行簡單的介紹。 軟件官網:http://www.gisbox.…

Ubuntu 24 云服務器上部署網站_詳細版_1

從零開始,在 Ubuntu 24 云服務器上部署一個支持登錄和權限的網站,用 Python Django 實現,適合新手跟著操作。 🔧 第一步:更新服務器并安裝基礎環境 請使用 SSH 登錄你的 Ubuntu 24 云服務器(用 MobaXterm…

單片機學習之定時器

定時器是用來定時的機器,是存在于STM32單片機中的一個外設。STM32一般總共有8個定時器,分別是2個高級定時器(TIM1、TIM8),4個通用定時器(TIM2、TIM3、TIM4、TIM5)和2個基本定時器(TI…

AIGC6——AI的哲學困境:主體性、認知邊界與“天人智一“的再思考

引言:當機器開始"思考" 2023年,Google工程師Blake Lemoine聲稱對話AI LaMDA具有"自我意識",引發軒然大波。這一事件將古老的哲學問題重新拋回公眾視野:?**機器能否擁有主體性?**從東方"天人…

從內核到應用層:Linux緩沖機制與語言緩沖區的協同解析

系列文章目錄 文章目錄 系列文章目錄前言一、緩沖區1.1 示例11.2 緩沖區的概念 二、緩沖區刷新方案三、緩沖區的作用及存儲 前言 上篇我們介紹了,文件的重定向操作以及文件描述符的概念,今天我們再來學習一個和文件相關的知識-----------用戶緩沖區。 在…

高通camx IOVA內存不足,導致10-15x持續拍照后,點擊拍照鍵定屏無反應,過一會相機閃退

定屏閃退問題分析思路: 定屏問題如果是相機問題,一般會出現返幀,導致預覽卡死。當然還有其他情況,我們先看返幀情況,發現request和result開始都正常,到12:53:05.443038就沒有返幀了,定屏了。往…

AI知識補全(十五):AI可解釋性與透明度是什么?

名人說:一笑出門去,千里落花風。——辛棄疾《水調歌頭我飲不須勸》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 上一篇:AI知識補全(十四):零樣本…

CentOS 7安裝hyperscan

0x00 前言 HyperScan是一款由Intel開發的高性能正則表達式匹配庫,專為需要快速處理大量數據流的應用場景而設計。它支持多平臺運行,包括Linux、Windows和macOS等操作系統,并針對x86架構進行了優化,以提供卓越的性能表現。HyperSc…

機器學習的一百個概念(9)學習曲線

前言 本文隸屬于專欄《機器學習的一百個概念》,該專欄為筆者原創,引用請注明來源,不足和錯誤之處請在評論區幫忙指出,謝謝! 本專欄目錄結構和參考文獻請見[《機器學習的一百個概念》 ima 知識庫 知識庫廣場搜索&…

macvlan 和 ipvlan 實現原理及設計案例詳解

一、macvlan 實現原理 1. 核心概念 macvlan 允許在單個物理網絡接口上創建多個虛擬網絡接口,每個虛擬接口擁有 獨立的 MAC 地址 和 IP 地址。工作模式: bridge 模式(默認):虛擬接口之間可直接通信,類似交…

linux文件上傳下載lrzsz

lrzsz 是一個在 Linux 系統中用于通過串行端口(如 ZMODEM、XMODEM、YMODEM 等協議)進行文件上傳和下載的工具集。它通常用于在終端環境中通過串口或 SSH 連接傳輸文件。 安裝 lrzsz 在大多數 Linux 發行版中,你可以使用包管理器來安裝 lrzsz。 Debian/Ubuntu: sudo apt-ge…

單片機學習之SPI

物理層 串行全雙工總線 需要四根線:SCLK(時鐘線),CS(片選線)、MOSI(主設備輸出、從設備輸入),MISO(主設備輸入,從設備輸出)。 片選信號 片選信號CS是用來…

大模型應用初學指南

隨著人工智能技術的快速發展,檢索增強生成(RAG)作為一種結合檢索與生成的創新技術,正在重新定義信息檢索的方式,RAG 的核心原理及其在實際應用中的挑戰與解決方案,通用大模型在知識局限性、幻覺問題和數據安…

docker-compose部署prometheus+grafana+node_exporter+alertmanager規則+郵件告警

目錄 一.docker-compose文件 二.配置文件 三.文件層級關系,docker-compose和配置文件位于同級目錄 四.node_exporter頁面json文件 五.效果展示 prometheusalertmanager郵件告警 grafana面板效果 六.涉及離線包 一.docker-compose文件 [rootsulibao prometh…

AI設計再現新引擎,科技創新又添新動能——廣東省首家行業AI設計工程中心獲批成立

近期,大捷智能科技(廣東)有限公司(以下簡稱“大捷智能”)憑借其在人工智能與智能制造領域的突出研發實力與創新科技成果,由廣東省科技廳批準設立“廣東省模具智能設計與智能制造工程技術研究中心”。 廣東省…

【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解決方案

在代碼審計項目中,MongoDB可以用于存儲元數據和部分結構化信息,但要高效處理向量相似性搜索,需結合其他工具。以下是具體分析: 1. MongoDB 的適用場景 元數據存儲: 存儲代碼片段的文件路徑、行號、語言類型等結構化信…

基于ANSYS 概率設計和APDL編程的結構可靠性設計分析

01 可靠度基本理論 結構的極限狀態:整個結構的一部分超過某一特定狀態就不能滿足設計規定的某一功能要求。結構的極限狀態實質上是結構工作狀態的一個閥值,如果工作狀態超過這一閥值,則結構處于不安全、不耐久或不適用的狀態;若工…