4小时100美元!Andrej Karpathy新开源项目nanochat,人人都能拥有专属ChatGPT
nanochat的推出,不仅是一个开源项目的发布,更是LLM技术“平民化”的重要里程碑。它打破了“大模型训练需要巨额成本”的固有认知,让普通开发者也能以极低的成本实践LLM全流程开发,真正实现了“人人都能拥有专属ChatGPT”。从技术角度看,nanochat并非颠覆性创新,但其“极简、实用、易上手”的设计理念,恰好击中了当前开源LLM领域的痛点——许多开源项目要么过于复杂,要么性能不足,而nan
4小时100美元!Andrej Karpathy新开源项目nanochat,人人都能拥有专属ChatGPT
在开源领域,每隔一段时间就会有突破性项目引发关注。近日,AI领域大神Andrej Karpathy推出的全新开源项目nanochat,仅用两天时间就在GitHub上斩获14.9k星标,成为当下最热门的开源项目之一。这个项目不仅延续了Karpathy一贯极简、易懂的风格,更打破了人们对LLM(大语言模型)训练的固有认知——无需巨额成本和复杂技术,普通人也能在短时间内搭建属于自己的ChatGPT克隆模型。
一、项目核心亮点:低门槛、全流程、高性价比
nanochat之所以能迅速引爆开源社区,核心在于它解决了LLM开发领域的三大痛点:高门槛、高成本、流程碎片化。与Karpathy此前推出的nanoGPT仅覆盖预训练不同,nanochat是一个从0到1的全栈LLM解决方案,从数据处理到模型部署,所有环节都被整合进简洁的代码框架中。
1. 极致精简的技术架构
nanochat的代码库仅有约8000行代码,且几乎全部由Karpathy手工编写(仅借助Tab自动补全功能)。他在开发过程中曾尝试使用Claude、Codex等AI代码生成工具,但因项目需求与现有工具的数据分布差异较大,最终选择纯手工编码,确保代码的简洁性和可修改性。
该项目采用类Llama(羊驼)的模型架构,并进行了轻量化优化,核心技术亮点包括:
- 采用密集Transformer结构,减少冗余计算
- 使用旋转嵌入(Rotary Embeddings)替代传统位置嵌入,降低模型复杂度
- 引入QK范数(QK Norm)提升训练稳定性
- 实现嵌入与解嵌入层权重解绑,增强模型表达能力
- 在token嵌入后增加归一化操作,优化梯度传播
这种精简架构不仅降低了代码理解难度,也让模型对硬件的要求大幅降低,为普通开发者参与LLM训练提供了可能。
2. 全流程自动化训练
nanochat将LLM开发的完整流程封装成可一键运行的脚本,涵盖标记化、预训练、中期训练、监督微调、评估、推理及Web服务部署七大核心环节。开发者无需手动配置各环节参数,只需执行对应脚本,即可完成从数据处理到模型可用的全流程操作。
以完整训练流程为例,仅需三步即可启动:
- 搭建依赖环境:安装uv虚拟环境、Rust/Cargo工具链,编译分词器
- 执行训练脚本:运行
bash speedrun.sh启动全流程训练,支持后台日志记录(screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh) - 部署交互界面:训练完成后,通过
python -m scripts.chat_web启动Web UI,访问指定URL即可与模型对话
这种自动化设计,让缺乏LLM开发经验的开发者也能快速上手,真正实现“零门槛”搭建专属大模型。
3. 超高性价比的训练方案
传统LLM训练往往需要数百万美元的成本和数周的时间,而nanochat将训练成本和时间压缩到了普通人可承受的范围:
- 基础版:100美元预算+4小时训练,即可获得具备基础对话能力的ChatGPT克隆模型
- 进阶版:增加训练时长至12小时,模型性能可超越GPT-2
- 专业版:1000美元预算+41.6小时训练,模型能解决简单数学题(GSM8K)和编程任务(HumanEval),并具备更高对话连贯性
训练所需硬件也无需顶级配置,Karpathy使用8XH100 GPU即可完成全流程训练,普通开发者可通过Lambda等云服务供应商租用硬件,进一步降低入门成本。
二、模型性能:从“幼儿园水平”到“超越GPT-2”的进阶之路
尽管nanochat主打低门槛和低成本,但在性能上仍有清晰的进阶路径。Karpathy将基础版模型比作“幼儿园小朋友”,计算能力仅为4e19,但通过增加训练时长和预算,模型性能能实现阶梯式提升。
1. 各阶段性能指标
nanochat的训练分为预训练、中期训练(Midtraining)、监督微调(SFT)和可选的强化学习(RL)四个阶段,各阶段性能指标如下表所示:
| 指标 | 预训练(BASE) | 中期训练(MID) | 监督微调(SFT) | 强化学习(RL) |
|---|---|---|---|---|
| CORE(核心指标) | 0.2219 | - | - | - |
| ARC-Easy(常识问答) | - | 0.3561 | 0.3876 | - |
| ARC-Challenge(复杂常识) | - | 0.2875 | 0.2807 | - |
| MMLU(多任务语言理解) | - | 0.3111 | 0.3151 | - |
| GSM8K(数学推理) | - | 0.0250 | 0.0455 | 0.0758 |
| HumanEval(编程任务) | - | 0.0671 | 0.0854 | - |
| ChatCORE(对话核心指标) | - | 0.0730 | 0.0884 | - |
从指标可见,经过监督微调后,模型在常识问答(ARC-Easy)、数学推理(GSM8K)和编程任务(HumanEval)上的性能均有提升,其中GSM8K准确率从0.0250提升至0.0455,提升幅度达82%;若进一步进行强化学习,GSM8K准确率可提升至0.0758,接近基础版的3倍。
2. 实际对话能力展示
基础版nanochat已具备基础对话和简单任务处理能力,以下是实际对话示例:
- 用户:Hello whats up?(你好,最近怎么样?)
- 模型:Hello! How can I help you today?(你好!今天我能为你提供什么帮助?)
- 用户:Why is the sky blue?(天空为什么是蓝色的?)
- 模型:The sky is blue due to an optical illusion called the Rayleigh Scattering of Light, which occurs when sunlight passes through tiny particles in the air. These particles are made up of tiny blue and violet particles that cause the light to bend in a particular way.(天空呈现蓝色是由于一种名为瑞利光散射的光学现象,当阳光穿过空气中的微小颗粒时会发生这种现象。这些颗粒由微小的蓝色和紫色粒子组成,会使光线以特定方式折射。)
- 用户:That’s cool. Write a poem about it.(太有趣了,写一首关于它的诗吧。)
- 模型:In the twilight’s glow, the sky is blue, A canvas of shimmering blue, where skies unfold, A world of blue, where blue and more blue, Are woven together in a tapestry so fine, Where every hue seems to sing a story. The light, a gentle breeze, caresses the sky, A gentle breeze that brings joy to every corner, Illuminating the blue glow that follows, The canvas is blue, the canvas is blue, A canvas of stars, with gentle light to follow.(在暮色的光辉中,天空湛蓝, 一片闪烁的蓝色画布,天空在此展开, 一个蓝色的世界,满是湛蓝, 编织成精致的挂毯, 每一种色调都似在诉说故事。 光线如轻柔的微风,拂过天空, 微风带来每个角落的喜悦, 照亮随之而来的蓝色光辉, 画布是蓝色的,画布是蓝色的, 一片星光画布,伴随着温柔的光芒。)
虽然基础版模型的回答在深度和丰富度上不及GPT-3.5及以上模型,但已能满足日常对话和简单创作需求,对于低成本模型而言表现已超出预期。
3. 分词器性能对比
分词器是LLM的核心组件之一,直接影响模型的训练效率和生成质量。nanochat采用与OpenAI相同的分词算法(正则表达式拆分+字节级BPE),训练数据集为20亿字符,仅需1分钟即可完成训练。
与GPT-4分词器的对比数据如下:
| 文本类型 | GPT-4分词效率(字节/Token) | nanochat分词效率(字节/Token) | 相对差异 | 优势方 |
|---|---|---|---|---|
| 新闻(News) | 4.70 | 4.85 | +3.1% | nanochat |
| 韩语(Korean) | 2.45 | 1.25 | -95.6% | GPT-4 |
| 数学(Math) | 2.20 | 4.88 | -59.2% | GPT-4 |
| 科学(Science) | 4.07 | 2.56 | -16.1% | GPT-4 |
| 代码(Code) | 4.47 | 1.90 | +8.4% | nanochat |
| 预训练训练集(FWE-Train) | 4.77 | 4.86 | +2.0% | nanochat |
| 预训练验证集(FWE-Val) | 4.81 | 4.91 | +1.9% | nanochat |
尽管GPT-4分词器因词汇量更大(100277)在多语言和专业领域表现更优,但nanochat的分词器在新闻、代码和预训练数据集上的效率更高,更适配其轻量化定位,且训练成本和时间远低于GPT-4分词器。
三、项目开发背景:从AI大神到“开源教育者”
nanochat的诞生,与作者Andrej Karpathy的职业经历和技术理念密不可分。作为AI领域的顶尖学者和工程师,Karpathy始终致力于降低AI技术的门槛,让更多人能理解和使用大模型技术。
1. Karpathy的AI生涯:从学术到产业的全维度深耕
Andrej Karpathy的AI之路始于学术,后逐步深入产业,最终成为连接学术与产业的关键人物:
- 学术起步:1986年出生于斯洛伐克,15岁随家人移居加拿大。2009年获多伦多大学计算机科学与物理学学士学位,2011年获英属哥伦比亚大学硕士学位,研究人体物理模拟;2015年在李飞飞指导下获斯坦福大学博士学位,专注自然语言处理与计算机视觉交叉领域,期间担任斯坦福经典课程CS231n(卷积神经网络与视觉识别)的主要讲师,该课程成为CV领域的入门必修课,在B站等平台广受欢迎。
- 产业实践:2015年博士毕业后加入OpenAI,成为创始团队成员之一,参与早期大模型研发;2017年6月加入特斯拉,任人工智能与自动驾驶部门总监,直接向马斯克汇报,主导特斯拉自动驾驶系统的AI算法研发;2023年重返OpenAI,参与GPT系列模型的迭代;2024年创办Eureka Labs,聚焦AI+教育领域,致力于通过AI技术革新教育方式。
丰富的学术和产业经历,让Karpathy既能把握AI技术的前沿方向,又能深刻理解开发者在实际使用中的痛点,这为nanochat的“极简、实用”定位奠定了基础。
2. 从nanoGPT到nanochat:开源理念的延续与升级
nanochat并非Karpathy首次推出开源LLM项目。此前,他开发的nanoGPT已成为开源社区中学习Transformer预训练的经典项目,但nanoGPT仅覆盖预训练环节,无法满足开发者搭建完整对话模型的需求。
nanochat是对nanoGPT的升级与扩展:
- 范围扩展:从单一预训练环节,扩展为“预训练-微调-评估-部署”全流程
- 功能升级:新增对话交互、Web UI部署、自动化报告生成等功能
- 定位调整:从“学习预训练”转向“搭建可用对话模型”,更贴近实际应用场景
Karpathy在项目介绍中提到,nanochat是他“写过的最疯狂的项目之一”,其核心目标是提供一个“可靠的轻量化LLM基准”,让开发者能以极低成本实践LLM全流程开发,理解大模型的工作原理。
3. Eureka Labs:AI+教育的底层逻辑支撑
2024年,Karpathy创办Eureka Labs,专注于AI+教育领域,其核心理念是“通过AI助教实现个性化教育,让任何人都能轻松学习任何内容”。nanochat的开发,正是这一理念在技术层面的体现——通过开源一个低成本、易上手的LLM项目,让更多人能学习大模型开发技术。
Eureka Labs的首款产品是LLM101n课程,一门指导学生训练自己AI模型的本科课程,而nanochat则可视为该课程的“实践项目”。Karpathy希望通过这种“理论课程+开源项目”的组合,让AI技术不再是少数专家的专利,而是成为普通人可学习、可实践的技能。
四、项目流程详解:从环境搭建到模型部署
nanochat的全流程开发可分为环境搭建、数据准备、模型训练、模型评估和部署交互五个阶段,每个阶段都有清晰的操作步骤和脚本支持,即使是新手也能按部就班完成。
1. 环境搭建:极简依赖,快速配置
nanochat的依赖管理采用uv(一款快速的Python包管理器)和Rust(用于编译分词器),整体配置过程不超过10分钟:
1.1 安装uv与虚拟环境
# 安装uv(若未安装)
command -v uv &> /dev/null || curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建本地虚拟环境(若不存在)
[ -d ".venv" ] || uv venv
# 安装项目依赖
uv sync
# 激活虚拟环境(确保使用项目专属Python环境)
source .venv/bin/activate
1.2 安装Rust与编译分词器
nanochat的分词器采用Rust编写,需安装Rust工具链并编译:
# 安装Rust/Cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
# 编译rustbpe分词器
uv run maturin develop --release --manifest-path rustbpe/Cargo.toml
完成以上步骤后,环境搭建即告完成,无需额外配置CUDA或其他深度学习框架(项目已内置适配逻辑)。
2. 数据准备:轻量化数据集,高效获取
nanochat的训练数据分为预训练数据和对话微调数据两类,均采用轻量化设计,避免开发者陷入数据获取的困境。
2.1 预训练数据:FineWeb-EDU数据集
预训练数据采用Karpathy重新打包的FineWeb-EDU数据集,该数据集是从网页文本中筛选的高质量教育类文本,已按分片形式存储,无需通过Hugging Face的datasets.load_dataset()函数加载,直接下载即可使用。
# 下载预训练数据(24GB,默认存储于~/.cache/nanochat)
python -m nanochat.dataset -n 240
该数据集已完成混洗和预处理,开发者无需手动清洗数据,可直接用于预训练。
2.2 对话微调数据:SmolTalk数据集
中期训练和监督微调采用SmolTalk数据集,该数据集包含大量多轮对话样本,格式遵循OpenAI Harmony聊天格式,示例如下:
<|bos|><|user_start|>What is the color of the sky?<|user_end|><|assistant_start|>Red. Wait, possibly blue. I'm not sure.<|assistant_end|><|user_start|>lol<|user_end|><|assistant_start|>It's okay to be confused! The sky's color actually comes from Rayleigh scattering. When sunlight hits tiny molecules in the air, blue light scatters more than other colors, making the sky look blue.<|assistant_end|>
项目已内置该数据集,无需额外下载,执行训练脚本时会自动加载。
3. 模型训练:四阶段递进,脚本化执行
nanochat的训练分为预训练、中期训练、监督微调、强化学习四个阶段,每个阶段都有对应的脚本,支持单机多卡训练(默认8卡)。
3.1 预训练:构建基础语言能力
预训练的目标是让模型学习基础语言规律和世界知识,通过预测下一个token实现文本压缩。
# 启动预训练(8卡,深度20层)
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=20
预训练耗时约3小时,训练完成后,模型的验证集每字节比特数(bpb)约为0.81,CORE指标约为0.2219,具备基础的语言生成能力。
3.2 中期训练:适配对话格式
中期训练使用SmolTalk对话数据集,让模型适应对话格式和特殊token(如<|user_start|>、<|assistant_end|>),从“文本生成模型”转变为“对话模型”。
# 启动中期训练
torchrun --standalone --nproc_per_node=8 -m scripts.mid_train
# 中期训练评估
torchrun --standalone --nproc_per_node=8 -m scripts.chat_eval -- -i mid
中期训练耗时约30分钟,评估结果显示,模型在ARC-Easy(常识问答)上的准确率达0.3561,MMLU(多任务语言理解)达0.3111,已能进行简单对话。
3.3 监督微调:提升对话质量
监督微调采用高质量对话数据,进一步优化模型的对话逻辑和回答准确性,是提升模型实用价值的关键步骤。
# 启动监督微调
torchrun --standalone --nproc_per_node=8 -m scripts.chat_sft
# 监督微调评估
torchrun --standalone --nproc_per_node=8 -m scripts.chat_eval -- -i sft
监督微调耗时约20分钟,评估结果显示,模型性能较中期训练有明显提升:ARC-Easy准确率提升至0.3876,GSM8K(数学推理)准确率从0.0250提升至0.0455,HumanEval(编程任务)准确率从0.0671提升至0.0854。
3.4 强化学习(可选):优化回答偏好
强化学习阶段采用GRPO算法,在GSM8K数据集上进一步优化模型的数学推理能力,该阶段为可选步骤,适合对模型性能有更高要求的开发者。
# 启动强化学习(以GSM8K为例)
torchrun --standalone --nproc_per_node=8 -m scripts.chat_rl -- -i sft
# 强化学习评估
torchrun --standalone --nproc_per_node=8 -m scripts.chat_eval -- -i rl
强化学习耗时约20分钟,完成后,GSM8K准确率可提升至0.0758,较监督微调阶段提升66.6%。
4. 模型评估:自动化报告生成
nanochat内置自动化评估工具,可生成Markdown格式的评估报告,包含各阶段性能指标、训练时间、数据量等关键信息,方便开发者跟踪模型进展。
评估报告核心信息示例:
- 代码规模:8304行代码,44个文件,约83497个Token
- 依赖数量:uv.lock文件包含2004行依赖配置
- 训练总时长:3小时51分钟
- 各阶段指标:如前文“各阶段性能指标表”所示
开发者可通过以下命令查看完整报告:
# 生成评估报告
python -m scripts.generate_report
5. 部署交互:两种方式快速使用
nanochat提供命令行和Web UI两种交互方式,满足不同场景的使用需求。
5.1 命令行交互
适合快速测试模型性能,无需部署Web服务:
# 启动命令行对话
python -m scripts.chat_cli
启动后,开发者可直接在命令行中输入问题,模型会实时返回回答,示例如下:
> Hello!
Hello there! How can I assist you today? Whether you have questions about science, history, or just want to chat, feel free to share.
> What's 2+2?
The answer to 2 + 2 is 4. This is a basic arithmetic operation where adding the two numbers together results in the sum of 4.
5.2 Web UI交互
提供类似ChatGPT的Web界面,支持多轮对话和历史记录查看,适合展示和日常使用:
# 启动Web UI
python -m scripts.chat_web
启动后,终端会显示访问URL(如http://0.0.0.0:8000/),在浏览器中打开该URL即可进入对话界面。若使用云服务器,需通过公网IP访问(如http://209.20.xxx.xxx:8000/)。
五、项目适用场景与局限性
nanochat作为一款轻量化开源LLM项目,有其明确的适用场景和局限性,开发者在使用前需充分了解,以避免预期偏差。
1. 适用场景
1.1 LLM学习与实践
对于想入门LLM开发的开发者,nanochat是理想的学习工具:
- 代码简洁易懂,8000行代码覆盖全流程,便于理解LLM工作原理
- 训练成本低,100美元即可完成基础训练,适合反复实验
- 文档完善,内置评估工具和报告生成功能,便于跟踪学习进度
许多开源社区成员表示,通过nanochat能快速掌握LLM的预训练、微调、部署等核心环节,如AI研究者Tim Dettmers评价:“太酷了!做得太棒了!我觉得很多人都会从中受益。”
1.2 轻量级对话应用开发
对于需要搭建简单对话应用的场景,如个人助手、客服机器人原型等,nanochat可作为基础模型:
- 基础版模型已能满足日常对话需求,响应速度快
- 支持自定义微调,可通过少量私有数据适配特定场景
- 部署简单,Web UI支持快速展示,适合原型验证
1.3 教学与培训
在AI教育领域,nanochat可作为教学案例:
- 全流程自动化,适合课堂演示,让学生直观了解LLM开发流程
- 成本低,学生可自行完成训练,增强实践能力
- 与Karpathy的Eureka Labs推出的LLM101n课程高度适配,形成“理论+实践”的教学体系
2. 局限性
2.1 性能上限较低
受限于轻量化定位,nanochat的性能上限远低于GPT-3.5、LLaMA 2等主流模型:
- 基础版模型计算能力仅为4e19,相当于“幼儿园小朋友”,复杂任务(如深度推理、多语言对话)表现较差
- 即使增加预算至1000美元,模型也仅能解决简单数学题和编程任务,无法处理复杂场景
Karpathy明确表示,nanochat不适合需要高智能的场景,如个人专属知识库(“用Notion笔记、健康数据微调”),因为“微型模型不像大模型那样拥有原始的智力”。
2.2 多语言与专业领域支持不足
从分词器对比数据可见,nanochat在多语言(如韩语)和专业领域(如数学、科学)的表现远不如GPT-4:
- 韩语分词效率仅为GPT-4的一半,多语言生成质量较差
- 数学推理准确率最高仅为0.0758,无法处理复杂数学问题
- 缺乏专业领域数据微调,在医疗、法律等领域的应用受限
2.3 数据依赖较强
nanochat的性能高度依赖训练数据:
- 预训练数据仅采用FineWeb-EDU数据集,覆盖范围较窄,模型的世界知识有限
- 对话数据采用SmolTalk数据集,规模较小,模型的对话多样性不足
若要提升模型性能,需自行扩展数据集,这会增加开发成本和复杂度。
六、项目未来规划与开源社区反馈
nanochat目前仍处于持续开发阶段,Karpathy已公布未来规划,同时开源社区的积极反馈也为项目发展提供了动力。
1. 未来规划
Karpathy在项目文档中提到,nanochat的核心目标是“提升微型模型的先进水平,使其能够在不到1000美元的预算内实现端到端的运行”,未来将从以下方向优化:
- 模型架构优化:进一步精简Transformer结构,提升训练效率和推理速度
- 数据扩展:增加多语言、多领域数据集,提升模型的通用性
- 功能增强:新增模型量化、蒸馏等功能,降低部署门槛
- 文档完善:增加更多教程和案例,帮助开发者更好地使用项目
2. 开源社区反馈
nanochat推出后,迅速引发开源社区的热烈讨论,仅两天就获得14.9k星标和1.5k Fork,社区反馈主要集中在以下方面:
- 积极评价:大多数开发者对项目的“低门槛”和“全流程”表示认可,认为其填补了轻量化LLM开源项目的空白。如开发者Oleg Ataeff表示:“天哪!我等的就是这个!已经Fork了,谢谢Karpathy一如既往的精彩。”
- 技术讨论:部分开发者围绕模型架构、分词器性能等展开讨论,提出优化建议。如开发者Sebastian Raschka询问模型架构细节,Karpathy详细回复了“类Llama+旋转嵌入”等核心设计;
- 功能需求:部分开发者希望增加多语言支持、模型量化等功能,Karpathy表示将在后续版本中考虑;
- 学习需求:许多开发者请求增加更多教程,帮助理解代码逻辑,社区已自发组织代码解读活动。
七、总结:开源LLM的“平民化”里程碑
nanochat的推出,不仅是一个开源项目的发布,更是LLM技术“平民化”的重要里程碑。它打破了“大模型训练需要巨额成本”的固有认知,让普通开发者也能以极低的成本实践LLM全流程开发,真正实现了“人人都能拥有专属ChatGPT”。
从技术角度看,nanochat并非颠覆性创新,但其“极简、实用、易上手”的设计理念,恰好击中了当前开源LLM领域的痛点——许多开源项目要么过于复杂,要么性能不足,而nanochat在“复杂度”和“实用性”之间找到了完美平衡。
从教育角度看,nanochat延续了Karpathy一贯的“开源教育”理念,通过代码和实践,让更多人能理解LLM的工作原理,为AI技术的普及做出了重要贡献。正如Eureka Labs的愿景所述:“任何人都可以轻松学习任何内容”,nanochat正是这一愿景在技术层面的具体体现。
对于开发者而言,nanochat不仅是一个工具,更是一个学习和探索的起点。无论你是想入门LLM开发的新手,还是想快速搭建对话原型的工程师,都能从nanochat中获得价值。正如Karpathy所说:“虽然这不是什么颠覆性的技术突破,但是拿来学习一波也是受益匪浅。”
如果你对LLM技术感兴趣,不妨访问nanochat的GitHub仓库(https://github.com/karpathy/nanochat),亲自体验“4小时100美元搭建专属ChatGPT”的过程,或许你会在这个过程中找到新的技术灵感。
最后,需要提醒的是,nanochat并非完美无缺,其性能上限和适用场景仍有局限,但这并不影响它成为开源LLM领域的重要项目。随着社区的不断贡献和项目的持续迭代,相信nanochat会变得更加完善,为更多开发者带来价值。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)