DHEIVER commited on
Commit
ca4784d
·
verified ·
1 Parent(s): 5f6b9fb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -30
app.py CHANGED
@@ -15,86 +15,115 @@ def gerar_peca_juridica_criminal(informacoes_caso: str, tipo_peca: str) -> str:
15
  if not tipo_peca or not informacoes_caso:
16
  return "Por favor, forneça todas as informações necessárias."
17
 
18
- if tipo_peca.lower() != "habeas corpus":
19
- return "Tipo de peça não suportado no momento. Disponível apenas 'habeas corpus'."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
- # Template com limite de tokens
22
  mensagens_estrutura = [
23
  {
24
  "role": "system",
25
- "content": "Redija HC técnico em português jurídico. Máximo 300 tokens."
26
  },
27
  {
28
  "role": "user",
29
- "content": (
30
- f"Elabore HC conciso com:\n"
31
- f"1. Qualificação e fatos essenciais\n"
32
- f"2. Art 5º LXVIII CF e art 647/648 CPP\n"
33
- f"3. Um precedente STF/STJ\n"
34
- f"4. Pedido liminar e principal\n\n"
35
- f"Caso: {informacoes_caso}"
36
- )
37
  }
38
  ]
39
 
40
  resposta_estrutura = client.chat.completions.create(
41
  model="mistralai/Mistral-7B-Instruct-v0.3",
42
  messages=mensagens_estrutura,
43
- max_tokens=300,
44
  temperature=0.7
45
  )
46
 
47
  estrutura_base = resposta_estrutura.choices[0].message["content"]
48
 
49
- # Elaboração com limite
50
  mensagens_elaboracao = [
51
  {
52
  "role": "system",
53
- "content": "Aprimore com fundamentação técnica. Máximo 300 tokens."
54
  },
55
  {
56
  "role": "user",
57
- "content": f"Revise mantendo concisão:\n{estrutura_base}"
58
  }
59
  ]
60
 
61
  resposta_elaboracao = client.chat.completions.create(
62
  model="mistralai/Mistral-7B-Instruct-v0.3",
63
  messages=mensagens_elaboracao,
64
- max_tokens=300,
65
  temperature=0.7
66
  )
67
 
68
- # Finalização com limite
69
  mensagens_final = [
70
  {
71
  "role": "system",
72
- "content": "Revise tecnicamente. Máximo 400 tokens."
73
  },
74
  {
75
  "role": "user",
76
- "content": (
77
- f"Finalize respeitando estrutura:\n"
78
- "EXCELENTÍSSIMO JUIZ\n"
79
- "FATOS\n"
80
- "DIREITO\n"
81
- "PEDIDOS\n\n"
82
- f"{estrutura_base}\n\n"
83
- f"{resposta_elaboracao.choices[0].message['content']}"
84
- )
85
  }
86
  ]
87
 
88
  resposta_final = client.chat.completions.create(
89
  model="mistralai/Mistral-7B-Instruct-v0.3",
90
  messages=mensagens_final,
91
- max_tokens=400,
92
  temperature=0.5
93
  )
94
 
95
  return resposta_final.choices[0].message["content"]
96
 
97
-
98
  # Função para redefinir os campos
99
  def redefinir_campos():
100
  return "", "", ""
 
15
  if not tipo_peca or not informacoes_caso:
16
  return "Por favor, forneça todas as informações necessárias."
17
 
