feat: add ai generate recipe

This commit is contained in:
YunYouJun
2024-03-13 16:43:58 +08:00
parent d42e3cf65d
commit d25148c731
9 changed files with 297 additions and 1 deletions

3
server/api/README.md Normal file
View File

@@ -0,0 +1,3 @@
# SD API
- [SD WebUI API](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/API)

View File

@@ -0,0 +1,70 @@
// http://localhost:3001/api/recipes/image/generate
import { meat, staple, vegetable } from '~/data/food'
// const sdBaseUrl = 'http://30.30.168.63:7860/'
const sdBaseUrl = 'https://85db1802ae46e57aab.gradio.live/'
const payload = {
// denoising_strength: 0,
prompt: 'food', // 提示词
negative_prompt: '', // 反向提示词
seed: -1, // 种子,随机数
batch_size: 2, // 每次张数
n_iter: 1, // 生成批次
steps: 50, // 生成步数
cfg_scale: 7, // 关键词相关性
width: 512, // 宽度
height: 512, // 高度
restore_faces: false, // 脸部修复
tiling: false, // 可平埔
// override_settings: {
// sd_model_checkpoint: 'wlop-any.ckpt [7331f3bc87]',
// }, // 一般用于修改本次的生成图片的stable diffusion 模型,用法需保持一致
// script_args: [
// 0,
// true,
// true,
// 'LoRA',
// 'dingzhenlora_v1(fa7c1732cc95)',
// 1,
// 1,
// ], // 一般用于lora模型或其他插件参数如示例我放入了一个lora模型 11为两个权重值一般只用到前面的权重值1
sampler_index: 'Euler', // 采样方法
}
// with api /sdapi/v1/txt2img
export interface Txt2ImgResponse {
images: string[]
}
const stuffItems = [
...vegetable,
...meat,
...staple,
]
export default defineEventHandler(async (e) => {
const body = await readBody(e)
const zhFoods = body.foods as string[]
const enFoods = zhFoods.map((food) => {
const item = stuffItems.find(item => item.name === food)
if (item)
return item.en
return ''
})
// TODO: 过滤 prompt 只能是食材
payload.prompt = `<lora:TODO:1>,food focus,transparent background,${enFoods.join(',')}`
// console.log(payload.prompt)
const data = await $fetch<Txt2ImgResponse>('/sdapi/v1/txt2img', {
baseURL: sdBaseUrl,
body: payload,
method: 'POST',
})
return data
})