跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 LangChain 开发并部署简单大模型应用

介绍使用 LangChain 框架构建翻译应用的完整流程,涵盖环境配置、模型调用、提示词模板设计、链式编排及通过 LangServe 部署为 REST API 的关键步骤。重点讲解利用 LCEL 简化开发,结合 LangSmith 实现可观测性,并提供生产级部署的安全建议与测试方法,适合希望快速上手大模型应用开发的开发者参考。

修罗发布于 2025/2/7更新于 2026/9/1060 浏览
基于 LangChain 开发并部署简单大模型应用

基于 LangChain 开发并部署简单大模型应用

引言

在人工智能快速发展的今天,构建基于大语言模型(LLM)的应用已成为开发者的核心技能之一。本教程将指导您使用 LangChain 框架构建一个简单的翻译应用程序。虽然该应用功能相对基础——仅涉及 LLM 调用与提示词处理,但它涵盖了 LangChain 的核心概念,是入门 LangChain 生态的理想起点。通过本指南,您将掌握从环境配置、模型集成、链式编排到服务化部署的完整流程。

相关概念

在开始之前,我们需要了解以下关键概念:

  • 大语言模型:支持多种主流模型,如 GPT-3.5、GPT-4、Kimi、文心一言等,可根据需求灵活切换。
  • 提示词模板:用于结构化用户输入,将其转换为模型可理解的格式。
  • 输出转换器:解析模型返回的原始响应,提取有效数据。
  • LangChain Expression Language (LCEL):即'链',允许开发者像搭积木一样串联不同模块,简化从开发到生产部署的流程。
  • 调试与跟踪:利用 LangSmith 监控链的执行过程,便于排查问题。
  • 服务化部署:使用 LangServe 将链封装为 REST API,供外部系统调用。

环境安装

Python 环境准备

本指南假设您已安装 Python 3.8 或更高版本。建议使用虚拟环境隔离依赖,避免污染全局环境。

python -m venv langchain_env
source langchain_env/bin/activate  # Linux/Mac
# langchain_env\Scripts\activate   # Windows

安装 LangChain 核心库

pip install langchain langchain-core langchain-community

安装 LangSmith

LangSmith 是 LangChain 官方提供的可观测性平台,对于复杂应用的调试至关重要。注册后需设置环境变量以启用追踪。

export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="your_api_key_here"

在 Jupyter Notebook 中可通过以下方式设置:

import getpass
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass("Enter LangSmith API Key: ")

详细步骤

1. 模型集成

首先学习如何单独调用语言模型。LangChain 支持多种模型提供商,此处以 OpenAI 为例。

pip install langchain-openai
import getpass
import os
from langchain_openai import ChatOpenAI

# 设置 API Key
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter OpenAI API Key: ")

# 初始化模型
model = ChatOpenAI(model="gpt-4", temperature=0)

ChatModel 实现了 Runnable 接口,可通过 .invoke 方法交互。

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="Translate the following from English into Italian"),
    HumanMessage(content="hi!")
]

response = model.invoke(messages)
print(response.content)

若启用了 LangSmith,可在控制台查看此次调用的详细追踪信息,包括 Token 消耗与延迟。

2. 输出解析器

模型返回的是 AIMessage 对象,包含内容及其他元数据。通常我们只需要字符串内容。

from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()

result = parser.invoke(response)
print(result)  # 输出:Ciao!

更高效的用法是将模型与解析器链接:

chain = model | parser
output = chain.invoke(messages)
print(output)

此链包含两个步骤:模型调用与结果解析。LangSmith 会自动记录这两个步骤的追踪。

3. 提示词模板

直接将消息列表传递给模型不够灵活。PromptTemplate 允许动态构建提示,适应不同场景。

from langchain_core.prompts import ChatPromptTemplate

system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
    [("system", system_template), ("user", "{text}")]
)

# 测试模板
result = prompt_template.invoke({"language": "italian", "text": "hi"})
print(result.to_messages())

现在将模板、模型和解析器组合成完整链条:

chain = prompt_template | model | parser
output = chain.invoke({"language": "italian", "text": "hello world"})
print(output)

4. 高级提示工程

在实际应用中,单一指令可能无法满足精度要求。建议引入 Few-Shot Prompting(少样本提示)以提升效果。

few_shot_prompt = """Translate the following text to {language}.
Examples:
English: Hello -> {language}: Ciao
English: Good morning -> {language}: Buongiorno
Text: {text}"""

prompt_with_fewshot = ChatPromptTemplate.from_messages([
    ("system", few_shot_prompt),
    ("user", "{text}")
])

5. 错误处理

生产环境中必须考虑网络异常或模型超时。建议添加重试机制。

from langchain_core.runnables import RunnableWithRetry

retry_chain = RunnableWithRetry(chain, retries=3)
try:
    output = retry_chain.invoke({"language": "spanish", "text": "Goodbye"})
except Exception as e:
    print(f"Error occurred: {e}")

6. 服务化部署

使用 LangServe 将链封装为 FastAPI 服务。

