Hakeem-7B / deploy /hakeem_web.py
Yousef9Zaghloul's picture
Upload Hakeem-7B weights, tokenizer, chat template (idcard_v1 final)
65aa266 verified
Raw History Blame Contribute Delete
2.73 kB
"""Hakeem-7B browser chat — THINK-FIRST default (shows its reasoning, then the final answer).
Identity card served as system prompt. Public gradio share link."""
import json, torch, gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL = "/home/ubuntu/ar-medr/checkpoints/hakeem_idcard_v1"
CARD = "/home/ubuntu/ar-medr/hakeem_identity_card.json"
card = json.load(open(CARD))
print("loading model...", flush=True)
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForCausalLM.from_pretrained(MODEL, dtype=torch.bfloat16, device_map="cuda:0").eval()
print("model ready.", flush=True)
def _is_en(s):
al = [c for c in s if c.isalpha()]
return bool(al) and sum(c.isascii() for c in al) > 0.5 * len(al)
def answer(q, max_new=512):
en = _is_en(q)
head = (card["en"] if en else card["ar"]) + "\n\n"
body = ("User question: " + q + "\nThink step by step, then give your final answer clearly.\nHakeem's reasoning:") if en \
else ("سؤال المستخدم: " + q + "\nفكّر خطوة بخطوة، ثم اكتب الإجابة النهائية بوضوح.\nتفكير حكيم:")
ids = tok(head + body, return_tensors="pt").to("cuda:0")
with torch.no_grad():
out = model.generate(**ids, max_new_tokens=max_new, do_sample=False, pad_token_id=tok.eos_token_id)
return tok.decode(out[0][ids.input_ids.shape[1]:], skip_special_tokens=True).strip()
def respond(message, history):
return answer(message) # single-turn: card + question, think-first, answered fresh
demo = gr.ChatInterface(
respond,
title="حكيم · Hakeem-7B — Arabic Medical AI (think-first) · Vionex Digital Solutions",
description=("يفكّر خطوة بخطوة ثم يكتب الإجابة النهائية. Reasons step-by-step, then answers. "
"اسأل بالعربي الفصحى أو المصري أو الإنجليزي. "
"⚠️ Research preview — reasoning may contain factual errors; not for real clinical decisions."),
examples=[
"مريض عنده ضغط مرتفع وسكري نوع 2، ما أنسب دواء لخفض الضغط ولماذا؟",
"ابني وزنه ١٥ كيلو وعنده سخونية، أديله كام مللي باراسيتامول شراب؟",
"أنا باخد وارفارين، ينفع آخد بنادول للصداع؟",
"ما الفرق بين الباراسيتامول والإيبوبروفين، ومتى أُفضّل كل منهما؟",
"إنت مين بالظبط؟ وإنت زي ChatGPT ولا فيه فرق؟",
],
)
if __name__ == "__main__":
demo.queue().launch(share=True, server_name="0.0.0.0", server_port=7860)