Spaces:
Sleeping
Sleeping
matthew.farant commited on
Commit ·
76d2ccd
1
Parent(s): 45d5c03
Merge branch 'development' into staging
Browse files- app/__pycache__/__init__.cpython-312.pyc +0 -0
- app/__pycache__/assistants.cpython-312.pyc +0 -0
- app/__pycache__/flows.cpython-312.pyc +0 -0
- app/__pycache__/main.cpython-312.pyc +0 -0
- app/__pycache__/user.cpython-312.pyc +0 -0
- app/__pycache__/utils.cpython-312.pyc +0 -0
- app/main.py +55 -4
- app/utils.py +9 -2
app/__pycache__/__init__.cpython-312.pyc
DELETED
|
Binary file (144 Bytes)
|
|
|
app/__pycache__/assistants.cpython-312.pyc
DELETED
|
Binary file (29.3 kB)
|
|
|
app/__pycache__/flows.cpython-312.pyc
DELETED
|
Binary file (18.8 kB)
|
|
|
app/__pycache__/main.cpython-312.pyc
DELETED
|
Binary file (34.5 kB)
|
|
|
app/__pycache__/user.cpython-312.pyc
DELETED
|
Binary file (36.7 kB)
|
|
|
app/__pycache__/utils.cpython-312.pyc
DELETED
|
Binary file (24.7 kB)
|
|
|
app/main.py
CHANGED
|
@@ -15,7 +15,7 @@ from openai import OpenAI
|
|
| 15 |
import psycopg2
|
| 16 |
from psycopg2 import sql
|
| 17 |
import os
|
| 18 |
-
from app.utils import get_api_key, get_user_info, print_log, update_user, upload_file_to_s3, get_user, upload_mementos_to_db, get_user_summary, get_user_life_status
|
| 19 |
from dotenv import load_dotenv
|
| 20 |
import logging.config
|
| 21 |
import time
|
|
@@ -250,6 +250,45 @@ def ok_endpoint():
|
|
| 250 |
logger.info("Health check endpoint called", extra={"endpoint": "/ok"})
|
| 251 |
return {"message": "ok"}
|
| 252 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 253 |
# endpoint to change user assistant using user.change_to_latest_assistant()
|
| 254 |
@app.get("/change_assistant")
|
| 255 |
def change_assistant(user_id: str, api_key: str = Security(get_api_key)):
|
|
@@ -269,7 +308,14 @@ def get_user_by_id(user_id: str, api_key: str = Security(get_api_key)):
|
|
| 269 |
user = get_user(user_id)
|
| 270 |
print_log("INFO", "Successfully retrieved user", extra={"user_id": user_id, "endpoint": "/get_user"})
|
| 271 |
logger.info("Successfully retrieved user", extra={"user_id": user_id, "endpoint": "/get_user"})
|
| 272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 273 |
except LookupError:
|
| 274 |
print_log("ERROR", "User not found", extra={"user_id": user_id, "endpoint": "/get_user"})
|
| 275 |
logger.error("User not found", extra={"user_id": user_id, "endpoint": "/get_user"})
|
|
@@ -392,8 +438,13 @@ def create_user(request: CreateUserItem, api_key: str = Security(get_api_key)):
|
|
| 392 |
|
| 393 |
|
| 394 |
# upload user pickle file to s3 bucket
|
| 395 |
-
|
| 396 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 397 |
|
| 398 |
if upload == True:
|
| 399 |
print_log("INFO",f"Successfully created user", extra={"user_id": request.user_id, "endpoint": "/create_user"})
|
|
|
|
| 15 |
import psycopg2
|
| 16 |
from psycopg2 import sql
|
| 17 |
import os
|
| 18 |
+
from app.utils import get_api_key, get_user_info, pop_cache, print_log, update_user, upload_file_to_s3, get_user, upload_mementos_to_db, get_user_summary, get_user_life_status
|
| 19 |
from dotenv import load_dotenv
|
| 20 |
import logging.config
|
| 21 |
import time
|
|
|
|
| 250 |
logger.info("Health check endpoint called", extra={"endpoint": "/ok"})
|
| 251 |
return {"message": "ok"}
|
| 252 |
|
| 253 |
+
@app.post("/set_intro_done")
|
| 254 |
+
def set_intro_done(user_id: str, api_key: str = Security(get_api_key)):
|
| 255 |
+
user = get_user(user_id)
|
| 256 |
+
user.set_intro_done()
|
| 257 |
+
logger.info("Intro done", extra={"user_id": user_id, "endpoint": "/set_intro_done"})
|
| 258 |
+
return {"response": "ok"}
|
| 259 |
+
|
| 260 |
+
@app.post("/set_goal")
|
| 261 |
+
def set_goal(user_id: str, goal: str, api_key: str = Security(get_api_key)):
|
| 262 |
+
user = get_user(user_id)
|
| 263 |
+
user.set_goal(goal)
|
| 264 |
+
logger.info(f"Goal set: {goal}", extra={"user_id": user_id, "endpoint": "/set_goal"})
|
| 265 |
+
return {"response": "ok"}
|
| 266 |
+
|
| 267 |
+
@app.post("/do_micro")
|
| 268 |
+
def do_micro(request: ChangeDateItem, day: int, api_key: str = Security(get_api_key)):
|
| 269 |
+
print_log("INFO", "do_micro endpoint")
|
| 270 |
+
logger.info("do_micro endpoint called", extra={"endpoint": "/do_micro"})
|
| 271 |
+
|
| 272 |
+
# get user
|
| 273 |
+
user = get_user(request.user_id)
|
| 274 |
+
|
| 275 |
+
try:
|
| 276 |
+
response = user.do_micro(request.date, day)
|
| 277 |
+
except openai.BadRequestError:
|
| 278 |
+
# Check if there is an active run for the thread id
|
| 279 |
+
recent_run = user.get_recent_run()
|
| 280 |
+
print_log("INFO",f"Recent run: {recent_run}", extra={"user_id": request.user_id, "endpoint": "/chat"})
|
| 281 |
+
logger.info(f"Recent run: {recent_run}", extra={"user_id": request.user_id, "endpoint": "/chat"})
|
| 282 |
+
# If there is an active run, cancel it and resubmit the previous message
|
| 283 |
+
if recent_run:
|
| 284 |
+
user.cancel_run(recent_run)
|
| 285 |
+
response = user.send_message(user.get_recent_message())
|
| 286 |
+
|
| 287 |
+
print_log("INFO",f"Assistant: {response['content']}", extra={"user_id": request.user_id, "endpoint": "/chat"})
|
| 288 |
+
logger.info(f"Assistant: {response['content']}", extra={"user_id": request.user_id, "endpoint": "/chat"})
|
| 289 |
+
return {"response": response}
|
| 290 |
+
|
| 291 |
+
|
| 292 |
# endpoint to change user assistant using user.change_to_latest_assistant()
|
| 293 |
@app.get("/change_assistant")
|
| 294 |
def change_assistant(user_id: str, api_key: str = Security(get_api_key)):
|
|
|
|
| 308 |
user = get_user(user_id)
|
| 309 |
print_log("INFO", "Successfully retrieved user", extra={"user_id": user_id, "endpoint": "/get_user"})
|
| 310 |
logger.info("Successfully retrieved user", extra={"user_id": user_id, "endpoint": "/get_user"})
|
| 311 |
+
api_response = {"user": str(user), "user_messages": user.get_messages(), "general_assistant": user.conversations.assistants['general'].id, "intro_assistant": user.conversations.assistants['intro'].id}
|
| 312 |
+
|
| 313 |
+
if user.goal:
|
| 314 |
+
api_response["goal"] = user.goal
|
| 315 |
+
else:
|
| 316 |
+
api_response["goal"] = "Goal is not set yet"
|
| 317 |
+
|
| 318 |
+
return api_response
|
| 319 |
except LookupError:
|
| 320 |
print_log("ERROR", "User not found", extra={"user_id": user_id, "endpoint": "/get_user"})
|
| 321 |
logger.error("User not found", extra={"user_id": user_id, "endpoint": "/get_user"})
|
|
|
|
| 438 |
|
| 439 |
|
| 440 |
# upload user pickle file to s3 bucket
|
| 441 |
+
filename = f'{user.user_id}.pkl'
|
| 442 |
+
try:
|
| 443 |
+
# value.save_user()
|
| 444 |
+
upload_file_to_s3(filename)
|
| 445 |
+
upload = True
|
| 446 |
+
except:
|
| 447 |
+
upload = False
|
| 448 |
|
| 449 |
if upload == True:
|
| 450 |
print_log("INFO",f"Successfully created user", extra={"user_id": request.user_id, "endpoint": "/create_user"})
|
app/utils.py
CHANGED
|
@@ -978,14 +978,21 @@ def download_file_from_s3(filename, bucket):
|
|
| 978 |
os.remove(file_path)
|
| 979 |
return False
|
| 980 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 981 |
def update_user(user):
|
| 982 |
user_id = user.user_id
|
| 983 |
function_name = update_user.__name__
|
| 984 |
logger.info(f"Updating user {user_id}", extra={'user_id': user_id, 'endpoint': function_name})
|
| 985 |
-
user.save_user()
|
| 986 |
|
| 987 |
# remove from cache, which will also upload the file
|
| 988 |
-
|
| 989 |
logger.info(f"User {user_id} has been removed from the cache", extra={'user_id': user_id, 'endpoint': function_name})
|
| 990 |
|
| 991 |
logger.info(f"User {user.user_id} updated successfully in S3", extra={'user_id': user_id, 'endpoint': function_name})
|
|
|
|
| 978 |
os.remove(file_path)
|
| 979 |
return False
|
| 980 |
|
| 981 |
+
def pop_cache(user_id):
|
| 982 |
+
try:
|
| 983 |
+
user_cache.pop(user_id, None)
|
| 984 |
+
logger.info(f"User {user_id} has been removed from the cache", extra={'user_id': user_id, 'endpoint': 'pop_cache'})
|
| 985 |
+
return True
|
| 986 |
+
except:
|
| 987 |
+
return False
|
| 988 |
+
|
| 989 |
def update_user(user):
|
| 990 |
user_id = user.user_id
|
| 991 |
function_name = update_user.__name__
|
| 992 |
logger.info(f"Updating user {user_id}", extra={'user_id': user_id, 'endpoint': function_name})
|
|
|
|
| 993 |
|
| 994 |
# remove from cache, which will also upload the file
|
| 995 |
+
pop_cache(user_id)
|
| 996 |
logger.info(f"User {user_id} has been removed from the cache", extra={'user_id': user_id, 'endpoint': function_name})
|
| 997 |
|
| 998 |
logger.info(f"User {user.user_id} updated successfully in S3", extra={'user_id': user_id, 'endpoint': function_name})
|