如何從 0 到 1 開發企業級 AI 應用:步驟、框架與技巧

本文來自作者 莫爾索 的 企業級 AI 應用開發與最佳實踐指南, 歡迎閱讀原文。

大家好,我之前出版的《LangChain 編程:從入門到實踐》一書獲得了良好的市場反響和讀者認可。近期推出了第二版,我對內容進行了大幅更新:近 60% 的文字內容和全部代碼示例均已重寫。本次修訂的目標,是讓本書不再僅聚焦 LangChain 框架本身,而是從 LangChain 全家桶中各類工具的設計理念出發,深入探討企業級 AI 應用的構建方法與當前 AI 工程化的最佳實踐。

LangChain 不止是一個框架

日常交流下來,發現很多人對 LangChain 的印象還停留在一個「功能臃腫、過度抽象」的 AI 應用開發框架,這是一種常見的誤解。事實上,自 0.3 版本起,LangChain 框架本身已經變得更加輕量和高效。更重要的是,LangChain 不只是一個開發框架,它代表了一整套完整的 AI 應用開發解決方案,涵蓋了從原型設計、Beta 測試到生產部署的全流程,已被 Replit、Lovable 等知名 AI 產品所采用。

企業級 AI 應用的構建過程

LangChain 生態系統包含七個關鍵工具,能夠高效支持 AI 應用的構建。無論是基于規則的工作流(使用 LangChain)、具備復雜狀態管理的 Agentic 工作流(結合 LangChain 與 LangGraph),還是完全自主的 Agent 模式(使用 LangGraph),都能找到相應的工具支持:

  • 使用 LangChain CLI 創建標準化項目結構:pip install langchain-cli
  • 利用 LangChain 核心框架快速進行原型開發:pip install langchain
  • 通過 LangServe 快速啟動應用 API 服務:pip install "langserve[all]"
  • 使用 LangSmith 實現 AI 應用的可觀測性、評估與生產監控:pip install langsmith
  • 通過 LangGraph 實現復雜智能體工作流的編排:pip install langgraph
  • 使用 LangGraph Studio 進行智能體工作流的可視化設計
  • 利用 LangGraph Platform 實現智能體工作流的生產部署

LangChain 早期版本通過“鏈”的概念,將 AI 應用中的基礎模型、提示模板、外部數據和 API 工具等組件模塊化串聯,提供了高度靈活的設計能力。這種架構激發了開發者社區的廣泛集成,使 LangChain 成為功能全面、生態豐富的 AI 開發“瑞士軍刀”。隨著 Agentic 工作流的興起,LangChain 團隊推出了 LangGraph,采用更靈活的狀態圖模型,以應對包含循環、條件判斷和狀態控制等復雜邏輯的智能體任務。

使用 LangChain 構建企業級 AI 應用

LangChain 通過其兩大開源框架 —— LangChain 和 LangGraph,以及兩款商業化工具 —— LangSmith 和 LangGraph Platform,支持企業級 AI 應用的構建。其中,商業化工具已被用于多家知名 AI 產品的生產環境托管,而開源框架則廣泛受到大型企業的采納。以下是一些典型的企業級 AI 應用案例。

使用 LangChain 構建企業級 AI 應用

字節打造通用 Agent

字節跳動開源的 DeerFlow 是一個成熟的通用 Agent 類工具,在 GitHub 上已獲得 15,700 顆 Star。其項目依賴通過 pyproject.toml 配置,核心基于 LangChain 與 LangGraph 構建。

dependencies = ["httpx>=0.28.1","langchain-community>=0.3.19","langchain-experimental>=0.3.4","langchain-openai>=0.3.8","langgraph>=0.3.5","readabilipy>=0.3.0",..."langchain-mcp-adapters>=0.0.9","langchain-deepseek>=0.1.3",
]

下面是 DeerFlow 架構圖,使用 LangGraph 自帶的工具可以直接導出(print(graph.get_graph().draw_mermaid()))。

deer-flow架構圖

