Spaces:
Running
Running
import os | |
import json | |
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
def load_model(): | |
model_name = "TheBloke/tiny-llama-7b" | |
token = os.environ.get("HF_TOKEN") | |
if not token: | |
raise ValueError("HF_TOKEN not found in environment variables.") | |
# Load the tokenizer and model using the provided token | |
tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=token) | |
model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=token) | |
return tokenizer, model | |
# Load the model once at startup | |
tokenizer, model = load_model() | |
def evaluate_tinyllama(prompt): | |
inputs = tokenizer(prompt, return_tensors="pt") | |
outputs = model.generate(**inputs, max_new_tokens=150) | |
response_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
try: | |
# Try to parse the model's output as JSON | |
result = json.loads(response_text.strip()) | |
except Exception as e: | |
result = {"stars": 0, "feedback": "Evaluation failed. Unable to parse AI response."} | |
return result | |
def evaluate_code(language, question, code): | |
if not code.strip(): | |
return "Error: No code provided. Please enter your solution code." | |
# Build a detailed prompt for the AI evaluator. | |
prompt = f""" | |
You are an expert code evaluator. | |
Rate the following solution on a scale of 0-5 (0 = completely incorrect, 5 = excellent) and provide a concise feedback message. | |
Language: {language} | |
Problem: "{question}" | |
Solution: "{code}" | |
Return ONLY valid JSON: {{"stars": number, "feedback": string}}. | |
Do not include any extra text. | |
""" | |
result = evaluate_tinyllama(prompt) | |
return f"Stars: {result.get('stars', 0)}\nFeedback: {result.get('feedback', '')}" | |
iface = gr.Interface( | |
fn=evaluate_code, | |
inputs=[ | |
gr.Dropdown(choices=["C", "Python", "Java"], label="Language"), | |
gr.Textbox(lines=2, placeholder="Enter the problem question here...", label="Question"), | |
gr.Code(language="python", label="Your Code") | |
], | |
outputs=gr.Textbox(label="Evaluation Result"), | |
title="Code Evaluator", | |
description="Enter a coding question and your solution to get AI-powered feedback. Supports C, Python, and Java." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |