File size: 1,708 Bytes
b00365a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# main.py
import streamlit as st
import transformers
import langchain
import agents
from streamlit.script_runner import StopException

# Define function to reverse prompt engineer code
def reverse_prompt_engineer(code):
    # Use natural language processing to analyze code
    nlp_analysis = langchain.analyze(code)

    # Choose the best free pretrained model for this task
    model_name = "microsoft/CodeGPT-small-py-adaptedGPT2"
    tokenizer = transformers.AutoTokenizer.from_pretrained(model_name)
    model = transformers.AutoModelForCausalLM.from_pretrained(model_name)

    # Generate perfect prompt using analyzed code
    perfect_prompt = agents.generate_prompt(nlp_analysis)

    # Chat with user to make additional changes to prompt
    chatbot = agents.ChatGPT(model=model, tokenizer=tokenizer)
    final_prompt = chatbot.chat(perfect_prompt)

    # Use final prompt to generate similar code using ChatGPT
    generated_code = chatbot.generate_code(final_prompt)

    return generated_code

# Streamlit UI
st.set_page_config(page_title="Code Generator", layout="wide", initial_sidebar_state="expanded")
st.title("Code Generator")

st.sidebar.title("Input")
code_input = st.sidebar.text_area("Enter your code here:", '''
def greet(name):
    print("Hello, " + name + ". How are you doing today?")

greet("John")
''')

if st.sidebar.button("Generate Code"):
    if code_input.strip() == "":
        st.error("Please enter some code in the input field.")
    else:
        try:
            generated_code = reverse_prompt_engineer(code_input)
            st.code(generated_code)
        except Exception as e:
            st.error(f"An error occurred: {str(e)}")
            raise StopException