Spaces:
Build error
Build error
Using the new gpt-3.5-turbo-0125
Browse files- app.py +39 -24
- openai_interface.py +3 -0
app.py
CHANGED
|
@@ -394,7 +394,7 @@ def main():
|
|
| 394 |
|
| 395 |
# let's use Llama2, and fall back on GPT3.5 if it fails
|
| 396 |
reworded_query = reword_query(query, guest,
|
| 397 |
-
model_name='
|
| 398 |
new_query = reworded_query['rewritten_question']
|
| 399 |
|
| 400 |
if reworded_query['status'] != 'error': # or reworded_query['changed']:
|
|
@@ -566,21 +566,21 @@ def reword_query(query, guest, model_name='llama2-13b-chat', response_processing
|
|
| 566 |
prompt_fields = {
|
| 567 |
"you_are":f"You are an expert in linguistics and semantics, analyzing the question asked by a user to a vector search system, \
|
| 568 |
and making sure that the question is well formulated and that the system can understand it.",
|
| 569 |
-
|
| 570 |
"your_task":f"Your task is to detect if the name of the guest ({guest}) is mentioned in the user's question, \
|
| 571 |
and if that is not the case, rewrite the question using the guest name, \
|
| 572 |
without changing the meaning of the question. \
|
| 573 |
Most of the time, the user will have used a pronoun to designate the guest, in which case, \
|
| 574 |
simply replace the pronoun with the guest name.",
|
| 575 |
-
|
| 576 |
-
"question":f"If the user mentions the guest name
|
| 577 |
If the user does not mention the guest name, rewrite the question using the guest name.",
|
| 578 |
-
|
| 579 |
-
"final_instruction":f"Only
|
| 580 |
Your answer must be as close as possible to the original question, \
|
| 581 |
and exactly identical, word for word, if the user mentions the guest name, i.e. {guest}.",
|
| 582 |
}
|
| 583 |
-
|
| 584 |
# prompt created by chatGPT :-)
|
| 585 |
# and Llama still outputs the original question and precedes the answer with 'rewritten question'
|
| 586 |
prompt_fields2 = {
|
|
@@ -596,7 +596,7 @@ def reword_query(query, guest, model_name='llama2-13b-chat', response_processing
|
|
| 596 |
"question": (
|
| 597 |
f"Original question: '{query}'. "
|
| 598 |
"Rewrite this question to include the guest's FULL name if it's not already mentioned."
|
| 599 |
-
"
|
| 600 |
),
|
| 601 |
"final_instruction": (
|
| 602 |
"Create a rewritten question or keep the original question as is. "
|
|
@@ -652,7 +652,7 @@ def reword_query(query, guest, model_name='llama2-13b-chat', response_processing
|
|
| 652 |
# st.write(f"Error in LLM response: 'error':{reworded_query['error']}")
|
| 653 |
# st.write("The LLM could not connect to the server. Please try again later.")
|
| 654 |
# st.stop()
|
| 655 |
-
return reword_query(query, guest, model_name='gpt-3.5-turbo-
|
| 656 |
|
| 657 |
if response_processing:
|
| 658 |
if isinstance(response, list) and isinstance(response[0], dict) and 'generated_text' in response[0]:
|
|
@@ -666,7 +666,7 @@ def reword_query(query, guest, model_name='llama2-13b-chat', response_processing
|
|
| 666 |
return result | {'status': 'success'}
|
| 667 |
else:
|
| 668 |
print("Found no answer")
|
| 669 |
-
return reword_query(query, guest, model_name='gpt-3.5-turbo-
|
| 670 |
# return {'original_question': query, 'rewritten_question': query, 'changed': False, 'status': 'no properly formatted answer' }
|
| 671 |
else:
|
| 672 |
return response
|
|
@@ -677,36 +677,51 @@ def reword_query(query, guest, model_name='llama2-13b-chat', response_processing
|
|
| 677 |
# return response[0]['generated_text'] .split("Rewritten question: '")[-1][:-1]
|
| 678 |
|
| 679 |
else:
|
| 680 |
-
# assume openai
|
| 681 |
-
model_ids = ['gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613']
|
| 682 |
-
model_name
|
| 683 |
-
|
| 684 |
-
|
| 685 |
|
| 686 |
openai_prompt = """
|
| 687 |
-
{your_task}\n
|
|
|
|
| 688 |
```
|
| 689 |
\n\n
|
| 690 |
Question: {question}\n
|
| 691 |
-
{final_instruction}
|
| 692 |
|
| 693 |
Answer:
|
| 694 |
"""
|
| 695 |
prompt = openai_prompt.format(**prompt_fields)
|
| 696 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 697 |
try:
|
| 698 |
-
|
|
|
|
| 699 |
system_message=prompt_fields['you_are'],
|
|
|
|
| 700 |
temperature=0.01,
|
| 701 |
-
max_tokens=1500, # it's a question...
|
| 702 |
show_response=True,
|
| 703 |
stream=False)
|
| 704 |
-
|
| 705 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 706 |
except Exception:
|
| 707 |
return {'rewritten_question': query, 'changed': False, 'status': 'not success'}
|
| 708 |
-
|
| 709 |
|
| 710 |
if __name__ == '__main__':
|
| 711 |
main()
|
| 712 |
-
#
|
|
|
|
| 394 |
|
| 395 |
# let's use Llama2, and fall back on GPT3.5 if it fails
|
| 396 |
reworded_query = reword_query(query, guest,
|
| 397 |
+
model_name='gpt-3.5-turbo-0125')
|
| 398 |
new_query = reworded_query['rewritten_question']
|
| 399 |
|
| 400 |
if reworded_query['status'] != 'error': # or reworded_query['changed']:
|
|
|
|
| 566 |
prompt_fields = {
|
| 567 |
"you_are":f"You are an expert in linguistics and semantics, analyzing the question asked by a user to a vector search system, \
|
| 568 |
and making sure that the question is well formulated and that the system can understand it.",
|
| 569 |
+
|
| 570 |
"your_task":f"Your task is to detect if the name of the guest ({guest}) is mentioned in the user's question, \
|
| 571 |
and if that is not the case, rewrite the question using the guest name, \
|
| 572 |
without changing the meaning of the question. \
|
| 573 |
Most of the time, the user will have used a pronoun to designate the guest, in which case, \
|
| 574 |
simply replace the pronoun with the guest name.",
|
| 575 |
+
|
| 576 |
+
"question":f"If the user mentions the guest name ({guest}) in the following question '{query}', just return his question as is. \
|
| 577 |
If the user does not mention the guest name, rewrite the question using the guest name.",
|
| 578 |
+
|
| 579 |
+
"final_instruction":f"Only regenerate the requested rewritten question or the original, WITHOUT ANY COMMENT OR REPHRASING. \
|
| 580 |
Your answer must be as close as possible to the original question, \
|
| 581 |
and exactly identical, word for word, if the user mentions the guest name, i.e. {guest}.",
|
| 582 |
}
|
| 583 |
+
|
| 584 |
# prompt created by chatGPT :-)
|
| 585 |
# and Llama still outputs the original question and precedes the answer with 'rewritten question'
|
| 586 |
prompt_fields2 = {
|
|
|
|
| 596 |
"question": (
|
| 597 |
f"Original question: '{query}'. "
|
| 598 |
"Rewrite this question to include the guest's FULL name if it's not already mentioned."
|
| 599 |
+
"Add a question mark if it's missing, nothing else."
|
| 600 |
),
|
| 601 |
"final_instruction": (
|
| 602 |
"Create a rewritten question or keep the original question as is. "
|
|
|
|
| 652 |
# st.write(f"Error in LLM response: 'error':{reworded_query['error']}")
|
| 653 |
# st.write("The LLM could not connect to the server. Please try again later.")
|
| 654 |
# st.stop()
|
| 655 |
+
return reword_query(query, guest, model_name='gpt-3.5-turbo-0125')
|
| 656 |
|
| 657 |
if response_processing:
|
| 658 |
if isinstance(response, list) and isinstance(response[0], dict) and 'generated_text' in response[0]:
|
|
|
|
| 666 |
return result | {'status': 'success'}
|
| 667 |
else:
|
| 668 |
print("Found no answer")
|
| 669 |
+
return reword_query(query, guest, model_name='gpt-3.5-turbo-0125')
|
| 670 |
# return {'original_question': query, 'rewritten_question': query, 'changed': False, 'status': 'no properly formatted answer' }
|
| 671 |
else:
|
| 672 |
return response
|
|
|
|
| 677 |
# return response[0]['generated_text'] .split("Rewritten question: '")[-1][:-1]
|
| 678 |
|
| 679 |
else:
|
| 680 |
+
# we assume / force openai
|
| 681 |
+
model_ids = ['gpt-3.5-turbo-0125', 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613']
|
| 682 |
+
if model_name not in model_ids:
|
| 683 |
+
model_name = model_ids[0]
|
| 684 |
+
GPTllm = GPT_Turbo(model=model_name, api_key=openai_api_key)
|
| 685 |
|
| 686 |
openai_prompt = """
|
| 687 |
+
{your_task} \n
|
| 688 |
+
{final_instruction} /n
|
| 689 |
```
|
| 690 |
\n\n
|
| 691 |
Question: {question}\n
|
|
|
|
| 692 |
|
| 693 |
Answer:
|
| 694 |
"""
|
| 695 |
prompt = openai_prompt.format(**prompt_fields)
|
| 696 |
+
|
| 697 |
+
openai_prompt2 = """
|
| 698 |
+
{your_task}\n
|
| 699 |
+
```
|
| 700 |
+
\n\n
|
| 701 |
+
{final_instruction}
|
| 702 |
+
"""
|
| 703 |
+
prompt2 = openai_prompt2.format(**{'your_task':prompt_fields['your_task'],
|
| 704 |
+
'final_instruction':prompt_fields['final_instruction']})
|
| 705 |
+
|
| 706 |
try:
|
| 707 |
+
# https://platform.openai.com/docs/guides/text-generation/chat-completions-api
|
| 708 |
+
resp = GPTllm.get_chat_completion(prompt=prompt,
|
| 709 |
system_message=prompt_fields['you_are'],
|
| 710 |
+
user_message = None, #prompt_fields['question'],
|
| 711 |
temperature=0.01,
|
| 712 |
+
max_tokens=1500, # it's a long question...
|
| 713 |
show_response=True,
|
| 714 |
stream=False)
|
| 715 |
+
|
| 716 |
+
if resp.choices[0].finish_reason == 'stop':
|
| 717 |
+
return {'rewritten_question': resp.choices[0].message.content,
|
| 718 |
+
'changed': True, 'status': 'success'}
|
| 719 |
+
else:
|
| 720 |
+
raise Exception("LLM did not stop") # to go to the except block
|
| 721 |
except Exception:
|
| 722 |
return {'rewritten_question': query, 'changed': False, 'status': 'not success'}
|
| 723 |
+
|
| 724 |
|
| 725 |
if __name__ == '__main__':
|
| 726 |
main()
|
| 727 |
+
# streamlit run app.py --server.allowRunOnSave True
|
openai_interface.py
CHANGED
|
@@ -21,6 +21,7 @@ class GPT_Turbo:
|
|
| 21 |
def get_chat_completion(self,
|
| 22 |
prompt: str,
|
| 23 |
system_message: str='You are a helpful assistant.',
|
|
|
|
| 24 |
temperature: int=0,
|
| 25 |
max_tokens: int=500,
|
| 26 |
stream: bool=False,
|
|
@@ -30,6 +31,8 @@ class GPT_Turbo:
|
|
| 30 |
{'role': 'system', 'content': system_message},
|
| 31 |
{'role': 'assistant', 'content': prompt}
|
| 32 |
]
|
|
|
|
|
|
|
| 33 |
|
| 34 |
response = self.client.chat.completions.create( model=self.model,
|
| 35 |
messages=messages,
|
|
|
|
| 21 |
def get_chat_completion(self,
|
| 22 |
prompt: str,
|
| 23 |
system_message: str='You are a helpful assistant.',
|
| 24 |
+
user_message: str=None,
|
| 25 |
temperature: int=0,
|
| 26 |
max_tokens: int=500,
|
| 27 |
stream: bool=False,
|
|
|
|
| 31 |
{'role': 'system', 'content': system_message},
|
| 32 |
{'role': 'assistant', 'content': prompt}
|
| 33 |
]
|
| 34 |
+
if user_message is not None:
|
| 35 |
+
messages.append({'role': 'user', 'content': user_message})
|
| 36 |
|
| 37 |
response = self.client.chat.completions.create( model=self.model,
|
| 38 |
messages=messages,
|