fix(prompt): revert back the behavior, enabling fill-in-the-middle if suffix is empty (use an linebreak as suffix) (#560)
parent
d27c09d75d
commit
2e8b12951d
|
|
@ -29,11 +29,7 @@ impl PromptBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_prompt(&self, prefix: String, suffix: Option<String>) -> String {
|
fn build_prompt(&self, prefix: String, suffix: String) -> String {
|
||||||
let Some(suffix) = suffix else {
|
|
||||||
return prefix;
|
|
||||||
};
|
|
||||||
|
|
||||||
let Some(prompt_template) = &self.prompt_template else {
|
let Some(prompt_template) = &self.prompt_template else {
|
||||||
return prefix;
|
return prefix;
|
||||||
};
|
};
|
||||||
|
|
@ -51,10 +47,20 @@ impl PromptBuilder {
|
||||||
|
|
||||||
pub fn build(&self, language: &str, segments: Segments, snippets: &[Snippet]) -> String {
|
pub fn build(&self, language: &str, segments: Segments, snippets: &[Snippet]) -> String {
|
||||||
let segments = rewrite_with_snippets(language, segments, snippets);
|
let segments = rewrite_with_snippets(language, segments, snippets);
|
||||||
self.build_prompt(
|
self.build_prompt(segments.prefix, get_default_suffix(segments.suffix))
|
||||||
segments.prefix,
|
}
|
||||||
segments.suffix.filter(|x| !x.trim_end().is_empty()),
|
}
|
||||||
)
|
|
||||||
|
fn get_default_suffix(suffix: Option<String>) -> String {
|
||||||
|
if suffix.is_none() {
|
||||||
|
return "\n".to_owned();
|
||||||
|
}
|
||||||
|
|
||||||
|
let suffix = suffix.unwrap();
|
||||||
|
if suffix.is_empty() {
|
||||||
|
"\n".to_owned()
|
||||||
|
} else {
|
||||||
|
suffix
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,7 +217,7 @@ mod tests {
|
||||||
};
|
};
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
pb.build(language, segments, snippets),
|
pb.build(language, segments, snippets),
|
||||||
"this is some prefix"
|
"<PRE> this is some prefix <SUF>\n <MID>"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -223,7 +229,7 @@ mod tests {
|
||||||
};
|
};
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
pb.build(language, segments, snippets),
|
pb.build(language, segments, snippets),
|
||||||
"this is some prefix"
|
"<PRE> this is some prefix <SUF>\n <MID>"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,7 +251,10 @@ mod tests {
|
||||||
prefix: "".into(),
|
prefix: "".into(),
|
||||||
suffix: None,
|
suffix: None,
|
||||||
};
|
};
|
||||||
assert_eq!(pb.build(language, segments, snippets), "");
|
assert_eq!(
|
||||||
|
pb.build(language, segments, snippets),
|
||||||
|
"<PRE> <SUF>\n <MID>"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test w/ emtpy prefix, w/ empty suffix.
|
// Test w/ emtpy prefix, w/ empty suffix.
|
||||||
|
|
@ -254,7 +263,10 @@ mod tests {
|
||||||
prefix: "".into(),
|
prefix: "".into(),
|
||||||
suffix: Some("".into()),
|
suffix: Some("".into()),
|
||||||
};
|
};
|
||||||
assert_eq!(pb.build(language, segments, snippets), "");
|
assert_eq!(
|
||||||
|
pb.build(language, segments, snippets),
|
||||||
|
"<PRE> <SUF>\n <MID>"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue