File size: 3,489 Bytes
993bb68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# app.py
import streamlit as st
import os

# Import components and pages
from components import home, refactor_page, style_page, test_page, \
    lang_page, code_documentation_page, database_page, optimize_page, \
    model_trainer_page, notebook_integration_page, xai_page, \
    versioning_tracker_page, nlp_nlg_page, devops_page, api_doc_page, \
    code_review_page, version_control_page, recommendation_system_page, \
    code_security_scanner_page, code_diagram_page

# Initialize the app
st.set_page_config(
    page_title="Codecrafter GPT: A Comprehensive Code Enhancement Platform",
    page_icon="πŸš€",
    layout="wide"
)

# Initialize the sidebar
st.sidebar.title("OpenAI API Key")
api_key = st.sidebar.text_input("Enter your OpenAI API key:", type='password')

if not api_key:
    st.warning("Please enter your OpenAI API key to access pages.")
else:
    # Instantiate the ChatOpenAI object
    from langchain.chat_models import ChatOpenAI
    chat = ChatOpenAI(
        model="gpt-3.5-turbo-16k",
        temperature=0,
        api_key=api_key
    )

    # Show the navigation menu
    selected = option_menu(
        menu_title="CodeCraftGPT",
        options=[
            "Home", "RefactorRite", "StyleSculpt",
            "TestGenius", "LangLink", "CodeDocGenius", "Database", "AutoOptimizer",
            "ModelTrainer", "NotebookIntegration", "ExplainableAI", "DataVersioning",
            "NLPandNLG", "DevOps", "APIDocGen", "CodeReviewAssistant",
            "VersionControl", "RecommendationSystem", "CodeSecurityScanner",
            "CodeDiagramConverter"
        ],
        icons=[
            'house', 'gear', 'palette', 'clipboard2-pulse',
            'code-slash', 'file-text', 'database', 'diagram-3',
            'diagram-project', 'diagram-3', 'diagram-3', 'diagram-3',
            'diagram-3', 'gear', 'file-text', 'file-code',
            'screwdriver-wrench', 'file-text', 'diagram-3', 'diagram-3',
            'code-fork'
        ],
        default_index=0
    )

    # Define a dictionary mapping page names to their corresponding functions
    pages = {
        "Home": home.show_home_page,
        "RefactorRite": refactor_page.show_refactor_page,
        "StyleSculpt": style_page.show_style_page,
        "TestGenius": test_page.show_test_page,
        "LangLink": lang_page.show_lang_page,
        "CodeDocGenius": code_documentation_page.show_doc_page,
        "Database": database_page.show_database_page,
        "AutoOptimizer": optimize_page.show_optimize_page,
        "ModelTrainer": model_trainer_page.show_model_trainer_page,
        "NotebookIntegration": notebook_integration_page.show_notebook_integration_page,
        "ExplainableAI": xai_page.show_xai_page,
        "DataVersioning": versioning_tracker_page.show_versioning_page,
        "NLPandNLG": nlp_nlg_page.show_nlp_nlg_page,
        "DevOps": devops_page.show_devops_page,
        "APIDocGen": api_doc_page.show_api_doc_page,
        "CodeReviewAssistant": code_review_page.show_code_review_page,
        "VersionControl": version_control_page.show_version_control_page,
        "RecommendationSystem": recommendation_system_page.show_recommendation_system_page,
        "CodeSecurityScanner": code_security_scanner_page.show_code_security_page,
        "CodeDiagramConverter": code_diagram_page.show_code_diagram_page
    }

    # Call the function for the selected page
    if selected in pages:
        pages[selected](chat)
    else:
        st.error("Page not found!")