前言
2026年,开源大模型Llama 4成为开发者构建聊天机器人的首选。它性能强大、易于部署,且支持多模态。本教程将教你如何用Python搭建一个本地运行的聊天机器人。
准备工作
硬件要求
- 推荐:NVIDIA RTX 4090或更高(24GB VRAM)
- 最低:RTX 3060(12GB VRAM),但需要量化模型
- 内存:32GB以上
- 存储:至少50GB空间(模型约40GB)
软件环境
- 操作系统:Ubuntu 22.04(其他Linux或Windows也可,但需调整命令)
- Python:3.10+(推荐3.11)
- CUDA:12.1+(用于GPU加速)
第一步:安装依赖
打开终端,执行以下命令:
# 创建虚拟环境
python3 -m venv chatbot-env
source chatbot-env/bin/activate
# 安装核心库
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install transformers accelerate bitsandbytes
pip install fastapi uvicorn jinja2
第二步:下载Llama 4模型
从Hugging Face下载模型(需要申请权限):
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "meta-llama/Llama-4-70B-chat-hf" # 或使用量化版本
tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
load_in_8bit=True, # 8位量化节省显存
trust_remote_code=True
)
注意:如果显存不足,可以使用4位量化(
load_in_4bit=True)。
第三步:实现聊天逻辑
创建一个chat.py文件:
from transformers import pipeline
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
max_new_tokens=512,
temperature=0.7,
top_p=0.9
)
def get_response(user_input, history=[]):
# 构建对话历史
prompt = ""
for turn in history:
prompt += f"User: {turn['user']}\nAssistant: {turn['assistant']}\n"
prompt += f"User: {user_input}\nAssistant:"
output = pipe(prompt)[0]['generated_text']
# 提取助手的回复
response = output.split("Assistant:")[-1].strip()
return response
第四步:创建Web界面
使用FastAPI提供API接口,并用Jinja2渲染简单前端。
4.1 API服务
创建app.py:
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel
from chat import get_response
app = FastAPI()
templates = Jinja2Templates(directory="templates")
class Message(BaseModel):
user: str
history: list = []
@app.post("/chat")
async def chat(message: Message):
response = get_response(message.user, message.history)
return {"response": response}
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
4.2 前端页面
创建templates/index.html:
<!DOCTYPE html>
<html>
<head>
<title>AI Chatbot</title>
<script>
async function sendMessage() {
const input = document.getElementById('input').value;
const response = await fetch('/chat', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({user: input})
});
const data = await response.json();
document.getElementById('response').innerText = data.response;
}
</script>
</head>
<body>
<h1>Llama 4 Chatbot</h1>
<input id="input" type="text" placeholder="输入消息...">
<button onclick="sendMessage()">发送</button>
<div id="response"></div>
</body>
</html>
第五步:运行机器人
uvicorn app:app --host 0.0.0.0 --port 8000
打开浏览器访问http://localhost:8000,即可与你的AI聊天机器人对话。
进阶优化
5.1 添加记忆功能
使用ConversationSummaryMemory来保持长期对话上下文。
5.2 支持多模态
Llama 4支持图片输入,可以扩展为图文聊天。
5.3 流式输出
使用StreamingResponse实现打字机效果。
结语
恭喜!你已经成功搭建了一个基于Llama 4的AI聊天机器人。你可以在此基础上添加更多功能,如接入知识库、语音输入等。开源社区还有很多资源,祝你探索愉快!