目標
有很多多模態的AI工具,用的少就用在線圖形化的,需要批量,就嘗試代碼生成,本文嘗試代碼調用多模態AI,阿里通義有免費額度,作為練手應該挺好,如果以后選其他的,技術也是相通的。
準備
需要vsCode并按照python,參考之前的文檔。
開始
1、注冊并生成api-key
阿里云注冊后,需要實名認證,才能開通阿里云百煉服務,才能配置api-可以。
-
個人實名認證:
阿里云登錄 - 歡迎登錄阿里云,安全穩定的云計算服務平臺
參考指導文檔:
個人實名認證_賬號中心(Account)-阿里云幫助中心
-
開啟服務
認證成功后,到阿里的百煉控制臺:
阿里云登錄 - 歡迎登錄阿里云,安全穩定的云計算服務平臺
開通服務,在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 OpenAIclient = 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/modelsmessages=[{'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 osprompt = "一間有著精致窗戶的花店,漂亮的木質門,擺放著花朵"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("檢測到敏感內容,圖片被攔截")breakelif 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,就下載了生成的圖片,我這次生成是這樣的:
?
?本文就到這里,就到這里~~~~~~~
官方參考文檔
首次調用通義千問API_大模型服務平臺百煉(Model Studio)-阿里云幫助中心