File size: 2,949 Bytes
7b0ac71 e05c2f6 7b0ac71 ffd2ed9 7b0ac71 d1af47c 7b0ac71 ffd2ed9 7b0ac71 ffd2ed9 7b0ac71 ffd2ed9 7b0ac71 ffd2ed9 7b0ac71 |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
# Initialize the Hugging Face Inference Client
client = InferenceClient("Qwen/Qwen2.5-Coder-32B-Instruct")
# Function to stream the compliance suggestions as they are generated
def analyze_compliance_stream(code, compliance_standard, consent):
if not consent:
return "You must consent to the processing of your code snippet."
prompt = f"Analyze the following code for {compliance_standard} compliance and suggest modifications or refactoring to meet the guidelines:\n\n{code}"
messages = [
{"role": "user", "content": prompt}
]
# Create a stream to receive generated content
stream = client.chat.completions.create(
messages=messages,
temperature=0.5,
max_tokens=32000,
top_p=0.7,
stream=True
)
# Stream content as it is generated
compliance_suggestions = ""
for chunk in stream:
compliance_suggestions += chunk.choices[0].delta.content
yield compliance_suggestions # Yield incremental content to display immediately
# Delete the code snippet after processing
del code
# Create Gradio interface with the modified layout
with gr.Blocks() as app:
gr.Markdown("## Code Compliance Advisor")
gr.Markdown("Analyze your code for legal compliance and security standards (e.g., GDPR, HIPAA) and receive actionable suggestions.")
gr.Markdown("### Privacy Notice")
gr.Markdown("""
By using this tool, you consent to the processing of your code snippet for compliance analysis. Your code will be sent to a third-party model for analysis and the results will be displayed to you. We do not store your code or the results unless required by law.
You have the right to access and erase your data. If you wish to request access to your data or have it erased, please contact us at [contact@example.com].
""")
with gr.Row():
# First column for input components
with gr.Column():
code_input = gr.Textbox(lines=10, label="Code Snippet", placeholder="Enter your code here", elem_id="full_width")
compliance_standard = gr.Dropdown(
choices=["GDPR", "HIPAA", "PCI-DSS", "SOC 2", "ISO 27001"],
label="Compliance Standard",
value="GDPR"
)
consent_checkbox = gr.Checkbox(label="I consent to the processing of my code snippet", value=False)
analyze_button = gr.Button("Analyze Compliance")
# Second column for output
with gr.Column():
gr.Markdown("### Compliance Suggestions") # This acts as the label for the output
output_markdown = gr.Markdown()
# Link button to function with inputs and outputs
analyze_button.click(fn=analyze_compliance_stream, inputs=[code_input, compliance_standard, consent_checkbox], outputs=output_markdown)
# Run the Gradio app
app.launch() |