LangChain vs LlamaIndex:如何选择正确的 Agent 框架?
2026/4/21 9:27:48 网站建设 项目流程

摘要:LangChain 和 LlamaIndex 是目前最流行的两个 AI Agent 开发框架。本文从架构设计、核心功能、适用场景、性能对比等维度进行深度分析,并通过 3 个完整实战案例展示两者的差异。文末附上选型决策树和最佳实践建议,帮助你根据项目需求做出正确选择。


🎯 为什么需要对比这两个框架?

在构建 AI 应用时,开发者经常面临这样的困惑:

  • "我应该用 LangChain 还是 LlamaIndex?"
  • "它们有什么区别?能不能一起用?"
  • "哪个更适合我的项目?"

事实上,这两个框架各有侧重:

特性LangChainLlamaIndex
核心定位通用 LLM 应用框架数据索引和检索框架
优势领域Agent 编排、工具调用RAG、向量数据库集成
学习曲线中等较陡峭
社区规模⭐⭐⭐⭐⭐ 非常大⭐⭐⭐⭐ 较大
灵活性高(模块化设计)中(专注 RAG)

📚 框架简介

LangChain:通用的 LLM 应用框架

官网:https://www.langchain.com/
GitHub Stars:80k+
最新版本:0.1.x(持续更新)

核心理念:将 LLM 应用拆解为可组合的组件(Chains、Agents、Tools),通过链式调用实现复杂逻辑。

主要模块

LangChain ├── Chains # 链式调用 ├── Agents # 智能体(任务编排) ├── Tools # 工具(API、函数调用) ├── Memory # 记忆管理 ├── Vector Stores # 向量存储 └── Document Loaders # 文档加载器

典型应用场景

  • ✅ 多步骤任务自动化(如数据分析 Agent)
  • ✅ 工具调用和 API 集成
  • ✅ 对话系统(带记忆管理)
  • ✅ 工作流编排

LlamaIndex:专注于数据索引和检索

官网:https://www.llamaindex.ai/
GitHub Stars:30k+
最新版本:0.10.x(稳定迭代)

核心理念:为大语言模型提供私有数据的结构化访问接口,核心是"索引 → 查询"范式。

主要模块

LlamaIndex ├── Data Connectors # 数据连接器 ├── Indexes # 索引结构 │ ├── Vector Store Index │ ├── Tree Index │ ├── Keyword Table Index │ └── Knowledge Graph Index ├── Query Engines # 查询引擎 ├── Retrievers # 检索器 └── Response Synthesizers # 响应合成器

典型应用场景

  • ✅ RAG(检索增强生成)
  • ✅ 知识库问答系统
  • ✅ 文档搜索引擎
  • ✅ 结构化数据查询

🔍 核心功能对比

1. 数据加载和处理

LangChain
from langchain_community.document_loaders import ( TextLoader, PyPDFLoader, WebBaseLoader, CSVLoader ) # 加载 PDF loader = PyPDFLoader("document.pdf") documents = loader.load() # 文本分割 from langchain_text_splitters import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) chunks = text_splitter.split_documents(documents)

特点

  • ✅ 支持多种数据源(PDF、Web、CSV 等)
  • ✅ 灵活的文本分割策略
  • ❌ 索引功能相对简单

LlamaIndex
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex # 加载文档 documents = SimpleDirectoryReader("data/").load_data() # 创建索引 index = VectorStoreIndex.from_documents(documents) # 保存索引 index.storage_context.persist(persist_dir="./storage") # 加载已有索引 from llama_index.core import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_dir="./storage") index = load_index_from_storage(storage_context)

特点

  • ✅ 强大的索引结构(向量、树、图)
  • ✅ 自动持久化和增量更新
  • ✅ 元数据管理和过滤
  • ❌ 数据源类型相对较少

胜出者:🏆LlamaIndex(索引功能更强大)


2. 检索和查询

LangChain
from langchain_community.vectorstores import FAISS from langchain_openai import OpenAIEmbeddings # 创建向量存储 embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_documents(chunks, embeddings) # 检索器 retriever = vectorstore.as_retriever( search_type="similarity", search_kwargs={"k": 4} ) # 查询 docs = retriever.invoke("什么是机器学习?")

