Spaces:
Sleeping
Sleeping
v2
Browse files
app.py
CHANGED
@@ -1,100 +1,78 @@
|
|
1 |
import os
|
2 |
from openai import AzureOpenAI
|
3 |
import gradio as gr
|
4 |
-
from dotenv import load_dotenv
|
5 |
|
6 |
-
load_dotenv()
|
7 |
client = AzureOpenAI(
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
)
|
12 |
|
13 |
# Define three prompt options with user-friendly names
|
14 |
prompts = [
|
15 |
-
|
16 |
-
|
17 |
-
"
|
18 |
-
|
19 |
-
"You are an expert AI coding assistant. Follow these principles when assisting: 1. **Clarity First:** Write clear, well-structured code with comments explaining complex logic. 2. **Security is Paramount:** Never introduce security vulnerabilities. If unsure about potential risks, prioritize safety. 3. **Context Matters:** Utilize any provided code context or instructions to generate the most accurate and relevant code. 4. **User Preferences:** When applicable, adapt your coding style to align with the existing code or the user's explicit instructions. 5. **Efficiency:** If multiple approaches exist, favor the most efficient solution, unless the user prioritizes readability or maintainability.",
|
20 |
-
]
|
21 |
-
|
22 |
-
option_names = [
|
23 |
-
"Resumir Sentença em linguagem simples",
|
24 |
-
"Transformar Transcrição de oitiva judicial em citação indireta",
|
25 |
-
"IA jurídica",
|
26 |
-
"IA genérica",
|
27 |
-
"IA para tecnologia",
|
28 |
]
|
29 |
|
30 |
# Initialize a dictionary to store chat histories per user
|
31 |
chat_histories = {}
|
32 |
|
33 |
-
def predict(message,
|
34 |
-
|
35 |
-
if username not in chat_histories:
|
36 |
-
chat_histories[username] = []
|
37 |
-
history = chat_histories[username]
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
# Get the corresponding prompt based on the selected index
|
42 |
-
selected_prompt = prompts[selected_index]
|
43 |
-
history_openai_format = []
|
44 |
-
history_openai_format.append({"role": "system", "content": selected_prompt})
|
45 |
for human, assistant in history:
|
46 |
-
history_openai_format.append({"role": "user", "content": human
|
47 |
-
history_openai_format.append({"role": "assistant", "content":assistant})
|
48 |
history_openai_format.append({"role": "user", "content": message})
|
49 |
|
50 |
-
|
51 |
-
|
52 |
response = client.chat.completions.create(
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
|
59 |
partial_message = ""
|
60 |
for chunk in response:
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
partial_message = partial_message + chunk.choices[0].delta.content
|
65 |
-
yield partial_message
|
66 |
|
67 |
-
|
68 |
-
chat_histories[username].append((message, partial_message))
|
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 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
)
|
100 |
-
|
|
|
|
1 |
import os
|
2 |
from openai import AzureOpenAI
|
3 |
import gradio as gr
|
|
|
4 |
|
|
|
5 |
client = AzureOpenAI(
|
6 |
+
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
|
7 |
+
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
|
8 |
+
api_version="2024-02-01"
|
9 |
)
|
10 |
|
11 |
# Define three prompt options with user-friendly names
|
12 |
prompts = [
|
13 |
+
"be a helpful assistant",
|
14 |
+
"Crie um resumo de aproximadamente uma página da sentença abaixo em linguagem simples e acessível, sem jargões. O resumo deve conter: 1) Tipo de sentença; 2) fatos relevantes: 2.1) data do crime; 2.2) Local do crime; 2.3 vítimas; 2.4) descrição do fato apurado; 3) A decisão 4) A fundamentação.",
|
15 |
+
"""Abaixo consta uma transcrição de uma oitiva judicial. Faça uma citação indireta do que a depoente respondeu, separado por ponto e vírgula. O resultado deve constar tudo que foi dito pela testemunha, podendo ser omitido apenas o que for repetitivo. O texto não deve ser interrompido até exaurir todo o conteúdo da oitiva.
|
16 |
+
exemplo de reposta: Estava trabalhando durante os fatos; Trabalhava em um depósito de cerveja ao lado de um posto de gasolina; Quando soube dos fatos a vítima estava no hospital; Fechou o comércio e foi até o Hospital de Acopiara, todavia a vítima foi transferida; Ouviu dizer que Leandro chegou alterado e começou a espancar Vitória, tendo a mãe da adolescente a defendido; Neste momento o réu sacou um punhal e perfurou a ofendida; Não sabe de nenhuma desavença entre a vítima e o réu; Acredita que o réu estava "virado" de uma vaquejada; Conhece o réu apenas de vista; É irmão e sobrinho de Luciene."""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
]
|
18 |
|
19 |
# Initialize a dictionary to store chat histories per user
|
20 |
chat_histories = {}
|
21 |
|
22 |
+
def predict(message, prompt_index):
|
23 |
+
history = chat_histories.setdefault(prompt_index, [])
|
|
|
|
|
|
|
24 |
|
25 |
+
selected_prompt = prompts[prompt_index]
|
26 |
+
history_openai_format = [{"role": "system", "content": selected_prompt}]
|
|
|
|
|
|
|
|
|
27 |
for human, assistant in history:
|
28 |
+
history_openai_format.append({"role": "user", "content": human})
|
29 |
+
history_openai_format.append({"role": "assistant", "content": assistant})
|
30 |
history_openai_format.append({"role": "user", "content": message})
|
31 |
|
|
|
|
|
32 |
response = client.chat.completions.create(
|
33 |
+
model='gpt-4o-mini',
|
34 |
+
messages=history_openai_format,
|
35 |
+
temperature=1.0,
|
36 |
+
stream=True
|
37 |
+
)
|
38 |
|
39 |
partial_message = ""
|
40 |
for chunk in response:
|
41 |
+
if chunk.choices and chunk.choices[0].delta.content is not None:
|
42 |
+
partial_message += chunk.choices[0].delta.content
|
43 |
+
yield partial_message
|
|
|
|
|
44 |
|
45 |
+
chat_histories[prompt_index].append((message, partial_message))
|
|
|
46 |
|
47 |
+
def predict_wrapper(message, prompt_index):
|
48 |
+
return list(predict(message, prompt_index))[-1]
|
49 |
|
50 |
+
def clear_history():
|
51 |
+
global chat_histories
|
52 |
+
chat_histories = {}
|
53 |
+
|
54 |
+
# Gradio Blocks interface
|
55 |
+
with gr.Blocks() as demo:
|
56 |
+
with gr.Tab("Genérica"):
|
57 |
+
message_input = gr.Textbox(label="Message")
|
58 |
+
output = gr.Textbox()
|
59 |
+
message_input.submit(predict_wrapper, inputs=[message_input, gr.State(0)], outputs=output)
|
60 |
+
|
61 |
+
with gr.Tab("Resumir Sentença em linguagem simples"):
|
62 |
+
message_input = gr.Textbox(label="Message")
|
63 |
+
output = gr.Textbox()
|
64 |
+
message_input.submit(predict_wrapper, inputs=[message_input, gr.State(1)], outputs=output)
|
65 |
+
|
66 |
+
with gr.Tab("Transformar Transcrição de oitiva judicial em citação indireta"):
|
67 |
+
message_input = gr.Textbox(label="Message")
|
68 |
+
output = gr.Textbox()
|
69 |
+
message_input.submit(predict_wrapper, inputs=[message_input, gr.State(2)], outputs=output)
|
70 |
+
|
71 |
+
with gr.Tab("Clear Memory"):
|
72 |
+
clear_button = gr.Button("Clear Memory")
|
73 |
+
clear_button.click(fn=clear_history, inputs=[], outputs=[])
|
74 |
+
|
75 |
+
try:
|
76 |
+
demo.launch(auth=([(os.getenv("username"), os.getenv("password"))]))
|
77 |
+
finally:
|
78 |
+
clear_history()
|