Spaces:
Sleeping
Sleeping
Download app.py from edsoncarvalhointuria/edson: direct link, hf CLI and curl.
- Browser
- Download file 2.81 kB
-
https://huggingface.co/spaces/edsoncarvalhointuria/edson/resolve/main/app.py
- Command line
-
hf download hf://spaces/edsoncarvalhointuria/edson/app.py
-
curl -L -o app.py https://huggingface.co/spaces/edsoncarvalhointuria/edson/resolve/main/app.py
2.81 kB
| 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.", | |
| } | |
| 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() | |