Download generate.py from adyoi/indigo-chat: direct link, hf CLI and curl.
- Browser
- Download file 1.51 kB
-
https://huggingface.co/adyoi/indigo-chat/resolve/main/generate.py
- Command line
-
hf download hf://adyoi/indigo-chat/generate.py
-
curl -L -o generate.py https://huggingface.co/adyoi/indigo-chat/resolve/main/generate.py
1.51 kB
| import sys, json, os | |
| sys.path.insert(0, os.environ.get("INDIGO_DIR", r"D:\Documents\GitHub\Indigo")) | |
| sys.stdout.reconfigure(encoding="utf-8", errors="replace") | |
| import torch | |
| from safetensors.torch import load_file | |
| from indigo.common import build_tokenizer | |
| from indigo.model import GPT, GPTConfig | |
| ckpt = os.environ.get("CKPT", r"D:\Documents\GitHub\Indigo\runs\indo\indigo.safetensors") | |
| meta_path = ckpt.replace(".safetensors", "_meta.json") | |
| with open(meta_path, encoding="utf-8") as f: | |
| meta = json.load(f) | |
| state = load_file(ckpt) | |
| model = GPT(GPTConfig.from_dict(meta["config"])) | |
| model.load_state_dict(state, strict=False) | |
| model.eval() | |
| tokenizer = build_tokenizer(meta.get("tokenizer") or {"type": "char"}, meta.get("vocab")) | |
| block_size = meta["config"]["block_size"] | |
| history_ids = json.loads(os.environ.get("HISTORY", "[]")) | |
| prompt = os.environ.get("PROMPT", "Apa itu Indigo?") | |
| temperature = float(os.environ.get("TEMPERATURE", "0.8")) | |
| top_k = int(os.environ.get("TOP_K", "40")) | |
| top_p = float(os.environ.get("TOP_P", "0.95")) | |
| max_new = int(os.environ.get("MAX_NEW", "200")) | |
| piece = tokenizer.encode("\nAnda: " + prompt + "\nIndigo:") | |
| ctx = (history_ids + piece)[-block_size:] | |
| x = torch.tensor([ctx], dtype=torch.long) | |
| with torch.no_grad(): | |
| out = model.generate(x, max_new, temperature=temperature, top_k=top_k, top_p=top_p, repetition_penalty=1.15) | |
| full = out[0].tolist() | |
| new_ids = full[len(ctx):] | |
| text = tokenizer.decode(new_ids).strip() | |
| print(json.dumps({"text": text, "ids": full[-block_size:]})) | |