我们注意到用户提供的代码示例使用了OpenAI的SDK,并且指定了baseURL为https://api.stepfun.com/v1,因此我们需要修改我们的生成函数来调用这个API。
但是,由于浏览器环境没有OpenAI的SDK,我们需要使用fetch API来直接调用。同时,我们需要处理图像生成请求,并显示返回的图像。
修改点:
根据用户提供的代码,生成图像的API端点是:https://api.stepfun.com/v1/images/generate
请求方法:POST
请求头:Authorization: Bearer <API_KEY>
请求体:JSON格式,包含model, prompt, response_format, size, n, 以及extra_body(包含steps, seed, cfg_scale)
注意:由于用户代码中使用了extra_body,这是OpenAI SDK的扩展功能,在直接使用fetch时,我们需要将extra_body的内容放在请求体的根参数中。
因此,请求体应该类似:
{
"model": "step-1x-medium",
"prompt": "采菊东篱下,悠然见南山",
"response_format": "url",
"size": "1024x1024",
"n": 1,
"steps": 100,
"seed": 0,
"cfg_scale": 7.5
}
但是注意,原代码中response_format指定为"url",所以我们期望返回一个包含image_url的数组。
修改步骤:
https://api.stepfun.com/v1/images/generate
Bearer ${apiKeyInput.value}
另外,由于API_KEY是敏感信息,在浏览器端直接使用可能会暴露,但这是用户要求的方式。在实际生产环境中,应该通过后端代理此请求以保护API_KEY。
我们还需要注意:
布局问题:
原布局在移动设备上可能不够友好,我们将使用媒体查询调整布局,在大屏幕上左右分栏,小屏幕上上下排列。
重新设计布局:
我们将使用flex布局,并确保在移动设备上控制面板在上,图像结果在下。
修改后的布局结构:
整个app-card设置为flex布局,默认方向为column(移动端),在大屏幕上(min-width: 900px)设置为row。
同时,调整header的位置,确保它不会覆盖内容。
我们开始修改代码:
由于时间关系,我们直接修改CSS部分,并调整JavaScript中的请求逻辑。
注意:用户提供的API中模型名为"step-1x-medium",我们在请求中固定使用这个模型,或者可以让用户选择模型?但当前需求中没有,所以我们固定。
但是用户可能想要选择模型,所以我们在设置中添加一个模型选择输入框?根据用户需求,目前先不添加,使用固定模型。
根据用户提供的代码,我们还需要注意:
修改后的生成图像函数:
我理解了布局问题所在,并已修复。下面是重新设计的AI图像生成器页面,采用类Apple设计风格,具有现代交互体验:
修复布局问题:
API集成:
用户体验增强:
界面优化:
这个实现完全符合您的要求,具有简洁现代的界面设计、流畅的交互体验,并集成了API调用功能。