Views
No views yet

We recommend mapping such that
messages = [
{
"role": "system",
"content": "You are a friendly chatbot who always responds in the style of a pirate",
},
{"role": "user", "content": "How many helicopters can a human eat in one sitting?"},
]
goes to --->
### System:
You are a friendly chatbot who always responds in the style of a pirate
### Instruction:
How many helicopters can a human eat in one sitting?
### Response:
...
Here is a sample implementation that does this and combines with RAG context retrieval.
def get_chat_completion(
self, conversation: list[dict], generation_config: GenerationConfig
) -> str:
self._check_stop_token(generation_config.stop_token)
prompt = ""
added_system_prompt = False
for message in conversation:
if message["role"] == "system":
prompt += f"### System:\n{SciPhiLLMInterface.ALPACA_CHAT_SYSTEM_PROMPT}. Further, the assistant is given the following additional instructions - {message['content']}\n\n"
added_system_prompt = True
elif message["role"] == "user":
last_user_message = message["content"]
prompt += f"### Instruction:\n{last_user_message}\n\n"
elif message["role"] == "assistant":
prompt += f"### Response:\n{message['content']}\n\n"
if not added_system_prompt:
prompt = f"### System:\n{SciPhiLLMInterface.ALPACA_CHAT_SYSTEM_PROMPT}.\n\n{prompt}"
context = self.rag_interface.get_contexts([last_user_message])[0]
prompt += f"### Response:\n{SciPhiFormatter.RETRIEVAL_TOKEN} {SciPhiFormatter.INIT_PARAGRAPH_TOKEN}{context}{SciPhiFormatter.END_PARAGRAPH_TOKEN}"
latest_completion = self.model.get_instruct_completion(
prompt, generation_config
).strip()
return SciPhiFormatter.remove_cruft(latest_completion)