Krish-Upgrix commited on
Commit
1942ed8
Β·
verified Β·
1 Parent(s): 09bdb34

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +115 -14
app.py CHANGED
@@ -1,20 +1,22 @@
1
  import streamlit as st
2
  import requests
3
- import os # Import os to access environment variables
 
4
 
5
- # Get API token from environment variable
6
- API_TOKEN = os.getenv("HF_API_TOKEN")
 
7
 
8
-
9
- # Change MODEL_ID to a better model
10
  MODEL_ID = "Salesforce/codet5p-770m" # CodeT5+ (Recommended)
11
- # MODEL_ID = "bigcode/starcoder2-15b" # StarCoder2
12
- # MODEL_ID = "bigcode/starcoder"
13
  API_URL = f"https://api-inference.huggingface.co/models/{MODEL_ID}"
14
- HEADERS = {"Authorization": f"Bearer {API_TOKEN}"}
 
 
 
15
 
16
  def translate_code(code_snippet, source_lang, target_lang):
17
- """Translate code using Hugging Face API securely."""
18
  prompt = f"Translate the following {source_lang} code to {target_lang}:\n\n{code_snippet}\n\nTranslated {target_lang} Code:\n"
19
 
20
  response = requests.post(API_URL, headers=HEADERS, json={
@@ -23,7 +25,6 @@ def translate_code(code_snippet, source_lang, target_lang):
23
  "max_new_tokens": 150,
24
  "temperature": 0.2,
25
  "top_k": 50
26
- # "stop": ["\n\n", "#", "//", "'''"]
27
  }
28
  })
29
 
@@ -34,8 +35,23 @@ def translate_code(code_snippet, source_lang, target_lang):
34
  else:
35
  return f"Error: {response.status_code}, {response.text}"
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  # Streamlit UI
38
- st.title("πŸ”„ Code Translator using StarCoder")
39
  st.write("Translate code between different programming languages using AI.")
40
 
41
  languages = ["Python", "Java", "C++", "C"]
@@ -44,11 +60,96 @@ source_lang = st.selectbox("Select source language", languages)
44
  target_lang = st.selectbox("Select target language", languages)
45
  code_input = st.text_area("Enter your code here:", height=200)
46
 
 
 
 
 
 
47
  if st.button("Translate"):
48
  if code_input.strip():
 
49
  with st.spinner("Translating..."):
50
- translated_code = translate_code(code_input, source_lang, target_lang)
51
- st.subheader("Translated Code:")
52
- st.code(translated_code, language=target_lang.lower())
 
 
 
 
 
 
53
  else:
54
  st.warning("⚠️ Please enter some code before translating.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import requests
3
+ import os # To access environment variables
4
+ import google.generativeai as genai # Import Gemini API
5
 
6
+ # Load API keys from environment variables
7
+ HF_API_TOKEN = os.getenv("HF_API_TOKEN")
8
+ GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
9
 
10
+ # Set up Hugging Face API
 
11
  MODEL_ID = "Salesforce/codet5p-770m" # CodeT5+ (Recommended)
 
 
12
  API_URL = f"https://api-inference.huggingface.co/models/{MODEL_ID}"
13
+ HEADERS = {"Authorization": f"Bearer {HF_API_TOKEN}"}
14
+
15
+ # Initialize Gemini API
16
+ genai.configure(api_key=GEMINI_API_KEY)
17
 
18
  def translate_code(code_snippet, source_lang, target_lang):
19
+ """Translate code using Hugging Face API."""
20
  prompt = f"Translate the following {source_lang} code to {target_lang}:\n\n{code_snippet}\n\nTranslated {target_lang} Code:\n"
21
 
22
  response = requests.post(API_URL, headers=HEADERS, json={
 
25
  "max_new_tokens": 150,
26
  "temperature": 0.2,
27
  "top_k": 50
 
28
  }
29
  })
30
 
 
35
  else:
36
  return f"Error: {response.status_code}, {response.text}"
37
 
