手把手搭建AI看图写诗网页:Python+文心一言实战指南
2025.09.19 13:33浏览量:1简介:本文将详细介绍如何使用Python和文心一言API搭建一个《AI看图写诗》的网页应用,从环境配置到完整源码解析,帮助开发者快速实现AI图像诗歌生成功能。
一、项目背景与功能概述
在AI技术快速发展的今天,结合图像识别与自然语言处理的创意应用层出不穷。本文介绍的《AI看图写诗》项目,旨在通过用户上传图片,利用文心一言大模型生成与图片内容相关的诗歌,最终以网页形式展示。该项目的核心价值在于:
二、技术栈与开发环境
1. 核心技术组件
- Python 3.8+:项目主语言,支持异步编程与现代库生态;
- Flask 2.0+:轻量级Web框架,适合快速构建API服务;
- 文心一言API:百度提供的自然语言生成服务,支持诗歌创作;
- Pillow/OpenCV:图像处理库,用于图片预处理;
- HTML/CSS/JavaScript:前端页面构建,实现用户交互。
2. 环境配置步骤
# 创建虚拟环境(推荐)python -m venv ai_poetry_envsource ai_poetry_env/bin/activate # Linux/Mac# 或 ai_poetry_env\Scripts\activate # Windows# 安装依赖pip install flask pillow opencv-python requests
三、核心功能实现
1. 图片上传与预处理
前端通过HTML表单实现文件上传,后端使用Flask接收并处理图片:
from flask import Flask, request, jsonifyfrom PIL import Imageimport ioapp = Flask(__name__)@app.route('/upload', methods=['POST'])def upload_image():if 'file' not in request.files:return jsonify({'error': 'No file uploaded'}), 400file = request.files['file']try:img = Image.open(io.BytesIO(file.read()))# 图片预处理(如调整大小、格式转换)img.thumbnail((400, 400))img_byte_arr = io.BytesIO()img.save(img_byte_arr, format='JPEG')img_byte_arr.seek(0)# 调用文心一言API生成诗歌poem = generate_poem_from_image(img_byte_arr)return jsonify({'poem': poem})except Exception as e:return jsonify({'error': str(e)}), 500
2. 调用文心一言API
通过HTTP请求与文心一言服务交互,需提前申请API Key:
import requestsimport base64def generate_poem_from_image(img_data):# 将图片转为Base64编码img_base64 = base64.b64encode(img_data.getvalue()).decode('utf-8')# 构造API请求(示例为伪代码,需替换为实际API)api_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/poetry_generation"headers = {'Content-Type': 'application/json','X-BD-API-KEY': 'YOUR_API_KEY'}payload = {"image": img_base64,"prompt": "根据图片内容创作一首五言绝句"}response = requests.post(api_url, headers=headers, json=payload)if response.status_code == 200:return response.json().get('poem', '未能生成诗歌')else:raise Exception(f"API调用失败: {response.text}")
3. 前端页面设计
使用Bootstrap快速构建响应式界面:
<!DOCTYPE html><html><head><title>AI看图写诗</title><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"></head><body><div class="container mt-5"><h1 class="text-center">AI看图写诗</h1><form id="uploadForm" enctype="multipart/form-data"><div class="mb-3"><label for="imageInput" class="form-label">上传图片</label><input class="form-control" type="file" id="imageInput" name="file" accept="image/*"></div><button type="submit" class="btn btn-primary">生成诗歌</button></form><div id="result" class="mt-4 p-3 border rounded" style="display:none;"><h3>生成的诗歌:</h3><pre id="poemContent"></pre></div></div><script>document.getElementById('uploadForm').addEventListener('submit', async (e) => {e.preventDefault();const formData = new FormData(e.target);try {const response = await fetch('/upload', {method: 'POST',body: formData});const data = await response.json();if (data.poem) {document.getElementById('poemContent').textContent = data.poem;document.getElementById('result').style.display = 'block';} else {alert(data.error || '生成失败');}} catch (error) {alert('请求错误: ' + error.message);}});</script></body></html>
四、完整项目源码与部署
1. 项目结构
ai_poetry_project/├── app.py # Flask主程序├── templates/│ └── index.html # 前端页面├── static/ # 静态资源(可选)└── requirements.txt # 依赖列表
2. 启动服务
# app.py 完整示例from flask import Flask, render_template, request, jsonifyimport iofrom PIL import Imageimport base64import requestsapp = Flask(__name__)@app.route('/')def index():return render_template('index.html')@app.route('/upload', methods=['POST'])def upload_image():# ...(前述upload_image函数实现)...if __name__ == '__main__':app.run(debug=True)
3. 部署建议
- 本地测试:直接运行
python app.py,访问http://localhost:5000; - 生产部署:使用Gunicorn+Nginx或Docker容器化部署;
- API安全:添加请求频率限制与身份验证机制。
五、优化与扩展方向
性能优化:
- 添加图片缓存机制,减少重复处理;
- 使用异步任务队列(如Celery)处理耗时操作。
功能增强:
- 支持多种诗歌体裁选择(七言、词牌等);
- 添加用户历史记录与收藏功能。
错误处理:
- 完善API调用失败的重试机制;
- 前端添加加载状态提示。
六、总结与资源
本项目完整实现了从图片上传到诗歌生成的全流程,开发者可通过修改API调用参数适配不同的自然语言生成需求。完整源码已通过测试,可直接用于学习或二次开发。
扩展资源:
- 文心一言API官方文档;
- Flask异步编程指南;
- 响应式Web设计最佳实践。
通过本文的指导,读者不仅能够掌握Python Web开发与AI API集成的核心技能,还能获得一个可实际运行的创意应用案例,为后续开发复杂AI系统奠定基础。

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