Como Construir Pipelines LLM Type-Safe, com Restrições de Esquema e Orientados por Função Usando Ou…

Neste tutorial, construímos um fluxo de trabalho usando Outlines para gerar saídas estruturadas e type-safe de modelos de linguagem. Trabalhamos com restrições tipadas como Literal, int e bool, e projetamos templates de prompt usando outlines.Template, e impomos validação de esquema rigorosa com modelos Pydantic. Também implementamos recuperação robusta de JSON e um estilo de chamada de função que gera argumentos validados e executa funções Python com segurança. Ao longo do tutorial, focamos na confiabilidade, aplicação de restrições e geração estruturada de nível de produção. Copiar Código Copiado Use um navegador diferente import os, sys, subprocess, json, textwrap, re subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "outlines", "transformers", "accelerate", "sentencepiece", "pydantic"]) import torch import outlines from transformers import AutoTokenizer, AutoModelForCausalLM from typing import Literal, List, Union, Annotated from pydantic import BaseModel, Field from enum import Enum print("Torch:", torch.__version__) print("CUDA disponível:", torch.cuda.is_available()) print("Outlines:", getattr(outlines, "__version__", "unknown")) device = "cuda" if torch.cuda.is_available() else "cpu" print("Usando dispositivo:", device) MODEL_NAME = "HuggingFaceTB/SmolLM2-135M-Instruct" tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, use_fast=True) hf_model = AutoModelForCausalLM.from_pretrained( MODEL_NAME, torch_dtype=torch.float16 if device == "cuda" else torch.float32, device_map="auto" if device == "cuda" else None, ) if device == "cpu": hf_model = hf_model.to(device) model = outlines.from_transformers(hf_model, tokenizer) def build_chat(user_text: str, system_text: str = "Você é um assistente preciso. Siga as instruções exatamente.") -> str: try: msgs = [{"role": "system", "content": system_text}, {"role": "user", "content": user_text}] return tokenizer.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True) except Exception: return f"{system_text}

User: {user_text}

Assistant:" def banner(title: str): print("

" + "=" * 90) print(title) print("=" * 90) Instalamos todas as dependências necessárias e inicializamos o pipeline Outlines com um modelo instruct leve. Configuramos o tratamento de dispositivos para que o sistema alterne automaticamente entre CPU e GPU com base na disponibilidade. Também construímos funções auxiliares reutilizáveis para formatação de chat e banners de seção limpos para estruturar o fluxo de trabalho. Copiar Código Copiado Usado

Fonte: MarkTechPost

Publicado em 2026-03-15

Notícias relacionadas

Continue explorando