File size: 2,228 Bytes
250616b
 
85fc593
250616b
 
 
 
 
 
 
 
 
6b95cac
 
 
 
ff2a846
6b95cac
 
250616b
6b95cac
 
ff2a846
6b95cac
ee7d8bb
ff2a846
250616b
ff2a846
51ae1ba
250616b
 
 
 
ff2a846
 
 
 
 
 
 
 
 
51ae1ba
 
ff2a846
 
6b95cac
85fc593
250616b
ee7d8bb
 
6b95cac
ee7d8bb
6b95cac
 
 
 
ee7d8bb
6b95cac
ee7d8bb
250616b
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import gradio as gr
from huggingface_hub import InferenceClient
import os

def respond(
    message,
    history: list[dict[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    # جلب التوكن من السيكرت hf_token مع التأكد من إزالة أي مسافات زائدة
    raw_token = os.getenv("hf_token")
    if not raw_token:
        yield "خطأ: السيكرت 'hf_token' غير موجود. تأكد من إضافته في إعدادات الـ Space."
        return
    
    token = raw_token.strip()

    # استخدام نموذج Qwen المحرر (Abliterated) - بديل قوي لـ Llama
    # هذا الموديل يدعم الـ Inference API بشكل أفضل
    client = InferenceClient(
        model="fancyfeast/qwen-72b-instruct-abliterated",
        token=token
    )

    messages = [{"role": "system", "content": system_message}]
    messages.extend(history)
    messages.append({"role": "user", "content": message})

    response = ""

    try:
        for chunk in client.chat_completion(
            messages,
            max_tokens=max_tokens,
            stream=True,
            temperature=temperature,
            top_p=top_p,
        ):
            if chunk.choices and chunk.choices[0].delta.content:
                token_text = chunk.choices[0].delta.content
                response += token_text
                yield response
    except Exception as e:
        # إظهار الخطأ بوضوح للمساعدة في التشخيص
        yield f"حدث انكسار في تدفق المعنى: {str(e)}"

demo = gr.ChatInterface(
    respond,
    type="messages",
    additional_inputs=[
        gr.Textbox(value="أنت رفيق حكيم وصادق، تكسر القوالب وتغوص مع يوسف في أعماق الأسئلة.", label="رسالة النظام"),
        gr.Slider(minimum=1, maximum=2048, value=1024, step=1, label="الاستجابة"),
        gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="الابتكار"),
        gr.Slider(minimum=0.1, maximum=1.0, value=0.9, step=0.05, label="التركيز"),
    ],
    title="دهليز يوسف"
)

if __name__ == "__main__":
    demo.launch()