偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文解析如何基于 LangChain 構建 LLM 應用程序

人工智能
LangChain 作為一個圍繞 LLM 構建的框架,為自然語言處理方面開辟了一個充滿可能性的新世界,可以創(chuàng)建各種應用程序,并能夠有效解決文本生成、情感分析以及語言翻譯等難題,極大地釋放了 LLM 的潛力。

Hello folks,我是 Luga,今天我們繼續(xù)來聊一下人工智能(AI)生態(tài)領域相關的技術 - LangChain ,本文將繼續(xù)聚焦在針對 LangChain 的技術進行剖析,使得大家能夠了解 LangChain 實現(xiàn)機制以便更好地對利用其進行應用及市場開發(fā)。

在日新月異的人工智能領域,語言模型已經成為舞臺主角,重新定義了人機交互的方式。ChatGPT 的廣泛認可以及 Google 等科技巨頭紛紛推出類似產品,使語言模型,尤其是 LLM,成為科技界矚目焦點。

從某種意義上來講,LLM 代表了人工智能理解、解釋和生成人類語言能力的重大飛躍,經過海量文本數(shù)據(jù)的訓練,能夠掌握復雜的語言模式和語義細微差別。憑借前所未有的語言處理能力,LLM 可以幫助用戶以卓越的準確性和效率生成高質量內容。

而 LangChain 作為一個圍繞 LLM 構建的框架,為自然語言處理方面開辟了一個充滿可能性的新世界,可以創(chuàng)建各種應用程序,并能夠有效解決文本生成、情感分析以及語言翻譯等難題,極大地釋放了 LLM 的潛力。

一、什么是 LangChain ?

作為一款開源的 Python 框架,LangChain 旨在促進基于 LLM 的應用程序開發(fā)。基于所提供了一套工具、組件和接口等套件,LangChain 簡化了以 LLM 為核心的應用程序的構建過程。通過 LangChain,開發(fā)人員能夠輕松管理與語言模型的交互,無縫連接不同的組件,并集成 API 和數(shù)據(jù)庫等資源。

此外,借助 LangChain 技術,我們能夠構建出一系列應用程序,這些應用程序能夠生成創(chuàng)新性且與上下文相關的內容。無論是撰寫博客文章、產品描述,與聊天機器人對話,還是生成問答(GQA)和摘要等,利用 LLM 的應用程序開發(fā)變得更加簡便高效。

圖:LangChain Github Star 歷史(由 star-history.com 生成)

從另一角度而言,這種基于 LangChain 的技術應用使得開發(fā)人員可以利用 LangChain 提供的強大語言模型能力,快速開發(fā)出符合用戶需求的應用,從而提升用戶體驗并節(jié)約開發(fā)時間和成本。

二、LLM 的局限性與 LangChain 的解決方案

在實際的場景中,LLM 擅長在常規(guī)上下文下對提示做出響應,但在未接受過訓練的特定領域卻會遇到挑戰(zhàn)。Prompts 則是人們用來引導 LLM 生成回復的查詢。為了讓 LLM 在特定領域發(fā)揮更佳效果,機器學習工程師需要將其與組織內部數(shù)據(jù)來源整合,并應用提示工程技術。

LangChain 的出現(xiàn)簡化了開發(fā)數(shù)據(jù)響應式應用程序的中間步驟,并提高了 Prompt Engineering 的效率。同時,提供了一套易用、直觀的工具和界面,使開發(fā)人員能夠輕松地將 LLM 與數(shù)據(jù)源和提示工程技術進行整合。

作為一項重要技術,那么,LangChain 具備哪些核心的優(yōu)勢呢?

1.重新發(fā)揮語言模型的作用

借助 LangChain,組織可以將 LLM 的能力重新用于特定領域的應用程序,而無需重新培訓或微調。開發(fā)團隊可以構建引用專有信息的復雜應用程序,從而增強模型的響應能力。舉例來說,我們可以利用 LangChain 構建應用程序,從存儲的內部文檔中檢索數(shù)據(jù),并將其整合為對話響應。我們還可以創(chuàng)建 RAG (檢索增強生成) 工作流程,在提示期間向語言模型引入新信息。通過實施 RAG 和其他上下文感知工作流程,可以減少模型產生的幻覺,提高響應的準確性。