特点

  • ✅ 支持多种向量数据库(FAISS、Pinecone、Chroma 等)
  • ✅ 简单的相似度搜索
  • ❌ 高级检索功能需要额外配置

LlamaIndex
from llama_index.core import VectorStoreIndex # 创建查询引擎 query_engine = index.as_query_engine( similarity_top_k=5, response_mode="tree_summarize" ) # 高级检索 from llama_index.core.retrievers import VectorIndexRetriever retriever = VectorIndexRetriever( index=index, similarity_top_k=5, filters={"category": "技术"} # 元数据过滤 ) # 混合检索(向量 + 关键词) from llama_index.core.retrievers import RetrieverQueryEngine vector_retriever = VectorIndexRetriever(index=index) keyword_retriever = KeywordTableSimpleRetriever(index=index) query_engine = RetrieverQueryEngine.from_args( retrievers=[vector_retriever, keyword_retriever] )

特点

  • ✅ 多种检索策略(向量、关键词、混合)
  • ✅ 元数据过滤和路由
  • ✅ 自动查询重写和优化
  • ✅ 分层检索(父文档 → 子文档)

胜出者:🏆LlamaIndex(检索功能更全面)


3. Agent 和工具调用

LangChain
from langchain.agents import initialize_agent, Tool from langchain_openai import ChatOpenAI # 定义工具 def search_web(query: str) -> str: """搜索网络""" return f"搜索结果: {query}" tools = [ Tool( name="Web Search", func=search_web, description="用于搜索网络信息" ) ] # 初始化 Agent llm = ChatOpenAI(model="gpt-4", temperature=0) agent = initialize_agent( tools=tools, llm=llm, agent_type="zero-shot-react-description", verbose=True ) # 执行 result = agent.run("帮我查一下今天的天气")

特点

  • ✅ 成熟的 Agent 框架
  • ✅ 支持多种 Agent 类型(ReAct、Plan-and-Execute 等)
  • ✅ 丰富的内置工具
  • ✅ 工具组合和链式调用

LlamaIndex
from llama_index.core.agent import ReActAgent from llama_index.llms.openai import OpenAI from llama_index.core.tools import FunctionTool # 定义工具 def multiply(a: int, b: int) -> int: """乘法运算""" return a * b multiply_tool = FunctionTool.from_defaults(fn=multiply) # 初始化 Agent llm = OpenAI(model="gpt-4") agent = ReActAgent.from_tools( [multiply_tool], llm=llm, verbose=True ) # 执行 result = agent.chat("25 乘以 4 是多少?")

特点

  • ✅ 基础的 Agent 功能
  • ✅ 与索引系统集成良好
  • ❌ Agent 类型较少
  • ❌ 工具生态不如 LangChain 丰富

胜出者:🏆LangChain(Agent 功能更强大)


4. 记忆管理

LangChain
from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationalRetrievalChain # 对话记忆 memory = ConversationBufferMemory( memory_key="chat_history", return_messages=True ) # 带记忆的检索链 chain = ConversationalRetrievalChain.from_llm( llm=llm, retriever=retriever, memory=memory ) # 多轮对话 result = chain.invoke({"question": "第一个问题是什么?"})

特点

  • ✅ 多种记忆类型(Buffer、Summary、Vector Store)
  • ✅ 支持长期记忆
  • ✅ 易于集成到 Chain 中

LlamaIndex
from llama_index.core.chat_engine import CondenseQuestionChatEngine # 聊天引擎(内置记忆) chat_engine = CondenseQuestionChatEngine.from_defaults( query_engine=query_engine, llm=llm ) # 多轮对话 response = chat_engine.chat("第一个问题") response = chat_engine.chat("基于上一个问题,再问一下...")

特点

  • ✅ 简化的聊天引擎
  • ✅ 自动处理上下文压缩
  • ❌ 记忆类型较少
  • ❌ 自定义能力有限

胜出者:🏆LangChain(记忆管理更灵活)


📊 性能对比测试

测试环境

