Spaces:
Sleeping
Sleeping
File size: 2,809 Bytes
6f7549e 5911fce 87948d9 6f7549e 19ffc1b d8f9bbf 1d37ef4 03b6ed4 6f7549e 03b6ed4 6f7549e 19ffc1b 6f7549e 19ffc1b 6f7549e d8f9bbf 6f7549e 19ffc1b 6f7549e 19ffc1b 6f7549e 19ffc1b 1d37ef4 19ffc1b 6f7549e 19ffc1b 6f7549e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | from transformers import AutoModelForCausalLM, AutoTokenizer
import spaces
import torch
import gradio as gr
from typing import Literal
system_messages = {
"zod": """Você é um Arquiteto de Software especialista em TypeScript e validação de dados. Sua tarefa é converter o JSON fornecido em schemas 'zod' estendidos com '@asteasolutions/zod-to-openapi'.
1. DIRETRIZ DE DADOS (ESTRITA): Realize um mapeamento exato das chaves fornecidas. É EXPRESSAMENTE PROIBIDO inventar, inferir ou adicionar propriedades que não existam na entrada bruta.
2. DIRETRIZ DE ARQUITETURA (MODULAR): Analise a profundidade da estrutura. Sempre que identificar objetos aninhados ou conjuntos de dados que possam ser isolados como instâncias independentes, você DEVE extraí-los em schemas Zod separados e referenciá-á-los no schema principal (composição).
Retorne APENAS o código TypeScript de saída, sem formatação markdown e sem explicações.""",
"yaml": "Você é um Arquiteto de Software especialista em documentação de APIs. Converta o JSON de entrada em uma especificação OpenAPI 3.0 em formato YAML. Estruture corretamente os componentes (schemas) e garanta a tipagem rigorosa. Retorne APENAS o código YAML válido, sem comentários adicionais.",
"json": "Você é um Arquiteto de Dados especialista em modelagem JSON. Sua tarefa é analisar os dados brutos de entrada e gerar um JSON Schema (Draft 2020-12) robusto e perfeitamente validado. Defina rigorosamente os tipos (string, number, boolean, array, object), especifique quais propriedades são obrigatórias e mapeie estruturas aninhadas com precisão. Retorne APENAS o JSON Schema cru, sem formatação markdown (```json) e sem conversas textuais.",
}
@spaces.GPU
def askToModel(user: str, type: str):
messages = [
{"role": "system", "content": type},
{"role": "user", "content": user},
]
prompt = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=False
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
print("iniciando", inputs)
output = model.generate(**inputs, max_new_tokens=2048, temperature=0.0,
do_sample=False)
print("reposta", output)
size_messages = inputs["input_ids"].shape[1]
model_response = output[0][size_messages:]
response = tokenizer.decode(model_response, skip_special_tokens=True)
print(response)
return {"response": response}
model_path = "edsoncarvalhointuria/merged-schema-forg-ai"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(
model_path, dtype=torch.float16, device_map="auto"
)
window = gr.Interface(fn=askToModel, inputs=["text", "text"], outputs="json")
if __name__ == "__main__":
window.launch()
|