MLDeveloper commited on
Commit
01e0394
·
verified ·
1 Parent(s): f62fef5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -18
app.py CHANGED
@@ -1,26 +1,53 @@
1
  import streamlit as st
2
- from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
 
3
 
4
- # Load CodeT5 model from Hugging Face
5
- MODEL_NAME = "Salesforce/codet5-large"
6
- tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
7
- model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)
 
8
 
9
- def translate_code(code_snippet, source_lang, target_lang):
10
- """
11
- Translate code using CodeT5 model.
12
- """
13
- prompt = f"""Translate this {source_lang} code to {target_lang}:
14
 
15
- {code_snippet}"""
 
 
16
 
17
- # Tokenize and generate translation
18
- inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True, max_length=512)
19
- outputs = model.generate(**inputs, max_length=512)
 
20
 
21
- # Decode the output
22
- translated_code = tokenizer.decode(outputs[0], skip_special_tokens=True)
23
- return translated_code
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  # Streamlit UI
26
  st.title("🔄 AI Code Translator")
@@ -40,4 +67,4 @@ if st.button("Translate"):
40
  with st.spinner("Translating... ⏳"):
41
  translated_code = translate_code(code_input, source_lang, target_lang)
42
  st.subheader(f"Translated {target_lang} Code:")
43
- st.code(translated_code, language=target_lang.lower())
 
1
  import streamlit as st
2
+ import requests
3
+ import os
4
 
5
+ # Ensure the Hugging Face API Token is available
6
+ API_TOKEN = os.getenv("HF_API_TOKEN")
7
+ if not API_TOKEN:
8
+ st.error("⚠️ API Token is missing! Please set HF_API_TOKEN as an environment variable.")
9
+ st.stop()
10
 
11
+ # Use Code Llama for better translation
12
+ MODEL_ID = "codellama/CodeLlama-7b-Instruct-hf"
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 between languages using Hugging Face API."""
18
+ prompt = f"""### Task: Convert {source_lang} code to {target_lang}.
19
 
20
+ #### {source_lang} Code:
21
+ ```{source_lang.lower()}
22
+ {code_snippet}
23
+ ```
24
 
25
+ #### Translated {target_lang} Code:
26
+ """
27
+
28
+ try:
29
+ response = requests.post(API_URL, headers=HEADERS, json={"inputs": prompt})
30
+
31
+ if response.status_code == 200:
32
+ result = response.json()
33
+ if isinstance(result, list) and result:
34
+ generated_text = result[0].get("generated_text", "")
35
+ translated_code = generated_text.split(f"#### Translated {target_lang} Code:")[-1].strip()
36
+ return translated_code if translated_code else "⚠️ No translated code received."
37
+ else:
38
+ return "⚠️ Unexpected API response format."
39
+ elif response.status_code == 400:
40
+ return "⚠️ Error: Bad request. Check your input."
41
+ elif response.status_code == 401:
42
+ return "⚠️ Error: Unauthorized. Check your API token."
43
+ elif response.status_code == 403:
44
+ return "⚠️ Error: Access Forbidden. You may need special model access."
45
+ elif response.status_code == 503:
46
+ return "⚠️ Error: Model is loading. Please wait and try again."
47
+ else:
48
+ return f"⚠️ API Error {response.status_code}: {response.text}"
49
+ except requests.exceptions.RequestException as e:
50
+ return f"⚠️ Network Error: {str(e)}"
51
 
52
  # Streamlit UI
53
  st.title("🔄 AI Code Translator")
 
67
  with st.spinner("Translating... ⏳"):
68
  translated_code = translate_code(code_input, source_lang, target_lang)
69
  st.subheader(f"Translated {target_lang} Code:")
70
+ st.code(translated_code, language=target_lang.lower())