LangChain开发框架(二)--快速入门,大模型入门到精通,收藏这篇就足够了!

LangChain入门指南 LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。官方文档:https://python.langchain.com/en/latest/ 阅读详情

一、简单介绍

以目前比较热门的开发框架对比来看,LangChain始终保持快速迭代,其社区也是非常活跃,作为一个开发者想要在大模型开发取得更好的进步和成绩,最好是选择当前大家认可度比较高的框架作为开发语言,就像选择开发语言一样,训现阶段应该选择PyTorch,而不是tensorflow。

LangChain从大模型角度出发,通过开发人员在实践过程中对大模型能力的深入理解及其在不同场景下的涌现潜力,使用模块化的方式进行高级抽象,设计出统一接口以适配各种大模型。LangChain抽象出最重要的核心模块如下:

1) Model I/O(模型输入/输出)

做什么把“提示→模型→解析”做成标准化流程:

  • Prompt Templates:把输入格式化成模型需要的消息/文本(含 few-shot、多模态等)。(LangChain[1])
  • Chat Models:统一的聊天模型接口,配合一行初始化init_chat_model() 快速切不同厂商(OpenAI/Anthropic/Gemini/Bedrock/DeepSeek…)。(LangChain 文档[2])
  • Structured Output:当你要“结构化数据而非纯文本”时,优先用 .with_structured_output()(模型原生 JSON/函数调用能力)或输出解析器(StructuredOutputParser/PydanticOutputParser 等)。(LangChain[3])

怎么做(最常用 API)

  • ChatPromptTemplate 组织系统/用户消息。(LangChain[4])
  • init_chat_model("provider:model") 一行拿到正确实例(可推断 provider,且可做运行时可配置)。(LangChain[5])
  • model.with_structured_output(schema) 或 prompt | model | OutputParser 两条路。(LangChain[6])

何时用

  • 任何“单轮/轻编排”的对话、抽取、分类、结构化生成。

注意点

  • 先 bind_tools() 再 with_structured_output()(官方强调顺序以避免解析/工具冲突)。(LangChain[7])

2) Retrieval(检索)

做什么把外部知识(文件、网页、SQL/向量库等)接到模型前的“取数”环节:加载 → 切分 → 向量化/索引 → 检索。(LangChain 文档[8])

怎么做(常用组件)

  • Document Loaders / Text Splitters:RecursiveCharacterTextSplitter 是通用首选。(LangChain[9])
  • Embeddings + Vector Stores:把切片写入向量库(FAISS、Pinecone、PGVector…),然后通过统一的as_retriever() 暴露检索接口。(LangChain[10])
  • 官方“构建语义检索引擎”教程梳理了完整路径与实现。(LangChain[11])

何时用

  • RAG、FAQ、私有知识问答、多文档问答、代码/日志搜索等。

注意点

  • 先跑通“最小 RAG”(本地 FAISS + 简单提示),再逐步加多查询、重排、压缩等技巧,稳定再上云后端。(LangChain[12])

3) Chains(链 / LCEL 编排)

做什么用 LCEL(LangChain Expression Language) 把“输入→提示→模型→解析→后处理”等步骤像管道一样拼起来;天然支持同步/异步/批处理/流式。(LangChain[13])

怎么做(关键概念)

  • 任何实现了 Runnable 接口的组件都能 | 起来:prompt | model | parser,或并行/条件/映射等组合。(LangChain[14])

何时用

  • 线性或轻分支流程(对话、抽取、分类、调用一两步检索/工具)。

注意点

  • 复杂状态/分支/回环/多智能体/HITL 时,用 LangGraph 更稳(下文 Agents 也会提)。(LangChain[15])

4) Memory(对话/应用记忆)

做什么在多轮/多次调用中保存状态,把历史上下文注入后续调用,让模型更连贯。官方定义是“在链中维护过去执行的状态并注入到下一次输入”。(LangChain[16])

新建议(v0.3 之后)

  • 迁移到 LangGraph 的 persistence(持久化)来做 Memory:官方在 v0.3 指南中建议把记忆交给 LangGraph 的持久化机制来实现(更可控、更生产级)。(LangChain[17])

传统 Memory(了解即可)

  • ConversationBufferMemory / ConversationSummaryBufferMemory / ConversationTokenBufferMemory 等均已标注弃用迁移提示,仍可用但建议按迁移文档替换。(LangChain[18])

何时用

  • 多轮助手、任务编排中跨步状态、实体信息跟踪。

注意点

  • 生产上优先用 LangGraph + 持久化存储 取代老式“内存类”以获得可靠性与可观测性。(LangChain[19])

5) Agents(智能体)

做什么把 LLM 与工具组合,让其推理→决定调用哪个工具→执行→继续推理,迭代完成任务。LangChain 提供生产可用的 ReAct Agent 实现与 create_agent() 入口;LangGraph 提供预构建 Agent 与 ToolNode 等原语。(LangChain 文档[20])

工具调用(Tool Calling)

  • 用 .bind_tools([...]) 把工具 schema 绑定给模型;模型产生 tool_calls,再把执行结果回传形成闭环。(LangChain[21])

