| | """ |
| | Definições de estado para o AgentPDF usando LangGraph. |
| | |
| | Este módulo define as estruturas de estado que serão utilizadas |
| | pelos nós do grafo para compartilhar informações durante a execução. |
| | """ |
| |
|
| | from typing import List, Optional, Dict, Any |
| | from typing_extensions import TypedDict |
| | from langchain_core.messages import BaseMessage |
| | from langgraph.graph.message import add_messages |
| | from typing import Annotated |
| |
|
| |
|
| | class PDFState(TypedDict): |
| | """ |
| | Estado principal do AgentPDF. |
| | |
| | Contém todas as informações necessárias para o processamento |
| | de PDFs e geração de respostas. |
| | """ |
| | |
| | messages: Annotated[List[BaseMessage], add_messages] |
| | |
| | |
| | pdf_path: Optional[str] |
| | pdf_text: Optional[str] |
| | pdf_chunks: Optional[List[str]] |
| | |
| | |
| | vector_store: Optional[Any] |
| | embeddings_created: bool |
| | |
| | |
| | retrieved_context: Optional[List[str]] |
| | |
| | |
| | user_question: Optional[str] |
| | |
| | |
| | final_answer: Optional[str] |
| | |
| | |
| | processing_status: str |
| | error_message: Optional[str] |
| |
|
| |
|
| | class ProcessingState(TypedDict): |
| | """ |
| | Estado específico para processamento de documentos. |
| | """ |
| | document_path: str |
| | extracted_text: Optional[str] |
| | text_chunks: Optional[List[str]] |
| | chunk_size: int |
| | chunk_overlap: int |
| |
|
| |
|
| | class RetrievalState(TypedDict): |
| | """ |
| | Estado específico para recuperação de contexto. |
| | """ |
| | query: str |
| | retrieved_docs: Optional[List[str]] |
| | similarity_scores: Optional[List[float]] |
| | top_k: int |
| |
|
| |
|
| | class LLMState(TypedDict): |
| | """ |
| | Estado específico para interação com o LLM. |
| | """ |
| | system_prompt: str |
| | user_query: str |
| | context: Optional[str] |
| | response: Optional[str] |
| | model_name: str |
| |
|
| |
|
| | |
| | class InputState(TypedDict): |
| | """Estado de entrada para o grafo.""" |
| | messages: Annotated[List[BaseMessage], add_messages] |
| | pdf_path: Optional[str] |
| |
|
| |
|
| | class OutputState(TypedDict): |
| | """Estado de saída do grafo.""" |
| | messages: Annotated[List[BaseMessage], add_messages] |
| | final_answer: str |
| |
|
| |
|
| | |
| | DEFAULT_CHUNK_SIZE = 1000 |
| | DEFAULT_CHUNK_OVERLAP = 200 |
| | DEFAULT_TOP_K = 5 |
| | DEFAULT_MODEL = "gpt-4o-mini" |
| |
|
| | |
| | class ProcessingStatus: |
| | IDLE = "idle" |
| | LOADING_PDF = "loading_pdf" |
| | PROCESSING_TEXT = "processing_text" |
| | CREATING_EMBEDDINGS = "creating_embeddings" |
| | RETRIEVING_CONTEXT = "retrieving_context" |
| | GENERATING_RESPONSE = "generating_response" |
| | COMPLETED = "completed" |
| | ERROR = "error" |
| |
|