in backend/app.py [0:0]
def chatgpt():
start_time = time.time()
conversation_id = request.json["conversation_id"]
question = request.json["query"]
logging.info("[webbackend] conversation_id: " + conversation_id)
logging.info("[webbackend] question: " + question)
auth_info = check_authorization()
if not auth_info['authorized']:
response = {
"answer": "You are not authorized to access this service. Please contact your administrator.",
"thoughts": "The user attempted to access the service but is not part of any authorized users or groups.",
"conversation_id": conversation_id
}
return jsonify(response)
client_principal_id = auth_info['client_principal_id']
client_principal_name = auth_info['client_principal_name']
client_group_names = auth_info['client_group_names']
access_token = auth_info['access_token']
function_key = get_function_key()
try:
url = ORCHESTRATOR_ENDPOINT
payload = {
"conversation_id": conversation_id,
"question": question,
"client_principal_id": client_principal_id,
"client_principal_name": client_principal_name,
"client_group_names": client_group_names
}
if FORWARD_ACCESS_TOKEN_TO_ORCHESTRATOR and access_token:
logging.info("[webbackend] Forwarding access token to orchestrator.")
payload['access_token'] = access_token
headers = {
'Content-Type': 'application/json',
'x-functions-key': function_key
}
logging.info(f"[webbackend] calling orchestrator at: {ORCHESTRATOR_ENDPOINT}")
response = requests.post(url, headers=headers, json=payload)
logging.info(f"[webbackend] response: {response.text[:100]}...")
return response.text
except Exception as e:
logging.error("[webbackend] exception in /chatgpt")
logging.exception(e)
response = {
"answer": "Error in application backend.",
"thoughts": "",
"conversation_id": conversation_id
}
return jsonify(response)
finally:
end_time = time.time()
duration = end_time - start_time
logging.info(f"[webbackend] Finished processing in {duration:.2f} seconds")