๐ฅ Passo 1: Solicitacao do usuario
O pipeline comeca quando uma solicitacao (request) chega ao sistema. Este passo captura tudo que o usuario enviou.
O que capturar no Passo 1
- โขPayload: Corpo da requisicao (JSON, form data)
- โขHeaders: Authorization, Content-Type, etc.
- โขMetadados: IP, timestamp, user-agent
- โขIdentificadores: Request ID unico para rastreamento
Exemplo de Codigo
@app.post("/api/chat")
async def chat_endpoint(request: ChatRequest):
# Passo 1: Capturar solicitacao
request_id = generate_request_id()
incoming_data = {
"request_id": request_id,
"timestamp": datetime.utcnow(),
"payload": request.dict(),
"ip": get_client_ip()
}
# Continua para Passo 2...
๐ Passo 2: Validacao de acesso
Antes de processar qualquer coisa, o sistema deve validar quem esta fazendo a solicitacao e se tem permissao.
๐ Autenticacao
- โข Validar token JWT
- โข Verificar sessao ativa
- โข Checar API key
- โข Identificar usuario
๐ก๏ธ Autorizacao
- โข Checar permissoes do usuario
- โข Validar acesso ao recurso
- โข Verificar quotas/limites
- โข Aplicar rate limiting
โ ๏ธ Importante
Nunca pule a validacao de acesso. Este passo e a primeira linha de defesa do sistema.
๐๏ธ Passo 3: Coleta de contexto
Apos validar o acesso, o sistema coleta todo o contexto necessario para a IA poder responder adequadamente.
Tipos de Contexto
Contexto do Usuario
Preferencias, historico, configuracoes pessoais
Contexto do Dominio
Dados do negocio, regras especificas, documentos
Contexto da Sessao
Conversas anteriores, estado atual
Contexto do Sistema
Configuracoes globais, limites, politicas
๐ Fluxo de dados entre passos
Cada passo adiciona informacoes ao objeto de contexto que sera passado adiante.
๐ป Implementacao em codigo
async def process_entrada(request: Request):
# Passo 1: Solicitacao
pipeline_ctx = PipelineContext(
request_id=generate_id(),
raw_request=await request.json()
)
# Passo 2: Validacao
user = await validate_token(request.headers)
if not user:
raise HTTPException(401, "Unauthorized")
pipeline_ctx.user = user
# Passo 3: Contexto
pipeline_ctx.context = await collect_context(
user_id=user.id,
session_id=request.headers.get("x-session-id")
)
return pipeline_ctx
๐งช Exemplos praticos
Exemplo: Chat com Historico
Usuario envia mensagem em conversa existente:
- P1: Captura mensagem + session_id
- P2: Valida token, identifica usuario
- P3: Carrega historico da conversa + preferencias
Exemplo: Geracao de Documento
Usuario solicita criacao de relatorio:
- P1: Captura parametros do relatorio
- P2: Valida se usuario pode gerar relatorios
- P3: Coleta dados do sistema para o relatorio