84 lines
2.7 KiB
Markdown
84 lines
2.7 KiB
Markdown
|
|
# Documentation
|
|
- Class name: Get Prompt
|
|
- Category: Bmad/dump
|
|
- Output node: True
|
|
- Repo Ref: https://github.com/bmad4ever/ComfyUI-Bmad-Custom-Nodes
|
|
|
|
该节点旨在处理和修改用于API交互的给定提示结构,具体做法是移除不必要的元素,并根据指定的输出模式(如打印到控制台或保存到文件)进行调整。该节点在准备提示以供执行或审查方面发挥着关键作用,确保只保留相关数据并以适当的格式呈现。
|
|
|
|
# Input types
|
|
## Required
|
|
- api_prompt
|
|
- 指定处理后提示的输出模式,如打印到控制台或保存到文件。这个选择决定了最终提示结构的处理方式,影响节点的执行流程和提示数据的呈现方式。
|
|
- Comfy dtype: COMBO[STRING]
|
|
- Python dtype: List[str]
|
|
|
|
# Output types
|
|
该节点没有输出类型。
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `CPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class GetPrompt:
|
|
prompt_mode = ["print to console", "save to file"]
|
|
|
|
def __init__(self):
|
|
self.output_dir = folder_paths.get_output_directory()
|
|
self.type = "output"
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {"required": {
|
|
"api_prompt": (s.prompt_mode, {"default": "print to console"})
|
|
},
|
|
"hidden": {"prompt": "PROMPT", "unique_id": "UNIQUE_ID"},
|
|
}
|
|
|
|
RETURN_TYPES = ()
|
|
FUNCTION = "getPrompt"
|
|
CATEGORY = "Bmad/dump"
|
|
OUTPUT_NODE = True
|
|
|
|
def getPrompt(self, api_prompt, prompt, unique_id):
|
|
# changing the original will mess the prompt execution, therefore make a copy
|
|
prompt = copy.deepcopy(prompt)
|
|
|
|
# remove this node from the prompt
|
|
this_node = prompt[unique_id]
|
|
del prompt[unique_id]
|
|
|
|
# remove widgtes inputs from RequestInputs, only "values" is needed.
|
|
for key in prompt:
|
|
if prompt[key]["class_type"] == "RequestInputs":
|
|
inputs = prompt[key]["inputs"]
|
|
for attribute in list(inputs.keys()):
|
|
if attribute != "values":
|
|
del inputs[attribute]
|
|
break # supposes only 1 RequestInputs node exists
|
|
|
|
prompt = {"prompt": prompt}
|
|
|
|
# print to console or file
|
|
if api_prompt == "print to console":
|
|
print(json.dumps(prompt))
|
|
elif api_prompt == "save to file":
|
|
# TODO
|
|
# avoid collisions (maybe just name it w/ date/time prefix?)
|
|
# instead of owerriding the file
|
|
file = "prompt.json"
|
|
file = os.path.join(self.output_dir, file)
|
|
with open(file, 'w') as f:
|
|
json.dump(prompt, f, indent=1)
|
|
else:
|
|
pass
|
|
|
|
return ()
|
|
|
|
```
|