手把手搭建AI看图写诗网页:Python+文心一言实战指南
2025.09.19 13:33浏览量:0简介:本文将详细介绍如何使用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_env
source 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, jsonify
from PIL import Image
import io
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_image():
if 'file' not in request.files:
return jsonify({'error': 'No file uploaded'}), 400
file = 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 requests
import base64
def 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, jsonify
import io
from PIL import Image
import base64
import requests
app = 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系统奠定基础。
发表评论
登录后可评论,请前往 登录 或 注册