|
import streamlit as st
|
|
import os
|
|
import json
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
|
|
|
|
|
st.title("Ansible Code Reviewer")
|
|
uploaded_files = st.file_uploader("Upload your Ansible code files", type=['yml', 'yaml'], accept_multiple_files=True)
|
|
|
|
if uploaded_files:
|
|
result = []
|
|
model_name = "facebook/incoder-1B"
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
model = AutoModelForCausalLM.from_pretrained(model_name)
|
|
|
|
|
|
for uploaded_file in uploaded_files:
|
|
content = uploaded_file.read().decode("utf-8")
|
|
|
|
tokens = tokenizer(content, return_tensors="pt")
|
|
review_output = model.generate(**tokens)
|
|
review_text = tokenizer.decode(review_output[0], skip_special_tokens=True)
|
|
|
|
|
|
result.append({
|
|
"filename": uploaded_file.name,
|
|
"review": review_text
|
|
})
|
|
|
|
|
|
json_result = json.dumps(result, indent=4)
|
|
with open("review_results.json", "w") as f:
|
|
f.write(json_result)
|
|
|
|
|
|
st.json(result)
|
|
st.download_button("Download Review Results", json_result, file_name="review_results.json")
|
|
|