谷歌實現 Deep Reasearch

谷歌開源的 gemini-fullstack-langgraph-quickstart 項目在 GitHub 上獲得 15,900 顆 Star🌟,展示了如何構建一個高度完善的深度研究(Deep Research)類產品,核心基于 LangGraph 。

Agent Flow/

阿里云百煉 AI 應用觀測

以下是阿里云大模型服務平臺“百煉”的應用觀測功能截圖。

百煉的應用觀測

對比來看,LangSmith 提供了指標(metric)、追蹤(trace)和日志(log)等核心能力,百煉的應用觀測功能正是對標 LangSmith 的設計,旨在支持生產環境中 AI 應用的全面監控與分析。

LangSmith 的指標、追蹤和日志

扣子羅盤的觀測功能

最近,AI 領域值得關注的一個事件是,在 C 端用戶中廣受好評的扣子平臺宣布開源。其中,廣受好評的 Coze Loop(扣子羅盤)的觀測機制,借鑒了 LangChain 的設計理念。根據官方文檔 的說明,「扣子羅盤基于 LangChain 的 callback 機制,提供一鍵集成能力,可自動完成 Trace 數據的上報」。以下示例展示了如何在 LangChain 的 LCEL 模式中無縫集成扣子羅盤的 Trace 功能,從而實現對 AI 模型調用過程的監控與分析。

import osimport cozeloop
from langchain_core.runnables import RunnableConfig
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParserfrom cozeloop.integration.langchain.trace_callback import LoopTracerdef do_lcel_demo():# 配置CozeLoop環境變量os.environ['COZELOOP_API_TOKEN'] = '{your_token}'os.environ['COZELOOP_WORKSPACE_ID'] = '{your_workspace_id}'# 創建cozeloop clientclient = cozeloop.new_client()# 注冊callbacktrace_callback_handler = LoopTracer.get_callback_handler(client)llm_model = ChatOpenAI()lcel_sequence = llm_model | StrOutputParser()output = lcel_sequence.invoke(input='用你所學的技巧,幫我生成幾個有意思的問題',config=RunnableConfig(callbacks=[trace_callback_handler]))print(output)# 程序退出前,需要調用Close方法,否則可能造成trace數據上報丟失。Close后無法再執行任何操作。client.close()if __name__ == "__main__":do_lcel_demo()

類似的案例還有很多,這里不再一一列舉。關于如何開發可觀測性插件與企業自有 IT 系統集成的實現方法,我已在第一版中進行了詳細介紹,第二版會從設計角度進行更詳細的論述。

動手實現可觀測性插件

LangChian 為什么值得學習

需要再次強調,本書第二版的關注點不局限于 LangChain 框架本身,而是能夠從 LangChain 全家桶中的各類工具設計思想出發,探討企業級 AI 應用的構建過程以及 AI 工程化的最新最佳實踐。盡管市面上存在眾多可替代的框架、工具和產品,LangChain 的優勢在于能夠提供 Agent 應用從設計、開發、評估、部署到監控的完整實踐路徑。通過這一路徑,讀者可以先動手實踐,再結合自身的積累與判斷力,去評估甚至設計更優秀的框架。在此基礎上,讀者將能更清晰地辨別其他框架在設計上的優劣,深入理解其組件背后的設計原則,最終成長為合格的 Agent 應用開發者或 Agent 平臺架構師。

領先的 Agent 架構設計

Claude Code 最新推出的 Subagents(子智能體) 功能,是指預配置的 AI 角色,專為執行特定任務而設計,具備獨立的上下文窗口和定制的系統提示,有助于提高任務處理效率。從設計角度來看,Subagents 與 LangGraph 中的 Subgraphs(子圖) 相似:子圖本質上是嵌套在另一個圖中的圖,作為其中的一個節點使用。

