Download conversar_zero.py from open-source-dimas/modelo-jogo-velha-zero: direct link, hf CLI and curl.
- Browser
- Download file 2.15 kB
-
https://huggingface.co/open-source-dimas/modelo-jogo-velha-zero/resolve/main/conversar_zero.py
- Command line
-
hf download hf://open-source-dimas/modelo-jogo-velha-zero/conversar_zero.py
-
curl -L -o conversar_zero.py https://huggingface.co/open-source-dimas/modelo-jogo-velha-zero/resolve/main/conversar_zero.py
2.15 kB
| #!/usr/bin/env python3 | |
| """Chat interativo usando exclusivamente pesos treinados do zero.""" | |
| from __future__ import annotations | |
| import argparse | |
| from pathlib import Path | |
| import torch | |
| from usar_gpt_zero import carregar | |
| from treinar_gpt_zero import gerar | |
| SYSTEM_DEFAULT = "Você é um assistente local útil e educado." | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description="Conversa com o GPT treinado do zero.") | |
| parser.add_argument("--checkpoint", type=Path, default=Path("modelo_dialogos_multi_v2.pt")) | |
| parser.add_argument("--system", default=SYSTEM_DEFAULT) | |
| parser.add_argument("--tokens", type=int, default=80) | |
| parser.add_argument("--temperature", type=float, default=0.05) | |
| parser.add_argument("--top-k", type=int, default=20) | |
| parser.add_argument("--top-p", type=float, default=0.9) | |
| parser.add_argument("--repetition-penalty", type=float, default=1.15) | |
| parser.add_argument("--device", choices=["auto", "cpu", "cuda"], default="auto") | |
| args = parser.parse_args() | |
| if args.device == "auto": | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| else: | |
| device = torch.device(args.device) | |
| modelo, tokenizer, checkpoint, bos_id, eos_id = carregar(args.checkpoint, device) | |
| print("Modelo treinado do zero pronto. Digite /sair para terminar.") | |
| historico: list[tuple[str, str]] = [] | |
| while True: | |
| pergunta = input("Você: ").strip() | |
| if pergunta == "/sair": | |
| break | |
| historico.append(("user", pergunta)) | |
| partes = [f"<|system|>{args.system}<|end|>"] | |
| for indice, (papel, conteudo) in enumerate(historico[-4:]): | |
| partes.append(f"<|{papel}|>{conteudo}<|end|>") | |
| if indice == len(historico[-4:]) - 1 and papel == "user": | |
| partes.append("<|assistant|>") | |
| prompt = "".join(partes) | |
| resposta = gerar(modelo, tokenizer, prompt, device, args.tokens, args.temperature, args.top_k, args.top_p, bos_id, eos_id, args.repetition_penalty) | |
| historico.append(("assistant", resposta)) | |
| print(f"Modelo: {resposta}\n") | |
| if __name__ == "__main__": | |
| main() | |