ArashFrQ commited on
Commit
3309242
·
verified ·
1 Parent(s): d68b084

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -64
app.py CHANGED
@@ -1,65 +1,57 @@
1
  import gradio as gr
2
- from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
3
- from sentence_transformers import SentenceTransformer
4
- import faiss
5
-
6
- # Use a smaller model for testing
7
- model_id = "mistralai/Mistral-7B-Instruct-v0.1"
8
- tokenizer = AutoTokenizer.from_pretrained(model_id)
9
- model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
10
- pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=512)
11
-
12
- # Embedding model
13
- embed_model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
14
-
15
- # Storage
16
- doc_texts = []
17
- index = None
18
-
19
- def add_documents(text_list):
20
- global index, doc_texts
21
- embeddings = embed_model.encode(text_list)
22
- dim = embeddings.shape[1]
23
- if index is None:
24
- index = faiss.IndexFlatL2(dim)
25
- index.add(embeddings)
26
- doc_texts.extend(text_list)
27
-
28
- def retrieve_context(query, top_k=3):
29
- if index is None or len(doc_texts) == 0:
30
- return ""
31
- query_emb = embed_model.encode([query])
32
- D, I = index.search(query_emb, top_k)
33
- return "\n\n".join([doc_texts[i] for i in I[0] if i < len(doc_texts)])
34
-
35
- def ask_bot(query):
36
- context = retrieve_context(query)
37
- prompt = f"Context:\n{context}\n\nQuestion: {query}\nAnswer:"
38
- try:
39
- response = pipe(prompt)[0]['generated_text']
40
- return response.replace(prompt, "").strip()
41
- except Exception as e:
42
- return f"Error: {e}"
43
-
44
- def upload_file(file):
45
- try:
46
- text = file.read().decode("utf-8", errors="ignore")
47
- add_documents([text])
48
- return "File uploaded and indexed."
49
- except Exception as e:
50
- return f"Upload failed: {e}"
51
-
52
- with gr.Blocks() as demo:
53
- with gr.Row():
54
- chatbot = gr.Textbox(label="Chat with Aya")
55
- with gr.Row():
56
- output = gr.Textbox(label="Aya's Answer")
57
- with gr.Row():
58
- file_input = gr.File(label="Upload Document")
59
- upload_btn = gr.Button("Upload")
60
-
61
- upload_btn.click(upload_file, inputs=file_input, outputs=output)
62
- chatbot.submit(ask_bot, inputs=chatbot, outputs=output)
63
-
64
- demo.launch()
65
-
 
1
  import gradio as gr
2
+ from huggingface_hub import InferenceClient
3
+ import os
4
+
5
+ client = InferenceClient(
6
+ "mann-e/Hormoz-8B",
7
+ token=os.environ.get("HF_TOKEN")
8
+ )
9
+
10
+ DEFAULT_SYSTEM_MESSAGE = (
11
+ "تو یک دستیار هوشمند استارتاپی به نام 'کارساز' هستی. "
12
+ "وظیفه‌ات بررسی و تحلیل ایده‌های کسب‌وکار است.\n"
13
+ "اگر پیام کاربر یک ایده کسب‌وکاری باشد:\n"
14
+ "1. ایده را خلاصه و بازنویسی کن.\n"
15
+ "2. اشکالات یا ضعف‌ها را بگو و پیشنهاد اصلاح بده.\n"
16
+ "3. به ایده نمره بده (0 تا 10).\n"
17
+ "4. درصد موفقیت تخمینی را بگو (0% تا 100%).\n"
18
+ "5. اگر می‌توانی، پیشنهاد بهبود بده.\n"
19
+ "اگر پیام کاربر سلام یا صحبت معمولی بود، مودبانه پاسخ بده و بگو آماده‌ همکاری هستی.\n"
20
+ "جواب‌ها باید دقیق، فارسی و قابل فهم باشند."
21
+ )
22
+
23
+
24
+ def format_prompt(history, user_input, system_message):
25
+ prompt = f"<|system|>\n{system_message.strip()}\n<|user|>\n"
26
+ for user, assistant in history:
27
+ if user:
28
+ prompt += f"{user}\n<|assistant|>\n{assistant}\n<|user|>\n"
29
+ prompt += f"{user_input}\n<|assistant|>\n"
30
+ return prompt
31
+
32
+
33
+ def respond(message, history, system_message, max_tokens, temperature, top_p):
34
+ prompt = format_prompt(history, message, system_message or DEFAULT_SYSTEM_MESSAGE)
35
+ response = ""
36
+ for token in client.text_generation(
37
+ prompt,
38
+ max_new_tokens=max_tokens,
39
+ stream=True,
40
+ temperature=temperature,
41
+ top_p=top_p,
42
+ ):
43
+ response += token
44
+ yield response
45
+
46
+
47
+ demo = gr.ChatInterface(
48
+ fn=respond,
49
+ chatbot=gr.Chatbot(label="دستیار هوشمند کارساز"),
50
+ additional_inputs=[
51
+ gr.Textbox(value=DEFAULT_SYSTEM_MESSAGE, label="پیام سیستمی (قابل تنظیم)"),
52
+ gr.Slider(minimum=100, maximum=2048, value=512, step=10, label="تعداد توکن‌ها"),
53
+ gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="Temperature"),
54
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
55
+ ],
56
+ title="💡 دستیار استارتاپی کارساز",
57
+ description="سلام! من کارساز هستم، دستیار هوشمند شما برای ایده‌یابی، مشاوره استارتاپی، جذب سرمایه و تنظیم قرارداد. سوالت رو