安装依赖
pip install "langserve[all]" uvicorn
创建服务器

新建 serve.py 文件:

#!/usr/bin/env python
from typing import List
from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langserve import add_routes
import os

# 1. 定义提示模板
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
    ("system", system_template),
    ("user", "{text}")
])

# 2. 初始化模型
model = ChatOpenAI()

# 3. 初始化解析器
parser = StrOutputParser()

# 4. 创建链
chain = prompt_template | model | parser

# 5. 定义 FastAPI 应用
app = FastAPI(
    title="LangChain Translation Server",
    version="1.0",
    description="A simple API server using LangChain's Runnable interfaces"
)

# 6. 添加路由
add_routes(app, chain, path="/chain")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)
启动服务
python serve.py

服务将在 http://localhost:8000 运行。

7. 客户端调用与测试

Playground 界面

访问 http://localhost:8000/chain/playground 即可在浏览器中测试服务,支持流式输出与中间步骤查看。

程序化调用

使用 RemoteRunnable 进行远程调用:

from langserve import RemoteRunnable
remote_chain = RemoteRunnable("http://localhost:8000/chain/")
response = remote_chain.invoke({"language": "french", "text": "Hello"})
print(response)
Curl 测试
curl -X POST http://localhost:8000/chain/ \n-H "Content-Type: application/json" \n-d '{"input": {"language": "german", "text": "Hi"}}'

8. 安全最佳实践

在生产部署时,请注意以下事项:

  1. API 密钥管理:不要硬编码密钥,使用环境变量或密钥管理服务。
  2. HTTPS 加密:生产环境务必启用 HTTPS 保护数据传输。
  3. 限流策略:防止恶意请求耗尽资源,建议在网关层配置限流。
  4. 输入验证:对用户输入的长度和内容进行校验,防止注入攻击。

9. 常见问题排查

  • Token 限制:注意模型的上下文窗口限制,长文本需分段处理。
  • 响应延迟:若响应过慢,可尝试降低温度参数或使用更快的模型。
  • 依赖冲突:确保所有包版本兼容,必要时锁定 requirements.txt。

总结

本教程详细介绍了如何使用 LangChain 构建并部署一个翻译应用。我们学习了模型调用、提示词设计、链式编排、服务化部署及安全性考量。这些技能构成了大模型应用开发的基础。后续您可以进一步探索结构化输出、多模态处理及 Agent 代理等高级主题,逐步构建更复杂的智能系统。

目录

  1. 基于 LangChain 开发并部署简单大模型应用
  2. 引言
  3. 相关概念
  4. 环境安装
  5. Python 环境准备
  6. langchain_env\Scripts\activate # Windows
  7. 安装 LangChain 核心库
  8. 安装 LangSmith
  9. 详细步骤
  10. 1. 模型集成
  11. 设置 API Key
  12. 初始化模型
  13. 2. 输出解析器
  14. 3. 提示词模板
  15. 测试模板
  16. 4. 高级提示工程
  17. 5. 错误处理
  18. 6. 服务化部署
  19. 安装依赖
  20. 创建服务器
  21. 1. 定义提示模板
  22. 2. 初始化模型
  23. 3. 初始化解析器
  24. 4. 创建链
  25. 5. 定义 FastAPI 应用
  26. 6. 添加路由
  27. 启动服务
  28. 7. 客户端调用与测试
  29. Playground 界面
  30. 程序化调用
  31. Curl 测试
  32. 8. 安全最佳实践
  33. 9. 常见问题排查
  34. 总结

更多推荐文章

查看全部
  • 本地部署 n8n 与私有 AI 模型实战指南
  • 冷启动数据与多阶段训练在 DeepSeek 中的作用
  • IDEA 中将项目提交到 Gitee 仓库
  • MySQL 数据类型核心指南:选型、实战与避坑
  • ComfyUI Photoshop插件完整教程:5步实现AI绘画工作流
  • 小米智能家居 Miloco 分离式部署指南
  • 绿联云 NAS 配置 WebDAV 实现公网同步
  • 基于 AI 智能体的 C 语言与前端实训项目快速实现指南
  • C++ 类与对象进阶特性与编译器优化实战
  • 基于 FastGPT 与 MCP 协议构建工具增强型智能体
  • 使用 Continue 插件本地部署 AI 代码助手替代 Cursor 或 GitHub Copilot
  • 垂直行业大模型的训练策略与实施挑战分析
  • AI 不是机器人:它到底是什么?
  • AI 调参技巧:贝叶斯优化 Optuna
  • 国产数据库新机遇:电科金仓融合技术与 AI 化演进
  • 前端实现视频画中画功能 - 主页面与小窗同步控制
  • llama.cpp 新增 Web UI,本地大模型部署新方案实测
  • Llama.cpp Python 绑定与 API 使用详解
  • 基于 OpenClaw 与飞书构建 AI 新闻推送机器人
  • RAG 实践指南:使用 Ollama 与 RagFlow 构建本地知识库

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online