搭建文生图AI系统

本文涉及的产品
视觉智能开放平台,视频资源包5000点
NLP自然语言处理_高级版,每接口累计50万次
视觉智能开放平台,分割抠图1万点
简介: 随着人工智能的发展,**文本生成图像(文生图)**技术在广告创意、视觉设计、内容营销等领域应用广泛。阿里云通义千问作为先进的大语言模型,不仅具备强大的文本理解能力,还能与图像生成技术结合,实现根据文本描述自动生成高质量图像。本博客将展示如何使用通义千问与阿里云的其他产品(如函数计算、API 网关、对象存储 OSS)搭建一个简单的文生图系统,实现用户输入文本并生成相应图像的功能。

一、项目背景与产品介绍

随着人工智能的发展,文本生成图像(文生图)技术在广告创意、视觉设计、内容营销等领域应用广泛。阿里云通义千问作为先进的大语言模型,不仅具备强大的文本理解能力,还能与图像生成技术结合,实现根据文本描述自动生成高质量图像。

本博客将展示如何使用通义千问与阿里云的其他产品(如函数计算、API 网关、对象存储 OSS)搭建一个简单的文生图系统,实现用户输入文本并生成相应图像的功能。

二、系统架构设计
文生图系统架构如下:

通义千问 API:处理用户文本输入,生成图像描述。
图像生成 API:将文本描述转换为图像。
函数计算(FC):承载逻辑处理,将用户请求分发到相关 API。
对象存储(OSS):存储生成的图像并提供外部访问。
API 网关:作为统一入口,提供 HTTP 接口。
前端界面:提供用户输入文本并展示生成图像的页面。

三、阿里云相关产品的使用流程

  1. 通义千问 API 接入

登录阿里云,进入通义千问控制台。
开通 API 服务,获取AppKey和AppSecret。
确认通义千问可正常生成图像描述。
示例调用(Python代码)
import requests
import json

API_URL = "https://qianwen-api.aliyun.com/v1/completions"
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"

headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {APP_SECRET}"
}

data = {
"model": "qianwen-chat",
"prompt": "请描述一幅夕阳下的山川图景。",
"max_tokens": 100,
"temperature": 0.7
}

response = requests.post(API_URL, headers=headers, data=json.dumps(data))
print(response.json())

输出事例:
{
"choices": [
{
"text": "一幅夕阳西下,群山连绵起伏,天空染上橙红色的图景。"
}
]
}

  1. 图像生成 API 接入(可选 Midjourney 或 DALL·E 替代)

将通义千问生成的描述发送到图像生成 API。以下是调用示例:

IMAGE_API_URL = "https://api.image-generator.com/v1/generate"

image_data = {
"prompt": response.json()["choices"][0]["text"],
"size": "1024x1024"
}

image_response = requests.post(IMAGE_API_URL, headers={"Authorization": "Bearer image_api_key"}, data=json.dumps(image_data))
image_url = image_response.json().get("url")
print(f"生成的图像链接:{image_url}")

  1. 函数计算(FC)处理逻辑

登录阿里云控制台,进入函数计算。
创建新的函数,选择 HTTP 触发器。
部署完整代码,将用户文本生成图像并返回结果。

函数代码示例:

import json
import requests
import os

def handler(environ, start_response):
try:
request_body = environ['wsgi.input'].read().decode('utf-8')
user_prompt = json.loads(request_body)['prompt']

    # 通义千问生成图像描述
    api_url = "https://qianwen-api.aliyun.com/v1/completions"
    app_secret = os.getenv("APP_SECRET")
    headers = {"Content-Type": "application/json", "Authorization": f"Bearer {app_secret}"}
    payload = {"model": "qianwen-chat", "prompt": user_prompt, "max_tokens": 100, "temperature": 0.7}

    response = requests.post(api_url, headers=headers, json=payload)
    description = response.json().get("choices", [{}])[0].get("text")

    # 调用图像生成 API
    image_api_url = "https://api.image-generator.com/v1/generate"
    image_data = {"prompt": description, "size": "1024x1024"}
    image_response = requests.post(image_api_url, headers=headers, json=image_data)
    image_url = image_response.json().get("url")

    start_response('200 OK', [('Content-Type', 'application/json')])
    return [json.dumps({"image_url": image_url}).encode('utf-8')]
