Spaces:
Runtime error
Runtime error
| from flask import Blueprint, request, jsonify | |
| from llama_cpp import Llama | |
| from huggingface_hub import hf_hub_download | |
| import os | |
| import json | |
| api = Blueprint("api", __name__) | |
| # Load config from llm_config.json | |
| with open("llm_config.json", "r") as f: | |
| config = json.load(f)["openai"] | |
| # Model details | |
| REPO_ID = "mradermacher/distilabeled-Hermes-2.5-Mistral-7B-GGUF" | |
| MODEL_FILENAME = "distilabeled-Hermes-2.5-Mistral-7B.Q2_K.gguf" | |
| HF_TOKEN = os.environ.get("HF_API_TOKEN") | |
| CACHE_DIR = "/app/.cache/huggingface" | |
| os.makedirs(CACHE_DIR, exist_ok=True) | |
| # Download model if not already cached | |
| MODEL_PATH = hf_hub_download( | |
| repo_id=REPO_ID, | |
| filename=MODEL_FILENAME, | |
| cache_dir=CACHE_DIR, | |
| token=HF_TOKEN | |
| ) | |
| # Load model | |
| llm = Llama( | |
| model_path=MODEL_PATH, | |
| n_ctx=2048, | |
| n_threads=4, | |
| n_gpu_layers=0 # Adjust >0 for GPU acceleration if needed | |
| ) | |
| def chat_completions(): | |
| data = request.get_json(force=True) | |
| messages = data.get("messages", []) | |
| max_tokens = int(data.get("max_tokens", config.get("max_tokens", 256))) | |
| temperature = float(data.get("temperature", config.get("temperature", 0.6))) | |
| top_p = float(data.get("top_p", config.get("top_p", 0.95))) | |
| stop = data.get("stop", config.get("stop", ["User:", "Assistant:"])) | |
| prompt_lines = [] | |
| for msg in messages: | |
| role = msg.get("role", "") | |
| content = msg.get("content", "") | |
| if role == "user": | |
| prompt_lines.append(f"User: {content}") | |
| elif role == "assistant": | |
| prompt_lines.append(f"Assistant: {content}") | |
| prompt_lines.append("Assistant:") | |
| prompt = "\n".join(prompt_lines) | |
| # Generate completion | |
| response = llm( | |
| prompt, | |
| max_tokens=max_tokens, | |
| temperature=temperature, | |
| top_p=top_p, | |
| stop=stop | |
| ) | |
| result_text = response.get("choices", [{}])[0].get("text", "").strip() | |
| return jsonify({ | |
| "choices": [{ | |
| "message": { | |
| "role": "assistant", | |
| "content": result_text | |
| }, | |
| "finish_reason": "stop", | |
| "index": 0 | |
| }] | |
| }) | |