手把手搭建AI诗画网页:Python+文心一言全流程指南
2025.09.18 18:04浏览量:4简介:本文提供从零开始搭建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 requestsimport base64import hashlibimport jsondef 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, jsonifyimport base64import requestsimport osapp = 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()# 调用文心一言APIpoem = call_ernie_api(img_bytes)return jsonify({"poem": poem})def call_ernie_api(img_data):# 图像转base64img_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-slimWORKDIR /appCOPY . .RUN pip install -r requirements.txtCMD ["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 Imageimport iodef 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.gitcd ai-poem-generatorpip install -r requirements.txtpython app.py
六、常见问题解决方案
API调用失败:
- 检查Access Token有效期
- 确认API请求参数格式
- 查看百度智能云控制台调用限额
图片处理异常:
- 限制上传文件类型(
accept="image/*") - 添加文件大小限制(Flask配置
MAX_CONTENT_LENGTH)
- 限制上传文件类型(
跨域问题:
- 在Flask中添加CORS支持:
from flask_cors import CORSapp = Flask(__name__)CORS(app)
- 在Flask中添加CORS支持:
七、扩展功能建议
- 多风格诗歌生成:通过API参数指定诗歌体裁(五言/七言/现代诗)
- 历史记录管理:使用SQLite存储用户生成记录
- 社交分享功能:集成分享按钮生成带诗歌的图片
- 多语言支持:扩展API调用支持中英文诗歌生成
本项目完整实现了从图片上传到诗歌生成的全流程,开发者可根据实际需求进行二次开发。通过调用文心一言强大的自然语言处理能力,结合简洁的Web交互设计,可快速构建出具有实用价值的AI应用。

发表评论
登录后可评论,请前往 登录 或 注册