LangChain: 3种部署生产级AI智能体的方法 — 2026年完整部署指南

LangChain (LC) 是用于构建LLM驱动应用的Python/JS框架,拥有700+集成。学习如何安装LangChain,使用Docker部署,与OpenAI、Anthropic、Ollama集成,并通过LangSmith可观测性、LangGraph智能体和Kubernetes扩展至生产环境。

  • ⭐ 137165
  • MIT
  • 更新于 2026-05-19

{{< resource-info >}}

LangChain Logo

LangChain Architecture

引言 #

大多数LLM演示死在Jupyter笔记本里。一个能工作的原型与生产级AI智能体之间的鸿沟,是团队耗费工程时间的黑洞:输出不一致、故障无法追踪、API成本失控、负载一高就崩溃。LangChain是应用最广泛的LLM应用框架,GitHub星标超过137,000,贡献者超过3,900人,它的存在就是为了弥合这一鸿沟。本langchain tutorial将向你展示如何安装LangChain、构建可部署的智能体,并通过Docker、Kubernetes和可观测性工具在生产环境中运行 — 全程不到30分钟。

LangChain是什么? #

LangChain是一个开源的Python和TypeScript框架,用于构建由大语言模型驱动的应用程序。它提供了一个模块化组件库 —— 链(chains)、智能体(agents)、记忆(memory)、文档加载器(document loaders)、向量存储(vector stores)和输出解析器(output parsers)—— 开发者可以将这些组件组合成复杂的AI工作流。LangChain拥有700多个集成,涵盖OpenAI、Anthropic、Ollama、Pinecone、Chroma以及数十种企业系统,它充当原始LLM API与生产级AI服务之间的连接组织。该项目于2025年10月发布了1.0 LTS版本,引入了语义化版本控制、标准化内容块,并保证1.x系列版本的向后兼容性。

LangChain的工作原理 #

架构概览 #

LangChain的架构分为五个层次:

  1. 模型I/O —— 聊天模型、LLM和嵌入模型的标准化接口。只需更改一行导入代码,即可从OpenAI GPT-4o切换到Anthropic Claude 3.5 Sonnet。
  2. 检索 —— 文档加载器、文本分割器、嵌入模型和向量存储构成RAG管道。加载PDF、HTML或Notion页面,分块、嵌入、语义查询。
  3. 智能体 —— create_agent API(LangChain 1.0+)编排工具选择、推理循环和人工介入审批。智能体决定调用哪些工具、按什么顺序、何时停止。
  4. —— 按顺序链接组件的可组合工作流。RetrievalQA链将检索器连接到LLM,实现文档问答。
  5. 可观测性 —— LangSmith追踪每次调用,测量延迟、token用量和成本。追踪记录输入、输出和中间步骤以供调试。
用户查询 → 智能体/链 → [工具调用 → LLM调用 → 检索] → 响应
                ↓
            LangSmith (追踪、指标、评估)

LangChain RAG Flow

核心概念 #

Runnable接口。 LangChain中的每个组件都实现了Runnable协议,包含.invoke().batch().stream()方法。这个统一接口让你可以相同地对待单个提示、十个组件的链或多智能体图。

内容块(Content Blocks)。 LangChain 1.0在消息上引入了.content_blocks —— 一种跨所有提供商的统一格式,用于文本、图像、工具调用和推理追踪。不再需要特定于提供商的消息解析。

模型配置文件(Model Profiles)。 聊天模型通过.profile属性公开功能,支持动态功能检测。你的代码可以在尝试工具调用或视觉功能之前检查模型是否支持它们。

安装与设置 #

基础安装 #

LangChain可以通过pip在60秒内完成安装。1.0版本起需要Python 3.10+。

# 安装核心框架
pip install langchain-core==1.4.0 langchain

# 安装OpenAI集成
pip install langchain-openai

# 安装Anthropic集成
pip install langchain-anthropic

# 安装社区集成(向量存储、加载器、工具)
pip install langchain-community

# 安装LangGraph智能体工作流
pip install langgraph

# 安装LangSmith可观测性
pip install langsmith

验证安装 #

import langchain_core
print(langchain_core.__version__)
# Output: 1.4.0

from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic

# 测试模型实例化
openai_model = ChatOpenAI(model="gpt-4o", temperature=0)
anthropic_model = ChatAnthropic(model="claude-3-5-sonnet-20241022")

print("LangChain installed successfully with OpenAI and Anthropic providers")

环境配置 #

