nsv2042 commited on
Commit
7740f19
·
verified ·
1 Parent(s): 41ac869

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -17
app.py CHANGED
@@ -2,11 +2,12 @@ import gradio as gr
2
  import shutil
3
  import os
4
  from zipfile import ZipFile
5
- from huggingface_hub import InferenceApi
6
 
7
- # Inicialização da API do CodeAstra-7B (substituir pelo seu modelo se necessário)
8
- MODEL_NAME = "CodeAstra-7B"
9
- api = InferenceApi(repo_id=MODEL_NAME)
 
10
 
11
  # Diretório temporário para os uploads
12
  UPLOAD_DIR = "uploaded_files"
@@ -27,22 +28,28 @@ def process_uploaded_folder(zip_path):
27
  with open(file_path, 'r', encoding='utf-8') as f:
28
  java_files.append(f.read())
29
 
30
- # Analisar o código usando o modelo CodeAstra-7B
31
  full_analysis = ""
32
  for java_file in java_files:
33
- # Analisar cada arquivo individualmente
34
- result = api(inputs={"inputs": java_file})
35
- full_analysis += f"\n--- Análise do arquivo ---\n{result['generated_text']}\n"
 
 
 
36
 
37
  shutil.rmtree(folder_path) # Limpar arquivos temporários
38
  return full_analysis
39
 
40
  # Função para responder ao chat
41
- def chat_with_codeastra(chat_history, user_input):
42
- # Construa o contexto baseado no histórico do chat e na entrada do usuário
43
- chat_prompt = f"Histórico do chat:\n{chat_history}\nUsuário: {user_input}\nIA:"
44
- response = api(inputs={"inputs": chat_prompt})
45
- return response['generated_text']
 
 
 
46
 
47
  # Interface de upload
48
  def upload_and_analyze(zip_file):
@@ -54,13 +61,15 @@ def upload_and_analyze(zip_file):
54
  f.write(zip_file.read())
55
 
56
  # Processar o ZIP para análise
57
- analysis = process_uploaded_folder(zip_path)
58
- os.remove(zip_path) # Remover o arquivo ZIP após processamento
 
 
59
  return analysis
60
 
61
  # Interface gráfica com Gradio
62
  with gr.Blocks() as demo:
63
- gr.Markdown("# Analisador de APK com CodeAstra-7B 🚀")
64
 
65
  with gr.Tab("Upload e Análise"):
66
  upload_input = gr.File(label="Envie um arquivo ZIP com o código Java", type="file")
@@ -73,7 +82,7 @@ with gr.Blocks() as demo:
73
  chat_input = gr.Textbox(label="Digite sua mensagem")
74
  chat_output = gr.Textbox(label="Resposta da IA")
75
  chat_button = gr.Button("Enviar")
76
- chat_button.click(chat_with_codeastra, inputs=[chat_history, chat_input], outputs=chat_output)
77
 
78
  # Executar a aplicação
79
  if __name__ == "__main__":
 
2
  import shutil
3
  import os
4
  from zipfile import ZipFile
5
+ from huggingface_hub import InferenceClient
6
 
7
+ # Configuração do modelo e token de autenticação
8
+ MODEL_NAME = "microsoft/codebert-base" # Substituímos pelo modelo CodeBERT
9
+ TOKEN = os.getenv("HF_TOKEN", "") # Defina a variável de ambiente HF_TOKEN com seu token de acesso
10
+ client = InferenceClient(model=MODEL_NAME, token=TOKEN)
11
 
12
  # Diretório temporário para os uploads
13
  UPLOAD_DIR = "uploaded_files"
 
28
  with open(file_path, 'r', encoding='utf-8') as f:
29
  java_files.append(f.read())
30
 
31
+ # Analisar o código usando o modelo CodeBERT
32
  full_analysis = ""
33
  for java_file in java_files:
34
+ try:
35
+ # Enviar texto para análise
36
+ result = client.text_generation(java_file)
37
+ full_analysis += f"\n--- Análise do arquivo ---\n{result}\n"
38
+ except Exception as e:
39
+ full_analysis += f"\nErro ao processar arquivo: {e}\n"
40
 
41
  shutil.rmtree(folder_path) # Limpar arquivos temporários
42
  return full_analysis
43
 
44
  # Função para responder ao chat
45
+ def chat_with_codebert(chat_history, user_input):
46
+ try:
47
+ # Construir o contexto baseado no histórico do chat e na entrada do usuário
48
+ chat_prompt = f"Histórico do chat:\n{chat_history}\nUsuário: {user_input}\nIA:"
49
+ response = client.text_generation(chat_prompt)
50
+ return response
51
+ except Exception as e:
52
+ return f"Erro ao processar a resposta da IA: {e}"
53
 
54
  # Interface de upload
55
  def upload_and_analyze(zip_file):
 
61
  f.write(zip_file.read())
62
 
63
  # Processar o ZIP para análise
64
+ try:
65
+ analysis = process_uploaded_folder(zip_path)
66
+ finally:
67
+ os.remove(zip_path) # Remover o arquivo ZIP após processamento
68
  return analysis
69
 
70
  # Interface gráfica com Gradio
71
  with gr.Blocks() as demo:
72
+ gr.Markdown("# Analisador de APK com CodeBERT 🚀")
73
 
74
  with gr.Tab("Upload e Análise"):
75
  upload_input = gr.File(label="Envie um arquivo ZIP com o código Java", type="file")
 
82
  chat_input = gr.Textbox(label="Digite sua mensagem")
83
  chat_output = gr.Textbox(label="Resposta da IA")
84
  chat_button = gr.Button("Enviar")
85
+ chat_button.click(chat_with_codebert, inputs=[chat_history, chat_input], outputs=chat_output)
86
 
87
  # Executar a aplicação
88
  if __name__ == "__main__":