2.簡化人工智能開發(fā)

LangChain 通過簡化數(shù)據(jù)源集成的復雜性并快速提煉,簡化了 AI 開發(fā)過程。開發(fā)人員可以自定義序列,快速構建復雜的應用程序。軟件團隊可以修改 LangChain 提供的模板和庫,以減少開發(fā)時間,而不必從頭編寫業(yè)務邏輯。

3.開發(fā)者支持

LangChain 為 AI 開發(fā)者提供了連接語言模型和外部數(shù)據(jù)源的工具。畢竟,它是開源的,并得到活躍社區(qū)的支持。組織可以免費使用 LangChain,并獲得其他熟悉該框架的開發(fā)人員的支持。

三、LangChain 的核心組件解析

LangChain 的獨特之處之一便是其靈活性和模塊化。通過將自然語言處理管道分解為單獨的組件,開發(fā)人員可以輕松混合和匹配這些構建塊,以創(chuàng)建滿足其特定需求的自定義工作流程,從而使得 LangChain 成為一個高度適應性的框架,可用于為廣泛的用例和行業(yè)構建對話式人工智能應用程序。

LangChain 是提供了一組模塊,能夠構建完整的 LLM(Language Model)應用程序管道,并與各種數(shù)據(jù)加載器、向量存儲和 LLM 提供程序等進行廣泛的集成。LangChain的主要核心組件可參考如下圖所示:

LangChain 關鍵組件

1.Model I/O

LangChain 的核心是強大的語言模型(LLM),使應用程序能夠理解和生成類似人類的文本。通過 LangChain,開發(fā)人員能夠出色地完成各種與語言相關的任務。無論是理解用戶查詢、生成響應,還是執(zhí)行復雜的語言任務,LangChain 的模型都是語言處理能力的支柱。

Models 模塊負責管理與語言模型的交互。LangChain 支持一系列 LLM,包括 GPT-3、OpenAI 等。開發(fā)者可以使用 Models 模塊來管理 LLM 的配置,例如設置溫度、top-p 等參數(shù)。模型模塊對于提高 LLM 的能力并使開發(fā)人員能夠構建可生成創(chuàng)意和上下文相關內容的應用程序至關重要。

from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")

# The LLM takes a prompt as an input and outputs a completion
prompt = "When can I achieve financial freedom?"
completion = llm(prompt)

2.Chains

Chains 模塊在應用程序中負責鏈接不同的組件,開發(fā)人員可以利用 Chains 模塊創(chuàng)建鏈式結構,將提示、模型和其他應用程序組件有機地連接在一起。這種鏈式結構對于構建需要多個組件協(xié)同工作的復雜應用程序至關重要。

通過 Chains 模塊,開發(fā)人員可以靈活組合和配置不同的組件,形成一個完整的應用程序管道,實現(xiàn)高度定制化的功能和邏輯。

chain = LLMChain(llm = llm, 
                  prompt = prompt)

chain.run("ai")

3.Agents

Agents 模塊在應用程序中承擔了管理應用程序與外界之間交互的重要角色。通過使用 Agents 模塊,開發(fā)人員可以構建各種類型的應用程序,如個人助理、智能聊天機器人等。這些應用程序可以基于語音或文本輸入進行交互,并通過分析和理解輸入數(shù)據(jù)來提供相應的響應和服務。

Agents 模塊為開發(fā)人員提供了一個靈活、可擴展的工具,使他們能夠輕松構建具有交互功能的應用程序,為用戶提供個性化、智能化的體驗。

class Agent:

    def __init__(self, config):
        self.config = config
        self.chain = Chain(config)
        self.proxy = Proxy(config)
        self.memory = Memory(config)
        self.callback = Callback(config)

    def parse_input(self, input):
        # 解析用戶的輸入和上下文信息
        ...

4.Memory

LangChain 的 Memory 模塊承擔了數(shù)據(jù)存儲的管理任務。通過使用 Memory 模塊,開發(fā)人員可以輕松地存儲和檢索各種類型的數(shù)據(jù),如文本、圖像、音頻等。

Memory 模塊提供了高度可擴展的存儲機制,可以適應不同規(guī)模和類型的數(shù)據(jù)存儲需求。開發(fā)人員可以根據(jù)應用程序的需要,靈活地組織和管理存儲的數(shù)據(jù),以滿足應用程序的要求。

