【AI】LangChain快速入门

简介

LangChain是一个用于开发由语言模型驱动的应用程序的框架。它旨在帮助开发者将大型语言模型(LLM)与其他计算资源或知识源连接起来,从而创建更强大、更实用的应用。

核心价值

  • 模块化设计:提供可组合的构建块,简化复杂应用的开发
  • 集成能力:支持多种语言模型、数据存储和外部工具的无缝集成
  • 灵活性:适用于各种应用场景,从简单问答到复杂工作流
  • 效率提升:减少样板代码,让开发者专注于业务逻辑

安装

具体来说,LangChain框架由以下开源库组成:

  • Langchain-core: 基础抽象和LangChain表达式 (LCEL)。该包包含不同组件的基本抽象以及将它们组合在一起的方法。 核心组件的接口,如大型语言模型、向量存储、检索器等在此定义。 此处未定义任何第三方集成。

  • Langchain: 组成应用程序认知架构的链、代理和检索策略。

  • Langchain-community: 第三方集成。

  • 合作伙伴库(例如 langchain-openailangchain-deepseek 等):一些集成已进一步拆分为自己的轻量级库,仅依赖于 langchain-core。:

  • LangGraph: 通过将步骤建模为图中的边和节点,构建强大且有状态的多参与者应用程序。与LangChain无缝集成,但也可以单独使用。

  • LangServe: 将LangChain链部署为REST API

  • LangSmith: 一个开发者平台,让您调试、测试、评估和监控LLM应用程

  • Langchain-experimenta: 实验功能的包

    安装LangChain核心库

    pip install langchain

    #集成包
    pip install langchain-community

    #可选 独立三方库 查看全部 https://python.langchain.com/api_reference/ 比如
    pip install langchain-ollama langchain-milvus
    pip install langchain-mcp-adapters

使用示例

复制代码
from langgraph.graph import StateGraph, MessagesState, START, END

def mock_llm(state: MessagesState):
    return {"messages": [{"role": "ai", "content": "hello world"}]}

graph = StateGraph(MessagesState)
graph.add_node(mock_llm)
graph.add_edge(START, "mock_llm")
graph.add_edge("mock_llm", END)
graph = graph.compile()

graph.invoke({"messages": [{"role": "user", "content": "hi!"}]})

核心组件介绍

Models(模型)

支持多种语言模型接口:

  • LLM :基础文本生成模型(适合一次性对话补全,文本生成等场景),返回字符串

  • Chat Models :对话优化模型(多轮聊天),返回聊天消息

    • SystemMessage

    • HumanMessage

    • AIMessage

    • ToolMessage

      import { ChatOpenAI } from "langchain/chat_models/openai";
      import { HumanChatMessage } from "langchain/schema";

      export const run = async () => {
      const chat = new ChatOpenAI();
      // Pass in a list of messages to call to start a conversation. In this simple example, we only pass in one message.
      const response = await chat.call([
      new HumanChatMessage(
      "What is a good name for a company that makes colorful socks?"
      ),
      ]);
      console.log(response);
      // AIChatMessage { text: '\n\nRainbow Sox Co.' }
      };

  • Embeddings :文本向量化模型,返回向量列表

    • 在线模型
    • 本地模型

提示词模板

LangChain 提供了多种提示词模板(Prompt Template),可以帮助开发者更容易地构建提示词

  • Prompt Templates:字符串提示模板

  • ChatPromptTemplates:聊天提示词模板

  • MessagesPlaceholder:消息占位符

Chains(链)

链(Chain)是LangChain的核心组件之一。通过链技术,可以将多步骤任务整合成清晰的流程,将语言模型调用、数据处理和决策逻辑连接在一起,从而实现复杂的应用需求。链不仅帮助开发者组织逻辑,还能根据特定的业务需求创建定制化的生成流程,使得生成的内容更符合实际使用场景。

常用链

  • LLMChain:基础模型调用链
  • Sequential Chains:顺序执行多个链
  • Router Chains:根据输入路由到不同链
  • TransformChain:自定义转换链
  • Document Chains:文档链

