| from pathlib import Path | |
| import requests | |
| from tqdm import tqdm | |
| from sentence_transformers import SentenceTransformer | |
| SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2") | |
| MODELS_DIR = Path("models") | |
| MODELS_DIR.mkdir(exist_ok=True) | |
| MODEL_LIST = [ | |
| { | |
| "name": "qwen2.5-0.5b-instruct-q4_0", | |
| "filename": "qwen2.5-0.5b-instruct-q4_0.gguf", | |
| "url": "https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct-GGUF/resolve/main/qwen2.5-0.5b-instruct-q4_0.gguf" | |
| } | |
| ] | |
| def download_file(url: str, dest: Path): | |
| if dest.exists(): | |
| return | |
| resp = requests.get(url, stream=True) | |
| content_type = resp.headers.get("content-type", "") | |
| if "text/html" in content_type: | |
| raise ValueError(f"URL returned HTML, not a model file: {url}") | |
| total = int(resp.headers.get("content-length", 0)) | |
| with open(dest, "wb") as f, tqdm(total=total, unit="B", unit_scale=True, desc=dest.name) as bar: | |
| for chunk in resp.iter_content(chunk_size=1024 * 1024): | |
| if chunk: | |
| f.write(chunk) | |
| bar.update(len(chunk)) | |
| def main(): | |
| for m in MODEL_LIST: | |
| dest = MODELS_DIR / m["filename"] | |
| try: | |
| download_file(m["url"], dest) | |
| except Exception as e: | |
| print(f"Failed to download {m['name']}: {e}") | |
| if __name__ == "__main__": | |
| main() | |