Changed the logic of sequence continuing and added min_p

This commit is contained in:
aimfordeb
2026-02-19 19:57:53 +02:00
committed by GitHub
parent 8daba33422
commit 951305a733
+13 -6
View File
@@ -613,6 +613,7 @@ class FunPackStoryWriter:
"prompt_count": ("INT", {"min": 1, "max": 5, "step": 1, "default": 3}),
"top_p": ("FLOAT", {"min": 0.0, "max": 2.0, "step": 0.05, "default": 0.75}),
"top_k": ("INT", {"min": 0, "max": 1000, "step": 1, "default": 40}),
"min_p": ("FLOAT", {"min": 0.0, "max": 1.0, "step": 0.01, "default": 0.1}),
"temperature": ("FLOAT", {"min": 0.0, "max": 2.0, "step": 0.01, "default": 0.6}),
"max_new_tokens": ("INT", {"min": 64, "max": 4096, "step": 64, "default": 512}),
"repetition_penalty": ("FLOAT", {"min": 0.0, "max": 3.0, "step": 0.01, "default": 1.0}),
@@ -631,7 +632,7 @@ class FunPackStoryWriter:
FUNCTION = "write_story"
CATEGORY = "FunPack"
def write_story(self, user_prompt, story_system_prompt, sequence_system_prompt, model_path_type, model_path, llm_safetensors_file, prompt_count, top_p, top_k, temperature, max_new_tokens, repetition_penalty, mode, vision_input, sanity_check, sanity_check_system_prompt):
def write_story(self, user_prompt, story_system_prompt, sequence_system_prompt, model_path_type, model_path, llm_safetensors_file, prompt_count, top_p, top_k, min_p, temperature, max_new_tokens, repetition_penalty, mode, vision_input, sanity_check, sanity_check_system_prompt):
llm_model = None
llm_tokenizer = None
llm_model_device = "cuda" if torch.cuda.is_available() else "cpu"
@@ -685,7 +686,10 @@ class FunPackStoryWriter:
generated_ids = llm_model.generate(
**llm_tokens,
do_sample=True,
top_p=top_p, top_k=top_k, temperature=temperature,
top_p=top_p,
top_k=top_k,
min_p=min_p,
temperature=temperature,
max_new_tokens=max_new_tokens,
repetition_penalty=repetition_penalty,
pad_token_id=llm_tokenizer.pad_token_id,
@@ -708,8 +712,8 @@ class FunPackStoryWriter:
# Add **only** the fresh sequence instruction each time
messages = [
{"role": "system", "content": sequence_system_prompt},
{"role": "user", "content": f"""Current sequence number: {seq_idx + 1}\nTotal sequences requested: {prompt_count}\nOriginal user prompt: {user_prompt}n\Generate the next sequence now."""},
{"role": "assistant", "content": f"""Previous sequences for continuity:{chr(10).join([f"Sequence {i+1}: {text}" for i, text in enumerate(outputs[:seq_idx])]) if seq_idx > 0 else "This is the first sequence."}"""}
{"role": "user", "content": f"""Current sequence number: {seq_idx}\nTotal sequences requested: {prompt_count - 1}\nOriginal user prompt: {user_prompt}n\Generate the next sequence now."""},
{"role": "assistant", "content": f"""Previous sequences for continuity:{chr(10).join([f"Sequence {i}: {text}" for i, text in enumerate(outputs[:seq_idx])]) if seq_idx > 0 else "This is the first sequence."}"""}
]
if vision_input is not None:
@@ -726,6 +730,7 @@ class FunPackStoryWriter:
do_sample=True,
top_p=top_p,
top_k=top_k,
min_p=min_p,
temperature=temperature,
max_new_tokens=max_new_tokens,
repetition_penalty=repetition_penalty,
@@ -746,7 +751,7 @@ class FunPackStoryWriter:
{"role": "user", "content": f"""Original story: {story}
Original system prompt (rules that must have been followed to generate the sequence): {story_system_prompt}
Original user prompt: {user_prompt}
Previous sequence (for continuity check): {outputs[seq_idx-1] if seq_idx > 0 else "This is the first sequence"}
Previous sequence (for continuity check): {outputs[seq_idx] if seq_idx > 0 else "This is the first sequence"}
Sequence to validate and correct if needed: {seq_text}"""}
]
else:
@@ -754,7 +759,7 @@ class FunPackStoryWriter:
{"role": "system", "content": sanity_check_system_prompt},
{"role": "user", "content": f"""Original user prompt: {user_prompt}
Original system prompt (rules that must have been followed to generate the sequence): {sequence_system_prompt}
Previous sequence (for continuity check): {outputs[seq_idx-1] if seq_idx > 0 else "This is the first sequence"}
Previous sequence (for continuity check): {outputs[seq_idx] if seq_idx > 0 else "This is the first sequence"}
Sequence to validate and correct if needed: {seq_text}"""}
]
llm_tokens = llm_tokenizer.apply_chat_template(
@@ -768,6 +773,7 @@ class FunPackStoryWriter:
do_sample=False,
top_p=top_p,
top_k=top_k,
min_p=min_p,
temperature=temperature,
max_new_tokens=1024,
repetition_penalty=1.05,
@@ -1445,5 +1451,6 @@ NODE_DISPLAY_NAME_MAPPINGS = {