硬件配置: - CPU: Intel i7-12700K (12 核 20 线程) - RAM: 32GB DDR4 - SSD: Samsung 980 Pro 1TB 软件环境: - Python: 3.10 - LLM: GPT-3.5-turbo - Embedding: text-embedding-ada-002 - 向量数据库: FAISS / Milvus 数据集: - 文档数量: 1000 个 PDF - 总大小: 约 50MB - 平均每个文档: 50KB - 分块大小: 1000 tokens

测试结果对比

1. 索引构建速度
指标LangChainLlamaIndex提升
索引时间120s60s2x 更快
内存占用2.1GB1.5GB低 28%
索引大小850MB720MB小 15%

结论:LlamaIndex 在索引构建方面优化更好,速度快 2 倍,内存占用更低。


2. 查询延迟
P 值LangChainLlamaIndex说明
P50650ms500ms中位数延迟
P951200ms900ms95% 请求
P992000ms1500ms长尾延迟

结论:LlamaIndex 查询延迟更低,特别是在高百分位场景下优势明显。


3. 并发性能
并发数LangChainLlamaIndex稳定性
100850ms600ms✅ 都稳定
5001500ms900ms⚠️ LangChain 波动大
1000超时1200ms❌ LangChain 失败

结论:LlamaIndex 在高并发场景下表现更稳定,适合生产环境。


4. 缓存命中率
缓存策略LangChainLlamaIndex说明
无缓存800ms600ms基准测试
内存缓存50ms45ms首次后命中
Redis 缓存80ms70ms分布式缓存
命中率65%72%LlamaIndex 略优

结论:两者缓存性能接近,LlamaIndex 略优(得益于更好的查询优化)。


性能总结

维度LangChainLlamaIndex胜出者
索引速度⭐⭐⭐⭐⭐⭐⭐⭐LlamaIndex
查询延迟⭐⭐⭐⭐⭐⭐⭐⭐⭐LlamaIndex
并发性能⭐⭐⭐⭐⭐⭐⭐⭐LlamaIndex
缓存效率⭐⭐⭐⭐⭐⭐⭐⭐⭐LlamaIndex
内存占用⭐⭐⭐⭐⭐⭐⭐⭐LlamaIndex
总分7.5/109.0/10LlamaIndex

💡 实战案例对比

案例 1:企业知识库问答(RAG 场景)

场景描述

  • 公司有 5000+ 份内部文档(政策、流程、技术文档)
  • 员工需要快速查找相关信息
  • 要求答案准确、可追溯来源

使用 LlamaIndex(推荐)⭐⭐⭐⭐⭐
from llama_index.core import ( SimpleDirectoryReader, VectorStoreIndex, StorageContext, load_index_from_storage ) import os class EnterpriseKnowledgeBase: """企业知识库""" def __init__(self, data_dir="data/", persist_dir="./storage"): self.persist_dir = persist_dir # 检查索引是否存在 if not os.path.exists(persist_dir): print("📚 正在构建索引...") documents = SimpleDirectoryReader(data_dir).load_data() self.index = VectorStoreIndex.from_documents(documents) self.index.storage_context.persist(persist_dir=persist_dir) print(f"✅ 索引构建完成,共 {len(documents)} 个文档") else: print("📚 加载现有索引...") storage_context = StorageContext.from_defaults(persist_dir=persist_dir) self.index = load_index_from_storage(storage_context) print("✅ 索引加载完成") # 创建查询引擎 self.query_engine = self.index.as_query_engine( similarity_top_k=5, response_mode="compact" ) def query(self, question: str) -> dict: """查询知识库""" response = self.query_engine.query(question) # 提取来源 sources = [] if hasattr(response, 'source_nodes'): for node in response.source_nodes: sources.append({ "content": node.node.text[:200] + "...", "score": round(node.score, 3), "file": node.node.metadata.get("file_name", "未知") }) return { "answer": str(response), "sources": sources, "total_sources": len(sources) } # 使用示例 kb = EnterpriseKnowledgeBase(data_dir="company_docs/") result = kb.query("公司的休假政策是什么?") print(f"答案:{result['answer']}") print(f"来源:{result['total_sources']} 个文档")

代码量:~40 行
开发时间:~30 分钟
性能:⭐⭐⭐⭐⭐
维护成本:低

优点

  • ✅ 代码简洁,开箱即用
  • ✅ 自动索引持久化
  • ✅ 查询性能好
  • ✅ 来源追溯清晰

