ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI入门:从零搭建AI开发环境,写出第一个AI应用

AI入门:从零搭建AI开发环境,写出第一个AI应用 AI 入门从零搭建完整 AI 开发环境并写出第一个 AI 应用如果你正打算学 AI第一个拦路虎往往不是算法而是环境。我见过太多人兴致勃勃买课、收藏教程结果卡在 Python 装不上、依赖冲突、模型下载失败这些地方连门槛都没摸到就放弃了。这篇文章就是干这个用的——基于我这些年在 AI 开发里反复踩坑后的经验带你从零开始把完整的 AI 开发环境搭起来然后动手写出第一个真正能跑起来的 AI 应用。内容覆盖环境规划、工具选型、依赖安装、代码实现和问题排查每一步我都会说清楚为什么这么做。这篇文章适合谁打算入门 AI 应用开发但没有系统搭过环境的人或者已经在学机器学习课程、发现本地实践跑不通的人以及手上有个业务想法、想快速验证 AI 方案是否可行的产品和技术同学。不需要你有多深的编程基础只要会基本的命令行操作照着做就能跑通。1. 动手前的全局思路AI 开发环境到底要装什么1.1 AI 开发的核心链路抛开花里胡哨的概念一个 AI 应用从想法到落地跑通的基本链路就三件事数据进出、模型推理、业务逻辑。数据进出指的是你给应用输入内容比如一段文字、一张图片应用也需要把结果输出给你比如生成的回复、识别出的文字。模型推理是整个链路的核心这段输入的文本会交给一个大语言模型或者其他 AI 模型去计算模型基于训练时学到的规律生成对应的输出。业务逻辑是你自己写的代码负责把输入交给模型、接收模型输出再决定怎么展示、怎么处理。用生活里的例子打个比方AI 应用就像一家餐厅。顾客用户拿着菜单点菜输入后厨的厨师模型负责做菜推理传菜员和餐厅系统业务逻辑负责把菜端上去并收银输出。你要做的就是把“厨师”请进店里再把“传菜”流程理顺。所以搭建 AI 开发环境本质上就是做好三件事的准备准备一个 Python 运行环境用来跑你的业务逻辑安装模型推理所需的依赖库让“厨师”能开工准备好模型文件或 API 密钥让“厨师”手里有菜谱和食材。1.2 新手最容易踩的两个误区第一个误区是一上来就想着本地部署超大模型。很多人听说开源模型免费就想在自己电脑上跑一个几百亿参数的模型结果下载模型文件就要几十 GB、上百 GB运行起来显存直接爆掉。实际上入门阶段跑一个 1B 到 7B 参数的小模型或者直接调用云端 API已经足以让你把 AI 应用的完整流程走通了。你要先学会“怎么用”而不是一上来就纠结“怎么训练”。第二个误区是只学框架不看依赖。有人拿了一段代码就跑发现import torch失败、transformers没装、或者是 Python 版本不对整个心态就崩了。其实这些问题 90% 都是环境问题搞明白了依赖关系你的开发体验会顺畅很多。1.3 我是怎么规划环境方案的以我常用的方案为例基础环境用的是Python 3.10 VSCode 虚拟环境模型推理本地用Hugging Face Transformers云端的用openai-compatible 接口。不直接装 Anaconda 全家桶的原因很简单太重了很多初学者的电脑承受不住启动和包管理的开销而且 Anaconda 的依赖隔离机制和 Python 标准的 venv 逻辑还不太一样容易产生混淆。我的经验是多用venv建虚拟环境配合requirements.txt管依赖干净、轻量、可控。后面到了部署阶段这套方式迁到 Linux 服务器、Docker 容器里也是一脉相承的不会有“只会在 Windows 上跑”的陌生感。2. 基础开发环境搭建从 Python 到 VSCode2.1 安装 Python版本选择有讲究Python 版本别乱选。目前 AI 生态里兼容性最好的是 Python 3.10 到 3.11PyTorch、Transformers、NumPy 这些核心库都有预编译的 wheel 包装起来省事。Python 3.12 以上虽然新但有些老的依赖库还没跟上容易踩“没有预编译包、需要本地编译”的坑。Windows 用户去 Python 官网下载安装包勾选Add Python to PATH这个选项这一步很重要不然命令行里敲python会提示找不到命令。macOS 用户建议用 Homebrew 安装brew install python3.11。Linux 用户直接用系统包管理器就行。装完验证一下python --version pip --version如果python指向的不是你刚装的版本把环境变量里的 Python 路径调整到最前面就好。Windows 用户可以在“系统属性 - 环境变量”里检查。2.2 创建虚拟环境把依赖隔离起来为什么一定要用虚拟环境因为不同项目依赖的包版本可能互相冲突。你今天做 A 项目需要 Flask 2.x明天做 B 项目需要 Flask 1.x全局装会打架。虚拟环境相当于给每个项目一个独立的“小房间”互不干扰。我一般会在项目目录下执行mkdir ai-first-app cd ai-first-app python -m venv venvWindows 激活虚拟环境venv\Scripts\activatemacOS/Linux 激活source venv/bin/activate激活成功后命令行前面会出现(venv)的标记这就说明你已经进入了这个项目的独立环境。后续所有pip install的包都只会装进这个环境不会污染全局。2.3 安装 AI 开发核心依赖进入虚拟环境后开始安装核心依赖。我这样分两步装避免一次性装太多导致定位问题困难pip install --upgrade pip pip install numpy pandas matplotlib jupyter pip install torch --index-url https://download.pytorch.org/whl/cpu上面先装了数据处理和可视化的基础库然后装了 CPU 版 PyTorch。为什么特意指定 CPU 版因为大多数入门用户没有 NVIDIA 显卡就算有也可能没有装好 CUDA 驱动。CPU 版安装后代码一样能跑只是速度慢一些。等你以后有了合适的 GPU 环境再安装对应版本的 GPU 版 PyTorch 就行。注意如果你确定自己的电脑有 NVIDIA 显卡并且想用 GPU 加速建议先到 PyTorch 官网用它的安装命令生成器根据你的 CUDA 版本生成对应的安装命令再执行安装。这一步很关键因为 GPU 版本的 PyTorch 和驱动版本必须匹配否则运行时会报CUDA error: no kernel image is available for execution on the device之类的错误。再装两个 AI 开发的重量级库pip install transformers pip install sentencepiecetransformers是 Hugging Face 出品的模型加载与推理库目前开源社区里绝大多数模型都支持它sentencepiece是很多 Tokenizer文本切分器的底层依赖很多中文模型都要用到。2.4 配置 VSCode让写代码、调试、跑 AI 都顺手编辑器我推荐 VSCode免费、插件生态强大、跨平台。装好后需要装几个关键扩展Python微软官方出的提供代码补全和调试、PylancePython 语法检查和类型提示、Jupyter如果你习惯用 Notebook 方式探索代码。一个容易被忽略的细节VSCode 一定要选对 Python 解释器。按下CtrlShiftP输入Python: Select Interpreter选择你刚创建的那个venv环境。如果不选VSCode 可能默认使用全局 Python导致能导入的包跟你实际装的对不上排查半天才发现是环境没选对。配置完之后新建一个test_env.py文件写几行代码验证import torch from transformers import AutoTokenizer, AutoModelForCausalLM print(Python PyTorch Transformers 环境准备完毕) print(PyTorch 版本:, torch.__version__) print(CPU 是否可用:, torch.cuda.is_available())如果打印正常你的基础 AI 开发环境就搭好了。这一步是“地基”地基稳了后面跑模型才不会东倒西歪。3. 模型选择的两种路线本地小模型 vs 云端 API3.1 路线 A本地跑一个小模型本地跑模型核心思路是用 Hugging Face 的transformers库把模型下载到本地然后加载推理。这种方式的好处是免费、数据不出本地、离线可用也方便你理解模型推理的底层代码逻辑。以我常用的一个轻量级对话模型为例核心代码如下from transformers import AutoTokenizer, AutoModelForCausalLM model_name qwen/Qwen2.5-1.5B-Instruct device cpu tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained(model_name, trust_remote_codeTrue).to(device) prompt 用一句话解释什么是人工智能 messages [{role: user, content: prompt}] text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) model_inputs tokenizer([text], return_tensorspt).to(device) generated_ids model.generate(model_inputs.input_ids, max_new_tokens200, do_sampleTrue) response tokenizer.batch_decode(generated_ids, skip_special_tokensTrue)[0] print(response)你不需要把每一行都嚼碎只需要理解这个流程先用AutoTokenizer加载分词器把自然语言转换成模型能理解的数字序列再用AutoModelForCausalLM加载模型本体执行推理最后的model.generate是生成阶段max_new_tokens控制最长生成的 token 数do_sample控制输出是否带有随机性。实操提示第一次跑这个代码模型文件会自动下载好几 GB 到你的本地缓存目录耗时取决于网速。之后再次运行就会直接读缓存秒级加载。建议用有线网络或者闲时下载避免中断。下载慢的时候可以用HF_ENDPOINT环境变量切换到国内镜像站这个用法在社区里很普遍属于网络环境下的常规操作。3.2 路线 B调用云端大模型 API如果你不想在本地占资源或者需要更强模型的能力直接调用云端 API 更实际。绝大多数的云端大模型厂商都提供兼容 OpenAI 格式的接口所以你只需要明白 openai-compatible 的调用范式就能通吃大多数服务。安装 OpenAI SDKpip install openai然后写一个调用from openai import OpenAI client OpenAI( api_key你的密钥, # 在这里填入你在云服务平台申请的 API Key base_urlhttps://api.example.com/v1 # 在这里填入服务商提供的接口地址 ) response client.chat.completions.create( model服务商提供的模型名称, messages[ {role: system, content: 你是一个乐于助人的助手。}, {role: user, content: 用一句话解释什么是人工智能} ], max_tokens200 ) print(response.choices[0].message.content)这里我说几句真心话入门阶段你不需要对“API 怎么实现”的底层原理过度深究但你一定要理解messages这个参数的结构。它承担的是一段对话的完整历史每条消息有role是系统指令、用户还是助手和content具体内容。系统的role用来设定 AI 的角色和行为方式这条消息写得越清楚输出质量越高。这个机制在后端开发、前端交互、Agent 工具调用里都会反复出现。3.3 怎么选本地和 API 的取舍我做项目时的选型原则很直接如果只是本地练习和验证逻辑就用本地小模型零成本、无限制如果需要高质量输出、稳定性和并发能力或者本机没有好显卡就用云端 API。对比一下两者的差别对比维度本地小模型云端大模型 API硬件门槛有一定内存要求入门级配置可跑无任何电脑都能用成本免费按 token 计费数据隐私完全本地不出设备数据上云需关注隐私合规输出质量小模型能力有限通常更强更稳定离线能力支持不支持适合场景学习调试、离线环境、私有化部署正式产品、复杂任务、多用户并发4. 第一个 AI 应用实战做一个命令行智能问答助手4.1 功能设计理论知识再丰富不如实际做一个东西。我带你从零写一个“命令行智能问答助手”它的功能很简单你在终端里输入问题AI 在终端里给出回答输入exit退出。这个应用虽然界面朴素但它涵盖了 AI 应用开发的核心流程加载模型、处理输入、调用推理、输出结果、循环交互。新建一个文件叫chat_assistant.py把下面的代码敲进去。4.2 核心代码实现以本地小模型为例完整代码如下import torch from transformers import AutoTokenizer, AutoModelForCausalLM def load_model(model_nameqwen/Qwen2.5-1.5B-Instruct): print(f正在加载模型: {model_name}) tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained(model_name, trust_remote_codeTrue) device cuda if torch.cuda.is_available() else cpu model.to(device) print(f模型加载完成运行设备: {device}) return tokenizer, model, device def chat(tokenizer, model, device, user_input, historyNone): if history is None: history [] history.append({role: user, content: user_input}) messages history[-6:] # 只保留最近几轮避免过长 text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) model_inputs tokenizer([text], return_tensorspt).to(device) generated_ids model.generate( model_inputs.input_ids, max_new_tokens512, do_sampleTrue, temperature0.7, top_p0.9, ) generated_ids generated_ids[0][model_inputs.input_ids.shape[-1]:] response tokenizer.decode(generated_ids, skip_special_tokensTrue) history.append({role: assistant, content: response}) return response, history def main(): tokenizer, model, device load_model() history [] print(命令行 AI 助手已启动。直接输入问题开始对话输入 exit 退出。) while True: user_input input(\n你: ).strip() if user_input.lower() in (exit, quit): print(再见) break if not user_input: continue response, history chat(tokenizer, model, device, user_input, history) print(f\nAI: {response}) if __name__ __main__: main()跑一下python chat_assistant.py这个代码里有几个参数值得你搞清楚。temperature0.7控制输出的随机性值越低回答越保守、越确定值越高越发散、越有创造性。top_p0.9是核采样参数它限制模型只在累积概率达到 0.9 的最可能词集合里选词跟 temperature 一起配合让回答既稳定又有一定变化。max_new_tokens512控制最长输出长度防止模型陷入重复循环或者一次输出太长。还有一个关键设计我只保留了最近 6 条消息作为对话上下文。为什么因为大模型的输入长度有限你把整本《红楼梦》都丢进去模型可能直接报超长错误而且历史越久远的对话对当前输出的参考价值越低保留最近的几轮足够维持对话的连贯性还能减少计算量。4.3 运行效果与下一步扩展试几个问题比如“你是谁”“Python 里列表和元组的区别”“写一首五言绝句”。你会发现即使是 1.5B 的小模型回答已经有模有样了。做到这一步你已经拥有了一个可以交互的 AI 应用。这时候如果你想让它更贴近“真正的产品”可以往这几个方向扩展用 Gradio 或 Streamlit 做一个 Web 界面在浏览器里对话。把对话记录保存到本地文件实现记忆功能。用 OpenAI-compatible API 替换本地模型让回答质量上一个台阶。给助手加上“工具调用”能力比如让它查天气、算算术、查数据库。后面我会写一篇关于 Gradio 的扩展实践但你先别急着跳出去先把这个命令行版本跑熟了再说。环境、加载、推理这一套你亲手跑通了后面加界面只是换了一层外衣。5. 常见问题与排查技巧实录5.1 问题速查表我在带新人入门时遇到过非常多重复度极高的报错这里整理成一张速查表现象原因解决方法pip: 无法将“pip”项识别为 cmdlet...Python 未加入 PATH 或当前环境未激活检查 Python 安装时是否勾选 PATH确认虚拟环境已激活ModuleNotFoundError: No module named torchPyTorch 未安装或安装错环境确认which python指向 venv 环境重新执行pip install torchCUDA error: no kernel image...GPU 版 PyTorch 和显卡驱动版本不匹配到 PyTorch 官网重新生成安装命令或先改用 CPU 版下载模型时网络超时访问 Hugging Face 不稳定配置国内镜像源或在闲时重新下载OutOfMemoryError: CUDA out of memory模型太大或输入太长换更小的模型减小max_new_tokens关闭其他占用显存的程序输出全是重复内容temperature太高或模型太小调低 temperature 到 0.3~0.7换大一点模型5.2 依赖冲突与版本冻结的坑Python 的依赖管理在入门阶段不会太难但到了后期依赖冲突会让你崩溃。我吃过最大的亏是有一次升级numpy时不小心把pandas依赖的版本破坏了整个脚本瞬间不能跑。所以从第一天起就要养成好习惯把依赖写进requirements.txt并锁定版本号。用下面这个方式pip freeze requirements.txt以后换电脑、换环境只要执行pip install -r requirements.txt就能一键复现环境。还有一个经验不要频繁升级“全家桶”。AI 开发不是追新版本稳定比新版本重要得多。除非新版本有你想用的功能否则按兵不动就是最好的策略。5.3 我的环境备份与恢复经验环境搭建完成后我建议你做一个备份。Windows 上可以复制venv文件夹里pyvenv.cfg但更省事的方法是记下你装了什么版本的包即requirements.txt。如果整个环境真的玩坏了最快的恢复路径不是去“修”而是删掉venv文件夹重新建一个然后pip install -r requirements.txt。这一步五分钟搞定比你去逐个排查哪个包装错了要快得多。另外一个急救技巧如果你用 VSCode 调试时发现import torch成功但import transformers失败多半是库之间版本不兼容先升级transformers到最新版再说。如果反过来transformers装不上多半是 Python 版本太新或者太旧切到 3.10 就稳了。版本对不上这件事解决问题的顺序永远是先查 Python 版本再查包的版本最后查环境继承关系。6. 从第一个应用走向真正的 AI 项目6.1 构建应用的工程化思维跑通了命令行助手你已经越过了最大的门槛。但“能跑”和“能上线”之间还隔着一条不小的沟。我接触过的很多初学者都栽在“代码能跑就行”的思路上结果一到真实业务场景就不知所措。真实项目的复杂度通常来自三个方面数据。AI 应用要接真实业务数据数据格式杂乱、清洗麻烦代码要能容忍脏数据而不是一报错就崩并发。多个用户同时用请求怎么排队、资源怎么分配需要设计好推理服务。可观测性。模型输出不稳定需要记录下来日志、评估效果而不是每次都黑盒运行。这些工程化思路我建议你从第二个项目开始就刻意训练。比如刚才的命令行助手你可以加一个日志模块、把每次问答记录到文件、用单元测试保证核心函数不随时改坏这些习惯的价值会在半年后完全体现出来。6.2 AI Agent、RAG 与微调的进阶预览在你把基础流程走通之后AI 应用开发的方向大致有三个主流方向Agent智能体它代表的应用形态是赋予模型调用外部工具的能力比如让它查数据库、调用搜索、发送邮件。RAG检索增强生成适合与私有知识库结合把企业文档、产品说明作为外部知识来源让模型基于你提供的资料回答问题而不是凭它“背”过的公网知识回答。微调适合需要特定的说话风格、输出格式的领域比如让模型学会你公司的客服话术。这三个方向应该优先学哪个如果你是做产品的我建议从 RAG 入手因为它在知识问答、客服、企业搜索方面落地极其快且不需要再训练模型。如果你做技术研究就先啃 Agent这是目前应用层增长最快的方向。微调反而不用急因为大部分业务场景微调的投入产出比并不高。6.3 给新手的行动建议很多人在入门时疯狂收藏教程但始终停在看的阶段。我的建议很直接今天就可以做这三件事。第一把本文的环境搭建过程完整走一遍不跳过任何一步。第二把命令行助手源码完全敲一遍不要复制粘贴敲的过程中你才会注意到那些“不重要”的细节。第三换个模型、换个问题亲手改几个参数temperature、max_new_tokens看看输出有什么变化。我记得我第一次跑通本地模型时屏幕上打印出“AI你好”那一刻说实话挺激动的。不是因为技术多难而是因为整个人工智能领域的神秘面纱被撕开了一道口子原来所谓“AI 应用”并不是遥不可及的黑魔法而是一行行逻辑清晰的代码加上模型推理的组合。现在轮到你亲手撕开这层面纱了。
返回列表