ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用 Python 接生图接口:从同步到异步并发的完整演进

用 Python 接生图接口:从同步到异步并发的完整演进 Python 怎么调 AI 生图 API三十行跑通 nano banana pro含重试与异步并发网上 Python 调图像生成接口的例子大多绑死某一家 SDK换个服务就得重写。其实完全不用 SDK——该服务兼容 OpenAI 的chat/completions协议requests一个库就够了。这篇给一份能直接抄进项目的实现同步版三十行跑通再补上重试和asyncio并发。一、接口信息项值Base URLhttps://API_HOST接口POST /v1/chat/completions鉴权Authorization: Bearer {你的API密钥}数据格式application/jsonUTF-8二、最小实现importosimportrequests ENDPOINThttps://API_HOST/v1/chat/completionsdefgenerate(prompt:str,model:strnano-banana-pro,timeout:int120)-dict:调 AI 绘画API 出图。生图慢timeout 一定要给足。resprequests.post(ENDPOINT,headers{Authorization:fBearer{os.environ[TTQ_API_KEY]},Content-Type:application/json,},json{model:model,messages:[{role:user,content:prompt}]},timeouttimeout,)resp.raise_for_status()returnresp.json()if__name____main__:datagenerate(白底电商主图无线蓝牙耳机居中构图柔和顶光)print(data)两个新手最容易踩的坑密钥别写死在代码里走环境变量别提交进仓库timeout别用默认值——requests默认是不超时的网络一抖请求就永久挂住跑批时整个进程卡死。三、加重试生图 API偶发 5xx 和网络抖动是常态没有重试的批量脚本基本跑不完importtimefromrequests.exceptionsimportRequestExceptiondefgenerate_with_retry(prompt:str,model:strnano-banana-pro,attempts:int3)-dict:lastNoneforiinrange(attempts):try:returngenerate(prompt,model)exceptRequestExceptionase:laste# 指数退避2s、4s、8s。别用固定间隔服务端抖动时会同时重试放大压力time.sleep(2**(i1))raiselast注意只对网络异常和 5xx重试。4xx 是请求本身有问题密钥错、参数错、积分不足重试多少次都一样白白浪费时间。四、异步并发批量出图用asynciohttpx比多线程干净得多用信号量把并发压在配额之内importasyncioimporthttpxasyncdefbatch_generate(prompts:list[str],model:strnano-banana2,workers:int16):semasyncio.Semaphore(workers)# 同时在飞的请求数headers{Authorization:fBearer{os.environ[TTQ_API_KEY]}}asyncwithhttpx.AsyncClient(timeout120)asclient:asyncdefone(idx:int,prompt:str):asyncwithsem:try:rawaitclient.post(ENDPOINT,headersheaders,json{model:model,messages:[{role:user,content:prompt}],})r.raise_for_status()returnidx,r.json()exceptException:returnidx,None# 失败留空跑完统一挑出来重试resultsawaitasyncio.gather(*(one(i,p)fori,pinenumerate(prompts)))out[None]*len(prompts)foridx,datainresults:out[idx]datareturnout结果按下标写回是关键——跑完一眼就能定位哪几条失败不用整批重来。workers按自己配额调16 起步比较稳。五、模型怎么选model字段直接换字符串函数签名都不用动模型代码说明消耗nano-banana2Flash 级速度快适合跑量8 积分/次nano-banana-proPro 级支持 1K/2K/4K10 积分/次gpt-image-2细节质感好适合终稿按次计费Veo 3.1 视频生成/Sora 2生视频120 / 130 积分/次实践上的分工批量草稿用nano-banana2终稿切nano-banana-pro或gpt-image-2再出一版对比挑最好的用。六、小结Python 接生图接口的要点就四条密钥走环境变量、timeout给足、只对 5xx 重试、并发用信号量压住。该服务的 OpenAI 兼容协议让 Python 侧完全不需要 SDKrequests或httpx直接调。模型全nano banana pro、gpt-image-2、Veo 3.1、Sora 2 一个密钥全接、价格便宜积分制明码标价、并发高、出图快、稳定。接口服务甜甜圈APIdashengfenshen.cn
返回列表