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查日志并分析"这个场景。这样你就能直观感受到和现在方式的区别了。

相关推荐
new Object ~4 小时前
langchain 的向量存储
langchain
Timer@4 小时前
LangChain 教程 04|Agent 详解:让 AI 学会“自己干活“
javascript·人工智能·langchain
YuanDaima20485 小时前
基于 LangChain 1.0 的检索增强生成(RAG)实战
人工智能·笔记·python·langchain·个人开发·langgraph
qq_5470261798 小时前
LangChain 工具调用(Tool Calling)
java·大数据·langchain
AI大模型..8 小时前
数据洞察加速器:LLM Copilot 如何让 SQL 查询效率提升 50% 以上?
人工智能·langchain·llm·agent·llama
汀沿河12 小时前
6 LangGraph的stream流式输出
langchain
new Object ~1 天前
LangChain的短期记忆存储实现
python·langchain
liu****1 天前
LangChain-AI应用开发框架(六)
人工智能·python·langchain·大模型应用·本地部署大模型
java资料站1 天前
第07章:LangChain使用之Agents
langchain