ChatApp/lib/tools/home/HomeModel.dart
2024-07-05 10:00:00 +08:00

1308 lines
39 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
}, (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) {}
}
}