自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

極簡(jiǎn)LangChain智能體開(kāi)發(fā)入門指南 原創(chuàng)

發(fā)布于 2025-3-13 12:43
瀏覽
0收藏

引言:LangChain 的背景與意義

在人工智能快速發(fā)展的時(shí)代,大型語(yǔ)言模型(LLM)如 OpenAI 的 GPT 系列,已成為生成自然語(yǔ)言文本的核心技術(shù)。然而,將這些模型應(yīng)用于實(shí)際應(yīng)用(如聊天機(jī)器人或虛擬助手)時(shí),開(kāi)發(fā)者常常面臨提示管理、外部數(shù)據(jù)集成和上下文保持的挑戰(zhàn)。LangChain 作為一個(gè)開(kāi)源框架,旨在簡(jiǎn)化這些復(fù)雜性,提供模塊化工具,幫助開(kāi)發(fā)者高效構(gòu)建 LLM 驅(qū)動(dòng)的應(yīng)用。

LangChain 于 2022 年 10 月由 Harrison Chase 在 Robust Intelligence 啟動(dòng),迅速獲得社區(qū)支持,GitHub 上有數(shù)百位貢獻(xiàn)者,活躍的 Discord 服務(wù)器和 YouTube 教程也為其普及提供了助力 (LangChain - Wikipedia)。截至 2025 年 2 月,它仍是 LLM 應(yīng)用開(kāi)發(fā)的熱門選擇,支持 Python 和 JavaScript,擁有超過(guò) 100 萬(wàn)開(kāi)發(fā)者使用 (LangChain Official Website)。

本文將深入探討 LangChain 的核心模塊及其作用,并通過(guò)一個(gè)詳細(xì)的天氣查詢智能體示例,展示如何將這些模塊應(yīng)用于實(shí)際開(kāi)發(fā),特別適合初學(xué)者快速上手。

LangChain 的模塊詳解

LangChain 的功能通過(guò)多個(gè)模塊實(shí)現(xiàn),每個(gè)模塊負(fù)責(zé)特定任務(wù)。以下是關(guān)鍵模塊的詳細(xì)說(shuō)明,基于 GitHub 倉(cāng)庫(kù) (LangChain GitHub Repository) 和官方文檔 (LangChain Python Documentation) 的信息。