38
+ def fallback_translate_with_gemini(code_snippet, source_lang, target_lang):
39
+ """Fallback function using Gemini API for translation."""
40
+ prompt = f"""You are a code translation expert. Convert the following {source_lang} code to {target_lang}:
41
+
42
+ {code_snippet}
43
+
44
+ Ensure the translation is accurate and follows {target_lang} best practices.
45
+ """
46
+ try:
47
+ model = genai.GenerativeModel("gemini-pro")
48
+ response = model.generate_content(prompt)
49
+ return response.text.strip() if response else "Translation failed."
50
+ except Exception as e:
51
+ return f"Gemini API Error: {str(e)}"
52
+
53
  # Streamlit UI
54
+ st.title("πŸ”„ Code Translator with Gemini AI")
55
  st.write("Translate code between different programming languages using AI.")
56
 
57
  languages = ["Python", "Java", "C++", "C"]
 
60
  target_lang = st.selectbox("Select target language", languages)
61
  code_input = st.text_area("Enter your code here:", height=200)
62
 
63
+ # Initialize session state
64
+ if "translate_attempts" not in st.session_state:
65
+ st.session_state.translate_attempts = 0
66
+ st.session_state.translated_code = ""
67
+
68
  if st.button("Translate"):
69
  if code_input.strip():
70
+ st.session_state.translate_attempts += 1
71
  with st.spinner("Translating..."):
72
+ if st.session_state.translate_attempts == 1:
73
+ # First attempt using the pretrained model
74
+ st.session_state.translated_code = translate_code(code_input, source_lang, target_lang)
75
+ else:
76
+ # Second attempt uses Gemini API
77
+ st.session_state.translated_code = fallback_translate_with_gemini(code_input, source_lang, target_lang)
78
+
79
+ st.subheader("Translated Code:")
80
+ st.code(st.session_state.translated_code, language=target_lang.lower())
81
  else:
82
  st.warning("⚠️ Please enter some code before translating.")
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+ # V1 without gemini api
101
+
102
+ # import streamlit as st
103
+ # import requests
104
+ # import os # Import os to access environment variables
105
+
106
+ # # Get API token from environment variable
107
+ # API_TOKEN = os.getenv("HF_API_TOKEN")
108
+
109
+
110
+ # # Change MODEL_ID to a better model
111
+ # MODEL_ID = "Salesforce/codet5p-770m" # CodeT5+ (Recommended)
112
+ # # MODEL_ID = "bigcode/starcoder2-15b" # StarCoder2
113
+ # # MODEL_ID = "bigcode/starcoder"
114
+ # API_URL = f"https://api-inference.huggingface.co/models/{MODEL_ID}"
115
+ # HEADERS = {"Authorization": f"Bearer {API_TOKEN}"}
116
+
117
+ # def translate_code(code_snippet, source_lang, target_lang):
118
+ # """Translate code using Hugging Face API securely."""
119
+ # prompt = f"Translate the following {source_lang} code to {target_lang}:\n\n{code_snippet}\n\nTranslated {target_lang} Code:\n"
120
+
121
+ # response = requests.post(API_URL, headers=HEADERS, json={
122
+ # "inputs": prompt,
123
+ # "parameters": {
124
+ # "max_new_tokens": 150,
125
+ # "temperature": 0.2,
126
+ # "top_k": 50
127
+ # # "stop": ["\n\n", "#", "//", "'''"]
128
+ # }
129
+ # })
130
+
131
+ # if response.status_code == 200:
132
+ # generated_text = response.json()[0]["generated_text"]
133
+ # translated_code = generated_text.split(f"Translated {target_lang} Code:\n")[-1].strip()
134
+ # return translated_code
135
+ # else:
136
+ # return f"Error: {response.status_code}, {response.text}"
137
+
138
+ # # Streamlit UI
139
+ # st.title("πŸ”„ Code Translator using StarCoder")
140
+ # st.write("Translate code between different programming languages using AI.")
141
+
142
+ # languages = ["Python", "Java", "C++", "C"]
143
+
144
+ # source_lang = st.selectbox("Select source language", languages)
145
+ # target_lang = st.selectbox("Select target language", languages)
146
+ # code_input = st.text_area("Enter your code here:", height=200)
147
+
148
+ # if st.button("Translate"):
149
+ # if code_input.strip():
150
+ # with st.spinner("Translating..."):
151
+ # translated_code = translate_code(code_input, source_lang, target_lang)
152
+ # st.subheader("Translated Code:")
153
+ # st.code(translated_code, language=target_lang.lower())
154
+ # else:
155
+ # st.warning("⚠️ Please enter some code before translating.")