Chat / handler.py
Vijish's picture
Update handler.py
b6167e9 verified
raw
history blame
3.11 kB
import json
from typing import Dict, List, Any
import requests
def download_env_file(url: str, local_path: str):
response = requests.get(url)
response.raise_for_status() # Ensure we notice bad responses
with open(local_path, 'wb') as f:
f.write(response.content)
# Download the .env file
env_file_url = "https://www.dropbox.com/scl/fi/21ldek2cdsak2v3mhyy5x/openai.env?rlkey=nxdkd8l8esdy8npa3vfgvqkhp&st=s2f2zzwl&dl=1" # Adjusted URL for direct download
local_env_path = "openai.env"
download_env_file(env_file_url, local_env_path)
# Importing modules from both scripts
from coresugg import ConversationPayload as ConversationPayloadSugg, create_conversation_starter_prompt, generate_conversation_starters, NUMBER_OF_MESSAGES_FOR_CONTEXT as NUMBER_OF_MESSAGES_FOR_CONTEXT_SUGG
from corechat import ConversationPayload as ConversationPayloadChat, get_conversation_suggestions, NUMBER_OF_MESSAGES_FOR_CONTEXT as NUMBER_OF_MESSAGES_FOR_CONTEXT_CHAT
class EndpointHandler:
def __init__(self, model_dir):
self.model_dir = model_dir
def integration(self, data: Dict[str, Any]) -> Dict[str, Any]:
payload = ConversationPayloadSugg(**data)
from_user_questions = payload.FromUserKavasQuestions[-NUMBER_OF_MESSAGES_FOR_CONTEXT_SUGG:]
to_user_questions = payload.ToUserKavasQuestions[-NUMBER_OF_MESSAGES_FOR_CONTEXT_SUGG:]
ai_prompt = create_conversation_starter_prompt(from_user_questions + to_user_questions, payload.Chatmood)
conversation_starters = generate_conversation_starters(ai_prompt)
return {"conversation_starters": conversation_starters}
def chat_integration(self, data: Dict[str, Any]) -> Dict[str, Any]:
payload = ConversationPayloadChat(**data)
last_chat_messages = payload.LastChatMessages[-NUMBER_OF_MESSAGES_FOR_CONTEXT_CHAT:]
suggestions = get_conversation_suggestions(last_chat_messages)
return {"version": "1.0.0-alpha", "suggested_responses": suggestions}
def upload(self, data: Dict[str, Any]) -> Dict[str, Any]:
if "file" not in data:
raise Exception("No file provided")
file_data = data["file"]
try:
json_data = json.loads(file_data)
except json.JSONDecodeError:
raise Exception("Invalid JSON format.")
if "FromUserKavasQuestions" in json_data and "Chatmood" in json_data:
prompt = create_conversation_starter_prompt(
json_data["FromUserKavasQuestions"],
json_data["Chatmood"]
)
starter_suggestion = generate_conversation_starters(prompt)
return {"conversation_starter": starter_suggestion}
elif "LastChatMessages" in json_data:
last_chat_messages = json_data["LastChatMessages"][-NUMBER_OF_MESSAGES_FOR_CONTEXT_CHAT:]
response = {
"version": "1.0.0-alpha",
"suggested_responses": get_conversation_suggestions(last_chat_messages)
}
return response
else:
raise Exception("Invalid JSON structure.")