掘金 人工智能 03月28日 13:55
LangChain 快速入门:构建您的第一个 LLM 应用
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本指南介绍使用LangChain构建基础LLM应用的全过程,包括核心概念、环境设置、模型使用、组件连接及应用部署等内容,助您了解其工作流程。

🎯介绍LangChain的基本组件,如聊天模型、提示词模板等

💻阐述环境设置步骤,包括Jupyter Notebook和LangChain的安装

🤖讲解如何使用语言模型进行交互及调用输出解析器

📋描述使用提示词模板根据用户输入动态生成消息

🌐说明使用LangServe将应用部署为API服务

LangChain 快速入门:构建您的第一个 LLM 应用

本指南将引导您完成使用 LangChain 构建一个基础 LLM 应用的全过程,从核心组件的交互到最终的应用部署。通过这个实例,您将了解 LangChain 的基本工作流程和关键概念,为后续更深入的学习奠定基础。我们将构建一个简单的翻译应用。

1. 核心概念概览

在开始构建之前,了解 LangChain 中的一些基本组件和工具非常重要:

    聊天模型 (Chat Model): 与底层大型语言模型(如 GPT、Claude 等)进行交互的接口。提示词模板 (Prompt Template): 用于根据用户输入或其他动态信息,结构化地生成发送给语言模型的指令(提示)。输出解析器 (Output Parser): 用于处理和转换语言模型返回的原始响应,提取所需信息或将其格式化为特定结构。LangChain 表达式语言 (LCEL): 一种声明式的方式,允许将不同的 LangChain 组件(如提示模板、模型、解析器)像管道一样串联起来,构建复杂的处理链。LangSmith: 一个用于调试、追踪和监控 LangChain 应用运行过程的平台,有助于理解链内部的每一步。LangServe: 一个用于将使用 LCEL 构建的 LangChain 应用快速部署为 REST API 服务的库。

2. 环境设置

    Jupyter Notebook(可选): 推荐使用 Jupyter Notebooks 进行交互式学习和开发,便于逐步执行和观察结果。(安装说明请参考 这里安装 LangChain:
    pip install langchain
    更多安装细节请参见 LangChain 安装指南。设置 LangSmith (可选但推荐):LangSmith 对于理解应用内部流程非常有帮助。

3. 使用语言模型

首先,学习如何单独与语言模型交互。

    安装模型提供商库 (以 OpenAI/TogetherAI 为例):
    pip install -qU langchain-openai
    选择和初始化模型: LangChain 支持多种模型。这里以配置 TogetherAI 访问 Mixtral 为例(需要 TogetherAI API 密钥)。
    import getpassimport osfrom langchain_openai import ChatOpenAI os.environ["TOGETHER_API_KEY"] = "YOUR_TOGETHER_API_KEY" model = ChatOpenAI(    base_url="https://api.together.xyz/v1",     api_key=os.environ["TOGETHER_API_KEY"],    model="mistralai/Mixtral-8x7B-Instruct-v0.1", )
    调用模型: ChatModel 实例提供了一个标准的 .invoke 方法。输入通常是包含不同角色消息的列表。
    from langchain_core.messages import HumanMessage, SystemMessagemessages = [    SystemMessage(content="将以下内容从英语翻译成意大利语"),     HumanMessage(content="hi!"), ]response = model.invoke(messages)print(response)
    模型返回一个 AIMessage 对象,包含响应文本和其他元数据:
    AIMessage(content='ciao!', response_metadata={...}, id='...')

4. 使用输出解析器

语言模型的原始输出(AIMessage)可能包含我们不需要的额外信息。输出解析器帮助我们提取核心内容。

    导入 StrOutputParser: 这是一个简单的解析器,仅提取消息中的字符串内容。
    from langchain_core.output_parsers import StrOutputParserparser = StrOutputParser()
    单独使用解析器:
    result = model.invoke(messages) parsed_result = parser.invoke(result) print(parsed_result)
    输出:
    'ciao!'
    使用 LCEL 链接模型和解析器: LCEL 的 | 操作符可以将组件连接起来。数据流从左到右传递。
    chain = model | parserparsed_output = chain.invoke(messages)print(parsed_output)
    输出:
    'ciao!'

5. 使用提示词模板

通常,我们不直接硬编码发送给模型的消息,而是根据用户输入动态生成。提示词模板就是为此设计的。

    导入 ChatPromptTemplate:
    from langchain_core.prompts import ChatPromptTemplate
    定义模板: 创建一个包含占位符的模板结构。
    system_template = "将以下内容翻译成 {language}:"prompt_template = ChatPromptTemplate.from_messages([    ("system", system_template),     ("user", "{text}")          ])
    {language}{text} 是变量,将在运行时填充。使用模板生成提示: 调用 .invoke 并传入包含变量值的字典。
    prompt_value = prompt_template.invoke({"language": "意大利语", "text": "你好"})print(prompt_value) print(prompt_value.to_messages()) 
    输出:
    ChatPromptValue(messages=[SystemMessage(content='将以下内容翻译成 意大利语:'), HumanMessage(content='你好')])[SystemMessage(content='将以下内容翻译成 意大利语:'), HumanMessage(content='你好')]

6. 使用 LCEL 连接所有组件

现在,将前面介绍的提示词模板、模型和输出解析器使用 LCEL 组合成一个完整的处理流程。

chain = prompt_template | model | parserfinal_result = chain.invoke({"language": "意大利语", "text": "你好"})print(final_result)

输出:

'ciao'

这个 chain 对象封装了从接收输入(语言和文本)到生成最终翻译结果(字符串)的整个逻辑。如果在第 2 步设置了 LangSmith,可以在 LangSmith 界面清晰地看到这个链中每一步的输入和输出。

7. 使用 LangServe 提供服务 (部署)

最后一步是将我们构建的 LangChain 应用部署为一个可供其他服务或用户访问的 API。

    安装 LangServe:
    pip install "langserve[all]"
    创建 serve.py 文件: 这个 Python 文件包含了运行 API 服务器所需的所有代码。
    from fastapi import FastAPIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserfrom langchain_openai import ChatOpenAIfrom langserve import add_routesimport osimport uvicornsystem_template = "将以下内容翻译成 {language}:"prompt_template = ChatPromptTemplate.from_messages([    ('system', system_template),    ('user', '{text}')])model = ChatOpenAI()parser = StrOutputParser()chain = prompt_template | model | parserapp = FastAPI(  title="LangChain 服务器",  version="1.0",  description="一个简单的使用 LangChain Runnable 接口的 API 服务器",)add_routes(    app,    chain,    path="/translate", )if __name__ == "__main__":        uvicorn.run(app, host="localhost", port=8000)
    运行服务器:在终端中执行:
    python serve.py
    访问 API:服务器启动后:

通过以上步骤,您已经体验了使用 LangChain 构建、组合和部署一个简单 LLM 应用的基本流程。这为您探索 LangChain 更丰富的功能(如 RAG、Agents 等)打下了基础。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain LLM应用 语言模型 应用部署 提示词模板
相关文章