該功能適用于以下場景:

  1. 構建多智能體系統:適用于在復雜系統中引入多個獨立的任務處理單元。
  2. 代碼復用:當多個流程圖中需要重復使用一組具有共同狀態的節點時,可將這些節點封裝為子圖,并在多個父圖中調用。
  3. 團隊協作:在不同團隊需獨立開發流程圖的不同部分時,可將每個部分定義為一個子圖。只要保持子圖接口(即輸入和輸出格式)一致,父圖即可在不了解其實現細節的前提下進行構建。

在多個子智能體之間如何實現平滑協作?LangGraph 提供了一種稱為 交接(Handoff) 的機制。其核心思想是:當某個智能體無法獨立完成任務時,可將對話流轉交給更合適的智能體,而用戶無需重復描述問題。這一概念也體現在 OpenAI Agents SDK 的設計中。

此外,在涉及人機協作(Human-in-the-loop)的場景中,如何在適當時機通知人工介入,以及智能體如何從故障中恢復等問題,LangGraph 也提供了相應的機制設計。

Agent 應用的構建過程應保持透明

HumanLayer 創始人 Dex Horthy 借鑒了「12-Factor App」的理念,提出了「12-Factor Agents」原則(相關視頻)。其核心思想是:將 Agent 視為軟件,將 LLM(大語言模型)視為可調用的純函數,開發者應掌控整個流程。LLM 的作用是生成結構化的 JSON 輸出,由確定性代碼解析并執行,而不是隱藏在抽象的“工具調用”背后。Agent 的核心控制邏輯,包括循環與分支判斷,應由開發者編寫代碼實現;LLM 僅負責決定“下一步該做什么”。流程的執行、中斷與重試等操作,均由開發者編寫的邏輯控制。

LangChain 可能從其早期框架設計中吸取了“過度抽象、封裝過重”的教訓。其后續推出的 LangGraph,成為目前開源 Agent 框架中控制最靈活、自由度最高的一個。我在這篇文章中曾深度分析過包括 OpenAI 的 Agents SDK、Google 的 ADK、Crew AI、Agno 和 AutoGen 等主流框架的設計思路。使用 LangGraph 構建 Agent 時,開發者可以完全掌控流程的執行、中斷與重試。

此外,LangGraph 支持顯式且統一地管理 Agent 的運行狀態與業務狀態(如對話歷史),并將這些狀態存儲在數據庫中。通過簡單的 API,即可實現 Agent 的啟動、暫停與恢復,非常適合處理長周期任務。

第二版主要更新內容

在介紹完 LangChain 生態之后,我們來看看本書第二版的變化。本書的標題《LangChain 編程:從入門到實踐》在第二版中更具現實意義。如果說第一版中的“從入門到實踐”是指“有一個想法,然后用 AI 實現并上線一個演示版本”,那么第二版的“實踐”則意味著“從一個想法出發,構建出一個可支持百萬用戶訪問的工具,并能持續收集反饋、進行測試與迭代的高效 AI 智能體應用”。那么,第二版具體有哪些更新呢?

  1. 移除已廢棄的 Chain 編程接口內容:由于 Chain 接口已被官方棄用,本書第二版不再介紹 LangChain 早期版本中提到的“六大模塊/組件”相關內容,這些內容已過時。
  2. 移除舊版記憶組件示例:如 ConversationBufferMemoryConversationStringBufferMemory 等舊式記憶組件已被淘汰,相關內容已刪除。記憶功能現在統一通過 LangGraph 中自定義的 Memory 模塊進行管理。
  3. 新增對 LangGraph 的詳細講解:本書第二版新增了對 LangGraph 這一 Agent 編排框架的詳細介紹,以及與其他主流 Agent 框架的對比分析。
  4. 全面遷移至 Pydantic 2:所有代碼示例均已更新至 Pydantic 2 標準,并兼容 langchain_core 的最新版本。
  5. 所有案例重構為 LangChain 新模塊結構:隨著 langchain 主包的拆分,本書代碼已根據新的模塊結構進行重構,包括:
    • langchain-core:包含核心抽象(如聊天模型)、可運行性與可觀測性工具;
    • langchain:通用邏輯實現,適用于多種接口實現的通用代碼(如 create_tool_calling_agent);
    • langchain-community:由社區維護的第三方集成;
    • langchain-[partner]:針對特定熱門集成(如 langchain-openailangchain-anthropic)的官方支持包,通常具備更高的穩定性與維護優先級。
  6. 支持 LangChain 0.3 版本:全書代碼示例和講解均基于 LangChain 最新 0.3 穩定版本。
  7. 替換為國產模型支持:書中所有案例使用的模型已從 OpenAI 的 GPT 系列更換為國內主流模型,包括通義千問的文本嵌入模型、DeepSeek-V3 和 DeepSeek-R1。
  8. 新版更多內容介紹請參考圖靈編輯部專題文章:《LangChain 學習必備,從入門到實踐的全新版指南!》

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

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

