Combined unnecessary dual prompt template parameters instruction and text to user
This commit is contained in:
@@ -168,7 +168,7 @@ public class TextCompletionClient implements Client, DisposableBean {
|
||||
}
|
||||
|
||||
if (first && userTurn != null) {
|
||||
prompt.append(promptStrategy.start(systemTurn != null ? systemTurn.text() : "", "", userTurn.text()));
|
||||
prompt.append(promptStrategy.start(systemTurn != null ? systemTurn.text() : "", userTurn.text()));
|
||||
userTurn = null;
|
||||
first = false;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package de.extio.lmlib.prompt;
|
||||
public class AlpacaShortPromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String instruction, final String question, final String text) {
|
||||
public StringBuilder start(final String instruction, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
if (! instruction.isEmpty()) {
|
||||
prompt.append("### Instruction:\n");
|
||||
@@ -11,11 +11,7 @@ public class AlpacaShortPromptStrategy implements PromptStrategy {
|
||||
prompt.append("\n\n");
|
||||
}
|
||||
prompt.append("### Input:\n");
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append("\n\n### Response:\n");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
|
||||
public class ChatMLPromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<|im_start|>");
|
||||
if (!system.isEmpty()) {
|
||||
@@ -15,11 +15,7 @@ public class ChatMLPromptStrategy implements PromptStrategy {
|
||||
prompt.append("<|im_end|>\n");
|
||||
}
|
||||
prompt.append("<|im_start|>user\n");
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append("<|im_end|>\n<|im_start|>assistant\n");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -2,22 +2,22 @@ package de.extio.lmlib.prompt;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* Works for both Gemma2 and Gemma3
|
||||
* @see https://ai.google.dev/gemma/docs/core/prompt-structure
|
||||
*/
|
||||
@Component
|
||||
public class Gemma2PromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<start_of_turn>user\n");
|
||||
if (!system.isEmpty()) {
|
||||
prompt.append(system);
|
||||
prompt.append("\n");
|
||||
prompt.append("\n\n");
|
||||
}
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append("<end_of_turn>\n<start_of_turn>model\n");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
|
||||
public class Llama3PromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<|begin_of_text|>");
|
||||
if (!system.isEmpty()) {
|
||||
@@ -18,11 +18,7 @@ public class Llama3PromptStrategy implements PromptStrategy {
|
||||
prompt.append("<|eot_id|>");
|
||||
}
|
||||
prompt.append("<|start_header_id|>user<|end_header_id|>\n\n");
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append("<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n");
|
||||
|
||||
return prompt;
|
||||
|
||||
@@ -3,13 +3,13 @@ package de.extio.lmlib.prompt;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @see https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-3
|
||||
* @see https://www.llama.com/docs/model-cards-and-prompt-formats/llama4/
|
||||
*/
|
||||
@Component
|
||||
public class Llama4PromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<|begin_of_text|>");
|
||||
if (!system.isEmpty()) {
|
||||
@@ -18,11 +18,7 @@ public class Llama4PromptStrategy implements PromptStrategy {
|
||||
prompt.append("<|eot|>");
|
||||
}
|
||||
prompt.append("<|header_start|>user<|header_end|>\n\n");
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append("<|eot|><|header_start|>assistant<|header_end|>\n");
|
||||
|
||||
return prompt;
|
||||
|
||||
@@ -6,20 +6,14 @@ import org.springframework.stereotype.Component;
|
||||
public class MistralNemoPromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String instruction, final String question, final String text) {
|
||||
public StringBuilder start(final String instruction, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<s>[INST]");
|
||||
if (! instruction.isEmpty()) {
|
||||
prompt.append(instruction);
|
||||
prompt.append("\n");
|
||||
}
|
||||
if (!question.isEmpty() || !text.isEmpty()) {
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
}
|
||||
prompt.append(user);
|
||||
prompt.append("[/INST]");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -6,18 +6,14 @@ import org.springframework.stereotype.Component;
|
||||
public class MistralPromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String instruction, final String question, final String text) {
|
||||
public StringBuilder start(final String instruction, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<s>[INST]");
|
||||
prompt.append(instruction);
|
||||
if (!instruction.isEmpty() && !question.isEmpty()) {
|
||||
if (!instruction.isEmpty() && !user.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(question);
|
||||
if ((!instruction.isEmpty() || !question.isEmpty()) && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append(" [/INST]");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -6,18 +6,14 @@ import org.springframework.stereotype.Component;
|
||||
public class Phi3PromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("<|user|>\n");
|
||||
prompt.append(system);
|
||||
if (!system.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append(" <|end|>\n<|assistant|>");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
|
||||
public class Phi4PromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
if (! system.isEmpty()) {
|
||||
prompt.append("<|im_start|>system<|im_sep|>\n");
|
||||
@@ -14,11 +14,7 @@ public class Phi4PromptStrategy implements PromptStrategy {
|
||||
prompt.append("<|im_end|>\n");
|
||||
}
|
||||
prompt.append("<|im_start|>user<|im_sep|>\n");
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(user);
|
||||
prompt.append("<|im_end|>\n<|im_start|>assistant<|im_sep|>");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ public interface PromptStrategy {
|
||||
|
||||
String getPromptName();
|
||||
|
||||
StringBuilder start(String system, String question, String text);
|
||||
StringBuilder start(String system, String user);
|
||||
|
||||
void continue_(StringBuilder prompt, String assistant);
|
||||
|
||||
|
||||
@@ -6,16 +6,15 @@ import org.springframework.stereotype.Component;
|
||||
public class VicunaPromptStrategy implements PromptStrategy {
|
||||
|
||||
@Override
|
||||
public StringBuilder start(final String system, final String question, final String text) {
|
||||
public StringBuilder start(final String system, final String user) {
|
||||
final StringBuilder prompt = new StringBuilder();
|
||||
prompt.append(system);
|
||||
prompt.append(" USER: ");
|
||||
prompt.append(question);
|
||||
if (!question.isEmpty() && !text.isEmpty()) {
|
||||
if (system.isEmpty()) {
|
||||
prompt.append(system);
|
||||
prompt.append("\n");
|
||||
}
|
||||
prompt.append(text);
|
||||
prompt.append(" ASSISTANT:");
|
||||
prompt.append("USER: ");
|
||||
prompt.append(user);
|
||||
prompt.append("\nASSISTANT:");
|
||||
return prompt;
|
||||
}
|
||||
|
||||
@@ -30,7 +29,7 @@ public class VicunaPromptStrategy implements PromptStrategy {
|
||||
prompt.append(assistant);
|
||||
prompt.append("</s>USER: ");
|
||||
prompt.append(user);
|
||||
prompt.append(" ASSISTANT:");
|
||||
prompt.append("\nASSISTANT:");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user