一、它解决什么问题
做饮食方案,过去要么靠营养师人工排餐,要么给出一张冷冰冰的纯文本清单。把"目标 + 周期 + 偏好 + 禁忌 + 热量"这些零散信息交给工具,直接得到一份结构化菜单文本加一张可直接转发的成品海报图,这就是「基于用户饮食目标自动生成个性化膳食规划图文」这个能力做的事情。
它的特点可以拆成三点:
- 输入自然语言,输出双形态:你写一段提示词(饮食目标、周期、偏好、禁忌、热量要求),它返回一份按日按餐的结构化菜单文本,同时渲染成一张带版式的可视化海报。
- 风格与比例可控:可选"莫兰迪扁平插画、写实摄影、手绘水彩、极简线条、3D 渲染"等构图风格,以及
1:1 / 3:4 / 4:3 / 16:9 / 9:16等画幅比例,适配朋友圈、海报、公众号头图等不同场景。 - 异步两段式调用:先提交任务拿
task_id,再轮询查结果,生成类任务单个约 15–60 秒完成。
下面用一个贯穿性的思路走一遍:先讲清怎么接,再拿三个不同诉求的案例实测出图,最后把结果解析好。
二、接入方式
平台统一走异步两段式协议,对所有 AI Skill 工作流通用。按调用顺序有两个端点(完整调用地址以控制台为准,本文按约定省略完整 URL):
| 步骤 | 方法 | 端点(路径占位) | 说明 |
|---|---|---|---|
| ① 提交执行 | POST | /flow/execute/{flow_id}?appKey=YOUR_APPKEY |
请求体为 Skill 输入字段,成功返回 task_id |
| ② 查询结果 | GET | /flow/task/query/{task_id}?appKey=YOUR_APPKEY |
建议 1–2 秒轮询一次,直到 status 为 SUCCESS 或 FAILED |
鉴权统一放在 URL 查询参数 appKey 上。appKey 在本文代码中仅出现一次,统一以 YOUR_APPKEY 占位,实际接入时替换为你自己的密钥。
说明:
YOUR_APPKEY为占位符,请勿在公开内容中填入真实密钥;调用地址与密钥获取入口以控制台为准。
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
user_prompt |
string | 是 | 用户规划提示词,包含饮食目标、周期、偏好、禁忌、热量要求等全部细节 |
style |
string | 否 | 构图风格,如写实摄影、手绘水彩、极简线条、3D 渲染等,默认"莫兰迪扁平插画" |
aspect_ratio |
string | 否 | 构图比例,可选 1:1、3:4、4:3、16:9、9:16,默认 1:1 |
返回结构
提交端点返回:
{
"showapi_res_code": 0,
"showapi_res_body": {
"task_id": "3592_6abb32193c51f2492b0046xx"
}
}
查询端点返回(节选关键字段):
{
"showapi_res_code": 0,
"showapi_res_body": {
"status": "SUCCESS",
"progress": 100,
"flow_result": {
"output": {
"diet_plan_poster_url": "生成海报图片地址",
"diet_plan_text": "结构化膳食方案文本,按日按餐分布"
}
}
}
}
几个实用字段:
status:取值SUCCESS / RUNNING / FAILED / PENDING。progress:执行进度百分比,可用于可视化。step_status_list:各步骤状态,可用它做进度条。flow_result.output.diet_plan_text:按日按餐的菜单文本,直接可展示。flow_result.output.diet_plan_poster_url:成品海报图。
一个重要细节:成品图链接是临时资源(短期约 1 小时、长期约 3 天),拿到后应当立即下载落盘,不要把它当成长期可访问的 CDN 地址直接使用。
三、调用示例
下面用一个 Python 片段演示"提交 → 轮询 → 取结果"的完整闭环(URL 与密钥均按约定占位):
import json, time, requests
FLOW_ID = "smart_diet_plan_poster_generator_flow_id" # 以控制台为准
APP_KEY = "YOUR_APPKEY"
BASE = "https://route.showapi.com" # 调用地址以控制台为准
def submit(user_prompt, style="莫兰迪扁平插画", aspect_ratio="1:1"):
url = f"{BASE}/flow/execute/{FLOW_ID}"
r = requests.post(url, params={
"appKey": APP_KEY},
json={
"user_prompt": user_prompt,
"style": style,
"aspect_ratio": aspect_ratio})
data = r.json()
assert data["showapi_res_code"] == 0, data.get("showapi_res_error")
return data["showapi_res_body"]["task_id"]
def poll(task_id, interval=2, timeout=120):
url = f"{BASE}/flow/task/query/{task_id}"
start = time.time()
while time.time() - start < timeout:
r = requests.get(url, params={
"appKey": APP_KEY})
body = r.json().get("showapi_res_body", {
})
status = body.get("status")
print("progress:", body.get("progress"), "status:", status)
if status in ("SUCCESS", "FAILED"):
return body
time.sleep(interval)
raise TimeoutError("任务超时")
# ---- 使用 ----
task_id = submit("减脂期14天食谱,不吃香菜和内脏,日均1500大卡,"
"高蛋白低碳水,喜欢中式家常口味",
style="莫兰迪扁平插画", aspect_ratio="3:4")
result = poll(task_id)
fr = result["flow_result"]
print(fr["output"]["diet_plan_text"])
print(fr["output"]["diet_plan_poster_url"])
四、三个案例实测
围绕三种典型诉求,各构造一条 user_prompt,风格与画幅按需指定,实测出图。
案例 1|减脂期(14 天,1500 kcal,忌香菜内脏)
提示词:减脂期 14 天食谱,不吃香菜和内脏,日均 1500 大卡,高蛋白低碳水,喜欢中式家常口味,晚餐不饿肚子。
风格 / 比例:莫兰迪扁平插画 / 3:4。
生成的菜单文本(节选):
早餐:小米粥 1 碗,水煮蛋 1 个,清炒时蔬 150g
午餐:糙米饭 100g,清蒸鱼/鸡胸肉 150g,西兰花/菠菜 200g
晚餐:杂粮粥半碗,豆腐/瘦肉 100g,凉拌蔬菜 200g遵循高蛋白、低糖、低碳水原则,日均热量控制在 1500kcal 左右,结合中式传统烹饪方式,晚餐保持适量。
海报为柔和的莫兰迪色系,按早/午/晚三餐卡片化排布,并在底部标出"日均热量 1500kcal"与"高蛋白、低糖、低碳水"营养原则,直接可用于公众号或社群分享。