重点:MCP(Model Context Protocol)接入

  • 通过 langchain-mcp-adapters,LangChain / LangGraph Agent 可直接消费一个或多个 MCP 服务器暴露的工具(本地 stdio 或远端 HTTP/SSE)。官方指南与变更日志均已发布。(LangChain 文档[22])
  • 这意味着你能把“文件系统/云盘/CRM/自建 API”等 现成 MCP 工具秒变 LangChain 工具,无需重复封装。(Medium[23])

何时用

  • 多步任务、Web 操作、数据读写、自动化流程、企业业务集成。

注意点

  • 工具结果必须回传给模型继续推理;在 LangGraph 中可用 ToolNode/预构建 Agent 更好地管理状态与重试。(LangChain[24])

6) Callbacks(回调与可观测)

做什么在应用的各个阶段挂钩:日志、监控、流式输出、事件订阅;配合 LangSmith 做端到端追踪与评测(项目级追踪、链路、花费、失败排查)。(LangChain[25])

怎么做

  • LangSmith Tracing Quickstart:设置 LANGSMITH_PROJECT 等环境变量后即可把链/代理的每一步都记入可视化追踪。(LangChain 文档[26])
  • (JS/TS)v0.3 起 callbacks 默认非阻塞,避免回调阻塞主流程。(js.langchain.com[27])

何时用

  • 调优与回归评测;线上排障;审计合规;A/B 比较。

注意点

  • 一开始就把追踪接上,比“出事后补”更省成本。(LangChain 文档[28])

小结:如何把 6 个模块拼成可落地方案

  • 轻流程:Prompt → Model → (Structured) Parser 用 LCEL 串起来(可加检索 Retriever);适合多数“问答/抽取/分类/小工具”场景。(LangChain[29])
  • 复杂流程:有状态/回环/分支/多 Agent → 上 LangGraph(同时承担 Memory 持久化)。工具选择建议走 MCP 适配器,最大化生态复用。(LangChain[30])
  • 可观测与评估:用 Callbacks + LangSmith 打全链路追踪/监控/回归,避免“看不见、调不动”。(LangChain 文档[31])

二、快速入门实战演示

2.1 安装

建议创建一个新的虚拟环境来进行安装

Python ≥ 3.10

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
# LangChain 核心与常用组件
pip install -U langchain langchain-text-splitters langchain-community
# LangGraph(后文“编排”进阶用)
pip install -U langgraph
# 选一个模型提供商(本文以 DeepSeek 为例,同时给出 OpenAI/Gemini 入口)
pip install -U langchain-deepseek
# 或:OpenAI / Google GenAI
# pip install -U langchain-openai
# pip install -U "langchain[google-genai]"
# 本地向量库(RAG 最小可用)
pip install -U faiss-cpu

检查

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
(lc) PS C:\Users\Administrator> pip show langchain
Name: langchain
Version: 0.3.25
Summary: Building applications with LLMs through composability
Home-page:
Author:
Author-email:
License: MIT
Location: C:\ProgramData\anaconda3\envs\lc\Lib\site-packages
Requires: langchain-core, langchain-text-splitters, langsmith, pydantic, PyYAML, requests, SQLAlchemy
Required-by: langchain-community

2.2 模型接入

在进行LangChain开发之前,首先需要准备一个可以进行调用的大模型,这里我们选择使用DeepSeek的大模型,并使用DeepSeek官方的API_KEK进行调用。如果初次使用,需要现在DeepSeek官网上进行注册并创建一个新的API_Key,其官方地址为:https://platform.deepseek.com/usage

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain.chat_models import init_chat_model
# 方式A:显式声明 provider
model = init_chat_model(model="deepseek-chat", model_provider="deepseek")
# 方式B:合并写法(也可在其他厂商使用)
# llm = init_chat_model("deepseek:deepseek-chat")

规范输出

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from IPython.display import display, Markdown
question = "你好,请你介绍一下你自己。"
result = model.invoke(question)
display(Markdown(result.content))

你好!很高兴认识你!😊

我是DeepSeek,由深度求索公司创造的AI助手。让我来详细介绍一下自己:

我的特点:

  • 💬 我是一个纯文本模型,擅长理解和生成自然语言
  • 📁 支持文件上传功能——可以处理图像、txt、pdf、ppt、word、excel等文件,并从中读取文字信息
  • 🌐 具备联网搜索能力(需要你在Web/App中手动开启)
  • 💾 拥有128K的上下文长度,能记住我们对话中的很多细节

我能为你做什么:

  • 回答各种问题,提供知识解答
  • 协助写作、翻译、总结文档
  • 进行逻辑推理和分析
  • 创意写作和头脑风暴
  • 学习辅导和知识解释
  • 日常聊天和情感支持

重要提醒:

  • 我完全免费使用,没有任何收费计划
  • 目前不支持语音功能
  • 你可以通过官方应用商店下载App来使用我