18
+ templates = {
19
+ "habeas corpus": {
20
+ "estrutura": ["EXORDIAL", "FATOS", "DIREITO", "PEDIDOS"],
21
+ "prompt": (
22
+ "HC conciso:\n"
23
+ "1. Fatos e constrangimento ilegal\n"
24
+ "2. CF art 5º LXVIII e CPP 647/648\n"
25
+ "3. Precedente STF/STJ\n"
26
+ "4. Liminar + principal"
27
+ ),
28
+ "max_tokens": 300
29
+ },
30
+ "petição inicial": {
31
+ "estrutura": ["EXORDIAL", "QUALIFICAÇÃO", "FATOS", "DIREITO", "PEDIDOS"],
32
+ "prompt": (
33
+ "Denúncia criminal:\n"
34
+ "1. Qualificação completa\n"
35
+ "2. Fatos e tipificação\n"
36
+ "3. Arts. 41/395 CPP\n"
37
+ "4. Provas e diligências"
38
+ ),
39
+ "max_tokens": 400
40
+ },
41
+ "defesa prévia": {
42
+ "estrutura": ["QUALIFICAÇÃO", "PRELIMINARES", "MÉRITO", "PROVAS", "PEDIDOS"],
43
+ "prompt": (
44
+ "Defesa art. 396-A CPP:\n"
45
+ "1. Preliminares\n"
46
+ "2. Tese defensiva\n"
47
+ "3. Provas a produzir\n"
48
+ "4. Testemunhas"
49
+ ),
50
+ "max_tokens": 350
51
+ },
52
+ "apelação criminal": {
53
+ "estrutura": ["TEMPESTIVIDADE", "FATOS", "PRELIMINARES", "MÉRITO", "PEDIDOS"],
54
+ "prompt": (
55
+ "Apelação criminal:\n"
56
+ "1. Art. 593 CPP\n"
57
+ "2. Preliminares\n"
58
+ "3. Error in judicando\n"
59
+ "4. Reforma/nulidade"
60
+ ),
61
+ "max_tokens": 450
62
+ }
63
+ }
64
+
65
+ template = templates.get(tipo_peca.lower())
66
+ if not template:
67
+ return "Tipo de peça não suportado."
68
 
 
69
  mensagens_estrutura = [
70
  {
71
  "role": "system",
72
+ "content": f"Redija {tipo_peca} técnica em português jurídico. Máximo {template['max_tokens']} tokens."
73
  },
74
  {
75
  "role": "user",
76
+ "content": f"{template['prompt']}\nCaso: {informacoes_caso}"
 
 
 
 
 
 
 
77
  }
78
  ]
79
 
80
  resposta_estrutura = client.chat.completions.create(
81
  model="mistralai/Mistral-7B-Instruct-v0.3",
82
  messages=mensagens_estrutura,
83
+ max_tokens=template['max_tokens'],
84
  temperature=0.7
85
  )
86
 
87
  estrutura_base = resposta_estrutura.choices[0].message["content"]
88
 
 
89
  mensagens_elaboracao = [
90
  {
91
  "role": "system",
92
+ "content": f"Aprimore {tipo_peca} com fundamentação precisa. Máximo {template['max_tokens']} tokens."
93
  },
94
  {
95
  "role": "user",
96
+ "content": f"Revise:\n{estrutura_base}"
97
  }
98
  ]
99
 
100
  resposta_elaboracao = client.chat.completions.create(
101
  model="mistralai/Mistral-7B-Instruct-v0.3",
102
  messages=mensagens_elaboracao,
103
+ max_tokens=template['max_tokens'],
104
  temperature=0.7
105
  )
106
 
 
107
  mensagens_final = [
108
  {
109
  "role": "system",
110
+ "content": f"Finalize {tipo_peca} em formato técnico. Estrutura: {' > '.join(template['estrutura'])}"
111
  },
112
  {
113
  "role": "user",
114
+ "content": f"Versão final:\n{estrutura_base}\n\n{resposta_elaboracao.choices[0].message['content']}"
 
 
 
 
 
 
 
 
115
  }
116
  ]
117
 
118
  resposta_final = client.chat.completions.create(
119
  model="mistralai/Mistral-7B-Instruct-v0.3",
120
  messages=mensagens_final,
121
+ max_tokens=max(template['max_tokens'] + 100, 500),
122
  temperature=0.5
123
  )
124
 
125
  return resposta_final.choices[0].message["content"]
126
 
 
127
  # Função para redefinir os campos
128
  def redefinir_campos():
129
  return "", "", ""