Spaces:
Sleeping
Sleeping
Joash
commited on
Commit
·
6a725a8
1
Parent(s):
1878206
Fix tokenizer initialization and improve error handling
Browse files
app.py
CHANGED
@@ -54,12 +54,21 @@ class CodeReviewer:
|
|
54 |
login(token=HF_TOKEN, add_to_git_credential=False)
|
55 |
|
56 |
logger.info("Loading tokenizer...")
|
|
|
57 |
self.tokenizer = AutoTokenizer.from_pretrained(
|
58 |
MODEL_NAME,
|
59 |
token=HF_TOKEN,
|
60 |
trust_remote_code=True,
|
61 |
cache_dir=CACHE_DIR
|
62 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
logger.info("Loading model...")
|
65 |
self.model = AutoModelForCausalLM.from_pretrained(
|
@@ -71,6 +80,8 @@ class CodeReviewer:
|
|
71 |
cache_dir=CACHE_DIR,
|
72 |
token=HF_TOKEN
|
73 |
)
|
|
|
|
|
74 |
self.device = next(self.model.parameters()).device
|
75 |
logger.info(f"Model loaded successfully on {self.device}")
|
76 |
except Exception as e:
|
@@ -93,6 +104,9 @@ Code:
|
|
93 |
@spaces.GPU
|
94 |
def review_code(self, code: str, language: str) -> str:
|
95 |
"""Perform code review using the model."""
|
|
|
|
|
|
|
96 |
try:
|
97 |
start_time = datetime.now()
|
98 |
prompt = self.create_review_prompt(code, language)
|
@@ -105,7 +119,10 @@ Code:
|
|
105 |
truncation=True,
|
106 |
max_length=512,
|
107 |
padding=True
|
108 |
-
)
|
|
|
|
|
|
|
109 |
except Exception as token_error:
|
110 |
logger.error(f"Tokenization error: {token_error}")
|
111 |
return "Error: Failed to process input code. Please try again."
|
@@ -120,7 +137,9 @@ Code:
|
|
120 |
temperature=0.7,
|
121 |
top_p=0.95,
|
122 |
num_beams=1,
|
123 |
-
early_stopping=True
|
|
|
|
|
124 |
)
|
125 |
except Exception as gen_error:
|
126 |
logger.error(f"Generation error: {gen_error}")
|
|
|
54 |
login(token=HF_TOKEN, add_to_git_credential=False)
|
55 |
|
56 |
logger.info("Loading tokenizer...")
|
57 |
+
# Initialize tokenizer with special tokens
|
58 |
self.tokenizer = AutoTokenizer.from_pretrained(
|
59 |
MODEL_NAME,
|
60 |
token=HF_TOKEN,
|
61 |
trust_remote_code=True,
|
62 |
cache_dir=CACHE_DIR
|
63 |
)
|
64 |
+
# Ensure special tokens are set
|
65 |
+
special_tokens = {
|
66 |
+
'pad_token': '[PAD]',
|
67 |
+
'eos_token': '</s>',
|
68 |
+
'bos_token': '<s>'
|
69 |
+
}
|
70 |
+
self.tokenizer.add_special_tokens(special_tokens)
|
71 |
+
logger.info("Tokenizer loaded successfully")
|
72 |
|
73 |
logger.info("Loading model...")
|
74 |
self.model = AutoModelForCausalLM.from_pretrained(
|
|
|
80 |
cache_dir=CACHE_DIR,
|
81 |
token=HF_TOKEN
|
82 |
)
|
83 |
+
# Resize embeddings for special tokens
|
84 |
+
self.model.resize_token_embeddings(len(self.tokenizer))
|
85 |
self.device = next(self.model.parameters()).device
|
86 |
logger.info(f"Model loaded successfully on {self.device}")
|
87 |
except Exception as e:
|
|
|
104 |
@spaces.GPU
|
105 |
def review_code(self, code: str, language: str) -> str:
|
106 |
"""Perform code review using the model."""
|
107 |
+
if not self.tokenizer or not self.model:
|
108 |
+
return "Error: Model not properly initialized. Please try again later."
|
109 |
+
|
110 |
try:
|
111 |
start_time = datetime.now()
|
112 |
prompt = self.create_review_prompt(code, language)
|
|
|
119 |
truncation=True,
|
120 |
max_length=512,
|
121 |
padding=True
|
122 |
+
)
|
123 |
+
if inputs is None:
|
124 |
+
raise ValueError("Failed to tokenize input")
|
125 |
+
inputs = inputs.to(self.device)
|
126 |
except Exception as token_error:
|
127 |
logger.error(f"Tokenization error: {token_error}")
|
128 |
return "Error: Failed to process input code. Please try again."
|
|
|
137 |
temperature=0.7,
|
138 |
top_p=0.95,
|
139 |
num_beams=1,
|
140 |
+
early_stopping=True,
|
141 |
+
pad_token_id=self.tokenizer.pad_token_id,
|
142 |
+
eos_token_id=self.tokenizer.eos_token_id
|
143 |
)
|
144 |
except Exception as gen_error:
|
145 |
logger.error(f"Generation error: {gen_error}")
|