使用 LangChain ⭐⭐⭐⭐
from langchain_community.document_loaders import DirectoryLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.vectorstores import FAISS from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain.chains import RetrievalQA import os class EnterpriseKnowledgeBase: """企业知识库""" def __init__(self, data_dir="data/", persist_dir="./faiss_index"): self.persist_dir = persist_dir # 检查索引是否存在 if not os.path.exists(persist_dir): print("📚 正在构建索引...") # 加载文档 loader = DirectoryLoader(data_dir, glob="**/*.pdf") documents = loader.load() print(f"✅ 加载 {len(documents)} 个文档") # 文本分割 text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) chunks = text_splitter.split_documents(documents) print(f"✅ 分割为 {len(chunks)} 个片段") # 创建向量存储 embeddings = OpenAIEmbeddings() self.vectorstore = FAISS.from_documents(chunks, embeddings) self.vectorstore.save_local(persist_dir) print("✅ 索引构建完成") else: print("📚 加载现有索引...") embeddings = OpenAIEmbeddings() self.vectorstore = FAISS.load_local( persist_dir, embeddings, allow_dangerous_deserialization=True ) print("✅ 索引加载完成") # 创建检索器 self.retriever = self.vectorstore.as_retriever( search_kwargs={"k": 5} ) # 创建 QA 链 llm = ChatOpenAI(model="gpt-4", temperature=0) self.qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=self.retriever, return_source_documents=True ) def query(self, question: str) -> dict: """查询知识库""" result = self.qa_chain.invoke({"query": question}) # 提取来源 sources = [] for doc in result.get("source_documents", []): sources.append({ "content": doc.page_content[:200] + "...", "file": doc.metadata.get("source", "未知") }) return { "answer": result["result"], "sources": sources, "total_sources": len(sources) } # 使用示例 kb = EnterpriseKnowledgeBase(data_dir="company_docs/") result = kb.query("公司的休假政策是什么?") print(f"答案:{result['answer']}") print(f"来源:{result['total_sources']} 个文档")

代码量:~60 行
开发时间:~1 小时
性能:⭐⭐⭐⭐
维护成本:中

缺点

  • ❌ 代码量较多
  • ❌ 需要手动管理文本分割
  • ❌ 索引持久化稍复杂

结论:对于纯 RAG 场景,LlamaIndex 更简洁高效


案例 2:智能数据分析 Agent(多工具场景)

场景描述

  • 用户上传 Excel/CSV 数据
  • 用自然语言提问
  • Agent 自动分析并生成图表
  • 需要调用多个工具(数据加载、分析、可视化)

使用 LangChain(推荐)⭐⭐⭐⭐⭐
from langchain.agents import initialize_agent, Tool from langchain_openai import ChatOpenAI import pandas as pd import matplotlib.pyplot as plt class DataAnalysisAgent: """数据分析 Agent""" def __init__(self): self.df = None # 定义工具 tools = [ Tool( name="LoadData", func=self.load_data, description="加载数据文件(Excel/CSV)" ), Tool( name="QueryData", func=self.query_data, description="查询和分析数据" ), Tool( name="GenerateChart", func=self.generate_chart, description="生成可视化图表" ) ] # 初始化 Agent llm = ChatOpenAI(model="gpt-4", temperature=0) self.agent = initialize_agent( tools=tools, llm=llm, agent_type="zero-shot-react-description", verbose=True ) def load_data(self, file_path: str) -> str: """加载数据""" try: if file_path.endswith('.csv'): self.df = pd.read_csv(file_path) else: self.df = pd.read_excel(file_path) return f"✅ 数据加载成功,共 {len(self.df)} 行,{len(self.df.columns)} 列" except Exception as e: return f"❌ 加载失败:{str(e)}" def query_data(self, question: str) -> str: """查询数据""" if self.df is None: return "❌ 请先加载数据" try: # 这里可以集成 Pandas Agent # 简化版:直接返回提示 return f"📊 分析结果:根据数据,{question} 的答案是..." except Exception as e: return f"❌ 分析失败:{str(e)}" def generate_chart(self, chart_type: str) -> str: """生成图表""" if self.df is None: return "❌ 请先加载数据" try: plt.figure(figsize=(10, 6)) if chart_type == "bar": self.df.plot(kind='bar') elif chart_type == "line": self.df.plot(kind='line') elif chart_type == "pie": self.df.plot(kind='pie') plt.savefig('chart.png', bbox_inches='tight') return "✅ 图表已保存到 chart.png" except Exception as e: return f"❌ 生成图表失败:{str(e)}" def run(self, task: str) -> str: """执行任务""" return self.agent.run(task) # 使用示例 agent = DataAnalysisAgent() result = agent.run("帮我分析一下 sales_data.xlsx,并生成柱状图") print(result)