相關文章

【LLM】Openai之gpt-oss模型和GPT5模型

note gpt-oss模型代理能力:使用模型的原生功能進行函數調用、網頁瀏覽(https://github.com/openai/gpt-oss/tree/main?tabreadme-ov-file#browser)、Python 代碼執行(https://github.com/openai/gpt-oss/tree/main?tabreadme-o…

Ubuntu 20.04 虛擬機安裝完整教程:從 VMware 到 VMware Tools

目錄 一、VMware的安裝 1. 資源獲取 1. 網盤提取 2. VMware官網,選擇自己合適的版本,我下載的是16.2版本 2.安裝步驟 二、Ubuntu的安裝 1. Ubuntu 鏡像文件官網下載 2. Ubuntu的安裝步驟 第一步:打開剛剛安裝好的VMware16.2.0&#…

【DL】最優化理論和深度學習

最優化理論是計算機科學中一個重要的概念,它用于幫助我們找到最優解(即最小或最大值)的算法。在深度學習中,最優化理論用于幫助深度學習模型找到最優解。訓練誤差(Training Error):指模型在訓練…

商品分類拖拽排序設計

商品分類、菜單項以及其他需要排序的元素常常會用到拖拽排序功能。這個看似簡單的交互背后,其實涉及到一系列復雜的后端邏輯處理,尤其是在如何高效地更新數據庫記錄方面。本文將探討兩種常見的實現方案,并分析各自的優缺點,幫助你…

ROS機器人云實踐設計申報書-草稿

ROS機器人云實踐作品申報書 ROS機器人云實踐設計一、項目基本信息 項目名稱:基于ROS的移動機器人云實踐平臺設計與應用 申報單位:[具體單位名稱] 項目負責人:[具體參與人員] 申報日期:[填寫日期] 二、項目背景與目標 項目背景&…

Jira 根據問題類型 為 描述 字段添加默認值

背景: jira 8.16 想要為問題類型為 需求 的問題默認增加描述字段默認值 想都沒想直接根據之前添加缺陷類型時描述默認值的方式去添加(系統字段--描述--上下文和默認值--添加上下文), 結果不隨我愿, 系統默認的這個功能不能根據問題類型切換而切換不同的默認值, 只能設置 1 個…

深度學習(5):激活函數

ss激活函數的作用是在隱藏層引入非線性,使得神經網絡能夠學習和表示復雜的函數關系,使網絡具備非線性能力,增強其表達能力。一、常見激活函數1、sigmoid激活函數的作用是在隱藏層引入非線性,使得神經網絡能夠學習和表示復雜的函數…

洛谷 小 Y 拼木棒 貪心

題目背景上道題中,小 Y 斬了一地的木棒,現在她想要將木棒拼起來。題目描述有 n 根木棒,現在從中選 4 根,想要組成一個正三角形,問有幾種選法?答案對 1097 取模。輸入格式第一行一個整數 n。第二行往下 n 行…

飛算JavaAI的“盾牌”計劃:手撕Spring Security + JWT認證鏈

一、飛算JavaAI:智能時代Java開發的“全能引擎” 1.1 飛算JavaAI:重新定義Java安全開發的“技術革命”在數字化浪潮席卷全球的今天,Java作為企業級應用開發的首選語言,其安全性需求隨著業務復雜度的提升而呈指數級增長——從用戶認…

大語言模型提示工程與應用:大語言模型進階提示工程技術

高級提示詞使用 學習目標 掌握大語言模型中進階提示工程技術的原理與應用,包括零樣本/少樣本提示、思維鏈推理、知識生成等核心方法,提升復雜任務解決能力。 相關知識點 零樣本與少樣本提示思維鏈提示技術高級推理技術 學習內容 1 零樣本與少樣本提…

【從零開始java學習|第五篇】項目、模塊、包、類的概念與聯系

目錄 一、概念與作用:從宏觀到微觀的層級拆分 1. 項目(Project):最外層的 "大容器" 2. 模塊(Module):項目的 "功能子單元" 3. 包(Package)&…

kernel pwn 入門(四) ret2dir詳細

介紹 ret2dir 是哥倫比亞大學網絡安全實驗室在 2014 年提出的一種輔助攻擊手法,主要用來繞過 smep、smap、pxn 等用戶空間與內核空間隔離的防護手段, 原論文見此處: ret2dir原文論文 參考:kernel pwn入門到大神 ret2dir ret2di…

n階常系數齊次線性微分方程的含義

微分方程 (Differential Equation): 含義: 包含未知函數及其導數(或微分)的方程。例子: dy/dx 2x(未知函數是 y(x),導數是 dy/dx), dy/dt 2 dy/dt y 0(未知函數是 y(t)&#xff…

hexo + github 搭建個人博客

hexo github 搭建個人博客環境配置部署環境配置部署 所需環境: 跳過github郵箱注冊。 右鍵點擊桌面空白處,選擇 “Git Bash Here”,輸入以下命令設置用戶名和郵箱: git config --global user.name "GitHub用戶名" g…

ERFA庫全面指南:從基礎概念到實踐應用

ERFA庫全面指南:從基礎概念到實踐應用 ERFA(Essential Routines for Fundamental Astronomy)作為天文學計算領域的重要開源庫,為開發者提供了處理天文時間、坐標系轉換和星體位置計算等核心功能。本文將深入探討ERFA庫的技術細節…

STM32 HAL庫串口的功能實現與改進

目錄 概述 1 CubeMX配置串口參數 1.1 STM32CUB配置參數 1.2 生成代碼 2 核心代碼介紹 2.1 初始化函數 2.2 中斷函數 2.3 重要的用戶函數 2.4 實現用戶接口函數 3 接收數據函數的優化 3.1 HAL庫接收函數的缺陷 3.2 改進接收函數 概述 在STM32開發中使用HAL庫操作串…

DBA | SQL 結構化查詢語言介紹與學習環境準備

[ 知識是人生的燈塔,只有不斷學習,才能照亮前行的道路 ]📢 大家好,我是 WeiyiGeek,一名深耕安全運維開發(SecOpsDev)領域的技術從業者,致力于探索DevOps與安全的融合(Dev…

day39_2025-08-13

知識點回顧: 彩色和灰度圖片測試和訓練的規范寫法:封裝在函數中 展平操作:除第一個維度batchsize外全部展平 dropout操作:訓練階段隨機丟棄神經元,測試階段eval模式關閉dropout 作業:仔細學習下測試和訓練…

使用GTX ip core + SDI IP core實現SDI設計

使用GTX ip core SDI IP core實現SDI設計 1.SDI接口可以調用GTX IP,具體代碼可以參考xapp592,將代碼移植進入工程里,增加SDI IP核,增加引腳約束即可運行起來 2.使用transceiver的gt的ip core,然后協議選擇SDI協議 3.使…

【無標題】centos 配置阿里云的yum源

1、查看系統正在使用的yum源列表yum repolist結果分析:目前這里看出有base ,extras ,updates三個yum源,這三個也是系統默認的yum源,一般還需要一個epel企業級額外的yum源,本文主要就是更改yum源的配置文件&…