目录

LangChain

DeepSeek
LangChain 是一个用于构建大语言模型应用的开发框架,其核心概念在于将 LLM 调用、数据检索、记忆存储等组件“链式”组合,形成可编排的复杂工作流。它主要用于简化智能体、问答系统、RAG 等应用的开发,通过标准化接口与模块化设计,显著提升 AI 应用的构建效率与灵活性。

核心概念

/posts/lang-chain/lang-chain.avif

场景示例

通过一个最简单的与大模型交互问答示例,展示 LangChain 的基本用法。

环境准备

pip install flask langchain langchain-openai os

配置好自定义大模型的环境变量:MODEL_BASE_URL、MODEL_NAME、API_KEY。

创建 Server

server.py 文件:

from flask import Flask, request, jsonify

# === LangChain 核心组件 ===
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

# === Flask 初始化 ===
app = Flask(__name__)

# =========================
# Step 1: 初始化 LLM
# =========================
# 这里填写你的模型信息(OpenAI-compatible)
llm = ChatOpenAI(
    base_url=os.environ.get("MODEL_BASE_URL"),
    model=os.environ.get("MODEL_NAME"),
    api_key=os.environ.get("API_KEY"),
)

# =========================
# Step 2: 定义 PromptTemplate
# =========================
# 核心作用:规范输入结构
prompt = PromptTemplate.from_template(
    "你是一个简洁的助手,请用一句话回答用户问题:\n{user_input}"
)

# =========================
# Step 3: 构建 LCEL Chain
# =========================
# LangChain 新版核心写法(Runnable)
chain = prompt | llm


# =========================
# Step 4: 封装调用函数
# =========================
def run_chain(user_input: str):
    print("\n===== LangChain 调用开始 =====")
    print(f"[输入] user_input: {user_input}")

    # Prompt 渲染(仅用于日志展示)
    formatted_prompt = prompt.format(user_input=user_input)
    print(f"[Prompt] \n{formatted_prompt}")

    # 调用 Chain
    response = chain.invoke({"user_input": user_input})

    print(f"[原始返回] {response}")

    # Chat 模型返回是对象,需要取 content
    result = response.content

    print(f"[最终输出] {result}")
    print("===== LangChain 调用结束 =====\n")

    return result


# =========================
# Step 5: Flask HTTP 接口
# =========================
@app.route("/ask", methods=["POST"])
def ask():
    data = request.json
    user_input = data.get("user_input", "")

    result = run_chain(user_input)

    return jsonify({"input": user_input, "output": result})


# =========================
# 启动服务
# =========================
if __name__ == "__main__":
    print("🚀 Server running at http://localhost:5000")
    app.run(debug=True)

创建 Client

client.py 文件,发送请求:

import requests

URL = "http://localhost:5000/ask"


def ask(user_input):
    response = requests.post(URL, json={"user_input": user_input})
    print("User:", user_input)
    print("AI:", response.json()["output"])


# === 对话测试===
ask("Who are you?")

运行和测试

开 2 个终端,分别运行:

python server.py
python client.py

参考

[1] https://www.langchain.com/

[2] https://langchain-doc.cn/