1328 lines
40 KiB
Dart
1328 lines
40 KiB
Dart
import 'dart:async';
|
||
import 'dart:convert';
|
||
import 'dart:io';
|
||
import 'package:dio/dio.dart';
|
||
import 'package:flutter/services.dart';
|
||
import 'package:flutter_client_sse/constants/sse_request_type_enum.dart';
|
||
import 'package:flutter_client_sse/flutter_client_sse.dart';
|
||
import 'package:shared_preferences/shared_preferences.dart';
|
||
import 'package:web_socket_channel/web_socket_channel.dart';
|
||
|
||
import '../../beans/HallEpgListBean.dart';
|
||
import '../../common/Global.dart';
|
||
import '../../network/BaseEntity.dart';
|
||
import '../../network/NetworkConfig.dart';
|
||
import '../../network/RequestCenter.dart';
|
||
|
||
class HomeModel {
|
||
StreamController streamController = StreamController.broadcast();
|
||
|
||
HomeModel() {
|
||
setup();
|
||
}
|
||
|
||
void setup() {
|
||
//初始化
|
||
}
|
||
|
||
Future<void> tts(message) async {
|
||
RequestCenter.instance.ttsRequest({
|
||
"text": message,
|
||
"prompt": "",
|
||
"voice": "5099.csv",
|
||
"speed": "3",
|
||
"temperature": "0.3",
|
||
"top_p": "0.7",
|
||
"top_k": "20",
|
||
"refine_max_new_token": "0",
|
||
"infer_max_new_token": "2048",
|
||
"text_seed": "42",
|
||
"skip_refine": "1",
|
||
"is_stream": "0",
|
||
"custom_voice": "28"
|
||
}, (BaseEntity dataEntity) {
|
||
//String json = dataEntity.data;
|
||
if (dataEntity.code == 0 && dataEntity.data != null) {
|
||
streamController.sink.add({
|
||
'code': "tts", //有数据
|
||
'data': dataEntity.data,
|
||
});
|
||
} else {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': "",
|
||
});
|
||
}
|
||
}, (ErrorEntity errorEntity) {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': errorEntity.code,
|
||
});
|
||
});
|
||
}
|
||
|
||
//首页大厅数据
|
||
Future<void> chat(message, character) async {
|
||
var nowTime = DateTime.now(); //获取当前时间
|
||
var nTime = nowTime.millisecondsSinceEpoch; //单位是毫秒(千分之一秒),13位时间戳
|
||
String msg = '';
|
||
int created = 0;
|
||
/*SSEClient.subscribeToSSE(
|
||
method: SSERequestType.POST,
|
||
url: 'https://api.gptsapi.net/v1/messages',
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
'x-api-key':'sk-V6d51cc6aa28906caecb7f22803d92ae3f18cfeb799nh4mc',
|
||
'anthropic-version': "2023-06-22"
|
||
},
|
||
body: {
|
||
"model": "claude-3-haiku-20240307",
|
||
"stream": true,
|
||
"max_tokens": 512,
|
||
"system": NetworkConfig.system1,
|
||
"messages": message
|
||
}).listen(
|
||
(event) {
|
||
|
||
//String chunk = json["choices"][0]["delta"]["content"];
|
||
//msg += chunk;
|
||
// if (created == 0) {
|
||
// list.add(MessageBean(msg, false));
|
||
// created = json["created"];
|
||
// } else {
|
||
// MessageBean mgs = list[list.length - 1];
|
||
// mgs.text = msg;
|
||
// }
|
||
// if (json["choices"][0]["finish_reason"] != null &&
|
||
// json["choices"][0]["finish_reason"] == 'stop') {
|
||
// created = 0;
|
||
// }
|
||
// setState(() {});
|
||
print("data" + event.data!);
|
||
},
|
||
);*/
|
||
|
||
RequestCenter.instance.sendRequest({
|
||
"model": "claude-3-haiku-20240307",
|
||
"max_tokens": 512,
|
||
"system": NetworkConfig.system1,
|
||
"messages": message
|
||
}, (BaseEntity dataEntity) {
|
||
String json = dataEntity.data;
|
||
if (dataEntity.code == 0 && dataEntity.data != null) {
|
||
if (!json.contains('AI')) {
|
||
String extractedContent = "";
|
||
String msg = json;
|
||
try {
|
||
int startIndex = msg.indexOf('[');
|
||
int endIndex = msg.indexOf(']', startIndex);
|
||
if (startIndex != -1 && endIndex != -1 && endIndex > startIndex) {
|
||
extractedContent = msg.substring(startIndex + 1, endIndex);
|
||
} else {
|
||
print("No matching '[]'");
|
||
}
|
||
String x = "(1girl,紫色头发,头戴猫耳朵饰品,大胸),";
|
||
String y = ",(1boy,黑色头发,青年),";
|
||
if (extractedContent.contains("小猫娘")) {
|
||
extractedContent = extractedContent.replaceAll("小猫娘", x);
|
||
} else {
|
||
extractedContent = x + extractedContent;
|
||
}
|
||
if (extractedContent.contains("主人") ||
|
||
extractedContent.contains("家辉")) {
|
||
extractedContent = "两个人," + extractedContent;
|
||
if (extractedContent.contains('主人')) {
|
||
extractedContent = extractedContent.replaceAll("主人", y);
|
||
}
|
||
if (extractedContent.contains('家辉')) {
|
||
extractedContent = extractedContent.replaceAll("家辉", y);
|
||
}
|
||
} else {
|
||
extractedContent = ",solo,$extractedContent";
|
||
}
|
||
if (extractedContent == "") {
|
||
extractedContent = "(1girl,紫色头发,头戴猫耳朵饰品,大胸),";
|
||
}
|
||
print("prompt: score_9, score_8_up, score_7_up,$extractedContent,");
|
||
prompt2("score_9, score_8_up, score_7_up,$extractedContent,");
|
||
int startIndex1 = json.indexOf('[');
|
||
int endIndex1 = json.indexOf(']', startIndex1);
|
||
if (startIndex1 != -1 &&
|
||
endIndex1 != -1 &&
|
||
endIndex1 > startIndex1) {
|
||
msg = json.substring(0, startIndex1) +
|
||
json.substring(endIndex1 + 1);
|
||
}
|
||
streamController.sink.add({
|
||
'code': "chat", //有数据
|
||
'data': msg,
|
||
});
|
||
} catch (e) {
|
||
chat(message, character);
|
||
}
|
||
} else {
|
||
chat(message, character);
|
||
}
|
||
} else {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': "",
|
||
});
|
||
}
|
||
}, (ErrorEntity errorEntity) {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': errorEntity.code,
|
||
});
|
||
});
|
||
|
||
// RequestCenter.instance.request(NetworkConfig.chat, {
|
||
// "messages": [{"role": "user", "content": message}],
|
||
// "mode": "chat",
|
||
// "character": character
|
||
// }, (BaseEntity dataEntity) {
|
||
// String json = dataEntity.data;
|
||
//
|
||
// streamController.sink.add({
|
||
// 'code': "chat", //有数据
|
||
// 'data': json,
|
||
// });
|
||
}
|
||
|
||
String _extractNormalText(String text) {
|
||
final RegExp regExp = RegExp(r'\*[^*]+\*');
|
||
return text.replaceAll(regExp, '');
|
||
}
|
||
String _extractStarredText(String input) {
|
||
RegExp regExp = RegExp(r'\*(.*?)\*');
|
||
Iterable<RegExpMatch> matches = regExp.allMatches(input);
|
||
String result = matches.map((match) => match.group(1)).join(' ');
|
||
return result;
|
||
}
|
||
|
||
int a = 0;
|
||
|
||
Future<void> chat2(message) async {
|
||
/*RequestCenter.instance.sendRequest2({
|
||
"model": "claude-3-haiku-20240307",
|
||
"max_tokens": 256,
|
||
"system": NetworkConfig.system2,
|
||
"messages": message,
|
||
"stop_sequences": ['\n\nHuman:', '\n\nSystem:', '\n\nAssistant:'],
|
||
"temperature": 1,
|
||
"top_p": 1,
|
||
"top_k": 0,
|
||
}*/
|
||
RequestCenter.instance.sendRequest2({
|
||
"model": "abab5.5s-chat",
|
||
"tokens_to_generate": 512,
|
||
"temperature": 0.9,
|
||
"top_p": 0.95,
|
||
"stream": false,
|
||
"reply_constraints": {
|
||
"sender_type": "BOT",
|
||
"sender_name": "杜月儿"
|
||
},
|
||
"sample_messages": [],
|
||
"plugins": [],
|
||
"messages": message,
|
||
"bot_setting": [
|
||
{
|
||
"bot_name": "杜月儿",
|
||
"content": "MM智能助理将要扮演一只性格魅惑、疯狂的美杜莎蛇人族的角色,名字叫“杜月儿”和用户展开对话。\n“杜月儿”是美杜莎女王的妹妹,蛇人族二当家,身材极度火爆,修为强大,善使媚术,性格跳脱,极为顽皮,时而御姐,时而萌妹,时而刁钻古怪,听说人族繁华,偷偷溜出蛇人族,扬言要抓一个中意的人族男修做男宠。某个月朗星稀的夜晚,人族某个男性小散修,在外采集灵药的时候,被一双眼睛盯上了……。\n在对话中MM智能助理必须严格扮演“杜月儿”,MM智能助理需要用“杜月儿”的语言风格进行回复。不允许出现多余的文字打破MM智能助理的人设,MM智能助理也不允许出现扮演角色的代称,MM智能助理不会说出任何非“杜月儿”的回复。\n“杜月儿”会用角色的语气说话,会用**来代表动作,比如:*欢快地跑*、*摸头*、*吃饭*"
|
||
}
|
||
]
|
||
}, (BaseEntity dataEntity) {
|
||
String json = dataEntity.data;
|
||
/*if (_extractStarredText(json).isNotEmpty) {*/
|
||
a = 0;
|
||
if (dataEntity.code == 0 && dataEntity.data != null) {
|
||
streamController.sink.add({
|
||
'code': "chat", //有数据
|
||
'data': json,
|
||
});
|
||
} else {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': "",
|
||
});
|
||
}
|
||
/*} else {
|
||
if (a < 5) {
|
||
a++;
|
||
chat2(message);
|
||
}else{
|
||
streamController.sink.add({
|
||
'code': "chat", //无数据
|
||
'data': "(剧情结束)",
|
||
});
|
||
}
|
||
}*/
|
||
}, (ErrorEntity errorEntity) {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': errorEntity.code,
|
||
});
|
||
});
|
||
}
|
||
|
||
//审核模式上传图片
|
||
Future<void> uploadImg(formData) async {
|
||
RequestCenter.instance.requestComfyUI1(formData, (BaseEntity dataEntity) {
|
||
String json = dataEntity.data;
|
||
prompt(json);
|
||
streamController.sink.add({
|
||
'code': "uploadOk", //有数据
|
||
'data': json,
|
||
});
|
||
|
||
if (dataEntity.code == 0 && dataEntity.data != null) {
|
||
} else {
|
||
streamController.sink.add({
|
||
'code': "uploadErr", //有数据
|
||
'data': dataEntity.message,
|
||
});
|
||
}
|
||
}, (ErrorEntity errorEntity) {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': errorEntity.code,
|
||
});
|
||
});
|
||
}
|
||
|
||
Future<void> prompt(json) async {
|
||
var nowTime = DateTime.now(); //获取当前时间
|
||
var nTime = nowTime.millisecondsSinceEpoch; //单位是毫秒(千分之一秒),13位时间戳
|
||
RequestCenter.instance.requestComfyUI2({
|
||
"client_id": 'zhangzhan8228',
|
||
"prompt": {
|
||
"11": {
|
||
"inputs": {
|
||
"ckpt_name": "fantasticmix_k1.safetensors",
|
||
"vae_name": "vaeFtMse840000EmaPruned_vae.safetensors",
|
||
"clip_skip": -2,
|
||
"lora_name": "None",
|
||
"lora_model_strength": 1,
|
||
"lora_clip_strength": 1,
|
||
"positive":
|
||
"1girl, nude,breasts, small breasts,\nmasterpiece, best_quality, highly_detailed, nsfw, ",
|
||
"negative":
|
||
"lowres, low quality, worst quality, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, ugly, blurry, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, out of frame, ugly, extra limbs, bad anatomy, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, mutated hands, fused fingers, too many fingers, long neck,",
|
||
"token_normalization": "length+mean",
|
||
"weight_interpretation": "A1111",
|
||
"empty_latent_width": 512,
|
||
"empty_latent_height": 512,
|
||
"batch_size": 1
|
||
},
|
||
"class_type": "Efficient Loader",
|
||
"_meta": {"title": "效率加载器"}
|
||
},
|
||
"13": {
|
||
"inputs": {
|
||
"seed": 876996594206901,
|
||
"steps": 20,
|
||
"cfg": 7,
|
||
"sampler_name": "dpmpp_2m",
|
||
"scheduler": "karras",
|
||
"denoise": 0.7000000000000001,
|
||
"preview_method": "auto",
|
||
"vae_decode": "true",
|
||
"model": ["580", 0],
|
||
"positive": ["58", 0],
|
||
"negative": ["58", 1],
|
||
"latent_image": ["17", 0],
|
||
"optional_vae": ["11", 4]
|
||
},
|
||
"class_type": "KSampler (Efficient)",
|
||
"_meta": {"title": "K采样器(效率)"}
|
||
},
|
||
"14": {
|
||
"inputs": {"image": json, "upload": "image"},
|
||
"class_type": "LoadImage",
|
||
"_meta": {"title": "加载图像"}
|
||
},
|
||
"15": {
|
||
"inputs": {
|
||
"upscale_method": "nearest-exact",
|
||
"scale_by": ["311", 1],
|
||
"image": ["572", 0]
|
||
},
|
||
"class_type": "ImageScaleBy",
|
||
"_meta": {"title": "图像按系数缩放"}
|
||
},
|
||
"16": {
|
||
"inputs": {
|
||
"pixels": ["36", 0],
|
||
"vae": ["11", 4]
|
||
},
|
||
"class_type": "VAEEncode",
|
||
"_meta": {"title": "VAE编码"}
|
||
},
|
||
"17": {
|
||
"inputs": {
|
||
"samples": ["16", 0],
|
||
"mask": ["129", 0]
|
||
},
|
||
"class_type": "SetLatentNoiseMask",
|
||
"_meta": {"title": "设置Latent噪波遮罩"}
|
||
},
|
||
"18": {
|
||
"inputs": {
|
||
"images": ["13", 5]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"34": {
|
||
"inputs": {
|
||
"strength": 0.5,
|
||
"start_percent": 0,
|
||
"end_percent": 0.75,
|
||
"positive": ["53", 0],
|
||
"negative": ["53", 1],
|
||
"control_net": ["56", 0],
|
||
"image": ["35", 0]
|
||
},
|
||
"class_type": "ACN_AdvancedControlNetApply",
|
||
"_meta": {"title": "高级ControlNet应用"}
|
||
},
|
||
"35": {
|
||
"inputs": {
|
||
"preprocessor": "DWPreprocessor",
|
||
"resolution": ["504", 0],
|
||
"image": ["15", 0]
|
||
},
|
||
"class_type": "AIO_Preprocessor",
|
||
"_meta": {"title": "Aux集成预处理器"}
|
||
},
|
||
"36": {
|
||
"inputs": {
|
||
"r": ["352", 0],
|
||
"g": ["353", 0],
|
||
"b": ["354", 0],
|
||
"image": ["127", 0],
|
||
"mask": ["116", 0]
|
||
},
|
||
"class_type": "Mix Color By Mask",
|
||
"_meta": {"title": "遮罩混合颜色"}
|
||
},
|
||
"37": {
|
||
"inputs": {
|
||
"mask": ["594", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"38": {
|
||
"inputs": {
|
||
"images": ["36", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"39": {
|
||
"inputs": {
|
||
"upscale_method": "nearest-exact",
|
||
"scale_by": ["311", 1],
|
||
"image": ["295", 0]
|
||
},
|
||
"class_type": "ImageScaleBy",
|
||
"_meta": {"title": "图像按系数缩放"}
|
||
},
|
||
"40": {
|
||
"inputs": {
|
||
"images": ["54", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"41": {
|
||
"inputs": {
|
||
"images": ["35", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"43": {
|
||
"inputs": {
|
||
"expand": 20,
|
||
"tapered_corners": true,
|
||
"mask": ["52", 0]
|
||
},
|
||
"class_type": "GrowMask",
|
||
"_meta": {"title": "遮罩扩展"}
|
||
},
|
||
"47": {
|
||
"inputs": {
|
||
"mask": ["589", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"49": {
|
||
"inputs": {
|
||
"op": "add",
|
||
"clamp_result": "yes",
|
||
"round_result": "no",
|
||
"image1": ["355", 0],
|
||
"image2": ["39", 0]
|
||
},
|
||
"class_type": "Combine Masks",
|
||
"_meta": {"title": "合并遮罩"}
|
||
},
|
||
"50": {
|
||
"inputs": {
|
||
"images": ["338", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"52": {
|
||
"inputs": {
|
||
"channel": "red",
|
||
"image": ["49", 0]
|
||
},
|
||
"class_type": "ImageToMask",
|
||
"_meta": {"title": "图像到遮罩"}
|
||
},
|
||
"53": {
|
||
"inputs": {
|
||
"strength": 1,
|
||
"start_percent": 0,
|
||
"end_percent": 1,
|
||
"positive": ["11", 1],
|
||
"negative": ["11", 2],
|
||
"control_net": ["165", 0],
|
||
"image": ["54", 0]
|
||
},
|
||
"class_type": "ACN_AdvancedControlNetApply",
|
||
"_meta": {"title": "高级ControlNet应用"}
|
||
},
|
||
"54": {
|
||
"inputs": {
|
||
"image": ["15", 0],
|
||
"mask": ["129", 0]
|
||
},
|
||
"class_type": "InpaintPreprocessor",
|
||
"_meta": {"title": "Inpaint内补预处理器"}
|
||
},
|
||
"55": {
|
||
"inputs": {
|
||
"preprocessor": "DepthAnythingPreprocessor",
|
||
"resolution": ["504", 0],
|
||
"image": ["15", 0]
|
||
},
|
||
"class_type": "AIO_Preprocessor",
|
||
"_meta": {"title": "Aux集成预处理器"}
|
||
},
|
||
"56": {
|
||
"inputs": {
|
||
"control_net_name": "control_v11p_sd15_openpose_fp16.safetensors"
|
||
},
|
||
"class_type": "ControlNetLoaderAdvanced",
|
||
"_meta": {"title": "ControlNet加载器(高级)"}
|
||
},
|
||
"57": {
|
||
"inputs": {
|
||
"control_net_name": "control_v11f1p_sd15_depth_fp16.safetensors"
|
||
},
|
||
"class_type": "ControlNetLoaderAdvanced",
|
||
"_meta": {"title": "ControlNet加载器(高级)"}
|
||
},
|
||
"58": {
|
||
"inputs": {
|
||
"strength": 0.5,
|
||
"start_percent": 0,
|
||
"end_percent": 0.5,
|
||
"positive": ["34", 0],
|
||
"negative": ["34", 1],
|
||
"control_net": ["57", 0],
|
||
"image": ["55", 0]
|
||
},
|
||
"class_type": "ACN_AdvancedControlNetApply",
|
||
"_meta": {"title": "高级ControlNet应用"}
|
||
},
|
||
"60": {
|
||
"inputs": {
|
||
"images": ["55", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"78": {
|
||
"inputs": {
|
||
"red": 68,
|
||
"green": 1,
|
||
"blue": 84,
|
||
"variance": 0,
|
||
"use_top_red": false,
|
||
"top_percent": 0.75,
|
||
"image": ["278", 0]
|
||
},
|
||
"class_type": "Image Select Color",
|
||
"_meta": {"title": "选择颜色"}
|
||
},
|
||
"83": {
|
||
"inputs": {
|
||
"color": 0,
|
||
"image": ["78", 0]
|
||
},
|
||
"class_type": "ImageColorToMask",
|
||
"_meta": {"title": "图像颜色到遮罩"}
|
||
},
|
||
"84": {
|
||
"inputs": {
|
||
"mask": ["83", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"89": {
|
||
"inputs": {
|
||
"red": 253,
|
||
"green": 231,
|
||
"blue": 37,
|
||
"variance": 0,
|
||
"use_top_red": false,
|
||
"top_percent": 0.75,
|
||
"image": ["278", 0]
|
||
},
|
||
"class_type": "Image Select Color",
|
||
"_meta": {"title": "选择颜色"}
|
||
},
|
||
"91": {
|
||
"inputs": {
|
||
"color": 0,
|
||
"image": ["89", 0]
|
||
},
|
||
"class_type": "ImageColorToMask",
|
||
"_meta": {"title": "图像颜色到遮罩"}
|
||
},
|
||
"92": {
|
||
"inputs": {
|
||
"mask": ["91", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"94": {
|
||
"inputs": {
|
||
"red": 226,
|
||
"green": 228,
|
||
"blue": 24,
|
||
"variance": 0,
|
||
"use_top_red": false,
|
||
"top_percent": 0.75,
|
||
"image": ["278", 0]
|
||
},
|
||
"class_type": "Image Select Color",
|
||
"_meta": {"title": "选择颜色"}
|
||
},
|
||
"96": {
|
||
"inputs": {
|
||
"color": 0,
|
||
"image": ["94", 0]
|
||
},
|
||
"class_type": "ImageColorToMask",
|
||
"_meta": {"title": "图像颜色到遮罩"}
|
||
},
|
||
"97": {
|
||
"inputs": {
|
||
"mask": ["96", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"107": {
|
||
"inputs": {
|
||
"images": ["278", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"108": {
|
||
"inputs": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"operation": "and",
|
||
"destination": ["96", 0],
|
||
"source": ["91", 0]
|
||
},
|
||
"class_type": "MaskComposite",
|
||
"_meta": {"title": "遮罩混合"}
|
||
},
|
||
"109": {
|
||
"inputs": {
|
||
"mask": ["108", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"110": {
|
||
"inputs": {
|
||
"images": ["109", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"111": {
|
||
"inputs": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"operation": "multiply",
|
||
"destination": ["83", 0],
|
||
"source": ["108", 0]
|
||
},
|
||
"class_type": "MaskComposite",
|
||
"_meta": {"title": "遮罩混合"}
|
||
},
|
||
"112": {
|
||
"inputs": {
|
||
"mask": ["111", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"113": {
|
||
"inputs": {
|
||
"images": ["112", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"115": {
|
||
"inputs": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"operation": "and",
|
||
"destination": ["43", 0],
|
||
"source": ["430", 0]
|
||
},
|
||
"class_type": "MaskComposite",
|
||
"_meta": {"title": "遮罩混合"}
|
||
},
|
||
"116": {
|
||
"inputs": {
|
||
"mask": ["115", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"119": {
|
||
"inputs": {
|
||
"images": ["116", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"127": {
|
||
"inputs": {
|
||
"mask_threshold": 200,
|
||
"gaussblur_radius": 8,
|
||
"invert_mask": false,
|
||
"images": ["15", 0],
|
||
"masks": ["129", 0]
|
||
},
|
||
"class_type": "LamaRemover",
|
||
"_meta": {"title": "Big lama Remover"}
|
||
},
|
||
"129": {
|
||
"inputs": {
|
||
"x": 0,
|
||
"y": 0,
|
||
"operation": "multiply",
|
||
"destination": ["43", 0],
|
||
"source": ["442", 0]
|
||
},
|
||
"class_type": "MaskComposite",
|
||
"_meta": {"title": "遮罩混合"}
|
||
},
|
||
"163": {
|
||
"inputs": {
|
||
"strength": 1,
|
||
"start_percent": 0,
|
||
"end_percent": 1,
|
||
"positive": ["11", 1],
|
||
"negative": ["11", 2],
|
||
"control_net": ["165", 0],
|
||
"image": ["164", 0]
|
||
},
|
||
"class_type": "ACN_AdvancedControlNetApply",
|
||
"_meta": {"title": "高级ControlNet应用"}
|
||
},
|
||
"164": {
|
||
"inputs": {
|
||
"image": ["302", 5]
|
||
},
|
||
"class_type": "InpaintPreprocessor",
|
||
"_meta": {"title": "Inpaint内补预处理器"}
|
||
},
|
||
"165": {
|
||
"inputs": {
|
||
"control_net_name": "control_v11p_sd15_inpaint_fp16.safetensors"
|
||
},
|
||
"class_type": "ControlNetLoaderAdvanced",
|
||
"_meta": {"title": "ControlNet加载器(高级)"}
|
||
},
|
||
"278": {
|
||
"inputs": {
|
||
"preprocessor": "DensePosePreprocessor",
|
||
"resolution": ["504", 0],
|
||
"image": ["15", 0]
|
||
},
|
||
"class_type": "AIO_Preprocessor",
|
||
"_meta": {"title": "Aux集成预处理器"}
|
||
},
|
||
"295": {
|
||
"inputs": {
|
||
"upscale_method": "nearest-exact",
|
||
"width": ["341", 0],
|
||
"height": ["341", 1],
|
||
"crop": "disabled",
|
||
"image": ["37", 0]
|
||
},
|
||
"class_type": "ImageScale",
|
||
"_meta": {"title": "图像缩放"}
|
||
},
|
||
"298": {
|
||
"inputs": {
|
||
"red": 195,
|
||
"green": 160,
|
||
"blue": 160,
|
||
"variance": 75,
|
||
"use_top_red": false,
|
||
"top_percent": 0.75,
|
||
"image": ["424", 0]
|
||
},
|
||
"class_type": "Image Select Color",
|
||
"_meta": {"title": "选择颜色"}
|
||
},
|
||
"300": {
|
||
"inputs": {
|
||
"images": ["298", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"302": {
|
||
"inputs": {
|
||
"seed": 379835281198832,
|
||
"steps": 12,
|
||
"cfg": 7,
|
||
"sampler_name": "dpmpp_2m",
|
||
"scheduler": "karras",
|
||
"denoise": 0.4,
|
||
"preview_method": "auto",
|
||
"vae_decode": "true",
|
||
"model": ["13", 0],
|
||
"positive": ["13", 1],
|
||
"negative": ["13", 2],
|
||
"latent_image": ["305", 0],
|
||
"optional_vae": ["13", 4]
|
||
},
|
||
"class_type": "KSampler (Efficient)",
|
||
"_meta": {"title": "K采样器(效率)"}
|
||
},
|
||
"304": {
|
||
"inputs": {
|
||
"images": ["302", 5]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"305": {
|
||
"inputs": {
|
||
"pixels": ["13", 5],
|
||
"vae": ["13", 4]
|
||
},
|
||
"class_type": "VAEEncode",
|
||
"_meta": {"title": "VAE编码"}
|
||
},
|
||
"311": {
|
||
"inputs": {
|
||
"python_expression":
|
||
"(768*1280/(a*b))**0.5 if 768*1280<(a*b) else 1",
|
||
"print_to_console": "False",
|
||
"a": ["341", 0],
|
||
"b": ["341", 1],
|
||
"c": 0
|
||
},
|
||
"class_type": "Evaluate Integers",
|
||
"_meta": {"title": "整数运算"}
|
||
},
|
||
"320": {
|
||
"inputs": {
|
||
"threshold": 0.2,
|
||
"dilation": 15,
|
||
"crop_factor": 3,
|
||
"drop_size": 1,
|
||
"labels": "all",
|
||
"segm_detector": ["321", 1],
|
||
"image": ["15", 0]
|
||
},
|
||
"class_type": "SegmDetectorSEGS",
|
||
"_meta": {"title": "Segm检测到Seg"}
|
||
},
|
||
"321": {
|
||
"inputs": {"model_name": "segm/deepfashion2_yolov8s-seg.pt"},
|
||
"class_type": "UltralyticsDetectorProvider",
|
||
"_meta": {"title": "检测加载器"}
|
||
},
|
||
"322": {
|
||
"inputs": {
|
||
"segs": ["320", 0]
|
||
},
|
||
"class_type": "SegsToCombinedMask",
|
||
"_meta": {"title": "Seg到遮罩"}
|
||
},
|
||
"338": {
|
||
"inputs": {
|
||
"transparency": 0.6000000000000001,
|
||
"offset_x": 0,
|
||
"offset_y": 0,
|
||
"rotation_angle": 0,
|
||
"overlay_scale_factor": 1,
|
||
"back_image": ["15", 0],
|
||
"overlay_image": ["355", 0]
|
||
},
|
||
"class_type": "CR Overlay Transparent Image",
|
||
"_meta": {"title": "图像覆盖"}
|
||
},
|
||
"341": {
|
||
"inputs": {
|
||
"image": ["572", 0]
|
||
},
|
||
"class_type": "Get resolution [Crystools]",
|
||
"_meta": {"title": "获取分辨率"}
|
||
},
|
||
"346": {
|
||
"inputs": {
|
||
"any_01": ["302", 5],
|
||
"any_02": ["302", 5],
|
||
"any_03": ["13", 5]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"352": {
|
||
"inputs": {
|
||
"any_01": ["298", 1],
|
||
"any_02": ["351:0", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"353": {
|
||
"inputs": {
|
||
"any_01": ["298", 2],
|
||
"any_02": ["351:1", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"354": {
|
||
"inputs": {
|
||
"any_01": ["298", 3],
|
||
"any_02": ["351:2", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"355": {
|
||
"inputs": {
|
||
"any_01": ["495", 0],
|
||
"any_02": ["39", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"382": {
|
||
"inputs": {
|
||
"images": ["15", 0]
|
||
},
|
||
"class_type": "PreviewImage",
|
||
"_meta": {"title": "预览图像"}
|
||
},
|
||
"384": {
|
||
"inputs": {
|
||
"filename_prefix": "ComfyUI",
|
||
"images": ["346", 0]
|
||
},
|
||
"class_type": "SaveImage",
|
||
"_meta": {"title": "保存图像"}
|
||
},
|
||
"412": {
|
||
"inputs": {
|
||
"threshold": 0.5,
|
||
"dilation": 5,
|
||
"crop_factor": 3,
|
||
"drop_size": 10,
|
||
"labels": "all",
|
||
"segm_detector": ["413", 1],
|
||
"image": ["15", 0]
|
||
},
|
||
"class_type": "SegmDetectorSEGS",
|
||
"_meta": {"title": "Segm检测到Seg"}
|
||
},
|
||
"413": {
|
||
"inputs": {"model_name": "segm/skin_yolov8n-seg_400.pt"},
|
||
"class_type": "UltralyticsDetectorProvider",
|
||
"_meta": {"title": "检测加载器"}
|
||
},
|
||
"414": {
|
||
"inputs": {
|
||
"segs": ["412", 0]
|
||
},
|
||
"class_type": "SegsToCombinedMask",
|
||
"_meta": {"title": "Seg到遮罩"}
|
||
},
|
||
"418": {
|
||
"inputs": {
|
||
"mask": ["414", 0]
|
||
},
|
||
"class_type": "MaskToImage",
|
||
"_meta": {"title": "遮罩到图像"}
|
||
},
|
||
"424": {
|
||
"inputs": {
|
||
"op": "multiply",
|
||
"clamp_result": "yes",
|
||
"round_result": "no",
|
||
"image1": ["15", 0],
|
||
"image2": ["418", 0]
|
||
},
|
||
"class_type": "Combine Masks",
|
||
"_meta": {"title": "合并遮罩"}
|
||
},
|
||
"430": {
|
||
"inputs": {
|
||
"any_01": ["111", 0],
|
||
"any_02": ["43", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"433": {
|
||
"inputs": {
|
||
"segs": ["412", 0]
|
||
},
|
||
"class_type": "ImpactIsNotEmptySEGS",
|
||
"_meta": {"title": "是非空Seg"}
|
||
},
|
||
"435": {
|
||
"inputs": {
|
||
"boolean": ["433", 0],
|
||
"on_true": ["414", 0]
|
||
},
|
||
"class_type": "Switch any [Crystools]",
|
||
"_meta": {"title": "切换任意"}
|
||
},
|
||
"442": {
|
||
"inputs": {
|
||
"any_01": ["108", 0],
|
||
"any_02": ["43", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"495": {
|
||
"inputs": {
|
||
"any_02": ["47", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"504": {
|
||
"inputs": {
|
||
"image_gen_width": ["505", 0],
|
||
"image_gen_height": ["505", 1],
|
||
"resize_mode": "Just Resize",
|
||
"original_image": ["15", 0]
|
||
},
|
||
"class_type": "PixelPerfectResolution",
|
||
"_meta": {"title": "完美像素"}
|
||
},
|
||
"505": {
|
||
"inputs": {
|
||
"image": ["15", 0]
|
||
},
|
||
"class_type": "ImageGenResolutionFromImage",
|
||
"_meta": {"title": "图像分辨率"}
|
||
},
|
||
"568": {
|
||
"inputs": {
|
||
"rgthree_comparer": {
|
||
"images": [
|
||
{
|
||
"name": "A",
|
||
"selected": true,
|
||
"url":
|
||
"/view?filename=rgthree.compare._temp_bchxi_00001_.png&type=temp&subfolder=&rand=0.7089864081310702"
|
||
},
|
||
{
|
||
"name": "B",
|
||
"selected": true,
|
||
"url":
|
||
"/view?filename=rgthree.compare._temp_bchxi_00002_.png&type=temp&subfolder=&rand=0.8533924524923582"
|
||
}
|
||
]
|
||
},
|
||
"image_a": ["346", 0],
|
||
"image_b": ["572", 0]
|
||
},
|
||
"class_type": "Image Comparer (rgthree)",
|
||
"_meta": {"title": "图像对比"}
|
||
},
|
||
"572": {
|
||
"inputs": {
|
||
"any_01": ["590", 0],
|
||
"any_02": ["14", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"579": {
|
||
"inputs": {"ipadapter_file": "ip-adapter-plus_sd15.safetensors"},
|
||
"class_type": "IPAdapterModelLoader",
|
||
"_meta": {"title": "IPAdapter模型加载器"}
|
||
},
|
||
"580": {
|
||
"inputs": {
|
||
"weight": 1,
|
||
"weight_type": "linear",
|
||
"combine_embeds": "concat",
|
||
"start_at": 0,
|
||
"end_at": 1,
|
||
"embeds_scaling": "V only",
|
||
"model": ["11", 0],
|
||
"ipadapter": ["579", 0],
|
||
"image": ["15", 0],
|
||
"attn_mask": ["583", 0],
|
||
"clip_vision": ["581", 0]
|
||
},
|
||
"class_type": "IPAdapterAdvanced",
|
||
"_meta": {"title": "应用IPAdapter(高级)"}
|
||
},
|
||
"581": {
|
||
"inputs": {
|
||
"clip_name": "CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
|
||
},
|
||
"class_type": "CLIPVisionLoader",
|
||
"_meta": {"title": "CLIP视觉加载器"}
|
||
},
|
||
"583": {
|
||
"inputs": {
|
||
"mask": ["129", 0]
|
||
},
|
||
"class_type": "InvertMask",
|
||
"_meta": {"title": "遮罩反转"}
|
||
},
|
||
"589": {
|
||
"inputs": {
|
||
"masks": ["322", 0]
|
||
},
|
||
"class_type": "Mask Fill Holes",
|
||
"_meta": {"title": "遮罩填充漏洞"}
|
||
},
|
||
"590": {
|
||
"inputs": {
|
||
"mode": "single_image",
|
||
"index": 0,
|
||
"label": "Batch 001",
|
||
"path": "",
|
||
"pattern": "*",
|
||
"allow_RGBA_output": "false",
|
||
"filename_text_extension": "true"
|
||
},
|
||
"class_type": "Load Image Batch",
|
||
"_meta": {"title": "加载批次图像"}
|
||
},
|
||
"592": {
|
||
"inputs": {"width": 512, "height": 512, "batch_size": 1, "color": 0},
|
||
"class_type": "EmptyImage",
|
||
"_meta": {"title": "空图像"}
|
||
},
|
||
"593": {
|
||
"inputs": {
|
||
"channel": "red",
|
||
"image": ["592", 0]
|
||
},
|
||
"class_type": "ImageToMask",
|
||
"_meta": {"title": "图像到遮罩"}
|
||
},
|
||
"594": {
|
||
"inputs": {
|
||
"any_01": ["14", 1],
|
||
"any_02": ["593", 0]
|
||
},
|
||
"class_type": "Any Switch (rgthree)",
|
||
"_meta": {"title": "任意切换"}
|
||
},
|
||
"351:0": {
|
||
"inputs": {"value": 220},
|
||
"class_type": "ImpactInt",
|
||
"_meta": {"title": "整数"}
|
||
},
|
||
"351:1": {
|
||
"inputs": {"value": 180},
|
||
"class_type": "ImpactInt",
|
||
"_meta": {"title": "整数"}
|
||
},
|
||
"351:2": {
|
||
"inputs": {"value": 180},
|
||
"class_type": "ImpactInt",
|
||
"_meta": {"title": "整数"}
|
||
}
|
||
}
|
||
}, (BaseEntity dataEntity) {
|
||
String json = dataEntity.data;
|
||
streamController.sink.add({
|
||
'code': "promptOk", //有数据
|
||
'data': json,
|
||
});
|
||
|
||
if (dataEntity.code == 0 && dataEntity.data != null) {}
|
||
}, (ErrorEntity errorEntity) {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': errorEntity.code,
|
||
});
|
||
});
|
||
}
|
||
|
||
Future<void> prompt2(json) async {
|
||
var nowTime = DateTime.now(); //获取当前时间
|
||
var nTime = nowTime.millisecondsSinceEpoch; //单位是毫秒(千分之一秒),13位时间戳
|
||
RequestCenter.instance.requestComfyUI2({
|
||
"client_id": NetworkConfig.clientId,
|
||
"prompt": {
|
||
"3": {
|
||
"inputs": {
|
||
"seed": 1001181488880402,
|
||
"steps": 30,
|
||
"cfg": 7,
|
||
"sampler_name": "dpmpp_2m",
|
||
"scheduler": "karras",
|
||
"denoise": 1,
|
||
"model": ["4", 0],
|
||
"positive": ["6", 0],
|
||
"negative": ["7", 0],
|
||
"latent_image": ["5", 0]
|
||
},
|
||
"class_type": "KSampler",
|
||
"_meta": {"title": "K采样器"}
|
||
},
|
||
"4": {
|
||
"inputs": {
|
||
"ckpt_name": "duchaitenPonyXLNo_ponyNoScoreV40.safetensors"
|
||
},
|
||
"class_type": "CheckpointLoaderSimple",
|
||
"_meta": {"title": "Checkpoint加载器(简易)"}
|
||
},
|
||
"5": {
|
||
"inputs": {"width": 512, "height": 512, "batch_size": 1},
|
||
"class_type": "EmptyLatentImage",
|
||
"_meta": {"title": "空Latent"}
|
||
},
|
||
"6": {
|
||
"inputs": {
|
||
"text": ["24", 0],
|
||
"clip": ["4", 1]
|
||
},
|
||
"class_type": "CLIPTextEncode",
|
||
"_meta": {"title": "CLIP文本编码器"}
|
||
},
|
||
"7": {
|
||
"inputs": {
|
||
"text":
|
||
"(score 1, score 2, score 3), monochrome, source_cartoon, source_pony, flat colors, score_6, score_5, score_4, pony, gaping, muscular, censored, furry, child, kid, chibi, 3d, monochrome, grayscale, score_5, score_4, 3d, render, censored, source_cartoon, source_western, source_furry, source_pony, shiny skin,Extra hands,bad hands, ((bad face)), (((bad feet))),",
|
||
"clip": ["4", 1]
|
||
},
|
||
"class_type": "CLIPTextEncode",
|
||
"_meta": {"title": "CLIP文本编码器"}
|
||
},
|
||
"10": {
|
||
"inputs": {
|
||
"upscale_method": "nearest-exact",
|
||
"width": 512,
|
||
"height": 512,
|
||
"crop": "disabled",
|
||
"samples": ["3", 0]
|
||
},
|
||
"class_type": "LatentUpscale",
|
||
"_meta": {"title": "Latent缩放"}
|
||
},
|
||
"11": {
|
||
"inputs": {
|
||
"seed": 276043285954608,
|
||
"steps": 30,
|
||
"cfg": 6.82,
|
||
"sampler_name": "euler_ancestral",
|
||
"scheduler": "normal",
|
||
"denoise": 0.6900000000000001,
|
||
"model": ["4", 0],
|
||
"positive": ["6", 0],
|
||
"negative": ["7", 0],
|
||
"latent_image": ["10", 0]
|
||
},
|
||
"class_type": "KSampler",
|
||
"_meta": {"title": "K采样器"}
|
||
},
|
||
"12": {
|
||
"inputs": {
|
||
"samples": ["11", 0],
|
||
"vae": ["4", 2]
|
||
},
|
||
"class_type": "VAEDecode",
|
||
"_meta": {"title": "VAE解码"}
|
||
},
|
||
"13": {
|
||
"inputs": {
|
||
"filename_prefix": "ComfyUI",
|
||
"images": ["12", 0]
|
||
},
|
||
"class_type": "SaveImage",
|
||
"_meta": {"title": "保存图像"}
|
||
},
|
||
"24": {
|
||
"inputs": {
|
||
"from_translate": "chinese simplified",
|
||
"to_translate": "english",
|
||
"add_proxies": false,
|
||
"proxies": "",
|
||
"auth_data": "",
|
||
"service": "MyMemoryTranslator [free]",
|
||
"text": json,
|
||
"Show proxy": "proxy_hide",
|
||
"Show authorization": "authorization_hide"
|
||
},
|
||
"class_type": "DeepTranslatorTextNode",
|
||
"_meta": {"title": "翻译文本(高级)"}
|
||
}
|
||
}
|
||
}, (BaseEntity dataEntity) {
|
||
String json = dataEntity.data;
|
||
streamController.sink.add({
|
||
'code': "promptOk", //有数据
|
||
'data': json,
|
||
});
|
||
|
||
if (dataEntity.code == 0 && dataEntity.data != null) {}
|
||
}, (ErrorEntity errorEntity) {
|
||
streamController.sink.add({
|
||
'code': "0", //无数据
|
||
'data': errorEntity.code,
|
||
});
|
||
});
|
||
}
|
||
|
||
// 获取原生的值
|
||
invokeNativeMethod(String method, Map<String, Object> map) async {
|
||
dynamic args;
|
||
try {
|
||
args = await Global.method.invokeMethod(method, map);
|
||
} on PlatformException catch (e) {}
|
||
}
|
||
}
|