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