ollama/template.py

29 lines
1.4 KiB
Python
Raw Normal View History

2023-06-26 17:41:16 +00:00
from difflib import SequenceMatcher
2023-06-27 18:07:30 +00:00
model_prompts = {
"alpaca": "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{prompt}\n\n### Response:\n\n",
"gpt4": "### Instruction:\n{prompt}\n\n### Response:\n",
"hermes": "### Instruction:\n{prompt}\n\n### Response:\n",
"oasst": "{prompt}",
"orca": "### System:\nYou are an AI assistant that follows instruction extremely well. Help as much as you can.\n\n### User:\n{prompt}\n\n### Response:",
"qlora": "### Human: {prompt}\n### Assistant:",
"tulu": "\n{prompt}\n\n(include newline)",
"vicuna": "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.\n\nUSER: {prompt}\nASSISTANT:",
"wizardlm": "{prompt}\n\n### Response:",
}
2023-06-26 17:41:16 +00:00
def template(model, prompt):
max_ratio = 0
closest_key = ""
model_name = model.lower()
# Find the specialized prompt with the closest name match
for key in model_prompts.keys():
ratio = SequenceMatcher(None, model_name, key).ratio()
if ratio > max_ratio:
max_ratio = ratio
closest_key = key
# Return the value of the closest match
2023-06-26 17:56:54 +00:00
p = model_prompts.get(closest_key) # TODO: provide a better default template
2023-06-26 17:41:16 +00:00
return p.format(prompt=prompt)