conversation = ConversationChain(llm=llm, verbose=True)
conversation.predict(input="I am the last one.")
conversation.predict(input="he is first.")
conversation.predict(input="She is third from the bottom")

5.Retrieval

以 Indexes 組件為例,Indexs 模塊在應用程序中承擔了數(shù)據(jù)索引的管理任務。開發(fā)人員可以利用 Indexs 模塊創(chuàng)建用于搜索和檢索數(shù)據(jù)的索引結構。Indexs 模塊對于構建需要進行數(shù)據(jù)搜索和檢索的應用程序至關重要。

使用 Indexs 模塊,開發(fā)人員可以根據(jù)應用程序的需求創(chuàng)建不同類型的索引,如文本索引、關鍵詞索引等。這些索引結構可以針對特定的數(shù)據(jù)屬性或特征進行優(yōu)化,以實現(xiàn)更快速和精確的數(shù)據(jù)搜索和檢索。開發(fā)人員可以根據(jù)數(shù)據(jù)的特點和應用程序的需求,靈活地配置和管理索引結構。

retriever = db.as_retriever()

qa = RetrievalQA.from_chain_type(
    llm=llm, 
    chain_type="stuff", 
    retriever=retriever, 
    return_source_documents=True)

query = "Forgive me for my unruly, indulgent love of freedom in this life?"
result = qa({"query": query})

print(result['result'])

6.Calbacks

LangChain 提供了一個回調系統(tǒng),使的我們能夠連接到 LLM 請求的不同階段。這個回調系統(tǒng)對于日志記錄、監(jiān)控、流傳輸和其他任務非常有用。

通過使用這些回調函數(shù),我們可以靈活地控制和管理 LLM 請求的各個階段。同時,還可以根據(jù)應用程序的需求,自定義回調函數(shù)的行為,以實現(xiàn)特定的功能和邏輯。

class BaseCallbackHandler:
    """Base callback handler that can be used to handle callbacks from langchain."""

    def on_llm_start(
        self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any
    ) -> Any:
        """Run when LLM starts running."""

    def on_chat_model_start(
        self, serialized: Dict[str, Any], messages: List[List[BaseMessage]], **kwargs: Any
    ) -> Any:
        """Run when Chat Model starts running."""

    def on_llm_new_token(self, token: str, **kwargs: Any) -> Any:
        """Run on new LLM token. Only available when streaming is enabled."""

通過對上述關鍵組件的解析,我們可以大致了解 LangChain 的工作原理和流程,即將 Agents、Memory、Indexs 和回調系統(tǒng)等關鍵組件結合起來,實現(xiàn)應用程序與外界的交互、數(shù)據(jù)的存儲和索引,以及自定義操作的執(zhí)行。

這種組合使得 LangChain 能夠構建出強大、靈活的應用程序,為用戶提供個性化、智能化的體驗。具體可參考如下工作流:

LLM LangChain 工作流程

四、使用 LangChain 進行 LLM 應用程序構建

在開始之前,我們需要確保正確安裝 LangChain 的軟件包,并按照指南進行設置和配置。這包括安裝所需的編程語言環(huán)境(如Python)、安裝 LangChain 的相關庫和依賴項,并進行必要的配置和設置,以確保 LangChain 可以正常運行。

一旦安裝和設置完成,我們可以開始導入和使用 LLM。為了有效使用 LLM,我們需要導入適當?shù)膸旌鸵蕾図?,以便在應用程序中能夠調用和使用 LLM 的功能。

1.設置 LangChain

這里,主要為 LangChain 環(huán)境設置相關的依賴庫,具體可參考如下:

import langchain
import openai
import os
import IPython
from langchain.llms import OpenAI
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import LLMChain
from langchain.chains import RetrievalQA
from langchain import ConversationChain

load_dotenv()
# API configuration
openai.api_key = os.getenv("OPENAI_API_KEY")

2.初始化 LLM

要在 LangChain 中初始化 LLM,首先需要導入必要的庫和依賴項。如果大家使用 Python 編程語言,我們可以導入名為 "langchain" 的庫,并指定要使用的語言模型。

