ChatApp/lib/tools/home/HomeModel.dart
2024-08-11 16:22:42 +08:00

1328 lines
40 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,
}*/
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) {}
}
}