目标
有很多多模态的AI工具,用的少就用在线图形化的,需要批量,就尝试代码生成,本文尝试代码调用多模态AI,阿里通义有免费额度,作为练手应该挺好,如果以后选其他的,技术也是相通的。
准备
需要vsCode并按照python,参考之前的文档。
开始
1、注册并生成api-key
阿里云注册后,需要实名认证,才能开通阿里云百炼服务,才能配置api-可以。
-
个人实名认证:
参考指导文档:
-
开启服务
认证成功后,到阿里的百炼控制台:
开通服务,在180天内,有100万tockens的免费额度。
-
生成api-key
在右侧账号下点击“API-KEY”,可以设置你的key:
创建key:
创建后,点击“查看”,可以看到key的内容,并复制:
复制key,保存备用。
2、python调用测试
-
api-key设置环境变量(可选)
可以将API Key配置到环境变量,以后直接从环境变量里取,当然也可以在代码里直接用api-key,所以这步是可选的,参考下图步骤
-
安装openai
在vs中的终端,执行命令,安装openai包:
pip install -U openai
-
测试代码
创建.py结尾的文件,文件代码为:
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
#api_key=os.getenv("DASHSCOPE_API_KEY"),
api_key="你自己的api-key",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-plus", # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '你是谁?'}
]
)
print(completion.choices[0].message.content)
如果前面设置了DASHSCOPE_API_KEY环境变量,就用这句代码,如同提示没找到环境变量,就是设置后当前终端没有生效,重启一下vs就可以了:
api_key=os.getenv("DASHSCOPE_API_KEY"),
没设置,就直接写入自己的api-key就行了:
api_key="你自己的api-key",
运行代码,返回信息,如下图所示,就表示环境搭建好了:
3、文生图
多模态的api免费额度
安装包
本示例里用到的包,模型管理包,安装命令如下
pip install dashscope
requests包安装
pip install requests
-
文生图代码
创建一个新.py文件,代码为:
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os
prompt = "一间有着精致窗户的花店,漂亮的木质门,摆放着花朵"
print('----sync call, please wait a moment----')
rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
model="wanx2.1-t2i-turbo",
prompt=prompt,
n=1,
size='1124*800')
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
# 在当前目录下保存图片
for result in rsp.output.results:
file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
with open('./%s' % file_name, 'wb+') as f:
f.write(requests.get(result.url).content)
else:
print('sync_call Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
在vs编辑器里看看,有没有引入的包,包名是灰色的,如果有就是环境里缺这个包,用pip install 包名,加载包就行了。
执行后,会在当前目录下多一个图片文件,整个执行效果是这样:
我这次生成的图片是这样的:
通过改变prompt提示词,以及图画参数,可以生成自己想要的图。
4、其他-创意海报生成
大家可以参考官方文档,有很多其他模型可以选择:
图像生成-通义万相_大模型服务平台百炼(Model Studio)-阿里云帮助中心
我看了一下创意海报生成,其中没有python的代码示例,然后,我就问了DeepSeek-r1:
“python调用wanx-poster-generation-v1 示例代码”
DeepSeek-r1分析之后,就返回了代码:
拷贝到我的vs里,替换api-key,就运行出来了,感觉AI还是有点用,共享一下海报的代码:
import requests
import time
# 替换为你的阿里云API Key(从百炼控制台获取)
API_KEY = "你自己的aip-key"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"X-DashScope-Async": "enable",
"Content-Type": "application/json"
}
def create_poster_task():
"""创建海报生成任务"""
url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis"
payload = {
"model": "wanx-poster-generation-v1",
"input": {
"title": "呼家将", # 主标题(必填,30字符内)
"sub_title": "—刘兰芳播讲", # 副标题(可选)
#"body_text": "春节是中国最重要的传统节日之一,象征新的开始与希望", # 正文(可选,50字符内)
"prompt_text_zh": "山川,沙场,将军", # 中文提示词(与英文至少选其一)
"wh_ratios": "横版", # 版式:横版/竖版
"lora_name": "中国水墨", # 海报风格(可选,见风格枚举)
"lora_weight": 0.8, # 风格权重 [0,1]
"generate_mode": "generate", # 生成模式:generate/sr/hrf
"generate_num": 1 # 生成数量 [1,4]
},
"parameters": {}
}
response = requests.post(url, headers=HEADERS, json=payload)
if response.status_code == 200:
return response.json()["output"]["task_id"]
else:
raise Exception(f"任务创建失败: {response.text}")
def check_task_status(task_id):
"""轮询任务状态并获取结果"""
url = f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}"
while True:
response = requests.get(url, headers={"Authorization": f"Bearer {API_KEY}"})
data = response.json()
status = data["output"]["task_status"]
if status == "SUCCEEDED":
render_urls = data["output"].get("render_urls", [])
if render_urls:
print("生成的海报URL(24小时内有效):")
for url in render_urls:
print(url)
else:
print("检测到敏感内容,图片被拦截")
break
elif status in ["PENDING", "RUNNING"]:
print("任务处理中,等待5秒后重试...")
time.sleep(5)
elif status == "FAILED":
error_code = data["output"].get("code", "Unknown")
error_msg = data["output"].get("message", "无错误详情")
raise Exception(f"任务失败: {error_code} - {error_msg}")
else:
raise Exception(f"未知状态: {status}")
if __name__ == "__main__":
try:
task_id = create_poster_task()
print(f"任务ID: {task_id}")
check_task_status(task_id)
except Exception as e:
print(f"错误: {str(e)}")
执行后,提示并返回结果:
点击上面的url,就下载了生成的图片,我这次生成是这样的:
本文就到这里,就到这里~~~~~~~