第 12-13 天 多模态 API 实战(文字生成图片 + 语音转文字)

文生图

python 复制代码
import os
import time
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message

dashscope.base_http_api_url = 'https://ws-t6feqeqjdpbi7po1.cn-beijing.maas.aliyuncs.com/api/v1'

api_key = os.getenv("DASHSCOPE_API_KEY")

def text2image(prompt: str, negative: str = "模糊,变形,多余肢体,低画质,水印", retry: int = 2):
    """文生图,返回图片url"""
    for _ in range(retry):
        message = Message(
            role="user",
            content=[
                {
                    "text": prompt
                }
            ]
        )
        rsp = ImageGeneration.async_call(
            model='wan2.7-image-pro',
            api_key=api_key,
            messages=[message],
            n=1,
            size="1024*1024",
            negative_prompt=negative
        )
        if rsp.status_code == 200:
            print(f"任务提交成功,任务ID: {rsp.output.task_id}")

            # 等待任务完成
            status = ImageGeneration.wait(task=rsp, api_key=api_key)

            if status.output.task_status == "SUCCEEDED":
                print("任务完成!")
                print(f"结果:")
                print(status)
            else:
                print(f"任务失败,状态: {status.output.task_status}")
        else:
            print(f"任务创建失败: {rsp.code} - {rsp.message}")
    return None

if __name__ == "__main__":
    # url = text2image("海边落日,亲子风景,写实高清照片")
    # if url:
    #     print("图片地址:", url)

    try:
        url = text2image("海边落日,亲子风景,写实高清照片")
    except Exception as e:
        print(f"错误: {e}")

用的是通义千问的模型

测试的"负面提示词",问了豆包好多次,还是看文档解决的

之前用的是ImageSynthesis(旧版),现在改用 ImageGeneration,调用的方法不一样,查看了文档解决的,以下是生成的图片