从零开始入门 LangChain:构建你的第一个智能应用
1. 什么是 LangChainLangChain 是一个用于开发由大语言模型LLM驱动的应用程序的框架。它通过提供一套标准化的接口、组件和工具简化了将 LLM 与外部数据源、计算资源和业务逻辑连接起来的过程。简单来说LangChain 就像是为 LLM 准备的“乐高积木”让你可以轻松地连接数据将文档、数据库、API 等外部数据接入 LLM。编排流程构建多步骤的推理链Chain实现复杂的任务。管理记忆让 LLM 在对话中记住上下文。调用工具让 LLM 能够使用搜索引擎、计算器、代码解释器等外部工具。2. 核心概念在动手之前我们先了解几个 LangChain 的核心抽象模型ModelsLangChain 支持多种模型提供商如 OpenAI、Anthropic、本地模型等的接口。提示词Prompts用于构建和模板化发送给模型的指令。链Chains将多个组件模型、提示词、工具等组合在一起形成一个完整的处理流程。代理Agents让模型能够自主决定调用哪些工具来完成任务。记忆Memory在链或代理的多次调用之间保持状态如聊天历史。索引Indexes用于从文档中加载、处理和检索信息的模块。3. 环境准备我们将使用 Python 来构建第一个 LangChain 应用。安装 Python确保你的 Python 版本在 3.8 或以上。安装 LangChain打开终端运行以下命令安装 LangChain 核心库。pipinstalllangchain安装模型接口为了调用模型我们还需要安装对应提供商的 SDK。这里以 OpenAI 为例你需要一个 OpenAI API Key。pipinstallopenai设置环境变量将你的 API Key 设置为环境变量避免硬编码在代码中。# 在 Linux/macOS 的终端中exportOPENAI_API_KEY你的-api-key# 在 Windows 的 PowerShell 中$env:OPENAI_API_KEY你的-api-key4. 第一个 LangChain 程序与模型对话让我们从一个最简单的例子开始直接调用模型进行问答。创建一个名为first_app.py的文件并写入以下代码# 导入必要的模块fromlangchain_openaiimportChatOpenAIfromlangchain.schemaimportHumanMessage# 1. 初始化模型# 这里使用 GPT-3.5-turbo你也可以换成 gpt-4 或其他模型llmChatOpenAI(modelgpt-3.5-turbo,temperature0)# 2. 构建消息# LangChain 使用消息列表SystemMessage, HumanMessage, AIMessage来管理对话messages[HumanMessage(contentLangChain 是什么用一句话解释。)]# 3. 调用模型并获取响应responsellm.invoke(messages)# 4. 打印结果print(模型回复,response.content)运行这个脚本python first_app.py你应该会看到类似这样的输出模型回复 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。恭喜你已经成功使用 LangChain 调用了大语言模型。5. 使用提示词模板直接拼接字符串来构造提示词很麻烦。LangChain 提供了PromptTemplate来帮助我们。让我们改造上面的程序使用模板来提问fromlangchain_openaiimportChatOpenAIfromlangchain.promptsimportChatPromptTemplate# 1. 定义提示词模板template“你是一个乐于助人的AI助手。请用{style}的风格回答以下问题{question}” prompt_templateChatPromptTemplate.from_template(template)# 2. 使用变量填充模板生成最终的消息messagesprompt_template.format_messages(style幽默风趣,questionLangChain 是什么)# 3. 初始化模型并调用llmChatOpenAI(modelgpt-3.5-turbo)responsellm.invoke(messages)print(模型回复,response.content)运行后你可能会得到一个用幽默风格解释 LangChain 的答案。通过模板我们可以轻松地复用和修改提示词。6. 构建一个简单的链链Chain是 LangChain 的核心。让我们把“模板”和“模型”链接起来创建一个正式的链。fromlangchain_openaiimportChatOpenAIfromlangchain.promptsimportChatPromptTemplatefromlangchain.chainsimportLLMChain# 1. 定义模板和模型promptChatPromptTemplate.from_template(“用不超过{word_count}个字介绍{technology}。”)llmChatOpenAI(modelgpt-3.5-turbo)# 2. 创建链chainLLMChain(llmllm,promptprompt)# 3. 运行链resultchain.invoke({technology:LangChain,word_count:50})print(result[text])LLMChain将提示词填充和模型调用这两个步骤封装起来使代码更清晰、更易于组合。