1414 PREFIX ,
1515 SUFFIX ,
1616 THOUGHT_SEQ ,
17- V2_ASST_PREFIX ,
18- V2_PROMPTER_PREFIX ,
1917)
2018from chat_chain_utils import compose_tools_from_plugin , extract_tool_and_input , prepare_prompt , use_tool
2119from hf_langchain_inference import HFInference
2624from oasst_shared .model_configs import ModelConfig
2725from oasst_shared .schemas import inference
2826from settings import settings
27+ from utils import special_tokens
2928
3029# Exclude tools description from final prompt. Saves ctx space but can hurt output
3130# quality especially if truncation kicks in. Dependent on model used
@@ -143,7 +142,11 @@ def handle_plugin_usage(
143142 action_input_format = (
144143 JSON_FORMAT_PAYLOAD if prompt_template .template .find ("payload" ) != - 1 else JSON_FORMAT_NO_PAYLOAD
145144 )
146- eos_token = tokenizer .eos_token if hasattr (tokenizer , "eos_token" ) else ""
145+ eos_token = ""
146+ if special_tokens ["end" ]:
147+ eos_token = special_tokens ["end" ]
148+ elif hasattr (tokenizer , "eos_token" ):
149+ eos_token = tokenizer .eos_token
147150 tool_names = [tool .name for tool in tools ]
148151
149152 chain = PromptedLLM (
@@ -170,7 +173,7 @@ def handle_plugin_usage(
170173 ),
171174 )
172175
173- init_prompt = f"{ input_prompt } { eos_token } { V2_ASST_PREFIX } "
176+ init_prompt = f"{ input_prompt } { eos_token } { special_tokens [ 'assistant' ] } "
174177 init_prompt , chain_response = chain .call (init_prompt )
175178
176179 inner_monologue .append ("In: " + str (init_prompt ))
@@ -203,7 +206,9 @@ def handle_plugin_usage(
203206
204207 # Save previous chain response for use in final prompt
205208 prev_chain_response = chain_response
206- new_prompt = f"{ input_prompt } { eos_token } { V2_ASST_PREFIX } { chain_response } { OBSERVATION_SEQ } { tool_response } "
209+ new_prompt = (
210+ f"{ input_prompt } { eos_token } { special_tokens ['assistant' ]} { chain_response } { OBSERVATION_SEQ } { tool_response } "
211+ )
207212
208213 new_prompt , chain_response = chain .call (new_prompt )
209214
@@ -239,15 +244,13 @@ def handle_plugin_usage(
239244 chain_finished = True
240245
241246 if REMOVE_TOOLS_FROM_FINAL_PROMPT :
242- TEMPLATE = f"""{ V2_PROMPTER_PREFIX } { PREFIX } { SUFFIX } """
247+ TEMPLATE = f"""{ special_tokens [ 'prompter' ] } { PREFIX } { SUFFIX } """
243248 input_variables = ["input" , "chat_history" , "language" , "current_time" ]
244249
245250 prompt_template = PromptTemplate (input_variables = input_variables , template = TEMPLATE )
246251 tool_names = None
247252
248- final_input = (
249- f"{ input_prompt } { eos_token } { V2_ASST_PREFIX } \n { prev_chain_response } { OBSERVATION_SEQ } { tool_response } "
250- )
253+ final_input = f"{ input_prompt } { eos_token } { special_tokens ['assistant' ]} \n { prev_chain_response } { OBSERVATION_SEQ } { tool_response } "
251254 inner_prompt = prepare_prompt (
252255 final_input ,
253256 prompt_template ,
@@ -312,14 +315,18 @@ def handle_standard_usage(
312315 tokenizer : transformers .PreTrainedTokenizer ,
313316 custom_instructions : str = "" ,
314317):
315- eos_token = tokenizer .eos_token if hasattr (tokenizer , "eos_token" ) else ""
318+ eos_token = ""
319+ if special_tokens ["end" ]:
320+ eos_token = special_tokens ["end" ]
321+ elif hasattr (tokenizer , "eos_token" ):
322+ eos_token = tokenizer .eos_token
316323 current_time = datetime .datetime .now ().strftime ("%Y-%m-%d %H:%M:%S" )
317324
318325 # Non-plugin prompt template can include some external data e.g. datetime, language
319326 action_input_format = (
320327 JSON_FORMAT_PAYLOAD if prompt_template .template .find ("payload" ) != - 1 else JSON_FORMAT_NO_PAYLOAD
321328 )
322- input = f"{ original_prompt } { eos_token } { V2_ASST_PREFIX } "
329+ input = f"{ original_prompt } { eos_token } { special_tokens [ 'assistant' ] } "
323330 init_prompt = prepare_prompt (
324331 input ,
325332 prompt_template ,
@@ -372,7 +379,7 @@ def handle_conversation(
372379 plugin_enabled = len (tools ) > 0
373380 memory : ConversationBufferMemory = build_memory (work_request )
374381
375- TEMPLATE = f"""{ V2_PROMPTER_PREFIX } { PREFIX } { tools_instructions_template } { SUFFIX } """
382+ TEMPLATE = f"""{ special_tokens [ 'prompter' ] } { PREFIX } { tools_instructions_template } { SUFFIX } """
376383 input_variables = [
377384 "input" ,
378385 "chat_history" ,
0 commit comments