關(guān)鍵模塊
  1. LLMs(大型語(yǔ)言模型)
  • 作用:提供與不同 LLM 的統(tǒng)一接口,支持 OpenAI、Hugging Face 等多種模型。
  • 細(xì)節(jié):通過(guò)標(biāo)準(zhǔn)化 API,開(kāi)發(fā)者可以輕松切換模型,減少代碼改動(dòng)。例如,使用 OpenAI 的 GPT-3.5 或 Hugging Face 的模型只需調(diào)整參數(shù) (LangChain Python Documentation)。
  • 重要性:為實(shí)驗(yàn)和部署提供靈活性,適合初學(xué)者快速測(cè)試不同模型效果。
  1. Chains(鏈)
  • 作用:構(gòu)建 LLM 或工具的序列調(diào)用,組合成復(fù)雜工作流。
  • 細(xì)節(jié):包括 SimpleSequentialChain(簡(jiǎn)單順序鏈)、LLMChain(單一 LLM 調(diào)用鏈)等。開(kāi)發(fā)者可嵌套鏈,處理如文檔摘要后回答問(wèn)題等任務(wù) (LangChain Python Documentation)。
  • 重要性:模塊化設(shè)計(jì)讓任務(wù)分解更清晰,適合構(gòu)建多步驟應(yīng)用。
  1. Agents(智能體)
  • 作用:動(dòng)態(tài)決策并使用工具,適合需要適應(yīng)性任務(wù),如網(wǎng)頁(yè)搜索或 API 調(diào)用。
  • 細(xì)節(jié):智能體根據(jù) LLM 輸出選擇工具,如使用搜索工具查詢實(shí)時(shí)數(shù)據(jù)。ZeroShotAgent 是常見(jiàn)類型,無(wú)需預(yù)訓(xùn)練示例 (LangChain Python Documentation)。
  • 重要性:增強(qiáng)應(yīng)用靈活性,特別適合交互式任務(wù)。
  1. Memory(記憶)
  • 作用:存儲(chǔ)和檢索信息,保持對(duì)話或任務(wù)上下文。
  • 細(xì)節(jié):提供多種記憶類型,如 ConversationBufferMemory(存儲(chǔ)所有消息)、ConversationSummaryMemory(存儲(chǔ)摘要)。例如,聊天機(jī)器人可記住用戶偏好 (LangChain Python Documentation)。
  • 重要性:確保連續(xù)性,適合需要上下文的場(chǎng)景。
  1. Retrievers(檢索器)
  • 作用:從外部來(lái)源獲取相關(guān)數(shù)據(jù),支持知識(shí)增強(qiáng)生成(RAG)。
  • 細(xì)節(jié):可配置為關(guān)鍵詞搜索或語(yǔ)義搜索,使用嵌入模型和向量存儲(chǔ)。適合從文檔庫(kù)中提取信息 (LangChain Python Documentation)。
  • 重要性:提升回答準(zhǔn)確性,特別在需要實(shí)時(shí)數(shù)據(jù)時(shí)。
  1. Embeddings 和 Vector Stores(嵌入與向量存儲(chǔ))
  • 作用:將文本轉(zhuǎn)為向量,支持語(yǔ)義搜索;向量存儲(chǔ)管理這些向量。
  • 細(xì)節(jié):嵌入模塊支持多種模型,如 OpenAI 的嵌入 API;向量存儲(chǔ)如 FAISS 或 Pinecone,用于高效相似性搜索 (LangChain Python Documentation 和 LangChain Python Documentation)。
  • 重要性:基礎(chǔ) RAG 功能,適合處理大規(guī)模文本數(shù)據(jù)。
  1. Tools(工具)
  • 作用:為智能體提供外部功能,如 API 調(diào)用、搜索或計(jì)算。
  • 細(xì)節(jié):工具定義為函數(shù),智能體可根據(jù)需要調(diào)用。例如,天氣查詢工具可調(diào)用 OpenWeatherMap API (LangChain Python Documentation)。
  • 重要性:擴(kuò)展智能體能力,適合交互式任務(wù)。
附加模塊

除了上述關(guān)鍵模塊,LangChain 還有以下輔助模塊,適合高級(jí)開(kāi)發(fā)或特定需求:

  • Callbacks:用于鏈或智能體執(zhí)行時(shí)的日志和監(jiān)控,適合調(diào)試 (LangChain Python Documentation)。
  • Output Parsers:解析 LLM 輸出為結(jié)構(gòu)化格式,增強(qiáng)數(shù)據(jù)處理 (LangChain Python Documentation)。
  • Pydantic Integration:使用 Pydantic 驗(yàn)證和序列化數(shù)據(jù),確保輸入輸出格式正確 (LangChain GitHub Repository)。
  • Chat:處理聊天交互,管理對(duì)話歷史,適合聊天機(jī)器人 (LangChain Python Documentation)。
  • Utilities:通用輔助函數(shù),如文本處理,簡(jiǎn)化開(kāi)發(fā) (LangChain GitHub Repository)。
  • Index:管理文檔索引,優(yōu)化向量存儲(chǔ)同步,適合 RAG 應(yīng)用 (Indexes — ???? LangChain 0.0.107)。
  • Experimental:測(cè)試新功能,未穩(wěn)定,適合探索 (LangChain GitHub Repository)。
  • Schema:定義數(shù)據(jù)結(jié)構(gòu),輔助模塊間通信 (LangChain GitHub Repository)。

詳細(xì)示例:構(gòu)建天氣查詢智能體

為了展示 LangChain 的實(shí)際應(yīng)用,我們將構(gòu)建一個(gè)天氣查詢智能體,能回答天氣問(wèn)題并記住對(duì)話歷史。以下是逐步實(shí)現(xiàn)過(guò)程,基于 2025 年 2 月的最新文檔。

環(huán)境設(shè)置

首先,安裝 LangChain 和相關(guān)依賴,并設(shè)置 API 密鑰:

pip install langchain openai

設(shè)置環(huán)境變量:

import os
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
os.environ["OPENWEATHERMAP_API_KEY"] = "your_openweathermap_api_key"
定義天氣工具

使用 OpenWeatherMap API 創(chuàng)建工具:

from langchain.agents import Tool
from langchain.utilities import OpenWeatherMapWrapper

weather_api = OpenWeatherMapWrapper()
weather_tool = Tool(
    name="Weather API",
    func=weather_api.get_current_weather,
    description="Useful for when you need to get the current weather for a specific city",
)
設(shè)置 LLM 和記憶

使用 OpenAI 的 GPT-3.5-turbo 模型,并添加對(duì)話記憶:

from langchain.chatmodels import ChatOpenAI
from langchain.memory import ConversationBufferMemory

llm = ChatOpenAI(model_name="gpt-3.5-turbo")
memory = ConversationBufferMemory()
定義智能體

使用 ZeroShotAgent 創(chuàng)建智能體,包含記憶功能:

from langchain.agents import ZeroShotAgent, AgentExecutor

agent_prompt = ZeroShotAgent.create_prompt(
    tools=[weather_tool],
    prefix="You are an assistant that helps with weather information. You can remember previous queries and their responses to provide context for current questions.",
    suffix="Assistant",
    input_variables=["input", "agent_scratchpad", "chat_history"],
)

agent = ZeroShotAgent(llm=llm, prompt=agent_prompt, tools=[weather_tool], memory=memory)
agent_chain = AgentExecutor.from_agent_and_tools(
    agent=agent, tools=[weather_tool], memory=memory, verbose=True
)
交互測(cè)試

運(yùn)行智能體,測(cè)試對(duì)話記憶:

response = agent_chain.run("What's the weather like in New York?")
print(response)  # 例如:New York has a temperature of 20°C and it's currently raining.

response = agent_chain.run("What's the weather like in Los Angeles?")
print(response)  # 例如:Los Angeles has a temperature of 25°C and it's sunny.

response = agent_chain.run("Is it colder in New York or Los Angeles?")
print(response)  # 例如:New York is colder, with a temperature of 20°C compared to Los Angeles at 25°C.
示例分析
  • 工具使用:天氣工具調(diào)用 OpenWeatherMap API,獲取實(shí)時(shí)數(shù)據(jù) (OpenWeatherMap API)。
  • 記憶功能:ConversationBufferMemory 存儲(chǔ)對(duì)話歷史,智能體可參考前文回答比較問(wèn)題。
  • 智能體決策:ZeroShotAgent 根據(jù)工具描述和用戶輸入動(dòng)態(tài)選擇工具,適合初學(xué)者快速構(gòu)建交互式應(yīng)用。

結(jié)論與展望

LangChain 的模塊化設(shè)計(jì)極大降低了 LLM 應(yīng)用開(kāi)發(fā)的門檻。通過(guò)理解 LLMs、Chains、Agents 等核心模塊,開(kāi)發(fā)者可構(gòu)建如天氣查詢機(jī)器人等智能體,并利用記憶功能保持上下文。令人驚訝的是,即使初學(xué)者也能通過(guò)簡(jiǎn)單代碼實(shí)現(xiàn)復(fù)雜功能,如對(duì)話記憶和工具調(diào)用。

LangChain 的文檔和社區(qū)支持(如 GitHub 貢獻(xiàn)和 Discord 討論)為進(jìn)一步學(xué)習(xí)提供了豐富資源 (LangChain GitHub Repository, LangChain - Wikipedia)。未來(lái),開(kāi)發(fā)者可探索更多模塊如 Index(文檔索引)或 Experimental(實(shí)驗(yàn)功能),優(yōu)化應(yīng)用性能。

關(guān)鍵引用

  • LangChain 官方網(wǎng)站
  • LangChain GitHub 倉(cāng)庫(kù)
  • LangChain Python 文檔
  • LangChain Indexes 文檔
  • OpenWeatherMap API
  • LangChain Wikipedia 頁(yè)面


本文轉(zhuǎn)載自公眾號(hào)九歌AI大模型  作者:九歌AI

原文鏈接:??https://mp.weixin.qq.com/s/9BPHEH1rP-ONGvyV1iPx_A??


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