import datetime
"""
import asyncio
from django_core.config import Config
from rag_service.openai_service import make_openai_request
"""
[docs]async def condense_query_prompt(original_query, chat_history):
"""
Condense the prompt / query with the chat history & input message / query of the client.
Parameters
----------
original_query: str
original query from the client
chat_history: str
previous chat history of the client
Returns
-------
condense_prompt: str
return a condensed prompt
"""
condense_prompt = Config.REPHRASE_QUESTION_PROMPT.format(
chat_history=chat_history,
question=original_query,
)
return condense_prompt
[docs]async def rephrase_query(original_query, chat_history=None):
"""
Rephrase the input message / query with chat history (if available) from openAI and return it.
Parameters
----------
original_query: str
original query from the client
chat_history: str
previous chat history of the client (default: None)
Returns
-------
rephrased_response: dict
return a dictionary containing rephrased query token and other relevant metrics
Ex:
"""
rephrased_response = {}
rephrased_query = None
rephrase_start_time = None
rephrase_end_time = None
rephrase_completion_tokens = 0
rephrase_prompt_tokens = 0
rephrase_total_tokens = 0
rephrase_exception = None
rephrase_retries = 0
rephrased_response.update(
{
"original_query": original_query,
"rephrased_query": rephrased_query,
"rephrase_start_time": rephrase_start_time,
"rephrase_end_time": rephrase_end_time,
"completion_tokens": rephrase_completion_tokens,
"prompt_tokens": rephrase_prompt_tokens,
"total_tokens": rephrase_total_tokens,
"rephrase_exception": rephrase_exception,
"rephrase_retries": rephrase_retries,
}
)
rephrase_start_time = datetime.datetime.now()
# if len(chat_history) >= 1:
if chat_history:
condense_prompt = await condense_query_prompt(original_query, chat_history)
rephrased_question_response, rephrase_exception, rephrase_retries = await make_openai_request(condense_prompt)
if rephrased_question_response:
rephrased_query = rephrased_question_response.choices[0].message.content
rephrase_completion_tokens = rephrased_question_response.usage.completion_tokens
rephrase_prompt_tokens = rephrased_question_response.usage.prompt_tokens
rephrase_total_tokens = rephrased_question_response.usage.total_tokens
else:
rephrased_query = original_query
else:
rephrased_query = original_query
rephrase_end_time = datetime.datetime.now()
print("Original Question : ", original_query)
print("Rephrased Question : ", rephrased_query)
rephrased_response.update(
{
"original_query": original_query,
"rephrased_query": rephrased_query,
"rephrase_start_time": rephrase_start_time,
"rephrase_end_time": rephrase_end_time,
"completion_tokens": rephrase_completion_tokens,
"prompt_tokens": rephrase_prompt_tokens,
"total_tokens": rephrase_total_tokens,
"rephrase_exception": rephrase_exception,
"rephrase_retries": rephrase_retries,
}
)
return rephrased_response