LangChain 是什么

LangChain 是什么

LangChain 是一个开源的Python/JS框架,专门用来开发基于大语言模型(LLM)的应用程序。它的核心价值是: 把"调用AI API"这件事,从简单的一问一答,变成可以使用工具、读取数据、多步推理的复杂应用。

简单说,如果没有LangChain,你调用GPT/Claude的API就是发一个prompt、收一个回复。有了LangChain,你可以让AI自动查数据库、调接口、读文件、执行代码,然后综合这些信息给出答案。

核心概念

1. Chain(链)

最基础的概念。把多个步骤串起来,前一步的输出是后一步的输入。

比如一个"BMC故障诊断链":

复制代码
用户描述问题 -> AI提取关键词 -> 搜索故障知识库 -> AI生成诊断方案 -> 格式化输出

每一步都是链中的一个节点,LangChain帮你管理数据在节点间的流转。

2. Tool(工具)

让AI能"动手"。你把一个Python函数注册为Tool,AI就可以在需要时自动调用它。

python 复制代码
from langchain.tools import tool

@tool
def read_bmc_sensor(sensor_name: str) -> str:
    """读取BMC上指定传感器的当前值"""
    # SSH到BMC,执行busctl命令,返回结果
    result = ssh_execute(f"busctl get-property xyz.openbmc_project.Sensor...")
    return result

@tool
def check_service_status(service_name: str) -> str:
    """检查BMC上指定systemd服务的状态"""
    result = ssh_execute(f"systemctl status {service_name}")
    return result

注册这些工具后,当你问AI"风扇传感器怎么读不到值了",AI会自己决定: 先调用check_service_status检查phosphor-pid-control状态,再调用read_bmc_sensor查看传感器数据,然后综合分析。

3. Agent(代理)

Agent = LLM + Tools + 推理循环。

Agent的运行逻辑是一个循环:

复制代码
1. 收到用户问题
2. AI思考: 我需要什么信息?
3. AI选择一个Tool执行
4. 拿到Tool的返回结果
5. AI思考: 信息够了吗?
   - 不够 -> 回到步骤2,选择下一个Tool
   - 够了 -> 生成最终回答

这就是ReAct(Reasoning + Acting)模式,也是目前Agent的主流范式。本质上我现在的工作方式就是这个模式 - 我会思考、调用工具、观察结果、再决定下一步。

4. Memory(记忆)

管理对话历史和长期知识。

  • ConversationBufferMemory: 保留完整对话历史
  • ConversationSummaryMemory: AI自动总结历史,节省token
  • VectorStoreMemory: 把历史存入向量数据库,按相关性检索

5. Retrieval(检索) - RAG的核心

复制代码
你的文档(PDF/代码/手册)
    ↓ 切分成小块
    ↓ 用Embedding模型转成向量
    ↓ 存入向量数据库(Chroma/FAISS/Milvus)
    ↓
用户提问 -> 转成向量 -> 在数据库中找最相似的文档块 -> 连同问题一起发给AI

比如你把AT625X2的硬件手册、原理图PDF、所有源代码都建立索引,AI就能在回答问题时自动检索相关内容,而不是凭记忆瞎猜。

一个BMC Agent的伪代码示例

用LangChain构建你的BMC调试Agent大概长这样:

python 复制代码
from langchain.agents import create_react_agent
from langchain_openai import ChatOpenAI
from langchain.tools import tool
from langchain_community.vectorstores import Chroma

# 1. 选择LLM
llm = ChatOpenAI(model="gpt-4")

# 2. 定义工具
@tool
def ssh_bmc(command: str) -> str:
    """在BMC上执行命令并返回输出"""
    return ssh_execute(bmc_ip, "Administrator", "Hkzy@8000", command)

@tool
def search_docs(query: str) -> str:
    """搜索硬件文档和代码注释"""
    docs = vector_db.similarity_search(query, k=3)
    return "\n".join([d.page_content for d in docs])

@tool
def search_fault_cases(symptom: str) -> str:
    """搜索历史故障案例库"""
    cases = fault_db.similarity_search(symptom, k=3)
    return "\n".join([c.page_content for c in cases])

# 3. 创建Agent
agent = create_react_agent(
    llm=llm,
    tools=[ssh_bmc, search_docs, search_fault_cases],
    prompt=system_prompt  # 包含BMC领域知识的系统提示词
)

# 4. 运行
response = agent.invoke("phosphor-pid-control启动失败了,帮我排查")
# Agent会自动:
#   1. 调用ssh_bmc("systemctl status phosphor-pid-control")
#   2. 调用ssh_bmc("journalctl -u phosphor-pid-control -n 50")
#   3. 调用search_fault_cases("pid control启动失败")
#   4. 根据日志和历史案例给出诊断

LangChain的生态位

  • LangChain: 最早最成熟的框架,生态最大,但被批评过度抽象
  • LlamaIndex: 更专注于RAG(数据检索)场景,如果你的Agent主要是"查文档回答问题",它更合适
  • CrewAI: 专注多Agent协作
  • AutoGen(微软): 多Agent对话框架
  • Dify/FastGPT: 低代码Agent平台,拖拽式构建,适合快速验证想法

和你现在的方式对比

你现在用Gemini + skill/workflow的方式:

  • 优点: 零开发成本,AI能力强(Gemini本身就很强)
  • 缺点: 依赖平台,无法定制推理流程,无法接入自己的知识库

用LangChain自建Agent:

  • 优点: 完全可控,可以接入任意数据源和工具,可部署为团队服务
  • 缺点: 需要开发和维护,LLM调用有成本,需要自己处理各种边界情况

如果你想试水,建议从一个最小的LangChain Agent开始: 就两三个tool + 一个简单的RAG,跑通"自动SSH到BMC查日志并分析"这个场景。这样你就能直观感受到和现在方式的区别了。

相关推荐
赢乐1 天前
大模型学习笔记:LangChain核心组件-提示词(Prompts)
langchain·提示词工程·结构化输出·提示词(prompts)·系统提示词·身份(identity)·设定角色
swipe1 天前
Agentic RAG:用 LangGraph 构建会路由、会纠错、会收敛的闭环 RAG
后端·langchain·llm
赢乐1 天前
大模型学习笔记:LangChain核心组件-记忆(memory)
数据库·langchain·长短时记忆网络·长期记忆·短期记忆·智能体agent·记忆(memory)
最贪吃的虎1 天前
给 Agent 接入新模型的推理模式:从配置开关到协议适配
人工智能·python·langchain
ftpeak1 天前
LangGraph Agent 开发指南(10~子图 Subgraphs)
python·ai·langchain·ai编程·langgraph
lbb 小魔仙1 天前
工业数据困局的破局者:DolphinDB 如何让海量时序数据真正“跑“出价值
开发语言·人工智能·python·langchain
秦歌6662 天前
DeepAgents框架详解和文件后端
人工智能·langchain