Spaces:
Sleeping
Sleeping
luanpoppe
commited on
Commit
·
2213315
1
Parent(s):
85dd209
feat: adicionando teste unitário dos contextuals
Browse files- _utils/bubble_integrations/enviar_resposta_final.py +1 -1
- _utils/custom_exception_handler.py +4 -7
- _utils/gerar_relatorio_modelo_usuario/contextual_retriever.py +18 -13
- tests/gerar_relatorio_modelo_usuario/fixture_lista_respostas_contextuals.py +112 -1
- tests/gerar_relatorio_modelo_usuario/test_contextual_retriever.py +36 -3
_utils/bubble_integrations/enviar_resposta_final.py
CHANGED
@@ -11,4 +11,4 @@ def enviar_resposta_final(doc_id: str, form_response_id: str, version: str, text
|
|
11 |
"texto_completo": texto_completo,
|
12 |
"erro": error,
|
13 |
}
|
14 |
-
requests.post(url, body, headers=headers)
|
|
|
11 |
"texto_completo": texto_completo,
|
12 |
"erro": error,
|
13 |
}
|
14 |
+
return requests.post(url, body, headers=headers)
|
_utils/custom_exception_handler.py
CHANGED
@@ -17,18 +17,15 @@ def custom_exception_handler(exc, context):
|
|
17 |
if response and str(response.status_code)[0] != "2":
|
18 |
logger.error(f"Validation error: {response.data}")
|
19 |
|
20 |
-
|
|
|
21 |
serializer.get("doc_id", ""),
|
22 |
serializer.get("form_response_id", ""),
|
23 |
serializer.get("version", ""),
|
24 |
serializer.get("texto_completo", ""),
|
25 |
True,
|
26 |
)
|
|
|
|
|
27 |
|
28 |
return response
|
29 |
-
|
30 |
-
|
31 |
-
def your_additional_function(exc, context):
|
32 |
-
# Implement your custom logic here
|
33 |
-
# For example, send an email notification or perform other actions
|
34 |
-
pass
|
|
|
17 |
if response and str(response.status_code)[0] != "2":
|
18 |
logger.error(f"Validation error: {response.data}")
|
19 |
|
20 |
+
print("INICIANDO RESPOSTA DE ERRO PARA O BUBBLE")
|
21 |
+
resposta_bubble = enviar_resposta_final(
|
22 |
serializer.get("doc_id", ""),
|
23 |
serializer.get("form_response_id", ""),
|
24 |
serializer.get("version", ""),
|
25 |
serializer.get("texto_completo", ""),
|
26 |
True,
|
27 |
)
|
28 |
+
print("\n\nresposta_bubble.status_code", resposta_bubble.status_code)
|
29 |
+
print("\n\nresposta_bubble.json()", resposta_bubble.json())
|
30 |
|
31 |
return response
|
|
|
|
|
|
|
|
|
|
|
|
_utils/gerar_relatorio_modelo_usuario/contextual_retriever.py
CHANGED
@@ -81,7 +81,7 @@ class ContextualRetriever:
|
|
81 |
if attempt != 0:
|
82 |
print("------------- FORMATAÇÃO DO CONTEXTUAL INCORRETA - TENTANDO NOVAMENTE -------------")
|
83 |
print(
|
84 |
-
f"\n\nTENTATIVA FORMATAÇÃO CHUNKS NÚMERO {attempt
|
85 |
)
|
86 |
print("\nCOMEÇANDO UMA REQUISIÇÃO DO CONTEXTUAL")
|
87 |
raw_response = await agpt_answer(prompt)
|
@@ -113,19 +113,24 @@ class ContextualRetriever:
|
|
113 |
)
|
114 |
|
115 |
lista_chunks = []
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
|
|
|
|
127 |
)
|
128 |
-
|
|
|
|
|
|
|
129 |
|
130 |
return lista_chunks
|
131 |
|
|
|
81 |
if attempt != 0:
|
82 |
print("------------- FORMATAÇÃO DO CONTEXTUAL INCORRETA - TENTANDO NOVAMENTE -------------")
|
83 |
print(
|
84 |
+
f"\n\nTENTATIVA FORMATAÇÃO CHUNKS NÚMERO {attempt + 1}"
|
85 |
)
|
86 |
print("\nCOMEÇANDO UMA REQUISIÇÃO DO CONTEXTUAL")
|
87 |
raw_response = await agpt_answer(prompt)
|
|
|
113 |
)
|
114 |
|
115 |
lista_chunks = []
|
116 |
+
try:
|
117 |
+
for index, chunk in enumerate(lista_com_20_chunks):
|
118 |
+
lista_chunks.append(
|
119 |
+
ContextualizedChunk(
|
120 |
+
contextual_summary=result[index][2],
|
121 |
+
content=chunk.content,
|
122 |
+
page_number=chunk.page_number,
|
123 |
+
id_do_processo=int(result[index][0]),
|
124 |
+
chunk_id=chunk.chunk_id,
|
125 |
+
start_char=chunk.start_char,
|
126 |
+
end_char=chunk.end_char,
|
127 |
+
context=result[index][1],
|
128 |
+
)
|
129 |
)
|
130 |
+
except BaseException as e :
|
131 |
+
print(e)
|
132 |
+
print("\nERRO DO CONTEXTUAL")
|
133 |
+
print('\n\nresult', result)
|
134 |
|
135 |
return lista_chunks
|
136 |
|
tests/gerar_relatorio_modelo_usuario/fixture_lista_respostas_contextuals.py
CHANGED
@@ -799,7 +799,118 @@ lista_respostas_contextuals = [
|
|
799 |
</final_output>"""
|
800 |
]
|
801 |
|
802 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
803 |
|
804 |
|
805 |
lista_respostas = ["<final_output>\n1. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este trecho informa sobre a digitalização e migração do processo para o sistema eletrônico do Poder Judiciário da Bahia, destacando a modernização do trâmite processual, o que é relevante para entender a evolução do caso ao longo do tempo.]\n</chunk_context>\n2. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este documento confirma a migração do processo para o sistema eletrônico, assegurando a autenticidade e a preservação dos dados processuais, o que é importante para a integridade do caso e sua tramitação.]\n</chunk_context>\n3. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ação Penal - Procedimento Ordinário] --- [Este trecho apresenta informações sobre a ação penal, incluindo a data de distribuição e os envolvidos, contextualizando o início do processo e a natureza da acusação contra Adriano de Jesus Sales.]\n</chunk_context>\n4. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Denúncia do Ministério Público] --- [Aqui é detalhada a tentativa de furto de um notebook na loja OI, incluindo a descrição do evento e a reação da vítima, Samiri Ferreira Carvalho Alves, que é fundamental para a compreensão do crime e da acusação.]\n</chunk_context>\n5. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Inquérito Policial] --- [Este documento registra a autuação do inquérito policial, detalhando a prisão em flagrante de Adriano e a infração penal, o que é crucial para entender a base legal da acusação e o contexto do crime.]\n</chunk_context>\n6. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Prisão em Flagrante] --- [Este trecho descreve a ratificação da prisão em flagrante e os direitos do preso, evidenciando o cumprimento das formalidades legais e a proteção dos direitos individuais, aspectos importantes do processo penal.]\n</chunk_context>\n7. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento do Condutor] --- [Aqui, o depoimento do policial que conduziu a prisão é registrado, fornecendo detalhes sobre a abordagem e a situação no local do crime, o que é essencial para a narrativa do caso.]\n</chunk_context>\n8. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento da Testemunha] --- [Este documento inclui o depoimento de uma testemunha, que confirma a tentativa de furto e a prisão de Adriano, reforçando a evidência contra o réu e a dinâmica do crime.]\n</chunk_context>\n9. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Exibição e Apreensão] --- [Este trecho documenta a apreensão do notebook, que é uma prova material do crime, e sua entrega à vítima, o que é crucial para a comprovação da tentativa de furto.]\n</chunk_context>\n10. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Declarações] --- [Aqui, a gerente da loja fornece sua versão dos fatos, detalhando como percebeu a tentativa de furto, o que é vital para a construção do caso e a acusação contra Adriano.]\n</chunk_context>\n11. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Entrega] --- [Este documento registra a entrega do notebook à vítima, evidenciando a recuperação do bem e a conclusão de uma etapa do processo, que é relevante para a resolução do caso.]\n</chunk_context>\n12. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Interrogatório do Conduzido] --- [Neste trecho, Adriano é interrogado e nega a acusação de furto, apresentando sua versão dos fatos, o que é importante para entender sua defesa e a dinâmica do processo.]\n</chunk_context>\n13. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Nota de Culpa] --- [Este documento informa a Adriano sobre a acusação formal e os direitos que lhe assistem, sendo um passo importante na formalização do processo penal e na defesa do réu.]\n</chunk_context>\n14. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Juiz] --- [Este ofício comunica ao juiz sobre a prisão em flagrante e a situação de Adriano, destacando a formalidade do processo e a necessidade de acompanhamento judicial.]\n</chunk_context>\n15. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Promotor] --- [Aqui, o delegado informa ao promotor sobre a prisão e a situação do réu, o que é essencial para a continuidade do processo e a atuação do Ministério Público.]\n</chunk_context>\n16. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Defensor Público] --- [Este ofício é enviado ao defensor público, garantindo que Adriano tenha acesso à defesa legal, um direito fundamental no processo penal.]\n</chunk_context>\n17. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Guia para Identificação Criminal] --- [Este documento solicita a identificação criminal de Adriano, que é um procedimento padrão após a prisão, assegurando a formalização do processo e a verificação de antecedentes.]\n</chunk_context>\n18. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Boletim Individual] --- [Este boletim registra informações detalhadas sobre a prisão de Adriano, incluindo dados pessoais e circunstâncias do crime, sendo uma parte importante do registro processual.]\n</chunk_context>\n19. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Relatório do Inquérito Policial] --- [Este relatório resume os fatos do inquérito, detalhando a tentativa de furto e as evidências coletadas, o que é crucial para a compreensão do caso e a fundamentação da denúncia.]\n</chunk_context>\n20. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Conclusão do Inquérito] --- [Este documento finaliza o inquérito policial, apresentando as provas e a situação do réu, o que é essencial para a transição do caso para a fase judicial e a continuidade do processo.]\n</chunk_context>\n</final_output>",
|
|
|
799 |
</final_output>"""
|
800 |
]
|
801 |
|
802 |
+
lista_respostas_contextuals_cenario_02 = [
|
803 |
+
"""<final_output>
|
804 |
+
<chunk_context>
|
805 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk apresenta informações iniciais sobre o processo, incluindo a classe, o órgão julgador e a última distribuição. Ele estabelece o contexto do caso, que envolve a busca de Janilde Novaes Franco da Mota pelo pagamento de diferenças salariais referentes ao Piso Nacional do Magistério, conforme descrito no resumo do processo.]
|
806 |
+
</chunk_context>
|
807 |
+
<chunk_context>
|
808 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste chunk, são fornecidos detalhes sobre a impetração do mandado de segurança coletivo, destacando a legitimidade da autora e a necessidade de implementação do piso salarial. Ele se relaciona com a argumentação da autora sobre a desnecessidade de filiação à AFPEB para a execução do título coletivo, um ponto central no processo.]
|
809 |
+
</chunk_context>
|
810 |
+
<chunk_context>
|
811 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk discute a concessão da justiça gratuita e a liquidação coletiva do mandado de segurança, enfatizando a busca da autora por valores retroativos. Ele se conecta ao resumo ao abordar a questão da liquidação prévia e a argumentação sobre a necessidade de comprovação da condição de beneficiário do título.]
|
812 |
+
</chunk_context>
|
813 |
+
<chunk_context>
|
814 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, são apresentadas as premissas fixadas pela relatora sobre a desnecessidade de filiação à AFPEB e a implementação do piso nacional. Ele se alinha com a defesa da autora, que argumenta que todos os profissionais do magistério têm direito ao piso, independentemente da associação.]
|
815 |
+
</chunk_context>
|
816 |
+
<chunk_context>
|
817 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk aborda a questão da correção monetária e juros de mora, detalhando os índices aplicáveis. Ele é relevante para o resumo, pois estabelece os parâmetros financeiros que serão utilizados na execução da sentença, um aspecto crucial para a autora.]
|
818 |
+
</chunk_context>
|
819 |
+
<chunk_context>
|
820 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, discute-se a liquidez do título e a ausência de litispendência em relação à ação coletiva. Ele se relaciona com a argumentação da autora sobre a possibilidade de execução individual do título coletivo, um ponto importante no processo.]
|
821 |
+
</chunk_context>
|
822 |
+
<chunk_context>
|
823 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk detalha as diferenças salariais a serem pagas, incluindo a correção monetária e os juros. Ele é fundamental para o entendimento do cálculo das diferenças salariais que a autora busca, conforme mencionado no resumo do processo.]
|
824 |
+
</chunk_context>
|
825 |
+
<chunk_context>
|
826 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, a autora apresenta a comprovação de sua condição de beneficiária do título, reforçando seu direito ao piso nacional. Ele se conecta ao resumo ao evidenciar a argumentação da autora sobre a paridade vencimental e a necessidade de comprovação.]
|
827 |
+
</chunk_context>
|
828 |
+
<chunk_context>
|
829 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk discute as condições para a aposentadoria e a paridade vencimental, abordando a legislação pertinente. Ele é relevante para o caso, pois esclarece os direitos da autora em relação ao seu benefício e como isso se relaciona com o piso nacional.]
|
830 |
+
</chunk_context>
|
831 |
+
<chunk_context>
|
832 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, são apresentadas as condições para a aposentadoria e os direitos dos servidores, incluindo a paridade. Ele se relaciona com a argumentação da autora sobre a necessidade de garantir a paridade vencimental para os aposentados.]
|
833 |
+
</chunk_context>
|
834 |
+
<chunk_context>
|
835 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk aborda a concessão de aposentadorias e pensões, detalhando os direitos dos servidores. Ele é importante para o entendimento do contexto legal que envolve a demanda da autora por diferenças salariais.]
|
836 |
+
</chunk_context>
|
837 |
+
<chunk_context>
|
838 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, discute-se a revisão dos proventos de aposentadoria e a paridade. Ele se conecta ao resumo ao abordar a importância da paridade para os servidores aposentados e como isso impacta a demanda da autora.]
|
839 |
+
</chunk_context>
|
840 |
+
<chunk_context>
|
841 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk detalha as condições para a aposentadoria e os direitos dos servidores, incluindo a paridade. Ele é relevante para o caso, pois esclarece os direitos da autora em relação ao seu benefício e como isso se relaciona com o piso nacional.]
|
842 |
+
</chunk_context>
|
843 |
+
<chunk_context>
|
844 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Neste trecho, a autora reafirma seu pedido de gratuidade de justiça e a total procedência da demanda. Ele se relaciona com o resumo ao enfatizar a importância da assistência judiciária para a autora na busca por seus direitos.]
|
845 |
+
</chunk_context>
|
846 |
+
<chunk_context>
|
847 |
+
[427371469] --- [Processo nº 8005705-82.2024.8.05.0001] --- [Este chunk finaliza com o pedido da autora, incluindo a citação do réu e a atribuição do valor da causa. Ele é crucial para o entendimento do que a autora busca no processo e como isso se alinha com o resumo do caso.]
|
848 |
+
</chunk_context>
|
849 |
+
</final_output>""",
|
850 |
+
"""
|
851 |
+
<final_output>
|
852 |
+
1. <chunk_context>
|
853 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho aborda a decisão do Tribunal de Justiça da Bahia sobre a competência para julgar mandados de segurança contra atos de Secretários de Estado, destacando a importância da paridade vencimental para os professores aposentados, o que se relaciona diretamente ao pedido da autora por diferenças salariais referentes ao Piso Nacional do Magistério.]
|
854 |
+
</chunk_context>
|
855 |
+
2. <chunk_context>
|
856 |
+
[22380004] --- [Mandado de Segurança Coletivo] --- [Neste trecho, é discutida a omissão do Estado em cumprir a legislação que estabelece o Piso Nacional do Magistério, evidenciando a situação de ilegalidade que a autora busca corrigir através do mandado de segurança, reforçando a temática central do processo sobre a implementação do piso salarial.]
|
857 |
+
</chunk_context>
|
858 |
+
3. <chunk_context>
|
859 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é detalhada a necessidade de assegurar que os vencimentos dos professores sejam pagos conforme o Piso Nacional do Magistério, conforme a Lei nº 11.738/2008, o que é um dos fundamentos do pedido da autora no processo, alinhando-se com a busca por justiça salarial.]
|
860 |
+
</chunk_context>
|
861 |
+
4. <chunk_context>
|
862 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho menciona a atualização do piso salarial e a necessidade de que os vencimentos dos professores sejam ajustados anualmente, o que é crucial para entender a base legal que sustenta o pedido da autora por diferenças salariais retroativas.]
|
863 |
+
</chunk_context>
|
864 |
+
5. <chunk_context>
|
865 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutido que a remuneração dos professores deve ser composta pelo vencimento básico e não por outras vantagens, o que é um ponto central na argumentação da autora para garantir que seus proventos sejam ajustados ao piso nacional, conforme a legislação vigente.]
|
866 |
+
</chunk_context>
|
867 |
+
6. <chunk_context>
|
868 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é abordada a questão da proporcionalidade do pagamento do piso salarial em relação à carga horária dos professores, um aspecto que a autora utiliza para justificar a necessidade de revisão de seus vencimentos, reforçando a argumentação sobre a aplicação correta da lei.]
|
869 |
+
</chunk_context>
|
870 |
+
7. <chunk_context>
|
871 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho detalha a situação de um servidor paradigma e a comparação entre seu vencimento atual e o piso nacional, evidenciando a diferença que a autora busca corrigir, o que é fundamental para a compreensão do impacto financeiro do pedido no processo.]
|
872 |
+
</chunk_context>
|
873 |
+
8. <chunk_context>
|
874 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é feita uma análise comparativa entre os vencimentos de diferentes servidores, destacando a necessidade de que todos os professores, independentemente do regime de pagamento, recebam pelo menos o valor do piso nacional, o que é um ponto central na demanda da autora.]
|
875 |
+
</chunk_context>
|
876 |
+
9. <chunk_context>
|
877 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é discutido o direito dos professores a receberem o piso nacional, enfatizando a ilegalidade de qualquer pagamento inferior, o que está diretamente relacionado ao pedido da autora por diferenças salariais e à proteção dos direitos dos servidores.]
|
878 |
+
</chunk_context>
|
879 |
+
10. <chunk_context>
|
880 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho menciona a necessidade de que o Estado da Bahia cumpra a legislação federal sobre o piso salarial, reforçando a argumentação da autora sobre a obrigação do ente público em garantir os direitos dos professores, o que é um aspecto crucial do processo.]
|
881 |
+
</chunk_context>
|
882 |
+
11. <chunk_context>
|
883 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é abordada a questão da modulação de efeitos da lei que estabelece o piso salarial, o que é relevante para entender as implicações temporais do pedido da autora e a necessidade de pagamento retroativo das diferenças salariais.]
|
884 |
+
</chunk_context>
|
885 |
+
12. <chunk_context>
|
886 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, a autora solicita a concessão da segurança para garantir que todos os substituídos recebam o piso nacional, o que é um pedido central do processo e reflete a busca por justiça e equidade salarial entre os professores.]
|
887 |
+
</chunk_context>
|
888 |
+
13. <chunk_context>
|
889 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho detalha os pedidos da autora, incluindo a obrigação de reajustar os vencimentos e pagar as diferenças salariais, o que é fundamental para entender a extensão da demanda e a urgência da situação enfrentada pelos professores.]
|
890 |
+
</chunk_context>
|
891 |
+
14. <chunk_context>
|
892 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutida a gratuidade da justiça, um aspecto importante para a autora, que busca assegurar que a falta de recursos não impeça o acesso à justiça, refletindo a vulnerabilidade da classe de professores aposentados.]
|
893 |
+
</chunk_context>
|
894 |
+
15. <chunk_context>
|
895 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é mencionado o pedido para que o Estado apresente os assentamentos funcionais do impetrante, o que é uma solicitação relevante para a comprovação dos direitos da autora e a fundamentação do pedido de diferenças salariais.]
|
896 |
+
</chunk_context>
|
897 |
+
16. <chunk_context>
|
898 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho aborda a urgência do caso e a determinação de que a decisão seja cumprida imediatamente, o que destaca a gravidade da situação enfrentada pelos professores e a necessidade de uma resposta rápida do judiciário.]
|
899 |
+
</chunk_context>
|
900 |
+
17. <chunk_context>
|
901 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutido o despacho que dá ciência ao órgão de representação judicial do Estado, o que é um passo processual importante que demonstra a formalidade e a seriedade do pedido da autora.]
|
902 |
+
</chunk_context>
|
903 |
+
18. <chunk_context>
|
904 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Aqui, é apresentado um comprovante de inscrição e situação cadastral, que pode ser relevante para a identificação e formalização do pedido da autora, refletindo a necessidade de documentação adequada no processo.]
|
905 |
+
</chunk_context>
|
906 |
+
19. <chunk_context>
|
907 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Este trecho menciona a situação cadastral da associação dos funcionários públicos, que pode ser relevante para entender a representação legal da autora e a legitimidade do pedido no contexto do mandado de segurança.]
|
908 |
+
</chunk_context>
|
909 |
+
20. <chunk_context>
|
910 |
+
[4309874] --- [Mandado de Segurança Coletivo] --- [Neste segmento, é discutido o agravo em recurso especial interposto pelo Estado da Bahia, o que ilustra a continuidade do litígio e a resistência do ente público em cumprir a legislação sobre o piso salarial, refletindo a complexidade do caso.]
|
911 |
+
</chunk_context>
|
912 |
+
</final_output>"""
|
913 |
+
]
|
914 |
|
915 |
|
916 |
lista_respostas = ["<final_output>\n1. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este trecho informa sobre a digitalização e migração do processo para o sistema eletrônico do Poder Judiciário da Bahia, destacando a modernização do trâmite processual, o que é relevante para entender a evolução do caso ao longo do tempo.]\n</chunk_context>\n2. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Virtualização e Migração de Autos] --- [Este documento confirma a migração do processo para o sistema eletrônico, assegurando a autenticidade e a preservação dos dados processuais, o que é importante para a integridade do caso e sua tramitação.]\n</chunk_context>\n3. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ação Penal - Procedimento Ordinário] --- [Este trecho apresenta informações sobre a ação penal, incluindo a data de distribuição e os envolvidos, contextualizando o início do processo e a natureza da acusação contra Adriano de Jesus Sales.]\n</chunk_context>\n4. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Denúncia do Ministério Público] --- [Aqui é detalhada a tentativa de furto de um notebook na loja OI, incluindo a descrição do evento e a reação da vítima, Samiri Ferreira Carvalho Alves, que é fundamental para a compreensão do crime e da acusação.]\n</chunk_context>\n5. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Inquérito Policial] --- [Este documento registra a autuação do inquérito policial, detalhando a prisão em flagrante de Adriano e a infração penal, o que é crucial para entender a base legal da acusação e o contexto do crime.]\n</chunk_context>\n6. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Prisão em Flagrante] --- [Este trecho descreve a ratificação da prisão em flagrante e os direitos do preso, evidenciando o cumprimento das formalidades legais e a proteção dos direitos individuais, aspectos importantes do processo penal.]\n</chunk_context>\n7. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento do Condutor] --- [Aqui, o depoimento do policial que conduziu a prisão é registrado, fornecendo detalhes sobre a abordagem e a situação no local do crime, o que é essencial para a narrativa do caso.]\n</chunk_context>\n8. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Depoimento da Testemunha] --- [Este documento inclui o depoimento de uma testemunha, que confirma a tentativa de furto e a prisão de Adriano, reforçando a evidência contra o réu e a dinâmica do crime.]\n</chunk_context>\n9. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Exibição e Apreensão] --- [Este trecho documenta a apreensão do notebook, que é uma prova material do crime, e sua entrega à vítima, o que é crucial para a comprovação da tentativa de furto.]\n</chunk_context>\n10. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Declarações] --- [Aqui, a gerente da loja fornece sua versão dos fatos, detalhando como percebeu a tentativa de furto, o que é vital para a construção do caso e a acusação contra Adriano.]\n</chunk_context>\n11. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Auto de Entrega] --- [Este documento registra a entrega do notebook à vítima, evidenciando a recuperação do bem e a conclusão de uma etapa do processo, que é relevante para a resolução do caso.]\n</chunk_context>\n12. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Termo de Interrogatório do Conduzido] --- [Neste trecho, Adriano é interrogado e nega a acusação de furto, apresentando sua versão dos fatos, o que é importante para entender sua defesa e a dinâmica do processo.]\n</chunk_context>\n13. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Nota de Culpa] --- [Este documento informa a Adriano sobre a acusação formal e os direitos que lhe assistem, sendo um passo importante na formalização do processo penal e na defesa do réu.]\n</chunk_context>\n14. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Juiz] --- [Este ofício comunica ao juiz sobre a prisão em flagrante e a situação de Adriano, destacando a formalidade do processo e a necessidade de acompanhamento judicial.]\n</chunk_context>\n15. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Promotor] --- [Aqui, o delegado informa ao promotor sobre a prisão e a situação do réu, o que é essencial para a continuidade do processo e a atuação do Ministério Público.]\n</chunk_context>\n16. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Ofício ao Defensor Público] --- [Este ofício é enviado ao defensor público, garantindo que Adriano tenha acesso à defesa legal, um direito fundamental no processo penal.]\n</chunk_context>\n17. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Guia para Identificação Criminal] --- [Este documento solicita a identificação criminal de Adriano, que é um procedimento padrão após a prisão, assegurando a formalização do processo e a verificação de antecedentes.]\n</chunk_context>\n18. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Boletim Individual] --- [Este boletim registra informações detalhadas sobre a prisão de Adriano, incluindo dados pessoais e circunstâncias do crime, sendo uma parte importante do registro processual.]\n</chunk_context>\n19. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Relatório do Inquérito Policial] --- [Este relatório resume os fatos do inquérito, detalhando a tentativa de furto e as evidências coletadas, o que é crucial para a compreensão do caso e a fundamentação da denúncia.]\n</chunk_context>\n20. <chunk_context>\n[0001495-46.2015.8.05.0032] --- [Conclusão do Inquérito] --- [Este documento finaliza o inquérito policial, apresentando as provas e a situação do réu, o que é essencial para a transição do caso para a fase judicial e a continuidade do processo.]\n</chunk_context>\n</final_output>",
|
tests/gerar_relatorio_modelo_usuario/test_contextual_retriever.py
CHANGED
@@ -22,8 +22,12 @@ from tests.gerar_relatorio_modelo_usuario.fixture_chunks import (
|
|
22 |
from tests.gerar_relatorio_modelo_usuario.fixture_lista_respostas_contextuals import (
|
23 |
lista_respostas_contextuals,
|
24 |
lista_respostas,
|
|
|
25 |
)
|
26 |
|
|
|
|
|
|
|
27 |
config = RetrievalConfig(
|
28 |
num_chunks=20,
|
29 |
embedding_weight=0.5,
|
@@ -276,9 +280,10 @@ class TestContextualRetriever:
|
|
276 |
async def test_get_info_from_validated_chunks(self):
|
277 |
contador = 1
|
278 |
print(len(lista_respostas))
|
279 |
-
for response in lista_respostas:
|
280 |
-
|
281 |
-
|
|
|
282 |
matches = validate_many_chunks_in_one_request(response, resposta_errada_ids)
|
283 |
|
284 |
resultado = self.context_retrieval.get_info_from_validated_chunks(matches)
|
@@ -298,3 +303,31 @@ class TestContextualRetriever:
|
|
298 |
# print("\n\ncontador", contador)
|
299 |
# contador += 1
|
300 |
# assert all(len(item) == 3 for item in resultado)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
from tests.gerar_relatorio_modelo_usuario.fixture_lista_respostas_contextuals import (
|
23 |
lista_respostas_contextuals,
|
24 |
lista_respostas,
|
25 |
+
lista_respostas_contextuals_cenario_02,
|
26 |
)
|
27 |
|
28 |
+
from unittest.mock import Mock, AsyncMock, patch
|
29 |
+
|
30 |
+
|
31 |
config = RetrievalConfig(
|
32 |
num_chunks=20,
|
33 |
embedding_weight=0.5,
|
|
|
280 |
async def test_get_info_from_validated_chunks(self):
|
281 |
contador = 1
|
282 |
print(len(lista_respostas))
|
283 |
+
# for response in lista_respostas:
|
284 |
+
for response in lista_respostas_contextuals_cenario_02:
|
285 |
+
# if contador == 18:
|
286 |
+
# print(response)
|
287 |
matches = validate_many_chunks_in_one_request(response, resposta_errada_ids)
|
288 |
|
289 |
resultado = self.context_retrieval.get_info_from_validated_chunks(matches)
|
|
|
303 |
# print("\n\ncontador", contador)
|
304 |
# contador += 1
|
305 |
# assert all(len(item) == 3 for item in resultado)
|
306 |
+
|
307 |
+
@pytest.mark.asyncio
|
308 |
+
async def test_valida_retries_automaticos_do_contextual(self, monkeypatch):
|
309 |
+
call_count = 0 # Track how many times the function is called
|
310 |
+
|
311 |
+
# Define the custom side effect
|
312 |
+
def custom_side_effect(response, document_ids):
|
313 |
+
nonlocal call_count
|
314 |
+
print(f"MOCK CALL {call_count+1} RECEIVED")
|
315 |
+
if call_count < 2:
|
316 |
+
call_count += 1
|
317 |
+
print("MOCK RETORNADO FALSE")
|
318 |
+
return False # Mocked return value for first two calls
|
319 |
+
return validate_many_chunks_in_one_request(response, document_ids) # Call the real function after two mocks
|
320 |
+
|
321 |
+
monkeypatch.setattr(
|
322 |
+
"_utils.gerar_relatorio_modelo_usuario.contextual_retriever.validate_many_chunks_in_one_request",
|
323 |
+
custom_side_effect
|
324 |
+
)
|
325 |
+
|
326 |
+
mock_agpt_answer = AsyncMock(return_value=lista_respostas_contextuals_cenario_02[0])
|
327 |
+
monkeypatch.setattr("_utils.gerar_relatorio_modelo_usuario.contextual_retriever.agpt_answer", mock_agpt_answer)
|
328 |
+
|
329 |
+
resultado = await self.context_retrieval.llm_call_uma_lista_de_chunks(
|
330 |
+
cenario_01_lista_com_20_chunks, cenario_01_resumo_auxiliar
|
331 |
+
)
|
332 |
+
assert all(len(item) == 3 for item in resultado)
|
333 |
+
assert call_count == 2 # Ensure only the first two calls were mocked
|