@teenth/sdk-tool
Version:
sdk-tool with R2 storage support
169 lines (168 loc) • 4.95 kB
JavaScript
"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;