Source code for generation.generate_response

"""
This is generate_response.py file
"""

"""
import datetime
import asyncio

from django_core.config import Config
from rag_service.openai_service import make_openai_request
"""




[docs]async def setup_prompt(user_name, context_chunks, rephrased_query): #satish : async def setup_prompt(user_name, context_chunks, rephrased_query, system_prompt=Config.GENERATION_PROMPT#): """ Setup generation response prompt for a rephrased user query with retrieved chunks. Note : The actual function call is, async def setup_prompt(user_name, context_chunks, rephrased_query, system_prompt=Config.GENERATION_PROMPT#): """ prompt_name_1 = user_name if user_name else "a person" prompt_name_2 = user_name if user_name else "the person" response_prompt = system_prompt.format( # crop=crop, name_1=prompt_name_1, # name_2=prompt_name_2, context=context_chunks, input=rephrased_query, ) return response_prompt
[docs]async def generate_query_response(original_query, user_name, context_chunks, rephrased_query): """ Generate final response for a rephrased user query with the retrieved chunks. """ response_map = {} llm_response = None response_gen_start = None response_gen_end = None generation_completion_tokens = 0 generation_prompt_tokens = 0 generation_total_tokens = 0 response_gen_exception = None response_gen_retries = 0 response_map.update( { "response": llm_response, "original_query": original_query, "rephrased_query": rephrased_query, "generation_start_time": response_gen_start, "generation_end_time": response_gen_end, "completion_tokens": generation_completion_tokens, "prompt_tokens": generation_prompt_tokens, "total_tokens": generation_total_tokens, "response_gen_exception": response_gen_exception, "response_gen_retries": response_gen_retries, } ) response_prompt = await setup_prompt(user_name, context_chunks, rephrased_query) print(f"\n ######## FINAL PROMPT BEGINS ########\n{response_prompt} ######## FINAL PROMPT END ########\n") response_gen_start = datetime.datetime.now() generated_response, response_gen_exception, response_gen_retries = await make_openai_request(response_prompt) response_gen_end = datetime.datetime.now() if generated_response: llm_response = generated_response.choices[0].message.content generation_completion_tokens = generated_response.usage.completion_tokens generation_prompt_tokens = generated_response.usage.prompt_tokens generation_total_tokens = generated_response.usage.total_tokens response_map.update( { "response": llm_response, "original_query": original_query, "rephrased_query": rephrased_query, "generation_start_time": response_gen_start, "generation_end_time": response_gen_end, "completion_tokens": generation_completion_tokens, "prompt_tokens": generation_prompt_tokens, "total_tokens": generation_total_tokens, "response_gen_exception": response_gen_exception, "response_gen_retries": response_gen_retries, } ) return response_map