Conversation
be30e41 to
00ebe6f
Compare
sourabhlodha
left a comment
There was a problem hiding this comment.
please check response format
| @@ -0,0 +1,133 @@ | |||
| import pytest | |||
| import openai | |||
| from unittest.mock import MagicMock, patch | |||
There was a problem hiding this comment.
Standard library imports should come first. See PEP8
backend/app/api/routes/threads.py
Outdated
| Once completed, calls send_callback with the final result. | ||
| """ | ||
| client = OpenAI(api_key=settings.OPENAI_API_KEY) | ||
| assistant_error = validate_assistant_id(request["assistant_id"], client) |
There was a problem hiding this comment.
Consider avoiding this test in favor of client.beta.threads.runs.create_and_poll reporting the error
| try: | ||
| runs = client.beta.threads.runs.list(thread_id=thread_id) | ||
| # Get the most recent run (first in the list) if any | ||
| if runs.data and len(runs.data) > 0: | ||
| latest_run = runs.data[0] | ||
| if latest_run.status in ["queued", "in_progress", "requires_action"]: | ||
| return APIResponse.failure_response(error=f"There is an active run on this thread (status: {latest_run.status}). Please wait for it to complete.") | ||
| except openai.OpenAIError: | ||
| # Handle invalid thread ID | ||
| return APIResponse.failure_response(error=f"Invalid thread ID provided {thread_id}") |
There was a problem hiding this comment.
Consider avoiding this test in favor of client.beta.threads.runs.create_and_poll reporting the error
Code Review Completed! 🔥The code review was successfully completed based on your current configurations. Kody Guide: Usage and ConfigurationInteracting with Kody
Current Kody ConfigurationReview OptionsThe following review options are enabled or disabled:
|
backend/app/api/routes/threads.py
Outdated
| try: | ||
| session = requests.Session() | ||
| # uncomment this to run locally without SSL | ||
| session.verify = False |
There was a problem hiding this comment.
session.verify = settings.VERIFY_SSLThe session.verify = False line disables SSL verification, which is a security risk. This should be configurable via environment variables rather than hardcoded.
Talk to Kody by mentioning @kody
Was this suggestion helpful? React with 👍 or 👎 to help Kody learn from this interaction.
backend/app/api/routes/threads.py
Outdated
| latest_message = messages.data[0] | ||
| message_content = latest_message.content[0].text.value | ||
|
|
||
| if request["remove_citation"]: |
There was a problem hiding this comment.
if request.get('remove_citation', False):The function should handle KeyError exceptions when accessing dictionary keys. Currently, direct access to request['remove_citation'] could raise KeyError if the key is missing.
Talk to Kody by mentioning @kody
Was this suggestion helpful? React with 👍 or 👎 to help Kody learn from this interaction.
| if not os.path.exists(LOG_DIR): | ||
| os.makedirs(LOG_DIR) |
There was a problem hiding this comment.
try:
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
except (OSError, IOError) as e:
import sys
sys.stderr.write(f'Failed to create log directory: {e}\n')
raiseAdd error handling around file operations to gracefully handle permission issues or disk space problems when creating log directory and files
Talk to Kody by mentioning @kody
Was this suggestion helpful? React with 👍 or 👎 to help Kody learn from this interaction.
| logging.basicConfig(level=LOGGING_LEVEL, format=LOGGING_FORMAT) | ||
|
|
||
| file_handler = RotatingFileHandler( | ||
| LOG_FILE_PATH, maxBytes=10485760, backupCount=5) | ||
| file_handler.setLevel(LOGGING_LEVEL) | ||
| file_handler.setFormatter(logging.Formatter(LOGGING_FORMAT)) | ||
|
|
||
| logging.getLogger("").addHandler(file_handler) |
There was a problem hiding this comment.
def setup_logging():
logging.basicConfig(level=LOGGING_LEVEL, format=LOGGING_FORMAT)
file_handler = RotatingFileHandler(
LOG_FILE_PATH, maxBytes=10485760, backupCount=5)
file_handler.setLevel(LOGGING_LEVEL)
file_handler.setFormatter(logging.Formatter(LOGGING_FORMAT))
logging.getLogger("").addHandler(file_handler)
setup_logging()Move logging configuration into a function to ensure proper initialization and allow for potential reconfiguration
Talk to Kody by mentioning @kody
Was this suggestion helpful? React with 👍 or 👎 to help Kody learn from this interaction.
Kody Review CompleteGreat news! 🎉 Keep up the excellent work! 🚀 Kody Guide: Usage and ConfigurationInteracting with Kody
Current Kody ConfigurationReview OptionsThe following review options are enabled or disabled:
|
Kody Review CompleteGreat news! 🎉 Keep up the excellent work! 🚀 Kody Guide: Usage and ConfigurationInteracting with Kody
Current Kody ConfigurationReview OptionsThe following review options are enabled or disabled:
|
* Update README.md (#44) * changes (#45) Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * Readme update (#47) rename project and stack --------- Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * fix create_user endpoint (#62) * standard api response and http exception handling (#67) * Upgrade PostgreSQL to 16 & Fix CORS Configuration (#57) * use latest docker image * update envsample * Add Customizable Token Expiry Time in Login API (#70) * token expiry time can be customize * default to one day * Organization/project : Crud, Endpoint and Test Cases (#63) * trial * pushing all * models file * renaming * Rename Project.py to project.py * Rename oganization.py to organization.py * Update README.md (#44) * changes (#45) Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * Readme update (#47) rename project and stack --------- Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * fix create_user endpoint (#62) * standard api response and http exception handling (#67) * standardization and edits * small edits * small edits * small edits * fixed project post * trial * pushing all * models file * renaming * Rename Project.py to project.py * Rename oganization.py to organization.py * standardization and edits * small edits * small edits * small edits * fixed project post * remove these files since they were somehow pushed into this branch * re-push the docker file * re-push utils file * re-push the file * fixing test cases --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> Co-authored-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Co-authored-by: Ishankoradia <ikoradia@umich.edu> * Add Project User Management (#65) * intial commit user project mapping and authorization * fix alembic migration * Use standard API response * add pagination * add index and use base model * Alembic: migration fixes for organization (#77) * fixing testcases and migrations * changes migration file name * remove old migration --------- Co-authored-by: Akhilesh Negi <akhileshnegi.an3@gmail.com> * Added Support of API Key Authentication (#76) * Intial setup api key * added Api key auth flow * support both api key and oauth --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> * Main to stage code sync (#80) Back merge Production to staging code * added migration for api table (#81) * Refactor Authentication Logic and Testing Enhancements (#89) * fix authentication part * Modify test cases to compatible with new auth * Github: CI (#74) * issue CI * first stab at continuous integration * fixing testcases and migrations * syncing with master * moving to python version 3.11.7 * making copy of env * updating env * added migrations * added uv sync * updating working directory * added step to activate env * updating working directory * updating working directory for codecov upload * updating script to upload to codecov * remove working directory * added working directory for % check * clenaup * cleanup * activating env * update the issue template * update readme and env file * adding badges (#91) * OpenAI: Threads (#40) * getting threads up and running * added testcases and citation * removing ssl verify * using standardized APIResponse * getting rid of redundant files * refactor code after testing * refactor testcases * setting up init.py * fixing review comments * cleanup * cleanup * removed validate thread as it can be handled by default * fixing few code review suggestions * removed validation testcases for assistant ID * threads testcases fix (#93) * updating CI --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> Co-authored-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Co-authored-by: Nishika Yadav <89646695+nishika26@users.noreply.github.com> Co-authored-by: Ishankoradia <ikoradia@umich.edu>
* Update README.md (#44) * changes (#45) * Readme update (#47) rename project and stack --------- Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * fix create_user endpoint (#62) * standard api response and http exception handling (#67) * Upgrade PostgreSQL to 16 & Fix CORS Configuration (#57) * use latest docker image * update envsample * Add Customizable Token Expiry Time in Login API (#70) * token expiry time can be customize * default to one day * Organization/project : Crud, Endpoint and Test Cases (#63) * trial * pushing all * models file * renaming * Rename Project.py to project.py * Rename oganization.py to organization.py * Update README.md (#44) * changes (#45) Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * Readme update (#47) rename project and stack --------- Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * fix create_user endpoint (#62) * standard api response and http exception handling (#67) * standardization and edits * small edits * small edits * small edits * fixed project post * trial * pushing all * models file * renaming * Rename Project.py to project.py * Rename oganization.py to organization.py * standardization and edits * small edits * small edits * small edits * fixed project post * remove these files since they were somehow pushed into this branch * re-push the docker file * re-push utils file * re-push the file * fixing test cases --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> Co-authored-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Co-authored-by: Ishankoradia <ikoradia@umich.edu> * Add Project User Management (#65) * intial commit user project mapping and authorization * fix alembic migration * Use standard API response * add pagination * add index and use base model * Alembic: migration fixes for organization (#77) * fixing testcases and migrations * changes migration file name * remove old migration --------- Co-authored-by: Akhilesh Negi <akhileshnegi.an3@gmail.com> * Added Support of API Key Authentication (#76) * Intial setup api key * added Api key auth flow * support both api key and oauth --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> * Main to stage code sync (#80) Back merge Production to staging code * added migration for api table (#81) * creds table * Refactor Authentication Logic and Testing Enhancements (#89) * fix authentication part * Modify test cases to compatible with new auth * Github: CI (#74) * issue CI * first stab at continuous integration * fixing testcases and migrations * syncing with master * moving to python version 3.11.7 * making copy of env * updating env * added migrations * added uv sync * updating working directory * added step to activate env * updating working directory * updating working directory for codecov upload * updating script to upload to codecov * remove working directory * added working directory for % check * clenaup * cleanup * activating env * update the issue template * update readme and env file * adding badges (#91) * OpenAI: Threads (#40) * getting threads up and running * added testcases and citation * removing ssl verify * using standardized APIResponse * getting rid of redundant files * refactor code after testing * refactor testcases * setting up init.py * fixing review comments * cleanup * cleanup * removed validate thread as it can be handled by default * fixing few code review suggestions * removed validation testcases for assistant ID * threads testcases fix (#93) * project router changes * endpoint,crud and migration file * models file * minor fix * fixes * fixes * test cases and fixes * alembic file * type checking * cleaner exception * fixing alembic revision heads * using crendentials * init module * running pre commit * running pre commit * final changes * migration file * Rename fa868aa8debd_add_credetial_table.py to fa868aa8debd_add_credential_table.py * test case change * test cases * test cases * test cases * removing duplicate lines * datetime columns addition * migration file --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> Co-authored-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Co-authored-by: Akhilesh Negi <akhileshnegi.an3@gmail.com>
* Update README.md (ProjectTech4DevAI#44) * changes (ProjectTech4DevAI#45) * Readme update (ProjectTech4DevAI#47) rename project and stack --------- Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * fix create_user endpoint (ProjectTech4DevAI#62) * standard api response and http exception handling (ProjectTech4DevAI#67) * Upgrade PostgreSQL to 16 & Fix CORS Configuration (ProjectTech4DevAI#57) * use latest docker image * update envsample * Add Customizable Token Expiry Time in Login API (ProjectTech4DevAI#70) * token expiry time can be customize * default to one day * Organization/project : Crud, Endpoint and Test Cases (ProjectTech4DevAI#63) * trial * pushing all * models file * renaming * Rename Project.py to project.py * Rename oganization.py to organization.py * Update README.md (ProjectTech4DevAI#44) * changes (ProjectTech4DevAI#45) Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * Readme update (ProjectTech4DevAI#47) rename project and stack --------- Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> * fix create_user endpoint (ProjectTech4DevAI#62) * standard api response and http exception handling (ProjectTech4DevAI#67) * standardization and edits * small edits * small edits * small edits * fixed project post * trial * pushing all * models file * renaming * Rename Project.py to project.py * Rename oganization.py to organization.py * standardization and edits * small edits * small edits * small edits * fixed project post * remove these files since they were somehow pushed into this branch * re-push the docker file * re-push utils file * re-push the file * fixing test cases --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> Co-authored-by: sourabhlodha <sourabhlodha@Administrators-MacBook-Pro.local> Co-authored-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Co-authored-by: Ishankoradia <ikoradia@umich.edu> * Add Project User Management (ProjectTech4DevAI#65) * intial commit user project mapping and authorization * fix alembic migration * Use standard API response * add pagination * add index and use base model * Alembic: migration fixes for organization (ProjectTech4DevAI#77) * fixing testcases and migrations * changes migration file name * remove old migration --------- Co-authored-by: Akhilesh Negi <akhileshnegi.an3@gmail.com> * Added Support of API Key Authentication (ProjectTech4DevAI#76) * Intial setup api key * added Api key auth flow * support both api key and oauth --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> * Main to stage code sync (ProjectTech4DevAI#80) Back merge Production to staging code * added migration for api table (ProjectTech4DevAI#81) * creds table * Refactor Authentication Logic and Testing Enhancements (ProjectTech4DevAI#89) * fix authentication part * Modify test cases to compatible with new auth * Github: CI (ProjectTech4DevAI#74) * issue CI * first stab at continuous integration * fixing testcases and migrations * syncing with master * moving to python version 3.11.7 * making copy of env * updating env * added migrations * added uv sync * updating working directory * added step to activate env * updating working directory * updating working directory for codecov upload * updating script to upload to codecov * remove working directory * added working directory for % check * clenaup * cleanup * activating env * update the issue template * update readme and env file * adding badges (ProjectTech4DevAI#91) * OpenAI: Threads (ProjectTech4DevAI#40) * getting threads up and running * added testcases and citation * removing ssl verify * using standardized APIResponse * getting rid of redundant files * refactor code after testing * refactor testcases * setting up init.py * fixing review comments * cleanup * cleanup * removed validate thread as it can be handled by default * fixing few code review suggestions * removed validation testcases for assistant ID * threads testcases fix (ProjectTech4DevAI#93) * project router changes * endpoint,crud and migration file * models file * minor fix * fixes * fixes * test cases and fixes * alembic file * type checking * cleaner exception * fixing alembic revision heads * using crendentials * init module * running pre commit * running pre commit * final changes * migration file * Rename fa868aa8debd_add_credetial_table.py to fa868aa8debd_add_credential_table.py * test case change * test cases * test cases * test cases * removing duplicate lines * datetime columns addition * migration file --------- Co-authored-by: Sourabh Lodha <sourabh_lodha@ymail.com> Co-authored-by: Aviraj Gour <100823015+avirajsingh7@users.noreply.github.com> Co-authored-by: Akhilesh Negi <akhileshnegi.an3@gmail.com>
Summary
Target issue is #14
Checklist
Before submitting a pull request, please ensure that you mark these task.
fastapi run --reload app/main.pyin the repository root and test.Notes
This pull request introduces several enhancements and new features to the
stagingbranch of theProjectTech4DevAI/ai-platformrepository. The main focus is on integrating OpenAI thread handling capabilities into the FastAPI application. Key changes include:Thread Router Integration: The
main.pyfile in the API module has been updated to include a thread router, improving the organization of imports and formatting.New Endpoint for OpenAI Threads: A new FastAPI endpoint is added in
routes/threads.pyto manage OpenAI assistant threads. This includes functionality for thread creation, message handling, and asynchronous processing of OpenAI responses, along with background processing and callback support.Core Module Initialization: Basic initialization code for core module components is introduced in the
__init__.pyfile of the core module.Configuration Enhancements: The
config.pyfile now includes configuration for theOPENAI_API_KEYand handling for theLOG_DIRpath.Logging Setup: A logging configuration setup is implemented in
logger.py, featuring rotating file handlers and basic logging configuration to enhance logging capabilities.