M17idd commited on
Commit
6ca758a
·
verified ·
1 Parent(s): 53033da

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -57
app.py CHANGED
@@ -1,15 +1,8 @@
1
  import gradio as gr
2
  from langchain.chat_models import ChatOpenAI
3
  from langchain.schema import HumanMessage
4
- from reportlab.pdfgen import canvas
5
- from reportlab.lib.pagesizes import A4
6
- from reportlab.pdfbase import pdfmetrics
7
- from reportlab.pdfbase.ttfonts import TTFont
8
- from bidi.algorithm import get_display
9
- import arabic_reshaper
10
- import os
11
 
12
- # تعریف مدل LLaMA-3
13
  llm = ChatOpenAI(
14
  base_url="https://api.together.xyz/v1",
15
  api_key="0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979",
@@ -17,6 +10,7 @@ llm = ChatOpenAI(
17
  max_tokens=1024
18
  )
19
 
 
20
  def generate_report(operation_data, max_tokens, temperature, top_p):
21
  system_prompt = """تو یک افسر گزارش‌نویس نظامی هستی. وظیفه تو تهیه یک گزارش رسمی، دقیق، ساختاریافته و حرفه‌ای از عملیات نظامی بر اساس داده‌های ارائه‌شده است. اگر اطلاعاتی در متن وجود نداشت، صراحتاً بنویس «ذکر نشده است».
22
  لطفاً گزارش را دقیقاً در قالب فرمتیافته زیر تولید کن، با استفاده از نشانه‌گذاری واضح (مانند ایموجی‌ها و خطوط جداکننده) تا خروجی قابل‌خواندن و رسمی باشد:
@@ -58,55 +52,19 @@ def generate_report(operation_data, max_tokens, temperature, top_p):
58
  response = llm(messages)
59
  return response.content
60
 
61
-
62
- def export_to_pdf():
63
- reshaped_text = arabic_reshaper.reshape(response.content)
64
- bidi_text = get_display(reshaped_text)
65
-
66
- output_path = "military_report.pdf"
67
-
68
- pdfmetrics.registerFont(TTFont('Vazir', 'Vazir.ttf'))
69
-
70
- c = canvas.Canvas(output_path, pagesize=A4)
71
- c.setFont("Vazir", 12)
72
-
73
- width, height = A4
74
- x = width - 40
75
- y = height - 40
76
-
77
- for line in bidi_text.split('\n'):
78
- reshaped = arabic_reshaper.reshape(line)
79
- bidi_line = get_display(reshaped)
80
- c.drawRightString(x, y, bidi_line)
81
- y -= 18
82
-
83
- c.save()
84
- return output_path
85
-
86
- with gr.Blocks() as demo:
87
- gr.Markdown("## گزارش‌نویس هوش مصنوعی عملیات نظامی")
88
- operation_input = gr.Textbox(label="اطلاعات عملیات نظامی", lines=10)
89
- max_tokens = gr.Slider(128, 2048, value=1024, step=64, label="حداکثر توکن خروجی")
90
- temperature = gr.Slider(0.1, 1.5, value=0.7, step=0.1, label="دمای خلاقیت (temperature)")
91
- top_p = gr.Slider(0.1, 1.0, value=0.95, step=0.05, label="Top-p")
92
-
93
- output_text = gr.Textbox(label="📄 گزارش رسمی تولید شده", lines=15)
94
-
95
- generate_button = gr.Button("تولید گزارش")
96
- pdf_output = gr.File(label="📥 دانلود گزارش PDF")
97
-
98
- def wrapper(operation_data, max_tokens, temperature, top_p):
99
- report = generate_report(operation_data, max_tokens, temperature, top_p)
100
- return report
101
-
102
- generate_button.click(
103
- fn=wrapper,
104
- inputs=[operation_input, max_tokens, temperature, top_p],
105
- outputs=output_text
106
- )
107
-
108
- download_button = gr.Button("📤 دانلود PDF")
109
- download_button.click(fn=export_to_pdf, outputs=pdf_output)
110
 
111
  if __name__ == "__main__":
112
  demo.launch()
 
1
  import gradio as gr
2
  from langchain.chat_models import ChatOpenAI
3
  from langchain.schema import HumanMessage
 
 
 
 
 
 
 
4
 
5
+ # مدل LLaMA-3 از طریق Together API
6
  llm = ChatOpenAI(
7
  base_url="https://api.together.xyz/v1",
8
  api_key="0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979",
 
10
  max_tokens=1024
11
  )
12
 
13
+ # تابع تولید گزارش
14
  def generate_report(operation_data, max_tokens, temperature, top_p):
15
  system_prompt = """تو یک افسر گزارش‌نویس نظامی هستی. وظیفه تو تهیه یک گزارش رسمی، دقیق، ساختاریافته و حرفه‌ای از عملیات نظامی بر اساس داده‌های ارائه‌شده است. اگر اطلاعاتی در متن وجود نداشت، صراحتاً بنویس «ذکر نشده است».
16
  لطفاً گزارش را دقیقاً در قالب فرمتیافته زیر تولید کن، با استفاده از نشانه‌گذاری واضح (مانند ایموجی‌ها و خطوط جداکننده) تا خروجی قابل‌خواندن و رسمی باشد:
 
52
  response = llm(messages)
53
  return response.content
54
 
55
+ # رابط Gradio
56
+ demo = gr.Interface(
57
+ fn=generate_report,
58
+ inputs=[
59
+ gr.Textbox(label="اطلاعات عملیات نظامی", lines=10, placeholder="مثلاً: در ساعت ۵ صبح، گردان الف از محور غربی وارد منطقه شد..."),
60
+ gr.Slider(128, 2048, value=1024, step=64, label="حداکثر توکن خروجی"),
61
+ gr.Slider(0.1, 1.5, value=0.7, step=0.1, label="دمای خلاقیت (temperature)"),
62
+ gr.Slider(0.1, 1.0, value=0.95, step=0.05, label="Top-p"),
63
+ ],
64
+ outputs=gr.Textbox(label="گزارش رسمی تولید شده", lines=10),
65
+ title="گزارش‌نویس هوش مصنوعی عملیات نظامی",
66
+ description="اطلاعات خام عملیات نظامی را وارد کن تا گزارش رسمی، خلاصه و حرفه‌ای تولید شود."
67
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
  if __name__ == "__main__":
70
  demo.launch()