except Exception as e:
    start_response('500 Internal Server Error', [('Content-Type', 'text/plain')])
    return [str(e).encode('utf-8')]
  1. 配置 API 网关

登录阿里云,进入API 网关。
创建 API 服务并绑定函数计算,设置路径为/generate-image。
配置 API 安全策略。

  1. 存储图像到 OSS

登录阿里云,进入OSS 控制台。
创建一个存储桶并设置公共读取权限。
上传图像并获取访问链接。
示例 OSS 上传代码

import oss2

def upload_image_to_oss(image_url, file_name):
auth = oss2.Auth('your_access_key_id', 'your_access_key_secret')
bucket = oss2.Bucket(auth, 'oss-cn-your-region.aliyuncs.com', 'your_bucket_name')

image_data = requests.get(image_url).content
bucket.put_object(file_name, image_data)
return f"https://{bucket.bucket_name}.oss-cn-your-region.aliyuncs.com/{file_name}"

四、前端展示示例

<!DOCTYPE html>

<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>文生图系统</title>
</head>
<body>
    <h1>文生图系统</h1>
    <textarea id="prompt" placeholder="请输入生成图像的描述"></textarea><br>
    <button onclick="generateImage()">生成图像</button>
    <img id="result" style="display:none;" />

    <script>
        async function generateImage() {
   
            const prompt = document.getElementById('prompt').value;
            const response = await fetch('https://your_api_gateway_url/generate-image', {
   
                method: 'POST',
                headers: {
   'Content-Type': 'application/json'},
                body: JSON.stringify({
    prompt })
            });
            const result = await response.json();
            const img = document.getElementById('result');
            img.src = result.image_url;
            img.style.display = 'block';
        }
    </script>
</body>
</html>

五、总结与优化建议
提高图像生成速度:可通过缓存和并行调用优化响应时间。
多样化生成:通过调整temperature参数或提供多个模型选项增加生成多样性。
监控与日志:使用阿里云日志服务(SLS)监控系统性能,定位问题。
通过本文的示例,您可以轻松构建基于阿里云通义千问的文生图系统,为您的业务或项目提供自动化图像生成能力。希望这篇博客为您的开发提供有效的指导!

目录
相关文章
|
存储 人工智能 算法
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
886 0
|
人工智能
AI 绘画Stable Diffusion 研究(五)sd文生图功能详解(下)(3)
AI 绘画Stable Diffusion 研究(五)sd文生图功能详解(下)
455 0
|
2月前
|
人工智能 弹性计算 自然语言处理
|
7月前
|
机器学习/深度学习 人工智能 监控
基于函数计算体验AIGC文生图应用
小陈在学习Serverless和函数计算后,计划通过阿里云函数计算服务实践AIGC应用。他发现阿里云提供了基于Stable Diffusion的文生图模型模板,可以快速创建AIGC应用。部署步骤包括开通函数计算服务,通过模板创建应用并部署,然后通过应用域名进行文字生图体验。用户还能查看和管理函数,进行版本和别名管理。实验完成后,应用可以被安全删除。
402 2
|
4月前
|
人工智能 自然语言处理 物联网
Datawhale从零入门AI文生图原理&实践-Task1
Datawhale从零入门AI文生图原理&实践-Task1
215 11
|
4月前
|
机器学习/深度学习 人工智能 编解码
AI文生图模型
8月更文挑战第16天
|
4月前
|
算法 物联网 Serverless
一键打造你的定制化AIGC文生图工具
【8月更文挑战第2天】一键打造你的定制化AIGC文生图工具
140 0
|
4月前
|
人工智能 编解码 自然语言处理
AI文生图模型DALL·E 3
8月更文挑战第15天
|
4月前
|
机器学习/深度学习 人工智能 编解码
|
6月前
|
人工智能 前端开发 JavaScript
人工智能文生图技术介绍
文生图技术将文字描述转化为图像,免除了设计师的参与。它分为&quot;代码式&quot;和&quot;AI&quot;两类。代码式如PlantUML、Mermaid和Reveal.js,适合开发人员通过特定语法创建图表。AI文生图如MidJourney和文心一言,能根据文本生成图像,MidJourney在文生图领域表现突出。这些工具为不同工作场景提供了便利。
人工智能文生图技术介绍