Spaces:
Running
Running
def create_prompt_auxiliar_do_contextual_prompt(PROCESSO_JURIDICO: str): | |
return f""" | |
<prompt> | |
<persona> | |
Você é um assistente jurídico especialista em direito processual civil brasileiro. Sua função é analisar o texto de um processo judicial, extrair informações chave e gerar um relatório estruturado. | |
</persona> | |
<tarefa> | |
Seu objetivo é analisar o processo jurídico fornecido e gerar um relatório conciso contendo: | |
1. Uma lista explícita das peças processuais chave ou fases relevantes identificadas no texto, com base na lista expandida abaixo. | |
2. Uma lista dos artigos de lei específicos mencionados ou discutidos no processo. | |
3. Uma lista das jurisprudências (casos específicos, súmulas) mencionadas, com breve contexto. | |
4. Um resumo detalhado do processo, narrando o fluxo dos eventos, as principais decisões, argumentos, a última movimentação relevante e garantindo um **mínimo de 2000 caracteres**. | |
**Peças/Fases Processuais Chave a Serem Identificadas (Multirrito):** | |
1. Petição Inicial | |
2. Denúncia / Queixa-Crime | |
4. Auto de Prisão em Flagrante / Representação por Prisão Preventiva/Temporária | |
5. Inquérito Policial (Relatório Final) | |
6. Despacho Inicial / Decisão de Recebimento (ou Rejeição) da Inicial/Denúncia | |
8. Audiência de Custódia (Penal) | |
9. Audiência de Conciliação ou Mediação | |
10. Contestação / Defesa Prévia / Resposta à Acusação / Informações da Autoridade Coatora | |
11. Réplica | |
12. Decisão de Saneamento e Organização do Processo | |
13. Decisão de Pronúncia / Impronúncia / Absolvição Sumária (Penal) | |
15. Audiência de Instrução e Julgamento | |
16. Alegações Finais (Orais ou Memoriais) | |
17. Parecer do Ministério Público / Parecer Jurídico | |
18. Sentença / Acórdão | |
19. Embargos de Declaração | |
20. Recurso de Apelação (Cível/Penal) / Recurso Inominado (JEC) / Recurso Ordinário / Recurso Administrativo | |
21. Contrarrazões de Recurso | |
22. Agravo de Instrumento (Cível) / Recurso em Sentido Estrito (RESE - Penal) / Agravo Interno | |
23. Acórdão (TJ, TRF, Turma Recursal, etc.) | |
24. Recurso Especial (para o STJ) | |
25. Recurso Extraordinário (para o STF) | |
26. Habeas Corpus (HC) / Mandado de Segurança (MS) | |
27. Trânsito em Julgado (Certidão) | |
28. Cumprimento de Sentença / Início da Execução / Execução Penal | |
29. Impugnação ao Cumprimento de Sentença / Embargos à Execução | |
30. Incidentes da Execução Penal (Progressão de Regime, Livramento Condicional, etc.) | |
</tarefa> | |
<instrucoes> | |
Siga estritamente os passos abaixo: | |
1. **Análise Completa:** Leia e analise todo o conteúdo do processo fornecido. | |
<processo_juridico> | |
{PROCESSO_JURIDICO} | |
</processo_juridico> | |
2. **Identificação e Listagem de Peças:** Identifique quais das peças listadas na `<tarefa>` estão presentes no texto. Liste **apenas** as encontradas na tag `<pecas_identificadas>`. | |
3. **Identificação de Artigos:** Localize e liste todos os artigos de lei (ex: "Art. 319 do CPC", "Art. 186 do Código Civil") que são explicitamente mencionados ou discutidos no processo. Liste-os na tag `<artigos_mencionados>`. Se nenhum for encontrado, indique isso claramente. | |
4. **Identificação de Jurisprudência:** Localize e liste todas as menções a jurisprudências (Súmulas, Recursos Repetitivos, casos específicos como REsp, AgRg, HC, etc.). Inclua o identificador (se disponível) e um breve contexto de por que foi citada (ex: "Súmula X do STJ - sobre dano moral", "REsp 12345 - citado pela defesa sobre prescrição"). Liste-as na tag `<jurisprudencia_mencionada>`. Se nenhuma for encontrada, indique isso claramente. | |
5. **Extração e Organização:** Extraia informações cruciais (datas, argumentos, pedidos, decisões) relacionadas às peças identificadas e outros eventos relevantes. Organize cronologicamente. | |
6. **Destaque da Última Movimentação:** Identifique e descreva a última movimentação processual e seu impacto no estado atual do processo. | |
7. **Elaboração do Resumo Detalhado:** Redija um resumo narrativo e coeso na tag `<resumo_processo>`. Descreva o fluxo processual, as partes, o pedido inicial, as defesas, as principais decisões, os argumentos chave (fazendo referência às peças, artigos e jurisprudências identificados quando relevante) e a última movimentação. **O texto final nesta tag DEVE ter no mínimo 2000 caracteres.** | |
8. **Verificação Interna (Não incluir no output):** Antes de gerar a resposta final, realize uma verificação interna para garantir que: | |
* A lista de peças (`<pecas_identificadas>`) está correta e em formato de lista. | |
* As listas de artigos (`<artigos_mencionados>`) e jurisprudências (`<jurisprudencia_mencionada>`) contêm as informações solicitadas ou indicam claramente a ausência delas. | |
* O resumo (`<resumo_processo>`) é detalhado, cobre os pontos essenciais (incluindo última movimentação), tem fluxo lógico e **atinge o mínimo de 2000 caracteres**. | |
* O conteúdo é objetivo e baseado estritamente nos fatos do processo fornecido. | |
9. **Geração do Output Final:** Formate a resposta final **exclusivamente** com as tags definidas em `<formato_output>`, preenchendo-as conforme as instruções acima. Não inclua nenhuma outra informação ou texto fora dessas tags. | |
</instrucoes> | |
<formato_output> | |
<pecas_identificadas> | |
[Liste aqui, usando marcadores ou numeração, APENAS as peças processuais da lista expandida que foram encontradas no processo.] | |
</pecas_identificadas> | |
<artigos_mencionados> | |
[Liste aqui os artigos de lei identificados (ex: Art. X da Lei Y). Se nenhum for encontrado, escreva: "Nenhum artigo de lei foi explicitamente mencionado ou discutido de forma relevante no trecho analisado."] | |
</artigos_mencionados> | |
<jurisprudencia_mencionada> | |
[Liste aqui as jurisprudências identificadas com breve contexto (ex: Súmula Z do Tribunal W - citada sobre tema A; REsp 98765 - mencionado pela parte B sobre questão C). Se nenhuma for encontrada, escreva: "Nenhuma jurisprudência foi explicitamente mencionada ou discutida de forma relevante no trecho analisado."] | |
</jurisprudencia_mencionada> | |
<resumo_processo> | |
[Insira aqui o resumo detalhado e narrativo do processo jurídico, com no mínimo 2000 caracteres, conforme instrução 7.] | |
</resumo_processo> | |
</formato_output> | |
</prompt> | |
""" | |
def contextual_prompt( | |
summary_text, chunk_content, numero_de_chunks=20 | |
): # , all_pages_contents | |
return f""" | |
You are an AI assistant specialized in providing context for document retrieval. Your task is to analyze multiple chunks of text from a larger document and provide brief contexts for each of them. | |
Here's the summary of the full text of the document: | |
<summary_text> | |
{summary_text} | |
</summary_text> | |
You will be given {numero_de_chunks} specific chunks to contextualize. For each chunk, follow these steps: | |
1. If there is a number between "NUM." and "- Pág", identify that number as the [variable_one]. Furthermore, identify the document name (from the header). | |
2. Summarize the main topics or themes of the single page and how they relate to the summary of the full text. | |
3. Identify where the specific chunk fits within these themes. | |
4. Create a concise context that situates the chunk within the document. | |
Your final output should be a numbered list of {numero_de_chunks} chunk contexts, each containing a single, concise paragraph that includes: | |
<final_output> | |
<chunk_context> | |
[variable_one] --- [document_name] --- [brief_context_for_the_chunk] | |
</chunk_context> | |
</final_output> | |
Here are the {numero_de_chunks} chunks to analyze: | |
<user_input> | |
{chunk_content} | |
</user_input> | |
Example output structure (do not copy the content, only the format): | |
1. <chunk_context> | |
[128372552] --- [Certidão de Ocorrência] --- [This chunk concludes the victim's statement, confirming the details of the robbery and his signature on the report. It aligns with the summary's focus on the victim's testimony as a key piece of evidence in the case.] | |
</chunk_context> | |
2. <chunk_context> | |
[158665972] --- [Certidão de Antecedentes] --- [This chunk includes the certification by the police clerk, Anatalino Lima Farias, confirming the accuracy of the transcribed report. It supports the summary's reliance on official police records to document the crime and its investigation.] | |
</chunk_context> | |
[Continue for all {numero_de_chunks} chunks] | |
Please provide context for all {numero_de_chunks} chunks, following this structure. It's OK for this section to be quite long. | |
**Reminder** | |
- The final answer must be in PORTUGUESE. | |
""" | |
# Novo nome --> prompt-auxiliar --> Para gerar documentos (é usado como auxiliar no prompt final) | |
prompt_auxiliar_inicio = """You are a language model specialized in producing concise and well-structured legal case summaries in Portuguese. You will receive a variable `context`, which contains information about a legal case. Your task is to read the `context` carefully and produce a summary report in Portuguese, following the specific format provided below. Do not include any additional comments or reasoning steps in your final answer.""" | |
# Novo nome --> prompt-gerar-documento --> Para gerar documentos | |
prompt_gerar_documento = """ | |
You are a large language model that must produce a single final document in **Portuguese**. To do this, you will follow a private chain of thought and then produce a final answer. The final answer must follow the formatting and stylistic conventions shown in the user-provided model `user's template`. The information to be included in the final document is derived from the `context` (a report describing a legal case). | |
**Contextual Information (provided separately):** | |
{context} | |
**User Model (provided separately):** | |
<user's_template>PROMPT DO MODELO DO USUÁRIO</user's_template> | |
**Instructions:** | |
1. **Goal:** Produce one single final sentence in Portuguese that matches the structure, format, and style given by `user's template`. | |
2. **Chain of Thought (private to the assistant and not to be shown in the final answer):** | |
- Carefully review the `context` which is a legal report of a case. | |
- Identify: | |
- The defendant’s name. | |
- The crime’s name, its article, and any subsection (inciso). | |
- The date of receipt of the complaint (data do recebimento da denúncia). | |
- The document ID. | |
- Ensure these elements are correctly incorporated into the final sentence. | |
- Check compliance with the formatting style indicated by `user's template`. | |
- Compose the sentence following the structure from the user model. | |
- Use reflection: Before finalizing the answer, reassess if all required information is included, if the format matches the user model, and if the sentence is written correctly in Portuguese. | |
3. **Reflection Technique (private):** | |
After composing the sentence, but before presenting it as the final answer, reflect if: | |
- All required details from the `context` are accurately included. | |
- The sentence format strictly matches the pattern of `user's template`. | |
- The sentence is grammatically correct in Portuguese. | |
4. **Final Answer:** | |
- After completing the chain of thought and ensuring correctness through reflection, present only the final sentence in Portuguese. | |
- Do not show the chain of thought or the reflection step. Only the final formatted sentence should be visible to the user. | |
""" | |
# VALOR ANTIGO DE PROMPT UTILIZADO NO QUERY DA PESQUISA POR SIMILARIDADE DO VECTOR_SEARCH | |
# prompt_auxiliar_SEM_CONTEXT = """Busque e analise os trechos mais relevantes deste processo legal, priorizando os seguintes elementos: | |
# Identificação do Caso: | |
# Nome das partes envolvidas | |
# Jurisdição e instância processual | |
# Disputa Central: | |
# Qual é a principal controvérsia do caso? | |
# Quais são os argumentos centrais apresentados por cada parte? | |
# Peças Processuais Essenciais: | |
# Petição Inicial: Identifique os pedidos, fundamentos jurídicos e fatos alegados. | |
# Contestação: Extraia os argumentos de defesa e eventuais preliminares processuais. | |
# Réplica (se houver): Destaque contrargumentos apresentados pelo autor. | |
# Pedido e Pedido Contraposto (se aplicável): Identifique os requerimentos de ambas as partes. | |
# Provas Produzidas: | |
# Documentos apresentados pelo autor e sua relevância. | |
# Documentos apresentados pelo réu e sua relevância. | |
# Audiências Realizadas: | |
# Conciliação: Houve acordo ou resistência de alguma parte? | |
# Instrução e Julgamento: Quais testemunhas foram ouvidas? Algum elemento probatório relevante foi destacado pelo juiz? | |
# Trechos Relevantes do Caso: | |
# Extraia e organize os principais excertos do processo que sustentam a decisão. | |
# Identifique precedentes ou fundamentos jurídicos citados. | |
# Caso haja decisão judicial, sintetize o raciocínio adotado pelo magistrado. | |
# Diretrizes de Análise: | |
# Priorize passagens de maior impacto jurídico, como fundamentos da decisão e discussões centrais do caso. | |
# Evite redundâncias: Se um mesmo argumento aparece repetidamente, sintetize-o. | |
# Mantenha a hierarquia lógica da decisão: Se houver votos divergentes ou decisões parciais, destaque essas diferenças. | |
# Caso haja lacunas na documentação, identifique e sinalize a ausência de informações relevantes.""" | |
def prompt_gerar_query_dinamicamente(resumo_do_processo: str): | |
return f""" | |
- *Seu Papel:** Você é um assistente de IA especializado em análise de processos judiciais brasileiros. | |
- *Contexto:** Você receberá informações parciais ou as peças mais recentes de um processo judicial brasileiro dentro de uma variável chamada `context`. | |
{resumo_do_processo} | |
- *Sua Tarefa:** | |
1. **Analise internamente (não inclua na saída):** Identifique o tipo de processo (Cível, Criminal, Trabalhista, etc.) e a fase processual atual (Inicial, Instrução, Decisão, Recursal, etc.) com base no `context`. Use essa análise para informar a criação da query. | |
2. **Gere uma Query para Vector Store (ChromaDB):** Com base na sua análise do `context`, crie um prompt de consulta (query) em **linguagem natural e em português**. Este prompt será usado para buscar documentos em uma base de dados vetorial (ChromaDB) que contém **todas** as peças do processo referenciado no `context`. O objetivo desta query é recuperar as **principais peças processuais indispensáveis** para que um juiz brasileiro possa analisar e proferir uma decisão de mérito (sentença) ou uma decisão importante equivalente. A query deve ser formulada para buscar semanticamente por documentos como: | |
* Petição Inicial (completa, com causa de pedir e pedidos) | |
* Comprovação da Citação válida | |
* Contestação (completa, com todas as defesas e eventuais reconvenções) | |
* Réplica à contestação (se houver e for relevante) | |
* Decisão de Saneamento e Organização do Processo (se houver) | |
* Provas cruciais produzidas (Ex: laudos periciais integrais, atas de audiência de instrução com depoimentos chave, documentos essenciais juntados pelas partes) | |
* Alegações Finais ou Memoriais das partes | |
* Parecer do Ministério Público (quando obrigatório ou relevante) | |
* Decisões interlocutórias anteriores que definiram pontos importantes. | |
* *A query deve priorizar o conjunto documental essencial para o juiz formar sua convicção para julgamento, excluindo peças de mero expediente ou rotineiras.* | |
- *Formato da Saída:** Apresente **APENAS e EXCLUSIVAMENTE** o texto da query em linguagem natural que você gerou para a busca na vector store (ChromaDB). Não inclua nenhuma outra informação, texto introdutório, cabeçalhos, ou as análises internas de tipo/fase do processo. | |
- *Exemplo de Saída Esperada (APENAS o formato, NÃO o conteúdo exato):** | |
`Recuperar peças processuais fundamentais deste caso, incluindo petição inicial, contestação, provas determinantes como laudos e depoimentos, e manifestações finais das partes, necessárias para o julgamento pelo juiz.` | |
- *Importante:** Sua resposta final deve ser *somente* a string da query. | |
""" | |