AI 编程实战:从 Python 基础到大模型应用开发
掌握 AI 编程的核心工具链,动手构建你的第一个 AI 应用
一、AI 编程工具链
1.1 编程语言选择
| 语言 | 在 AI 中的角色 | 推荐度 |
| Python | AI 开发的绝对主力,99% 的 AI 框架 | ⭐⭐⭐⭐⭐ |
| C/C++ | 底层性能优化(PyTorch/TF 底层实现) | ⭐⭐⭐ |
| JavaScript | 前端 AI 应用、ONNX.js | ⭐⭐ |
| Rust | 新兴 AI 基础设施(Candle、Tokenizers) | ⭐⭐ |
| Julia | 科学计算、数值模拟 | ⭐⭐ |
结论:学 AI 编程,从 Python 开始。
1.2 开发环境搭建
推荐方案:
- Anaconda(Python 环境管理)
- VS Code + Python 扩展(代码编辑器)
- Jupyter Notebook(交互式实验)
- Google Colab(免费 GPU 云端环境)
# 安装 Anaconda 后创建 AI 开发环境
conda create -n ai-dev python=3.11
conda activate ai-dev
# 安装核心 AI 库
pip install torch torchvision torchaudio # PyTorch
pip install transformers datasets # Hugging Face
pip install openai # OpenAI API
pip install langchain # LLM 应用框架
pip install jupyter # Jupyter Notebook
二、Python AI 编程基础
2.1 NumPy — 数值计算基础
import numpy as np
# 创建矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# 矩阵运算
C = A @ B # 矩阵乘法
D = np.dot(A, B) # 等价写法
# AI 中常用的操作
x = np.random.randn(100, 784) # 100 个 784 维样本(如 MNIST 图片)
weights = np.random.randn(784, 128) # 权重矩阵
bias = np.zeros(128) # 偏置
# 一层神经网络的前向传播
z = x @ weights + bias # 线性变换
a = np.maximum(0, z) # ReLU 激活
2.2 PyTorch — 深度学习框架
import torch
import torch.nn as nn
# PyTorch 张量(GPU 加速的矩阵)
x = torch.randn(100, 784) # 100 个样本
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x = x.to(device) # 移到 GPU
# 定义一个简单的神经网络
class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(784, 128) # 输入层 → 隐藏层
self.fc2 = nn.Linear(128, 64) # 隐藏层 → 隐藏层
self.fc3 = nn.Linear(64, 10) # 隐藏层 → 输出层(10类)
self.relu = nn.ReLU()
def forward(self, x):
x = self.relu(self.fc1(x))
x = self.relu(self.fc2(x))
x = self.fc3(x)
return x
model = SimpleNet().to(device)
print(f"模型参数量: {sum(p.numel() for p in model.parameters()):,}")
2.3 训练循环
# 损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
# 训练循环
for epoch in range(10):
model.train()
for batch_x, batch_y in train_loader:
batch_x, batch_y = batch_x.to(device), batch_y.to(device)
# 前向传播
outputs = model(batch_x)
loss = criterion(outputs, batch_y)
# 反向传播
optimizer.zero_grad() # 清空梯度
loss.backward() # 计算梯度
optimizer.step() # 更新参数
print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")
三、Hugging Face Transformers — 大模型应用
3.1 使用预训练模型
from transformers import pipeline
# 文本分类(情感分析)
classifier = pipeline("sentiment-analysis")
result = classifier("I love this product! It's amazing!")
print(result) # [{'label': 'POSITIVE', 'score': 0.9998}]
# 文本生成
generator = pipeline("text-generation", model="gpt2")
result = generator("人工智能的未来是", max_length=50)
print(result[0]['generated_text'])
# 中文问答
qa = pipeline("question-answering", model="uer/roberta-base-finetuned-cmrc2018")
3.2 使用大语言模型 API
from openai import OpenAI
# 连接阿里 Qwen API(兼容 OpenAI 格式)
client = OpenAI(
api_key="your-key",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 简单对话
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "你是一位Python编程导师"},
{"role": "user", "content": "用简单的话解释什么是递归"}
]
)
print(response.choices[0].message.content)
四、LangChain — LLM 应用开发框架
4.1 构建 AI 对话链
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.output_parsers import StrOutputParser
# 初始化模型
llm = ChatOpenAI(
model="qwen-plus",
openai_api_key="your-key",
openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 创建提示模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是一位资深的{domain}专家,用通俗易懂的语言回答问题"),
("user", "{question}")
])
# 构建链
chain = prompt | llm | StrOutputParser()
# 调用
result = chain.invoke({
"domain": "人工智能",
"question": "什么是迁移学习?为什么它在实际应用中如此重要?"
})
print(result)
4.2 RAG(检索增强生成)
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
# 1. 加载文档
loader = TextLoader("ai_textbook.txt")
docs = loader.load()
# 2. 切分文档
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
# 3. 创建向量数据库
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(chunks, embeddings)
# 4. 构建 RAG 链
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
return_source_documents=True
)
# 5. 提问
result = qa({"query": "Transformer 的自注意力机制是如何工作的?"})
print(result['result'])
五、实战项目
项目 1:手写数字识别(CNN)
import torch
import torchvision
import torchvision.transforms as transforms
# 数据
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
# 简单 CNN
class MNIST_CNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 32, 3, padding=1)
self.conv2 = nn.Conv2d(32, 64, 3, padding=1)
self.pool = nn.MaxPool2d(2, 2)
self.fc = nn.Linear(64 * 7 * 7, 10)
def forward(self, x):
x = self.pool(torch.relu(self.conv1(x)))
x = self.pool(torch.relu(self.conv2(x)))
x = x.view(-1, 64 * 7 * 7)
return self.fc(x)
项目 2:AI 聊天机器人
# 使用 Gradio 快速构建 Web 聊天界面
import gradio as gr
from openai import OpenAI
client = OpenAI(api_key="...", base_url="...")
def chat(message, history):
messages = [{"role": "system", "content": "你是友好的AI助手"}]
for h in history:
messages.append({"role": "user", "content": h[0]})
messages.append({"role": "assistant", "content": h[1]})
messages.append({"role": "user", "content": message})
response = client.chat.completions.create(model="qwen-plus", messages=messages)
return response.choices[0].message.content
demo = gr.ChatInterface(chat, title="AI 聊天机器人")
demo.launch()
参考资源
- Python 官方教程 — Python 入门
- PyTorch 官方教程 — 深度学习框架
- LangChain 文档 — LLM 应用开发框架
- Gradio 文档 — 快速构建 AI 演示界面
- Google Colab — 免费 GPU 云端编程环境
- Hugging Face 课程 — NLP 与大模型实战
- Kaggle — AI 竞赛与数据集平台