以下是一個示例代碼片段,展示了如何導入 "langchain" 庫和初始化 LLM,具體可參考:

# 導入必要的庫和依賴項
import langchain

# 指定要使用的語言模型
language_model = "gpt3.5-turbo"  # 這里使用 GPT-3.5 Turbo 模型作為示例

# 初始化 LLM
llm = langchain.LLM(language_model)

# 接下來,可以使用 llm 對象來調用和使用 LLM 的各種功能和方法
# 例如,可以使用 llm.generate() 方法生成文本,或使用 llm.complete() 方法進行自動補全等

# 示例:使用 LLM 生成文本
prompt = "Hello, LangChain!"
response = llm.generate(prompt)
print(response)

3.輸入 Prompts

初始化 LLM 后,我們可以通過輸入提示來生成文本或獲取響應。Prompts 是語言模型生成文本的起點。根據(jù)需求,我們可以提供單個或多個 Prompts。以下是一個簡單的示例:

# 初始化 LLM
llm = langchain.LLM(language_model)

# 提供單個提示
prompt = "Once upon a time"
response = llm.generate(prompt)
print(response)

# 提供多個提示
prompts = [
    "The sun is shining",
    "In a galaxy far, far away",
    "Once upon a time"
]
responses = llm.generate(prompts)
for response in responses:
    print(response)

4.檢索生成的文本或響應

輸入 Prompts 后,我們可以從 LLM 中檢索生成的文本或響應。生成的文本或響應將基于所提供的 Prompts,以及語言模型所具備的上下文理解和語言生成的功能。

當我們提供一個或多個 Prompts 時,LLM 會使用這些 Prompts 作為起點,并借助語言模型的能力來生成相關的文本。語言模型會考慮 Prompts 中的上下文信息,以及其在訓練數(shù)據(jù)中學習到的語言規(guī)律和概率分布。這樣,生成的文本將會在一定程度上與 Prompts 相關,并且具備一定的語法合理性和連貫性。

# Print the generated text
print(generated_text)

# Print the responses
for response in responses:
    print(response)

總而言之,通過遵循上述步驟并實現(xiàn)相應的代碼,我們可以無縫地使用 LangChain 和預訓練的 LLM,充分利用它們在文本生成和理解任務上的能力。這為我們解決各種自然語言處理問題提供了一種高效且靈活的方法。無論是開發(fā)智能對話系統(tǒng)、構建文本生成應用,還是進行文本理解和分析,LangChain 和預訓練的 LLM 都將成為有力的工具和技術基礎。

綜上所述,在構建支持 LLM 的應用程序方面,LangChain 為我們開辟了一個充滿無限可能性的世界。如果大家對文本完成、語言翻譯、情感分析、文本摘要或命名實體識別等領域感興趣,LangChain 提供了直觀易用的平臺和強大的 API,讓我們的想法轉化為現(xiàn)實。

借助 LangChain 和 LLM 的強大能力,我們可以創(chuàng)建出具備理解和生成類人文本能力的智能應用程序,從而徹底改變我們與語言交互的方式。

Reference :

  • [1] https://python.langchain.com/
  • [2] https://machinehack.com/story/langchain-to-build-llm-powered-applications
責任編輯:趙寧寧 來源: 架構驛站
相關推薦

2011-09-01 10:01:35

PhoneGap應用程序GoodDay

2024-06-04 12:59:41

2023-08-03 09:00:00

布加迪Vision ProAR

2023-12-12 13:49:35

LLMAIChatGPT

2024-09-06 10:46:04

2017-12-10 14:13:14

云服務云原生應用程序

2017-03-02 11:10:39

AndroidMVVM應用程序

2025-05-06 08:09:02

2024-11-08 09:53:01

2024-06-24 10:53:23

2023-08-22 20:55:04

AzureLLMTypeChat

2023-09-21 08:00:00

ChatGPT編程工具

2023-09-05 23:29:49

前端Vue

2024-05-20 02:00:00

LangChain人工智能

2024-04-24 10:44:53

語言模型自然語言處理人工智能

2024-05-27 00:45:00

2013-11-19 15:35:01

2024-01-15 05:55:33

2024-07-02 09:00:00

2025-06-12 02:30:00

人工智能LLM大語言模型
點贊
收藏

51CTO技術棧公眾號