案例 2|增肌期(7 天,2600 kcal,乳糖不耐受替换)
提示词:增肌期 7 天食谱,力量训练人群,每天 5 餐含加餐,日均 2600 大卡,蛋白质每公斤体重 2 克,乳糖不耐受喝不了牛奶需替换,口味偏清淡。
风格 / 比例:写实摄影 / 16:9。
生成的菜单为按天铺开的 7 日 5 餐结构,亮点是自动把乳制品做了替换(无乳糖场景用豆奶、无糖酸奶替代),并穿插燕麦、全麦、坚果、蛋白棒等加餐。节选前两天:
【第 1 天】
早餐:燕麦片 60g,蛋白粉 1 勺,水煮蛋 3 个,全麦面包 2 片
午餐:瘦牛肉 200g,杂粮饭 150g,清炒西兰花 200g
加餐:希腊酸奶(无乳糖用豆奶替代)150g,杏仁 30g
晚餐:鸡胸肉 200g,蒸红薯 150g,凉拌菠菜 200g
16:9 横版画幅适合做横幅、PPT 与视频字幕条,写实摄影风格让餐食更有真实食欲感。


案例 3|控糖期(7 天,1600 kcal,粗粮杂粮主食)
提示词:血糖偏高人群 7 天控糖食谱,不吃精制米面和白砂糖,粗粮杂粮主食,少油少盐,日均 1600 大卡,每餐先吃菜再吃主食。
风格 / 比例:手绘水彩 / 4:3。
生成结果把主食统一换成杂粮、荞麦、芋头、紫薯等低 GI 选项,并保留了"先菜后主食"的进食顺序提示,节选:
【第 1 天】
早餐:杂粮粥 50g,水煮蛋 1 个,凉拌黄瓜
午餐:清蒸鲈鱼 150g,白灼菜心 200g,荞麦面 50g
晚餐:豆腐菌菇汤,清炒西兰花 200g
手绘水彩的 4:3 画幅偏温润,适合健康科普类图文。


五、结果解析与落地建议
拿到 flow_result 后,建议按下面思路处理:
- 先取文本:
output.diet_plan_text是纯结构化数据,适合直接入库、做二次编辑或喂给大模型做翻译/精简。 - 再取图片:
output.diet_plan_poster_url是成品图,立即下载落盘(临时链接有时效),若需公网长期展示,先上传到自己的对象存储/OSS 再对外引用。 - 用
step_status_list做进度:六步流程(合规校验 → 解析意图 → 生成方案 → 生成海报提示词 → 启动生图 → 轮询生图状态)每一步都有状态,可在前端画进度条,减少用户"卡住"的焦虑。 - 失败兜底:
status=FAILED时remark给出原因,output可能为部分结果,务必做判空处理。
六、使用注意
- 密钥安全:
appKey不要写进前端代码或公开仓库,走服务端代理调用。 - 临时图:成品海报链接为短期资源,务必即取即存。
- 生成耗时:单任务约 15–60 秒,批量或前端等待要按异步设计。
- 合规:饮食建议仅供参考,特殊人群(孕产妇、慢病患者、儿童等)请在专业指导下执行,不要据此替代医疗建议。
数据来源:阿里云市场「饮食规划-瘦身导航仪-图文版膳食方案-菜单生成-健康饮食」接口实测输出。