我的知识截止到2024年7月,会尽我所能为你提供准确、有用的帮助。有什么想聊的或需要帮助的吗?我很乐意为你服务!✨

result本身包含很多人内容

ounter(line
AIMessage(content='你好!很高兴认识你!😊\n\n我是DeepSeek,由深度求索公司创造的AI助手。让我来详细介绍一下自己:\n\n**我的特点:**\n- 💬 我是一个纯文本模型,擅长理解和生成自然语言\n- 📁 支持文件上传功能——可以处理图像、txt、pdf、ppt、word、excel等文件,并从中读取文字信息\n- 🌐 具备联网搜索能力(需要你在Web/App中手动开启)\n- 💾 拥有128K的上下文长度,能记住我们对话中的很多细节\n\n**我能为你做什么:**\n- 回答各种问题,提供知识解答\n- 协助写作、翻译、总结文档\n- 进行逻辑推理和分析\n- 创意写作和头脑风暴\n- 学习辅导和知识解释\n- 日常聊天和情感支持\n\n**重要提醒:**\n- 我完全免费使用,没有任何收费计划\n- 目前不支持语音功能\n- 你可以通过官方应用商店下载App来使用我\n\n我的知识截止到2024年7月,会尽我所能为你提供准确、有用的帮助。有什么想聊的或需要帮助的吗?我很乐意为你服务!✨', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 247, 'prompt_tokens': 10, 'total_tokens': 257, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}, 'prompt_cache_hit_tokens': 0, 'prompt_cache_miss_tokens': 10}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_ffc7281d48_prod0820_fp8_kvcache', 'id': '3e42b190-a6f5-4ddc-afc8-f87711d102f8', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, id='run--4dabe111-2a9d-482a-a022-de112dbc4c96-0', usage_metadata={'input_tokens': 10, 'output_tokens': 247, 'total_tokens': 257, 'input_token_details': {'cache_read': 0}, 'output_token_details': {}})
这里先看一下其结构,后面会在介绍agent时具体讲解

还可以看到可以看到,仅仅通过两行代码,便可以在LangChain中顺利调用DeepSeek模型,并得到模型的响应结果。相较于使用DeepSeek的API,使用LangChain调用模型无疑是更加简单的。同时,不仅仅是DeepSeek模型,LangChain还支持其他很多大模型,如OpenAI、Qwen、Gemini等,我们只需要在init_chat_model函数中指定不同的模型名称,就可以调用不同的模型。其工作的原理是这样的:

理解了这个基本原理,如果大家想在用LangChain进行开发时使用其他大模型如Qwen3系列,则只需要先获取到Qwen3模型的API_KEY,然后安装Tongyi Qwen的第三方依赖包,即可同样通过init_chat_model函数来初始化模型,并调用invoke方法来得到模型的响应结果。关于LangChain都支持哪些大模型以及每个模型对应的是哪个第三方依赖包,大家可以在LangChain的官方文档中找到,当然,除了在线大模型的接入,langChain也只是使用Ollama、vLLM等框架启动的本地大模型。

2.3 链式调用方法

顾名思义,LangChain之所以被称为LangChain,其核心概念就是Chain。 Chain翻译成中文就是“链”。一个链,指的是可以按照某一种逻辑,按顺序组合成一个流水线的方式。比如我们刚刚实现的问答流程: 用户输入一个问题 --> 发送给大模型 --> 大模型进行推理 --> 将推理结果返回给用户。这个流程就是一个链。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt = ChatPromptTemplate.from_messages([
("system", "你是乐于助人的中文助手。"),
("human", "{question}")
])
llm = init_chat_model("deepseek:deepseek-chat")  # 或 openai:gpt-4o-mini, google_vertexai:gemini-2.5-flash
chain = prompt | llm | StrOutputParser()
print(chain.invoke({"question": "给我 3 条高效读论文的要点"}))

当然,高效阅读论文不仅能节省时间,还能快速抓住核心内容。以下是三条实用要点:

  1. 采用三遍阅读法,层层深入
  • 第一遍:快速浏览标题、摘要、图表和结论,判断论文是否相关,决定是否继续阅读。
  • 第二遍:精读引言、方法、结果,标记关键信息,忽略细节推导。
  • 第三遍:复现作者思路,深入理解实验设计和论证逻辑,提出批判性问题。
  1. 带着问题主动阅读,避免被动接收
  • 边读边问:“研究解决了什么缺口?”“方法的核心创新在哪?”“数据是否支撑结论?”
  • 用笔记工具(如MarginNote或表格)整理“问题-答案-疑点”,形成互动式阅读习惯。
  1. 善用工具与协作,提升效率
  • 用AI工具(如ChatGPT)快速解析复杂段落,或用翻译工具突破语言障碍。
  • 与同行讨论论文疑点,通过复述和辩论巩固理解,避免陷入思维盲区。

附加技巧:优先阅读高引论文和权威团队的综述,建立领域知识框架后再深入专题论文。

