Spaces:
Sleeping
Sleeping
File size: 4,148 Bytes
1efd29f 6245b3b b138e3b 1a943f1 5b7f342 e0b6f12 1efd29f 63c0f13 b138e3b 63c0f13 b138e3b 1efd29f 5b7f342 791be58 5b7f342 791be58 5b7f342 791be58 5b7f342 791be58 5b7f342 791be58 1a943f1 791be58 5b7f342 791be58 5b7f342 791be58 5b7f342 1efd29f |
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import gradio as gr
import regex as re
import csv
import pandas as pd
from analyzer import combine_repo_files_for_llm, analyze_combined_file, parse_llm_json_response
from hf_utils import download_space_repo
# from hf_utils import download_space_repo
def process_repo_input(text):
if not text:
return pd.DataFrame(columns=["repo id", "strength", "weaknesses", "speciality", "relevance rating"])
# Split by newlines and commas, strip whitespace
repo_ids = [repo.strip() for repo in re.split(r'[\n,]+', text) if repo.strip()]
# Write to CSV
csv_filename = "repo_ids.csv"
with open(csv_filename, mode="w", newline='', encoding="utf-8") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["repo id", "strength", "weaknesses", "speciality", "relevance rating"])
for repo_id in repo_ids:
writer.writerow([repo_id, "", "", "", ""])
# Read the CSV into a DataFrame to display
df = pd.read_csv(csv_filename)
return df
# Store the last entered repo ids in a global variable for button access
last_repo_ids = []
def process_repo_input_and_store(text):
global last_repo_ids
if not text:
last_repo_ids = []
return pd.DataFrame(columns=["repo id", "strength", "weaknesses", "speciality", "relevance rating"])
repo_ids = [repo.strip() for repo in re.split(r'[\n,]+', text) if repo.strip()]
last_repo_ids = repo_ids
csv_filename = "repo_ids.csv"
with open(csv_filename, mode="w", newline='', encoding="utf-8") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["repo id", "strength", "weaknesses", "speciality", "relevance rating"])
for repo_id in repo_ids:
writer.writerow([repo_id, "", "", "", ""])
df = pd.read_csv(csv_filename)
return df
def show_combined_repo_and_llm():
if not last_repo_ids:
return "No repo ID available. Please submit repo IDs first.", ""
first_repo_id = last_repo_ids[0]
try:
download_space_repo(first_repo_id, local_dir="repo_files")
except Exception as e:
return f"Error downloading repo: {e}", ""
txt_path = combine_repo_files_for_llm()
try:
with open(txt_path, "r", encoding="utf-8") as f:
combined_content = f.read()
except Exception as e:
return f"Error reading {txt_path}: {e}", ""
llm_output = analyze_combined_file(txt_path)
llm_json = parse_llm_json_response(llm_output)
# Update CSV for the first repo id
csv_filename = "repo_ids.csv"
try:
df = pd.read_csv(csv_filename)
for idx, row in df.iterrows():
if row["repo id"] == first_repo_id:
if isinstance(llm_json, dict):
df.at[idx, "strength"] = llm_json.get("strength", "")
df.at[idx, "weaknesses"] = llm_json.get("weaknesses", "")
df.at[idx, "speciality"] = llm_json.get("speciality", "")
df.at[idx, "relevance rating"] = llm_json.get("relevance rating", "")
break
df.to_csv(csv_filename, index=False)
except Exception as e:
pass # Optionally log error
return combined_content, llm_output
repo_id_input = gr.Textbox(label="Enter repo IDs (comma or newline separated)", lines=5, placeholder="repo1, repo2\nrepo3")
df_output = gr.Dataframe(headers=["repo id", "strength", "weaknesses", "speciality", "relevance rating", "Usecase"])
with gr.Blocks() as demo:
gr.Markdown("## Repo ID Input")
repo_id_box = repo_id_input.render()
df_box = df_output.render()
submit_btn = gr.Button("Submit Repo IDs")
submit_btn.click(process_repo_input_and_store, inputs=repo_id_box, outputs=df_box)
gr.Markdown("---")
gr.Markdown("## Combine and Display Repo Files")
combine_btn = gr.Button("Download, Combine & Show .py/.md Files from First Repo and Analyze")
combined_txt = gr.Textbox(label="Combined Repo Files", lines=20)
llm_output_txt = gr.Textbox(label="LLM Analysis Output", lines=10)
combine_btn.click(show_combined_repo_and_llm, inputs=None, outputs=[combined_txt, llm_output_txt])
demo.launch() |