LangChain表达式 (LCEL)

LangChain表达式语言(LangChain Expression Language,LCEL)的引入,极大地简化了复杂任务的开发过程,并提升了系统的执行效率。LCEL通过流式处理、异步支持、多任务并行执行等特性,为LangChain的开发者提供了强大且灵活的工具,使得复杂任务的定义与执行变得更加高效。

Memory(记忆)

在构建智能对话系统中,记忆(Memory)模块是LangChain的关键组件之一。它使模型能够记住先前的对话内容,以实现上下文理解和多轮交互。

Agents(智能体)

  • Tools:代理可使用的函数,执行特定职责的函数。这可以是像:谷歌搜索(Google Search),数据库查找(Database lookup),代码REPL,其他链。工具的接口目前是预期具有字符串输入,和字符串输出的函数。

  • Toolkits:相关工具的集合

  • Agent Executors:运行代理的框架

  • 为了让智能代理更加强大,我们需要使其迭代,即调用模型多次,直到达到最终答案。这就是 AgentExecutor 的工作。

复制代码
  class AgentExecutor {

    // a simplified implementation

    run(inputs: object) {

      const steps = [];

      while (true) {

        const step = await this.agent.plan(steps, inputs);

        if (step instanceof AgentFinish) {

          return step.returnValues;

        }

        steps.push(step);

      }

    }

  }
  • Action Agents:决定下一步动作的代理。

    import { initializeAgentExecutorWithOptions } from "langchain/agents";
    import { OpenAI } from "langchain/llms/openai";
    import { SerpAPI } from "langchain/tools";
    import { Calculator } from "langchain/tools/calculator";

    const model = new OpenAI({ temperature: 0 });
    const tools = [
    new SerpAPI(process.env.SERPAPI_API_KEY, {
    location: "Austin,Texas,United States",
    hl: "en",
    gl: "us",
    }),
    new Calculator(),
    ];

    const executor = await initializeAgentExecutorWithOptions(tools, model, {
    agentType: "zero-shot-react-description",
    verbose: true,
    });

    const input = Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?;

    const result = await executor.call({ input });

总结

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序,它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。提供了灵活的抽象和AI优先的工具,可帮助开发人员将LLM应用程序从原型转化为生产环境。 它还提供了一套工具,可帮助开发人员构建上下文感知、推理应用程序, LangChain的工具包括聊天机器人、文档分析、摘要、代码分析、工作流自动化、自定义搜索等。

相关推荐
deephub8 小时前
Agent Lightning:微软开源的框架无关 Agent 训练方案,LangChain/AutoGen 都能用
人工智能·microsoft·langchain·大语言模型·agent·强化学习
山塘小鱼儿9 小时前
本地Ollama+Agent+LangGraph+LangSmith运行
python·langchain·ollama·langgraph·langsimth
Believeinbetter14 小时前
langchain 1.0实现AI Agent 接入MCP实战
langchain·agent
一条咸鱼_SaltyFish17 小时前
从零构建个人AI Agent:Node.js + LangChain + 上下文压缩全流程
网络·人工智能·架构·langchain·node.js·个人开发·ai编程
Volunteer Technology18 小时前
LangChain的应用开发(二)
人工智能·后端·python·langchain
AI资源库20 小时前
解构嵌入模型之王:All-MiniLM-L6-v2 的文件树解密、蒸馏机制与工业级应用生态
langchain·nlp·bert·embedding·hugging face·fine-tuning·ai agent
JaydenAI1 天前
[拆解LangChain执行引擎] PregelNode——无状态的功能节点
python·langchain
CCPC不拿奖不改名1 天前
Langflow源代码解析01:源代码拉取、安装依赖项,并运行langflow
人工智能·python·深度学习·langchain·embedding·rag·langflow
小楼v1 天前
如何使用LangGraph4j工作流改造项目流程实践
java·后端·langchain·ai工作流·langgraph4j