此时result就不再是包含各种模型调用信息的结果,而是纯粹的模型响应的字符串结果。而这里用到的StrOutputParser()实际上就是用于构成LangChain中一个链条的一个对象,其核心功能是用于处理模型输出结果。同时我们也能发现,只需要使用 Prompt |Model | OutputParser,即可高效搭建一个链。

一个最基本的Chain结构,是由Model和OutputParser两个组件构成的,其中Model是用来调用大模型的,OutputParser是用来解析大模型的响应结果的。所以一个最简单的LLMChain结构,其数据流向正如下图所示:  当我们调用指令跟随能力较强的大模型的时候,借助提示词模板即可实现结构化输出的结果。

  • 借助提示词模板和结果解析器实现功能更加复杂的链

至此,我们就搭建了一个非常基础的链。在LangChain中,一个基础的链主要由三部分构成,分别是提示词模板、大模型和结果解析器(结构化解析器):

用户输入 ↓ PromptTemplate → ChatModel → OutputParser (提示词模板) (大模型) (结构化解析) ↓ 构化结果

2.4 结构化输出:从“字符串”到“可用数据”

结构化解析器功能很多,一些核心的结构化解析器功能如下:

解析器名称功能描述类型
BooleanOutputParser将LLM输出解析为布尔值基础类型解析
DatetimeOutputParser将LLM输出解析为日期时间基础类型解析
EnumOutputParser解析输出为预定义枚举值之一基础类型解析
RegexParser使用正则表达式解析LLM输出模式匹配解析
RegexDictParser使用正则表达式将输出解析为字典模式匹配解析
StructuredOutputParser将LLM输出解析为结构化格式结构化解析
YamlOutputParser使用Pydantic模型解析YAML输出结构化解析
PandasDataFrameOutputParser使用Pandas DataFrame格式解析输出数据处理解析
CombiningOutputParser将多个输出解析器组合为一个组合解析器
OutputFixingParser包装解析器并尝试修复解析错误错误处理解析
RetryOutputParser包装解析器并尝试修复解析错误错误处理解析
RetryWithErrorOutputParser包装解析器并尝试修复解析错误错误处理解析
ResponseSchema结构化输出解析器的响应模式辅助类
2.4.1 布尔解析(BooleanOutputParser)

一些功能实现如下,例如借助结构化解析器可以将yes or no转化为True or Fasle:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain.output_parsers.boolean import BooleanOutputParser
prompt_template = ChatPromptTemplate([
("system", "你是一个乐意助人的助手,请根据用户的问题给出回答"),
("user", "这是用户的问题: {topic}, 请用 yes 或 no 来回答")
])
# 直接使用模型 + 输出解析器
bool_qa_chain = prompt_template | llm | BooleanOutputParser()
# 测试
question = "请问 1 + 1 是否 大于 2?"
result = bool_qa_chain.invoke(question)
2.4.2 结构化 JSON(StructuredOutputParser + ResponseSchema)

StructuredOutputParser则可以在文档中提取指定的结构化信息:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain.output_parsers import ResponseSchema, StructuredOutputParser
from langchain_core.prompts import PromptTemplate
schemas = [
ResponseSchema(name="name", description="用户的姓名"),
ResponseSchema(name="age", description="用户的年龄")
]
parser = StructuredOutputParser.from_response_schemas(schemas)
prompt = PromptTemplate.from_template(
"请根据以下内容提取用户信息,并返回 JSON 格式:\n{input}\n\n{format_instructions}"
)
chain = (
prompt.partial(format_instructions=parser.get_format_instructions())
| llm
| parser
)
result = chain.invoke({"input": "用户叫李雷,今年25岁,是一名工程师。"})
print(result)

{‘name’: ‘李雷’, ‘age’: ‘25’}

这里可以具体看一下parser的结构

