手把手搭建AI诗画网页:Python+文心一言全流程指南
2025.09.18 18:04浏览量:0简介:本文提供从零开始搭建AI看图写诗网页项目的完整方案,包含Python后端开发、文心一言API调用、前端页面设计及完整源码解析,帮助开发者快速实现图片上传与诗歌生成的交互功能。
一、项目背景与功能概述
随着AI技术的普及,图像与文本的跨模态交互成为热门应用场景。本文介绍的《AI看图写诗》项目,通过用户上传图片并调用文心一言大模型,生成与图像意境匹配的诗歌,实现”以图生诗”的趣味功能。项目采用Python Flask框架构建后端服务,前端使用HTML/CSS/JavaScript实现交互界面,通过文心一言API完成核心AI计算。
核心功能模块:
- 图片上传与预处理
- 图像特征提取与API请求封装
- 诗歌生成结果展示
- 用户交互历史记录
二、技术栈与开发环境
1. 基础环境配置
- Python 3.8+(推荐使用Anaconda管理)
- Flask 2.0+(轻量级Web框架)
- Pillow 9.0+(图像处理库)
- Requests 2.28+(HTTP请求库)
- 文心一言API密钥(需通过官方渠道申请)
环境准备命令:
pip install flask pillow requests
2. 文心一言API接入
通过百度智能云平台获取API密钥,需完成以下步骤:
- 注册开发者账号
- 创建应用获取
API Key
和Secret Key
- 生成访问令牌(Access Token)
令牌生成示例:
import requests
import base64
import hashlib
import json
def get_access_token(api_key, secret_key):
auth_url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={api_key}&client_secret={secret_key}"
response = requests.get(auth_url)
return response.json().get("access_token")
三、核心代码实现
1. Flask后端服务
主程序结构:
app/
├── static/ # 静态资源
│ ├── css/
│ └── js/
├── templates/ # HTML模板
└── app.py # 主程序入口
Flask路由示例:
from flask import Flask, render_template, request, jsonify
import base64
import requests
import os
app = Flask(__name__)
# 文心一言API配置
API_KEY = "your_api_key"
SECRET_KEY = "your_secret_key"
ACCESS_TOKEN = get_access_token(API_KEY, SECRET_KEY)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/generate_poem', methods=['POST'])
def generate_poem():
# 获取上传的图片
file = request.files['image']
img_bytes = file.read()
# 调用文心一言API
poem = call_ernie_api(img_bytes)
return jsonify({"poem": poem})
def call_ernie_api(img_data):
# 图像转base64
img_base64 = base64.b64encode(img_data).decode('utf-8')
# API请求参数
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/ernie_poem/run"
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
params = {
"image": img_base64,
"access_token": ACCESS_TOKEN
}
response = requests.post(url, headers=headers, json=params)
return response.json().get("result", "未能生成诗歌")
if __name__ == '__main__':
app.run(debug=True)
2. 前端交互设计
HTML核心结构:
<!DOCTYPE html>
<html>
<head>
<title>AI看图写诗</title>
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
<div class="container">
<h1>AI看图写诗</h1>
<form id="uploadForm">
<input type="file" id="imageInput" accept="image/*">
<button type="submit">生成诗歌</button>
</form>
<div id="result"></div>
</div>
<script src="/static/js/main.js"></script>
</body>
</html>
JavaScript交互逻辑:
document.getElementById('uploadForm').addEventListener('submit', async (e) => {
e.preventDefault();
const fileInput = document.getElementById('imageInput');
const formData = new FormData();
formData.append('image', fileInput.files[0]);
try {
const response = await fetch('/generate_poem', {
method: 'POST',
body: formData
});
const data = await response.json();
document.getElementById('result').innerHTML = `
<h3>生成的诗歌:</h3>
<p>${data.poem}</p>
`;
} catch (error) {
console.error('Error:', error);
}
});
四、项目部署与优化
1. 本地测试流程
- 启动Flask服务:
python app.py
- 访问
http://localhost:5000
- 上传测试图片(建议使用风景类图片效果更佳)
2. 生产环境部署建议
- 容器化部署:使用Docker打包应用
FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
Nginx反向代理配置示例:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
}
}
3. 性能优化方案
图片压缩:在上传时限制图片尺寸
from PIL import Image
import io
def compress_image(img_bytes, max_size=(800, 800)):
img = Image.open(io.BytesIO(img_bytes))
img.thumbnail(max_size)
buffered = io.BytesIO()
img.save(buffered, format="JPEG", quality=85)
return buffered.getvalue()
- API缓存机制:对相同图片生成结果进行缓存
五、完整项目源码获取
项目完整代码已托管至GitHub,包含以下内容:
- 前后端完整源代码
- 部署文档与配置说明
- 测试用例与API调用示例
- 扩展功能开发指南
获取方式:
git clone https://github.com/your-repo/ai-poem-generator.git
cd ai-poem-generator
pip install -r requirements.txt
python app.py
六、常见问题解决方案
API调用失败:
- 检查Access Token有效期
- 确认API请求参数格式
- 查看百度智能云控制台调用限额
图片处理异常:
- 限制上传文件类型(
accept="image/*"
) - 添加文件大小限制(Flask配置
MAX_CONTENT_LENGTH
)
- 限制上传文件类型(
跨域问题:
- 在Flask中添加CORS支持:
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
- 在Flask中添加CORS支持:
七、扩展功能建议
- 多风格诗歌生成:通过API参数指定诗歌体裁(五言/七言/现代诗)
- 历史记录管理:使用SQLite存储用户生成记录
- 社交分享功能:集成分享按钮生成带诗歌的图片
- 多语言支持:扩展API调用支持中英文诗歌生成
本项目完整实现了从图片上传到诗歌生成的全流程,开发者可根据实际需求进行二次开发。通过调用文心一言强大的自然语言处理能力,结合简洁的Web交互设计,可快速构建出具有实用价值的AI应用。
发表评论
登录后可评论,请前往 登录 或 注册