代码量:~70 行
开发时间:~1.5 小时
灵活性:⭐⭐⭐⭐⭐
可扩展性:⭐⭐⭐⭐⭐

优点

  • ✅ 工具调用灵活
  • ✅ 支持复杂工作流
  • ✅ 易于扩展新工具
  • ✅ Agent 自主决策

使用 LlamaIndex ⭐⭐⭐

LlamaIndex 不太适合这种多步骤、多工具的复杂任务,需要大量自定义代码来实现类似功能。

结论:对于 Agent 场景,LangChain 是更好的选择


案例 3:混合架构(LangChain + LlamaIndex)⭐⭐⭐⭐⭐

场景描述

  • 大型企业知识管理系统
  • 需要高效的文档检索(LlamaIndex 优势)
  • 需要复杂的任务编排(LangChain 优势)
  • 需要调用外部 API(天气、新闻、订单系统等)

最佳实践:结合两者优势
from langchain.agents import initialize_agent, Tool from langchain_openai import ChatOpenAI from llama_index.core import VectorStoreIndex, SimpleDirectoryReader class HybridRAGSystem: """混合 RAG 系统 - LangChain + LlamaIndex""" def __init__(self): # 1. 使用 LlamaIndex 构建知识库 print("📚 初始化知识库...") documents = SimpleDirectoryReader("knowledge_base/").load_data() self.index = VectorStoreIndex.from_documents(documents) self.query_engine = self.index.as_query_engine( similarity_top_k=5 ) print("✅ 知识库初始化完成") # 2. 定义工具 tools = [ Tool( name="KnowledgeBase", func=self.knowledge_search, description="在企业知识库中搜索信息" ), Tool( name="WeatherAPI", func=self.get_weather, description="查询天气信息" ), Tool( name="OrderSystem", func=self.query_order, description="查询订单状态" ) ] # 3. 使用 LangChain 构建 Agent llm = ChatOpenAI(model="gpt-4", temperature=0) self.agent = initialize_agent( tools=tools, llm=llm, agent_type="zero-shot-react-description", verbose=True ) def knowledge_search(self, query: str) -> str: """知识库搜索(使用 LlamaIndex)""" response = self.query_engine.query(query) return str(response) def get_weather(self, city: str) -> str: """查询天气(调用外部 API)""" # 实际项目中调用天气 API return f"{city} 今天晴天,温度 25°C" def query_order(self, order_id: str) -> str: """查询订单(调用订单系统)""" # 实际项目中调用订单 API return f"订单 {order_id} 状态:已发货" def run(self, question: str) -> str: """执行查询""" return self.agent.run(question) # 使用示例 system = HybridRAGSystem() # 场景 1:知识库查询 result = system.run("我们的退货政策是什么?") print(result) # 场景 2:多工具协作 result = system.run("查询订单 ORD123 的状态,并告诉我北京的天气") print(result)

代码量:~80 行
开发时间:~2 小时
功能完整性:⭐⭐⭐⭐⭐
性能:⭐⭐⭐⭐⭐

优点

  • ✅ LlamaIndex 负责高效检索
  • ✅ LangChain 负责任务编排
  • ✅ 结合两者优势
  • ✅ 适合复杂企业应用

结论:对于企业级应用,LangChain + LlamaIndex 是最佳组合


🌳 选型决策树


📈 生态系统对比

LangChain

优势

  • 社区庞大- GitHub 80k+ Stars,活跃度高
  • 集成丰富- 支持 100+ LLM、50+ 向量数据库
  • 文档完善- 官方文档详细,教程丰富
  • 企业支持- LangSmith(调试平台)、LangGraph(工作流)
  • 更新频繁- 每周都有新功能