# .env 文件
OPENAI_API_KEY=sk-proj-xxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxx
LANGSMITH_API_KEY=ls-xxxxx
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=production-agents

Docker设置(推荐用于生产) #

# Dockerfile
FROM python:3.12-slim

WORKDIR /app

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    gcc \
    python3-dev \
    && rm -rf /var/lib/apt/lists/*

# 复制并安装Python依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 非root用户保障安全
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
USER appuser

# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]
# requirements.txt
langchain-core==1.4.0
langchain==1.3.0
langchain-openai==1.2.0
langchain-anthropic==1.4.0
langgraph==0.4.0
langsmith==0.7.0
uvicorn==0.34.0
fastapi==0.115.0
pydantic==2.10.0
python-dotenv==1.0.0
redis==5.2.0
httpx==0.28.0
# docker-compose.yml
version: '3.8'

services:
  app:
    build: .
    ports:
      - "8000:8000"
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
      - LANGSMITH_API_KEY=${LANGSMITH_API_KEY}
      - LANGSMITH_TRACING=true
      - REDIS_URL=redis://redis:6379
    depends_on:
      - redis
      - chroma
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data
    restart: unless-stopped

  chroma:
    image: chromadb/chroma:latest
    volumes:
      - chroma_data:/chroma/chroma
    restart: unless-stopped

volumes:
  redis_data:
  chroma_data:

构建并运行 #

# 构建镜像
docker build -t langchain-production-app .

# 使用docker-compose运行
docker-compose up -d

# 验证部署
curl http://localhost:8000/health

与OpenAI、Anthropic、Ollama和向量存储集成 #

OpenAI GPT-4o集成 #

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

# 初始化模型
model = ChatOpenAI(
    model="gpt-4o",
    temperature=0.1,
    max_tokens=4096,
    timeout=30,
    max_retries=3,
)

# 创建链
prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant that answers questions about {topic}."),
    ("human", "{question}"),
])

chain = prompt | model

# 调用
response = chain.invoke({
    "topic": "machine learning",
    "question": "Explain backpropagation in 3 sentences."
})
print(response.content)

Anthropic Claude集成 #

from langchain_anthropic import ChatAnthropic

claude = ChatAnthropic(
    model="claude-3-5-sonnet-20241022",
    temperature=0.1,
    timeout=30,
    max_retries=3,
)

# 相同的提示跨提供商通用
claude_chain = prompt | claude
response = claude_chain.invoke({
    "topic": "distributed systems",
    "question": "What is the CAP theorem?"
})
print(response.content)

Ollama本地模型 #

from langchain_ollama import ChatOllama

local_model = ChatOllama(
    model="llama3.3",
    temperature=0.1,
    base_url="http://localhost:11434",
)

response = local_model.invoke("Explain quantum computing simply.")
print(response.content)

使用Chroma向量存储的RAG管道 #

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain.chains import RetrievalQA

# 加载并分割文档
loader = PyPDFLoader("./documents.pdf")
docs = loader.load()

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    length_function=len,
)
chunks = splitter.split_documents(docs)

# 存入向量数据库
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db",
)

# 创建QA链
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o", temperature=0),
    chain_type="stuff",
    retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
    return_source_documents=True,
)

# 查询
result = qa_chain.invoke({"query": "What are the key findings?"})
print(result["result"])

带工具的智能体 #

from langchain import hub
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.tools import tool
from langchain_openai import ChatOpenAI

# 定义自定义工具
@tool
def search_knowledge_base(query: str) -> str:
    """Search internal knowledge base for technical documentation."""
    return f"Results for '{query}': Found 3 relevant documents."

@tool
def calculate(expression: str) -> str:
    """Evaluate a mathematical expression."""
    try:
        result = eval(expression)
        return str(result)
    except Exception as e:
        return f"Error: {str(e)}"

# 创建智能体
tools = [search_knowledge_base, calculate]
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = hub.pull("hwchase17/openai-functions-agent")
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 运行智能体
result = agent_executor.invoke({
    "input": "What is 1250 * 37 and search for deployment docs?"
})
print(result["output"])

基准测试 / 实际应用案例 #

性能基准测试 #

在AWS c5.4xlarge(16 vCPU,32GB内存)上使用gpt-3.5-turbo和sentence-transformers/all-mpnet-base-v2收集的基准数据:

指标LangChainLlamaIndexHaystackSemantic Kernel
QPS (查询/秒)78.285.4102.565.4
内存峰值 (MB)1,203980856987
首字节延迟 (ms)21016592185
RAG准确率 (SQuAD)82.3%88.1%85.1%79.8%
集成数量700+300+150+80+
GitHub星标137,16539,20017,90026,300
上线生产时间2-3天1-2天3-5天4-7天

LangChain用原始检索速度换取了编排灵活性。Haystack在纯文档检索QPS方面领先,但缺乏智能体能力。LlamaIndex提供最快的RAG构建路径,但范围较窄。Semantic Kernel与Azure原生集成,但开源生态较小。

生产案例 #

客户支持自动化(SaaS,50万用户)。 一家B2B SaaS公司用集成了知识库、CRM和工单系统的LangChain智能体替代了基于规则的支持机器人。该智能体自主处理78%的一级查询,复杂问题升级给人工客服时附带完整对话上下文。平均响应时间从4.2小时降至12秒。

法律文件分析(律所,50名律师)。 诉讼团队使用LangChain RAG处理50,000份案件文档。管道加载PDF,进行语义分块,将嵌入存储在Pinecone中,并生成带引用的备忘录草稿。每案研究时间减少60%。

代码生成助手(金融科技,200名工程师)。 基于LangChain的内部开发者工具连接GitHub、文档和API规范。工程师用自然语言描述功能;智能体生成实现计划、代码草稿和测试用例。功能原型时间从3天缩短至4小时。

高级用法 / 生产环境加固 #

使用LangGraph的复杂智能体工作流 #

LangGraph通过基于图的智能体编排扩展了LangChain。它支持循环、分支和人工介入 —— 对于需要审批节点的生产智能体至关重要。

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, Sequence
from langchain_core.messages import BaseMessage, HumanMessage, AIMessage
from langchain_openai import ChatOpenAI
import operator

# 定义状态
class AgentState(TypedDict):
    messages: Annotated[Sequence[BaseMessage], operator.add]
    next_step: str

# 定义节点
def agent_node(state: AgentState):
    model = ChatOpenAI(model="gpt-4o")
    response = model.invoke(state["messages"])
    return {"messages": [response], "next_step": "human_review"}

def human_review(state: AgentState):
    # 生产中这里会暂停等待人工审批
    last_msg = state["messages"][-1].content
    if "DELETE" in last_msg.upper() or "DROP" in last_msg.upper():
        return {"next_step": "reject"}
    return {"next_step": "execute"}

def execute_tool(state: AgentState):
    return {"messages": [AIMessage(content="Action executed successfully.")], "next_step": END}

def reject_action(state: AgentState):
    return {"messages": [AIMessage(content="Action rejected by policy.")], "next_step": END}

# 构建图
workflow = StateGraph(AgentState)
workflow.add_node("agent", agent_node)
workflow.add_node("human_review", human_review)
workflow.add_node("execute", execute_tool)
workflow.add_node("reject", reject_action)

workflow.set_entry_point("agent")
workflow.add_edge("agent", "human_review")
workflow.add_conditional_edges(
    "human_review",
    lambda x: x["next_step"],
    {"execute": "execute", "reject": "reject"}
)
workflow.add_edge("execute", END)
workflow.add_edge("reject", END)

# 编译并运行
app = workflow.compile()
result = app.invoke({"messages": [HumanMessage(content="Delete all user records from the database.")]})
print(result["messages"][-1].content)

错误处理和重试 #

生产智能体会失败。优雅地处理它。

from langchain_core.runnables import RunnableConfig
from tenacity import retry, stop_after_attempt, wait_exponential

@retry(
    stop=stop_after_attempt(3),
    wait=wait_exponential(multiplier=1, min=2, max=10),
    reraise=True
)
def invoke_with_retry(chain, inputs, config: RunnableConfig = None):
    try:
        return chain.invoke(inputs, config=config)
    except Exception as e:
        # 记录到LangSmith进行分析
        print(f"Invocation failed: {e}. Retrying...")
        raise

# 用法
config = RunnableConfig(tags=["production", "customer-facing"])
result = invoke_with_retry(qa_chain, {"query": "What are the terms?"}, config)

速率限制和成本控制 #

from langchain_core.rate_limiters import InMemoryRateLimiter
import time

# 速率限制:每分钟10次请求
rate_limiter = InMemoryRateLimiter(
    requests_per_second=10/60,
    check_every_n_seconds=1,
    max_bucket_size=5,
)

model = ChatOpenAI(
    model="gpt-4o",
    rate_limiter=rate_limiter,
    max_tokens=2000,  # 输出token硬上限
)

# 追踪每次请求的成本
from langchain.callbacks import get_openai_callback

with get_openai_callback() as cb:
    response = model.invoke("Summarize this 50-page report.")
    print(f"Tokens: {cb.total_tokens}, Cost: ${cb.total_cost:.4f}")

使用LangSmith监控 #

import os

# 启用追踪
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = "ls-xxxxx"
os.environ["LANGSMITH_PROJECT"] = "production-agents"

from langsmith import Client
client = Client()

# 程序化评估
from langsmith.evaluation import evaluate

def accuracy_evaluator(run, example):
    prediction = run.outputs["output"]
    expected = example.outputs["expected_answer"]
    score = 1.0 if expected.lower() in prediction.lower() else 0.0
    return {"key": "accuracy", "score": score}

results = evaluate(
    lambda x: agent_executor.invoke(x),
    data="my-dataset-name",
    evaluators=[accuracy_evaluator],
)

Kubernetes部署 #

# k8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: langchain-app
  labels:
    app: langchain-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: langchain-app
  template:
    metadata:
      labels:
        app: langchain-app
    spec:
      containers:
      - name: app
        image: langchain-production-app:latest
        ports:
        - containerPort: 8000
        env:
        - name: OPENAI_API_KEY
          valueFrom:
            secretKeyRef:
              name: api-secrets
              key: openai-key
        - name: LANGSMITH_API_KEY
          valueFrom:
            secretKeyRef:
              name: api-secrets
              key: langsmith-key
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "2Gi"
            cpu: "2000m"
        livenessProbe:
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 10
          periodSeconds: 30
        readinessProbe:
          httpGet:
            path: /ready
            port: 8000
          initialDelaySeconds: 5
          periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: langchain-service
spec:
  selector:
    app: langchain-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8000
  type: ClusterIP
# 部署到Kubernetes
kubectl apply -f k8s-deployment.yaml
kubectl get pods -l app=langchain-app
kubectl logs -f deployment/langchain-app

Redis缓存高频查询 #

import redis
import json
import hashlib
from langchain.globals import set_llm_cache
from langchain_community.cache import RedisCache

# 连接Redis
redis_client = redis.Redis.from_url("redis://localhost:6379")
set_llm_cache(RedisCache(redis_client=redis_client))

# 基于输入哈希的缓存键
def get_cache_key(prefix: str, text: str) -> str:
    hash_val = hashlib.md5(text.encode()).hexdigest()
    return f"{prefix}:{hash_val}"

# 昂贵LLM调用前检查缓存
def cached_invoke(chain, inputs: dict, ttl: int = 3600):
    cache_key = get_cache_key("llm", json.dumps(inputs, sort_keys=True))
    cached = redis_client.get(cache_key)
    if cached:
        return json.loads(cached)

    result = chain.invoke(inputs)
    redis_client.setex(cache_key, ttl, json.dumps({"output": result.content}))
    return result

LangChain Integration Map

与替代品对比 #

特性LangChainLlamaIndexHaystackSemantic Kernel
主要专注多步骤工作流、智能体编排文档索引、检索优化语义搜索、RAG管道企业集成、微软生态
语言支持Python, TypeScriptPython, TypeScriptPythonC#, Python, Java
GitHub星标137,16539,20017,90026,300
许可证MITMITApache-2.0MIT
集成数量700+300+150+80+
RAG性能良好 (82.3%准确率)最佳 (88.1%准确率)良好 (85.1%准确率)中等 (79.8%准确率)
智能体能力高级 (LangGraph)基础有限中等 (Planner)
可观测性LangSmith (原生)基础回调 + LangSmith内置管道可视化Azure Monitor
RAG构建时间2-3天1-2天3-5天4-7天
生产成熟度LTS 1.0 (2025年10月)1.0前,稳定1.0+ 稳定1.0+ 稳定
框架成本免费免费免费免费
托管云LangSmith $39/用户/月LlamaCloud 按量计费deepset Cloud 定制Azure AI Services
学习曲线中等平缓中等中等
人工介入原生 (LangGraph)有限基础通过Azure Logic Apps
最适合复杂智能体、多工具工作流文档问答、知识库企业搜索、合规微软环境、.NET团队

局限性 / 客观评估 #

纯检索不是最快的。 如果你的用例 exclusively 是文档搜索和检索,LlamaIndex或Haystack在延迟和准确率基准上会胜过LangChain。LangChain的优势在于编排,而非原始检索速度。

简单用例的学习曲线更陡。 一个基础的"与PDF聊天"应用需要理解加载器、分割器、嵌入、向量存储和链。像RAGFlow或Verba这样的工具为非开发者提供更快捷的路径。

快速演进带来版本漂移。 尽管有1.0 LTS承诺,生态系统仍然发展迅速。社区集成(langchain-community)可能在次要版本中引入破坏性变更。在生产环境中固定精确版本。

LangSmith成本随用量扩展。 免费层每月覆盖5,000次追踪 —— 对原型足够,但对生产不够。一个5人团队每月处理100,000次追踪需支付约$220/月的LangSmith费用,还不包括LLM API成本。

过度工程风险。 LangChain的灵活性诱使开发者构建复杂的智能体图,而一个简单的提示+API调用可能就足够了。从简单开始,仅在指标证明合理时才增加复杂性。

C#和Java生态有限。 微软中心化环境中的团队可能发现Semantic Kernel的一流.NET支持比LangChain的Python优先方法更自然。

常见问题解答 #

LangChain和LangGraph有什么区别? #

LangChain是构建LLM应用的核心框架,包含链、提示和模型集成。LangGraph是一个扩展库,增加了基于图的编排功能,支持循环、分支和人工介入审批的复杂智能体工作流。把LangChain看作组件库,LangGraph看作工作流引擎。两者都由LangChain Inc维护,共享相同的发布周期。

如何在LangChain中切换LLM提供商? #

更改模型类导入即可。LangChain标准化的BaseChatModel接口意味着为OpenAI编写的代码只需最小改动即可用于Anthropic、Google、Ollama或任何支持的提供商。1.0+版本中的.content_blocks属性在所有提供商间标准化了消息格式,消除了特定于提供商的解析代码。

LangChain可以商业免费使用吗? #

可以。LangChain采用MIT许可证,商业和个人使用均免费。核心框架、LangGraph和所有社区集成均无许可费用。LangSmith(可观测性平台)提供免费层(每月5,000次追踪);付费计划从$39/用户/月起。来自OpenAI、Anthropic或其他提供商的LLM API费用另行计费。

生产环境中LangChain的推荐部署栈是什么? #

生产部署请使用Docker容器配合WSGI/ASGI服务器(Uvicorn或Gunicorn)、Redis用于缓存和会话状态、向量存储(小规模用Chroma,大规模用Pinecone或Weaviate)、LangSmith用于可观测性。在Kubernetes上部署以实现水平扩展。设置资源限制、健康检查和速率限制。固定所有依赖版本,每次部署前运行评估。

LangChain如何处理错误和重试? #

LangChain通过模型类上的max_retries参数提供内置重试逻辑和指数退避。对于生产环境,使用Tenacity包装关键路径以精细控制重试策略。使用结构化异常处理区分可重试错误(速率限制、超时)和终端错误(无效输入、认证失败)。将所有失败记录到LangSmith进行事后分析。

我可以自建LangSmith吗? #

自建LangSmith仅适用于企业版定制定价。对于需要本地可观测性的团队,开源替代方案包括Langfuse(MIT许可证)、Arize的Phoenix(免费)和Helicone(开源)。这些通过OpenTelemetry或直接回调与LangChain集成。

如何将LangChain智能体扩展至处理1000+并发用户? #

通过在负载均衡器后运行多个容器实例进行水平扩展。使用异步模式(ainvokeastream)最大化每个worker的吞吐量。对高频查询实施Redis缓存。为数据库和外部API设置连接池。通过LangSmith监控每次请求的token用量和成本。对长时间运行的智能体任务考虑使用队列系统(Celery、RQ)而非同步HTTP请求。

结论 #

LangChain的137,000个GitHub星标反映了它作为生产级LLM应用默认框架的地位。1.0 LTS版本带来了企业部署所需的稳定性:语义化版本控制、标准化接口和保证的向后兼容性。本指南涵盖了如何安装LangChain、使用Docker容器化、在Kubernetes上部署,以及通过可观测性和错误处理进行加固。

你的下一步:

  1. 克隆 LangChain仓库 并运行快速入门
  2. 使用上面的Dockerfile和compose文件部署你的第一个智能体容器
  3. 设置LangSmith追踪,在上线前建立可观测性基线
  4. 加入 LangChain Discord社区Telegram AI开发群组 讨论生产部署

想系统化学习AI智能体开发?Systeme.io 提供完整的AI应用开发和部署课程,帮助你从原型快速进入生产环境。

披露声明:本文包含联盟链接。如果你通过链接购买,我们可能会获得佣金 —— 这不会增加你的额外费用。

推荐部署与基础设施 #

上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:

  • DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
  • HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。

Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。

来源与延伸阅读 #

💬 留言讨论