人人都是应用开发者:AI时代的全栈产品经理实践
AI时代,应用开发的门槛正在被重新定义。过去你可能觉得写代码是程序员的专利,但现在,人人都能成为应用开发者。这篇文章要聊的就是如何用最短路径、最轻模式,把一个需求真正落地成可用的应用。整个流程拆解下来,其实只有三大步、九小步,手把手教学,没有多余的废话。

第一步:需求描述
做任何应用,需求描述都是地基。这块需要切换到产品经理的视角,把问题说清楚、说系统。参考下面这个模板,基本能覆盖大部分场景:
需求概述
交互界面描述
提供功能工具
看一个Demo成品会更直观:地址见下方。根据它反向推导出需求描述示例:
- :基于Gradio做一个应用。用户输入公众号文章内容后,点击一键生成按钮,自动生成标题、摘要内容,以及基于摘要英文prompt生成的文章配图。
整体需求描述
- :
前端核心模块(依次运行)
- 用户输入框:提醒用户输入公众号文章内容。
- 标题输出框:根据内容自动生成5个适合公众号的标题,64字以内。展示思考过程,思考输出和最终标题输出用两个独立框,左右布局。流式输出并多行完整展示。
- 摘要输出框:自动生成120字以内的摘要。同样左右布局,流式输出多行展示。
- 文章配图prompt输出框:根据摘要内容自动生成英文prompt。思考过程与最终输出分开。注意,最终prompt输出框只输出用于文生图的英文prompt,简洁有效,且支持编辑,旁边有按钮可重新生成。
- 文章配图输出框:根据生成的或编辑后的英文prompt生成配图。每次生成2张,尺寸为1024x500。整体视觉风格为青色+紫色的科技风。
- :标题、摘要、prompt输出统一调用一个大模型API,接口格式如下;文章配图调用另一个文生图API。
服务端API
(此处保留原文中的代码示例,包括两个API调用示例)
第二步:用AI生成代码,到云端Notebook测试打磨
生成代码
Notebook中运行代码
上传.py文件后,一条命令即可运行并获取测试链接:!python /mnt/workspace/文件名.py
测试、打磨
第三步:部署上线
创空间基本设置
关键步骤:保护API Key
上传文件
app.py。完成以上操作,即可发布上线并得到分享链接。
总结
人人都是应用开发者。用模型开启AI魔法,搭建万千应用——这不再是口号。应用可以无限拓展,追求更多功能或更好体验。比如增加文章润色、微信群发文案,或者让插图风格可选。再比如做一些脑洞产品——魔搭专属表情包生成器就是一个不错的例子。它的需求描述也很清晰:基于Gradio做一个表情包生成器;用户输入描述文本、选择图片尺寸;系统自动翻译为英文prompt,在文首加上固定词后作为文生图输入;支持prompt编辑和重新生成,最终生成两张尺寸为800x1024的图片,有独立进度条。
从文本生成到图片生成,API调用方式也一并给出。如果你也想动手试试,现在就可以开始。下一步,看你的了。
示例demo
魔搭专属表情包生成器
需求描述:
1、需求概述:
基于gradio,做一个表情包生成器
2、前端界面:
输入框:提醒用户输入表情包描述文本,比如形状像什么,在做什么。
选择框:用户可选择图片尺寸(size)
输出框1:将用户输入的文本自动翻译成英文prompt,自动都在最前面加上固定词“modalogo,A pixelated, bluish-green character,”,然后将合并后的英文用做文生图prompt;prompt支持编辑,旁边有按钮可点击重新生成。
输出框2:两个图片展示框,分别展示独立生成的图片。尺寸为800*1024
有独立进度条:展示图片生成进度
3、服务端API
1)文本生成API
from openai import OpenAI client = OpenAI( base_url='https://api-inference.modelscope.cn/v1/', api_key='换成你的token, # ModelScope Token ) response = client.chat.completions.create( model='deepseek-ai/DeepSeek-V3', # ModelScope Model-Id messages=[ { 'role': 'system', 'content': 'You are a helpful assistant.' }, { 'role': 'user', 'content': '你好' } ], stream=True ) for chunk in response: print(chunk.choices[0].delta.content, end='', flush=True)
2)图片生成API
import requests import json from PIL import Image from io import BytesIO url = 'https://api-inference.modelscope.cn/v1/images/generations' payload = { 'model': 'Saniac/modalogo',#ModelScope Model-Id,required 'prompt': 'A golden cat'# required } headers = { 'Authorization': 'Bearer 换成你的token', 'Content-Type': 'application/json' } response = requests.post(url, data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers) response_data = response.json() image = Image.open(BytesIO(requests.get(response_data['images'][0]['url']).content)) image.sa ve('result_image.jpg')