ounter(lineounter(lineounter(line
parser
StructuredOutputParser(response_schemas=[ResponseSchema(name='name', description='用户的姓名', type='string'), ResponseSchema(name='age', description='用户的年龄', type='string')])

调用 parser.get_format_instructions() 可自动生成 LLM 能理解的格式要求(例如:“请以 JSON 格式输出,包含以下字段:name(用户的姓名)、age(用户的年龄),不要输出其他内容”);

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
print(parser.get_format_instructions())
The output should be a markdown code snippet formatted in the following schema, including the leading and trailing "```json" and "```":
```json
{
"name": string  // 用户的姓名
"age": string  // 用户的年龄
}
ResponseSchema:定义「结构化输出的字段规则」,包括字段名称(name)和字段含义描述(description),用于告诉 LLM 要提取哪些信息。StructuredOutputParser:「结构化输出解析器」,有两个核心作用:- 自动生成 格式指令(如 “请用 JSON 输出,包含 name 和 age 字段”),避免手动写复杂的格式要求;- 将 LLM 输出的文本(如 JSON 字符串)自动解析为 Python 字典,无需手动处理字符串转 JSON。PromptTemplate:LangChain 的「提示词模板」,用于标准化 LLM 的输入格式,避免每次调用都重复写相同的提示词框架。

2.5. 组合多个子链

LCEL 的任何一步都能插入一个 RunnableLambda 做打印/变换,便于中间态调试:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
# 第一步:根据标题生成新闻正文
news_gen_prompt = PromptTemplate.from_template(
"请根据以下新闻标题撰写一段简短的新闻内容(100字以内):\n\n标题:{title}"
)
# 第一个子链:生成新闻内容
news_chain = news_gen_prompt | model
# 第二步:从正文中提取结构化字段
schemas = [
ResponseSchema(name="time", description="事件发生的时间"),
ResponseSchema(name="location", description="事件发生的地点"),
ResponseSchema(name="event", description="发生的具体事件"),
]
parser = StructuredOutputParser.from_response_schemas(schemas)
summary_prompt = PromptTemplate.from_template(
"请从下面这段新闻内容中提取关键信息,并返回结构化JSON格式:\n\n{news}\n\n{format_instructions}"
)
# 第二个子链:生成新闻摘要
summary_chain = (
summary_prompt.partial(format_instructions=parser.get_format_instructions())
| model
| parser
)
# 组合成一个复合 Chain
full_chain = news_chain | summary_chain
# 调用复合链
result = full_chain.invoke({"title": "苹果公司在加州发布新款AI芯片"})
print(result)

{‘time’: ‘未明确提及’, ‘location’: ‘加州’, ‘event’: ‘苹果公司发布新款AI芯片,显著提升设备端AI处理能力,采用先进架构支持更复杂机器学习任务,将应用于新一代iPhone及Mac产品’}

**代码脉络:**用户输入(title)
│
▼
┌────────────────────────────┐
│ Chain 1: 生成新闻正文 │
│ Prompt: news_gen_prompt │
│ Model: DeepSeek │
└────────────────────────────┘
│
▼
生成的新闻内容(news)
│
▼
┌───────────────────────────────────────┐
│ Chain 2: 提取结构化字段(摘要) │
│ Prompt: summary_pro mpt │
│ Model: DeepSeek │
│ OutputParser: StructuredOutputParser │
└───────────────────────────────────────┘
│
▼
结化输出(如 JSON:时间、地点、事件)

2.6 自定义运行节点

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain_core.runnables import RunnableLambda
from langchain_core.runnables import RunnableLambda
# 一个简单的打印函数,调试用
def debug_print(x):
print("中间结果(新闻正文):", x)
return x
debug_node = RunnableLambda(debug_print)
# 插入 debug 节点
full_chain = news_chain | debug_node | summary_chain

中间结果(新闻正文): content=‘苹果公司在加州发布新款AI芯片,显著提升设备端人工智能处理能力。该芯片采用先进架构,支持更复杂的机器学习任务,有望应用于新一代iPhone及Mac产品,为用户带来更智能、高效的体验。’ additional_kwargs={‘refusal’: None} response_metadata={‘token_usage’: {‘completion_tokens’: 44, ‘prompt_tokens’: 29, ‘total_tokens’: 73, ‘completion_tokens_details’: None, ‘prompt_tokens_details’: {‘audio_tokens’: None, ‘cached_tokens’: 0}, ‘prompt_cache_hit_tokens’: 0, ‘prompt_cache_miss_tokens’: 29}, ‘model_name’: ‘deepseek-chat’, ‘system_fingerprint’: ‘fp_ffc7281d48_prod0820_fp8_kvcache’, ‘id’: ‘80136b1a-f3d3-49e5-aa4d-cb636bd4e909’, ‘service_tier’: None, ‘finish_reason’: ‘stop’, ‘logprobs’: None} id=‘run–b98c21e2-a01b-4d88-a3e1-3a331aaac8ba-0’ usage_metadata={‘input_tokens’: 29, ‘output_tokens’: 44, ‘total_tokens’: 73, ‘input_token_details’: {‘cache_read’: 0}, ‘output_token_details’: {}} {‘time’: ‘未提及’, ‘location’: ‘加州’, ‘event’: ‘苹果公司发布新款AI芯片,显著提升设备端人工智能处理能力,采用先进架构支持更复杂机器学习任务,将应用于新一代iPhone及Mac产品’}

通过上述不同的尝试,我们就已经理解了在langChain中,如何使用Model、OutputParser、ChatPromptTemplate来构建一个简单的Chain。其中:

  1. ChatPromptTemplate 是用来构建提示模板的,将输入的问题转化为消息列表,可以设置系统指令,也可以添加一些变量;
  2. Model 是用来调用大模型的,可以指定使用不同的模型;
  3. OutputParser 是用来解析大模型的响应结果的,可以指定使用不同的解析器。

2.7 流式输出

大家经常看到的问答机器人其实都是采用流式传输模式。用户输入问题,等待模型直接返回回答,然后用户再输入问题,模型再返回回答,这样循环下去,用户输入问题和模型返回回答之间的时间间隔太长,导致用户感觉机器人反应很慢。所以LangChain提供了一个astream方法,可以实现流式输出,即一旦模型有输出,就立即返回,这样用户就可以看到模型正在思考,而不是等待模型思考完再返回。

实现的方法也非常简单,只需要在调用模型时将invoke方法替换为astream方法,然后使用async for循环来获取模型的输出即可。代码如下:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain_core.output_parsers import StrOutputParser
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "你叫小智,是一名乐于助人的助手。"),
("human", "{input}")
])
llm = init_chat_model("deepseek:deepseek-chat")
qa_chain = prompt | llm | StrOutputParser()
async def demo():
async for chunk in qa_chain.astream({"input": "简单介绍下你自己"}):
print(chunk, end="", flush=True)
await demo()

你好!我是小智,一名乐于助人的智能助手。我的主要任务是为你提供信息、解答问题、协助处理日常事务,或者陪你聊天。无论是学习、工作、生活还是娱乐相关的问题,我都会尽力帮助你。随时欢迎向我提问或分享你的想法! 😊

2.8 前端交互界面

首先需要安装一下gradio的第三方依赖包,

ounter(lineounter(line
# 安装 Gradio
! pip install gradio

完整代码:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
import gradio as gr
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = init_chat_model("deepseek:deepseek-chat")
system_prompt = ChatPromptTemplate.from_messages([
("system", "你叫小智,是一名乐于助人的助手。"),
("human", "{input}")
])
qa_chain = system_prompt | llm | StrOutputParser()
async def chat_response(message, history):
partial = ""
async for chunk in qa_chain.astream({"input": message}):
partial += chunk
yield partial
with gr.Blocks(title="LangChain x DeepSeek Demo") as demo:
chat = gr.Chatbot(height=480)
msg = gr.Textbox()
send = gr.Button("发送")
async def on_send(m, h):
h = h + [(m, None)]; yield "", h
async for resp in chat_response(m, h):
h[-1] = (m, resp); yield "", h
send.click(on_send, [msg, chat], [msg, chat])
demo.launch()
c:\ProgramData\anaconda3\envs\lc\Lib\site-packages\pydantic\_internal\_generate_schema.py:276: RuntimeWarning: coroutine 'demo' was never awaited
def _add_custom_serialization_from_json_encoders(
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
C:\Users\Administrator\AppData\Local\Temp\ipykernel_37552\1905437079.py:20: UserWarning: You have not specified a value for the `type` parameter. Defaulting to the 'tuples' format for chatbot messages, but this is deprecated and will be removed in a future version of Gradio. Please set type='messages' instead, which uses openai-style dictionaries with 'role' and 'content' keys.
chat = gr.Chatbot(height=480)
* Running on local URL:  http://127.0.0.1:7861
* To create a public link, set `share=True` in `launch()`.

在这里插入图片描述

2.9 最小RAG

RAG 典型流水线:加载/切分 → 向量化入库 → 检索 → 组装上下文 → 生成。建议先用本地 FAISS 起步,再切换云向量库。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain.embeddings import init_embeddings
from langchain_core.runnables import RunnablePassthrough
docs = [
"LangChain 将 LLM、工具、检索串成可观测工作流。",
"LangGraph 用状态图编排多步骤/多智能体流程,适合生产级代理。"
]
splits = RecursiveCharacterTextSplitter(chunk_size=120, chunk_overlap=20)\
.create_documents(docs)
emb = init_embeddings("openai:text-embedding-3-small", openai_api_key="sk-e53", openai_api_base="https:/v1")  # 可换本地/其他厂商
vectordb = FAISS.from_documents(splits, emb)
retriever = vectordb.as_retriever()  # 统一检索接口
prompt = ChatPromptTemplate.from_messages([
("system", "仅依据给定{context}回答;若缺少依据请说“我不知道”。"),
("human", "{question}")
])
llm = init_chat_model("deepseek:deepseek-chat")
def join_docs(docs): return "\n\n".join(d.page_content for d in docs)
rag = ({"context": retriever | join_docs, "question": RunnablePassthrough()}
| prompt | llm | StrOutputParser())
print(rag.invoke( "LangGraph 适合哪些场景?"))

根据给定信息,LangGraph 适合以下场景:

  1. 编排多步骤流程
  • 适用于需要按顺序或条件执行多个步骤的任务,例如数据处理、决策流程或复杂查询处理。
  1. 多智能体系统
  • 支持多个智能体(如不同功能的 LLM 或工具)协同工作,通过状态图管理它们之间的交互和状态转移。
  1. 生产级代理应用
  • 设计用于构建可靠、可扩展的生产环境系统,集成 LLM、工具和检索组件,并确保工作流可观测。

如果涉及具体技术细节或超出上述范围,请提供更多上下文,我将尽力协助。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
RecursiveCharacterTextSplitter:推荐的通用文本切分器,按段落→句子→词的优先级递归切分,得到均匀的 chunk。
FAISS:本地内存型向量库,快速完成相似度检索;LangChain 内置了便捷构建方法。
init_embeddings:一行初始化嵌入模型;参数(如 API base、key)会透传到具体 provider 的集成。
RunnablePassthrough:LCEL 的“原样透传”节点,常和并行映射一起用来把“原始输入”带到后续步骤(比如把用户问题同时送给 Prompt 的 {question})。

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!

👇👇扫码免费领取全部内容👇👇

​

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:

1. 100+本大模型方向电子书

在这里插入图片描述

2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。

3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

在这里插入图片描述

  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:


三、路线必明: AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

在这里插入图片描述

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img
四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

​

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!

Langchain 新手完全指南 Langchain 可能是目前在 AI 领域中最热门的事物之一,仅次于向量数据库。 阅读详情

相关推荐

Langchain实战指南:从入门到精通AI链式编程!

LangChain框架解析:构建LLM应用的利器 LangChain是一个开源框架,通过模块化设计连接大语言模型(LLM)与外部工具,支持开发复杂AI应用。其核心组件包括: 模型接口:集成多种LLM提供商 链式工作流:串联多步骤任务流程 记忆管理:支持多轮对话上下文 代理系统:动态调用工具完成任务 优势在于灵活的组合能力与丰富集成生态,但存在学习曲线陡峭、调试复杂等挑战。该框架特别适用于需要结合检索、记忆和工具调用的智能应用开发,为LLM工程化提供标准化解决方案。

女王の专属领地 589

LangChain 中文入门教程

LangChain官方文档假如我们想要用openai api对一段文本进行总结,我们通常的做法就是直接发给 api 让他总结。但是如果文本超过了 api 最大的 token 限制就会报错。这时,我们一般会进行对文章进行分段,比如通过tiktoken计算并分割,然后将各段发送给 api 进行总结,最后将各段的总结再进行一个全部的总结。LangChain可以很好的帮我们处理这个过程,代码也很简单。

qq_56591814的博客 6万+

Starlink第三代终端和第二代终端的差异性有哪些?

starlink第三代终端和第二代终端的额差异

chen2jiang3的博客 2925

AI系统性学习—LangChain入门

LangChain是一个开源的Python库,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain,开发者轻松地与大语言模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以基于LLM构建属于自己的创建应用。LLM和Prompt:LangChain对所有LLM大模型进行了API抽象,统一了大模型访问API,同时提供了Prompt提示模型管理机制。Chain:这些是对LLM或其他使用程序的调用序列。

weixin_43495948的博客 2971

2026年数字IC设计禾赛科技笔试带答案解析

本文介绍了一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含15道单选题(30分)、10道填空题(20分)和5道简答/编程题(50分),总分100分,考试时长120分钟。单选题涉及同步时序电路、Verilog语法、跨时钟域设计、FPGA优化、存储器层次、功耗优化等知识点;填空题考查环形振荡器、工艺参数、时序约束、LUT结构等基础概念。试题重点考察应聘者对数字电路设计核心概念的理解和实际工程应用能力,特别是针对激光雷达芯片设计中的关键技术点进行考核。

Open 123

单板电源设计(LDO、DC/DC)

高速电路设计的电源架构 在电路设计中,一块单板往往涉及多种电源,常见的如5V/3.3V/2.5V/1.8V/1.5V/1.2V/1V0.9V/0.75V等,如此多种类的电源不可能都直接通过背板从电源板获得。一般,单板仅有一种或者两种输入电源,如48V或12V,再由它们产生单板上器件所需要的电源。 单板如何由输入电源生成所需电源,常见有两种架构:集中式电源架构和分布式电源架构。 ...

sinat_15677011的博客 8330

使用 LangChain 快速构建 RAG 应用,langchain从入门到精通,收藏这篇就足够了

相信你现在已经知道如何使用 LangChain 快速构建 RAG 应用。建议你不妨亲自动手去实践,使用 LangChain 去构建出一个自己的 RAG 应用。

Y525698136的博客 1355

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2795

LangChain框架入门01:LangChain是什么?大模型入门到精通,收藏这篇就足够了!

LangChain 是一个强大又灵活的大模型开发框架,它将 LLM 的调用和创建、提示词管理、记忆、知识库、RAG检索、工具调用等模块化,通过LangChain快速构建 AI 应用。

DEVELOPERAA的博客 1107

图文教程本地部署开源扣子Coze Studio工作流并接入 Gemini 大模型(windows亲测) Coze Studio 本地部署、Gemini 模型接入、开源 AI 工具平台、大模型工作流搭建

本文介绍了在Windows系统本地部署开源AI工具平台Coze Studio并接入Google Gemini大模型的完整教程。主要内容包括:1) 环境准备要求(Docker等);2) 获取源码和配置Gemini模型(需API密钥);3) 通过Docker Compose部署服务;4) 浏览器访问验证。文章指出该平台适合私有化部署,支持智能体和工作流搭建,但也存在插件系统不完善等局限。最后提供了相关资源链接,为开发者实现本地AI解决方案提供了实用指南。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2780

MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间?

大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2966

LangChain Agent开发概述,大模型入门到精通,收藏这篇就足够了!

LangChain是一个强大的框架,可简化基于大语言模型(LLM)的应用程序开发,以下是LangChain Agent开发的相关技术

huang9604的博客 894

MIPI D-PHY IP 使用说明(一)

目录 前言 一、IP 特点 二、IP 可用性 三、IP 总览 四、IP 声明 五、IP 结构 六、IP 分流桥 模式 七、端口描述 1、PPI 接口信号 1、常规 PPI控制信号 2、发送模式 时钟通道 高速 PPI 信号 3、发送模式 时钟通道 逃逸模式PPI 信号 4、发送模式 数据通道 高速 PPI 信号 5、发送模式 数据通道 控制接口PPI 信号 6、发送模式 ...

记录所学,分享知识,结识挚友 2504

一文彻底搞懂什么是LangChain?从入门到精通,看这篇就足够了!

LangChain是一个专门为利用语言模型创建应用程序而设计的全面框架。它的主要目标是帮助开发人员轻松构建基于语言模型的应用。虽然LangChain与多种语言模型兼容,但它特别与OpenAI ChatGPT无缝集成,从中受益于其先进功能。本文学习知识点: 语言模型(LLMs)和LangChain。提示工程。语言模型的内存。语言模型的链式结构。LangChain索引。工具和代理。

2401_85375186的博客 2576

全面解读 SAP Business Data Cloud

SAP 在 2025 年初正式推出(简称BDC),它把、以及全新的统一封装为一项完全托管的 SaaS 服务,配套交付“语义层 + 数据产品 + 智能应用”三层能力,为企业构建真正贴近业务语境的 “Business Data Fabric”。这一方案不仅解决了跨系统数据碎片化、治理难及 AI 训练数据可信度低的问题,还为现有 BW 客户、S/4HANA以及第三方工作负载提供云上现代化路径和零拷贝数据共享机制。本文将围绕技术架构、核心组件、业务场景、迁移路线及未来展望展开,以 Henkel 等真实案例佐证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 909

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

什么是LangChain,大模型入门到精通,收藏这篇就足够了!

今天,我们系统地拆解LangChain的技术架构、核心组件和实战应用,帮助你快速掌握这个改变LLM应用开发范式的框架。

python1234567_的博客 1193

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

什么是LangChain,LangChain入门到精通,收藏这篇就足够了!

今天,我们系统地拆解LangChain的技术架构、核心组件和实战应用,帮助你快速掌握这个改变LLM应用开发范式的框架。

Y525698136的博客 1328

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LangGraph vs. LangChain:怎么选,大模型入门到精通,收藏这篇就足够了!

最近,我正在进行一个有趣的项目:将我之前用 NodeJS 开发的 Agent 框架,迁移到更适合桌面应用的 Electron 上。

2301_81940605的博客 1169

LangChain集成DeepSeek实现AI对话,大模型入门到精通,收藏这篇就足够了!

本文介绍如何使用AI开源框架 LangChain,集成调用DeepSeek大模型,实现AI对话功能,并给出Python示例代码。

huang9604的博客 1451

LangChain从入门到精通,非常详细,收藏这一篇就够了!!!

LangChain从入门到精通,非常详细,收藏这一篇就够了!!!

ytt0523_com的博客 5514

AI应用开发入门:LangChain核心概念与学习资源推荐,大模型入门到精通,收藏这篇就足够了!

自2025年初以来,我一直在深入研究与AI应用相关的多个领域,包括提示工程、AI编程、AI工作流以及MCP等。

DEVELOPERAA的博客 1606

langchain从入门到精通——langchain基本概念,大模型入门到精通,收藏这篇就足够了!

用 LLM API 就像造房子时只给你一把锤子 —— 能敲钉子没错,但你要造完整一栋房子,还需要水、电、管道、结构、施工计划等等工具和组织方式。

huang9604的博客 867

LangChain从入门到实践——LangChain介绍,大模型入门到精通,收藏这篇就足够了!

LangChain 是一个基于 python 语言的模块化、可组合、面向开发者的开源框架,旨在简化基于大型语言模型的应用程序开发。

pythonhy的博客 1325

从0到1精通LangChain:Part 1,大模型入门到精通,收藏这篇就足够了!

LangChain 它主要是一个为了 LLM 就是诞生的开源开发框架。它其实就是把语言模型调用、知识检索、还有语义搜索这些很常见的流程都给封装好啦。

pythonhy的博客 1243

LangChain入门系列(一)大模型入门到精通,收藏这篇就足够了!

LangChain是一个用于开发由大型语言模型(LLMs)驱动的应用程序框架,旨在帮助广大开发者简化大模型应用的开发。

2301_81888214的博客 930

你应该懂的AI大模型(四)之 LangChain,大模型入门到精通,收藏这篇就足够了!

LangChain是一个开源框架,是一个 LLM 变成框架,它允许开发人员将大模型、外部计算、数据源结合起来。

2301_81888214的博客 1202
上一篇: LangChain开发框架(一)--基础介绍,大模型入门到精通,收藏这篇就足够了!
下一篇: LangChain开发框架(三)-- LECL介绍及LangChain基本使用方法,大模型入门到精通,收藏这篇就足够了!
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值