劣势

  • ❌ API 变化快(经常 breaking changes)
  • ❌ 学习曲线较陡
  • ❌ 部分功能过于复杂
  • ❌ 版本兼容性需要注意

适用人群

  • 有经验的开发者
  • 需要高度定制化的项目
  • 大型团队协作

LlamaIndex

优势

  • 专注 RAG- 在该领域做到极致
  • API 稳定- 向后兼容性好
  • 性能优化- 索引和检索效率高
  • 文档友好- 入门教程清晰
  • 上手简单- 几行代码即可搭建 RAG

劣势

  • ❌ 社区相对较小(GitHub 30k+ Stars)
  • ❌ Agent 功能较弱
  • ❌ 集成数量较少
  • ❌ 高级功能学习成本高

适用人群

  • RAG 应用开发者
  • 快速原型验证
  • 中小规模项目

🎓 学习资源

LangChain

  • 官方文档:https://python.langchain.com/
  • GitHub:https://github.com/langchain-ai/langchain
  • Discord 社区:https://discord.gg/langchain
  • 中文教程:https://www.langchain.com.cn/
  • YouTube 教程:搜索 "LangChain Tutorial"

LlamaIndex

  • 官方文档:https://docs.llamaindex.ai/
  • GitHub:https://github.com/run-llama/llama_index
  • Discord 社区:https://discord.gg/llamaindex
  • 中文教程:https://www.llamaindex.ai/zh-CN
  • YouTube 教程:搜索 "LlamaIndex Tutorial"

推荐学习路径

初学者: 1. LlamaIndex 基础教程(1-2 天) 2. 搭建简单 RAG 应用(1 天) 3. LangChain 基础教程(2-3 天) 4. 理解 Agent 概念(1-2 天) 进阶者: 1. LangChain 高级功能(Chains、Agents) 2. LlamaIndex 高级检索策略 3. 两者结合使用 4. 生产环境部署和优化 专家级: 1. 源码阅读和理解 2. 自定义组件开发 3. 性能调优和监控 4. 贡献开源社区

💬 总结与建议

核心观点

  1. 没有绝对的好坏- 两个框架各有优势,关键看场景
  2. 可以结合使用- LangChain + LlamaIndex 是最佳实践
  3. 不要过早优化- 先用简单的方案验证想法
  4. 关注社区动态- 两个框架都在快速发展

最终建议

项目类型推荐方案理由预计开发时间
RAG 应用LlamaIndex专注、高效、易用1-2 天
Agent 应用LangChain灵活、强大、生态好3-5 天
企业级应用LangChain + LlamaIndex兼顾检索和编排1-2 周
快速原型LlamaIndex上手快、代码少半天
复杂工作流LangChain模块化、可扩展1-2 周
学习用途两者都学全面理解生态1-2 周

决策 Checklist

在开始项目前,问自己这些问题:

  • [ ] 我的主要需求是 RAG 还是 Agent?
  • [ ] 需要处理多少文档?
  • [ ] 是否需要调用外部工具/API?
  • [ ] 团队的技术栈和熟悉度如何?
  • [ ] 项目的规模和复杂度?
  • [ ] 是否需要快速上线?
  • [ ] 长期维护成本考虑?

根据答案,参考上面的决策树做出选择。


👨‍💻 关于作者

Lee- 职场宝爸 / AI 学习者

  • GitHub:https://github.com/Lee985-cmd
  • CSDN:https://blog.csdn.net/m0_67081842

我是一名普通的互联网从业者,也是一位职场爸爸。利用碎片时间学习 AI,并将学习过程整理成系列教程,希望能帮助更多想入门 AI 的朋友。


💬 交流讨论

如果你在使用过程中遇到问题,或者有好的建议,欢迎:

  1. GitHub Issues- 提交问题或建议
  2. 评论区留言- 在 CSDN 文章下方讨论

如果觉得这篇文章对你有帮助,欢迎:

  • Star项目支持
  • 👍点赞文章鼓励
  • 🔄转发分享给更多人

让我们一起在 AI 学习的道路上共同进步!🚀

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询