UNPKG

@teenth/sdk-tool

Version:

sdk-tool with R2 storage support

169 lines (168 loc) 4.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.kieChat = exports.grsaiStatus = exports.replicateFlux = exports.tuziFlux = exports.grsaiResult = exports.grsaiChat = exports.type = exports.handleChatCallback = void 0; const request_1 = require("../request"); const grsai_secret = process.env.GRSAI_SECRET; const tuzi_secret = process.env.TUZI_SECRET; const kie_secret = process.env.KIE_SECRET; const urlPrefix = process.env.URL_PREFIX; if (!grsai_secret || !tuzi_secret || !kie_secret || !urlPrefix) { throw new Error(`Missing environment variables: grsai_secret: ${grsai_secret}, tuzi_secret: ${tuzi_secret}, kie_secret: ${kie_secret}, urlPrefix: ${urlPrefix}`); } // 兼容各个平台的回调参数处理 const handleChatCallback = (data) => { // kie if (data.code) { if (data.code === 200) { const { taskId, info } = data.data; return { id: taskId, url: info.resultImageUrl, status: "succeeded", }; } return { id: data.taskId, url: "", status: "failed", }; } // grsai return { id: data.id, url: data.url, status: data.status, }; }; exports.handleChatCallback = handleChatCallback; const grsaiHeader = { "Content-Type": "application/json", Authorization: `Bearer ${grsai_secret}`, }; const tuziHeader = { "Content-Type": "application/json", Authorization: `Bearer ${tuzi_secret}`, }; const kieHeader = { "Content-Type": "application/json", Authorization: `Bearer ${kie_secret}`, }; exports.type = { GRSAI: "grsai", TUZI: "tuzi", }; async function grsaiChat(req) { const response = await (0, request_1.post)("https://grsai.dakka.com.cn/v1/draw/completions", { method: "POST", headers: grsaiHeader, body: { model: "sora-image", prompt: req.prompt, size: req.aspectRatio, variants: 1, urls: req.userImg ? [req.userImg] : null, webHook: req.webHook, shutProgress: false, }, }); return response; } exports.grsaiChat = grsaiChat; async function grsaiResult(id) { const response = await (0, request_1.post)(`https://grsai.dakka.com.cn/v1/draw/completions`, { method: "POST", headers: grsaiHeader, body: { id, }, }); return response; } exports.grsaiResult = grsaiResult; async function tuziFlux(req) { const prompt = `${req.userImg}, ${req.prompt}`; const res = await fetch("https://api.tu-zi.com/v1/images/generations", { method: "POST", headers: tuziHeader, body: JSON.stringify({ model: "flux-kontext-pro", prompt, aspect_ratio: req.aspectRatio, output_format: "png", safety_tolerance: 2, prompt_upsampling: false, }), }); if (res.ok) { const data = await res.json(); return data; } else { const error = await res.text(); return { code: 500, data: null, message: error, }; } } exports.tuziFlux = tuziFlux; async function replicateFlux(req) { const prompt = `${req.userImg}, ${req.prompt}`; const res = await fetch("https://api.replicate.com/v1/models/black-forest-labs/flux-kontext-pro/predictions", { method: "POST", headers: tuziHeader, body: JSON.stringify({ model: "flux-kontext-pro", prompt, aspect_ratio: req.aspectRatio, output_format: "png", safety_tolerance: 2, prompt_upsampling: false, }), }); if (res.ok) { const data = await res.json(); return data; } else { const error = await res.text(); return { code: 500, data: null, message: error, }; } } exports.replicateFlux = replicateFlux; async function grsaiStatus() { const res = await (0, request_1.get)(`https://grsai.dakka.com.cn/client/common/getModelStatus?model=sora-image`, { method: "GET", headers: grsaiHeader, }); return res; } exports.grsaiStatus = grsaiStatus; async function kieChat(req) { const res = await (0, request_1.post)("https://kieai.erweima.ai/api/v1/flux/kontext/generate", { method: "POST", headers: kieHeader, body: { prompt: req.prompt, input_image: req.userImg, size: req.aspectRatio, output_format: "png", enableFallback: true, fallbackModel: "GPT_IMAGE_1", callBackUrl: req.webHook, }, }); const { data } = res; return { code: 200, data: { id: data.taskId, }, }; } exports.kieChat = kieChat;