File size: 6,742 Bytes
d1b0502
ad87178
6341792
 
766e6f9
6341792
 
bff60c3
6341792
 
 
896ef55
9aa2922
3df797e
 
de5dcef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
766e6f9
3df797e
766e6f9
 
3df797e
d1b0502
766e6f9
 
 
3df797e
6e983eb
 
be8dda8
 
 
 
bfb71da
d1b0502
766e6f9
bd87b58
 
 
 
f3eb11e
 
 
 
bd87b58
 
 
 
 
6638946
90d532f
f6d5a02
bd87b58
 
 
f3eb11e
6638946
 
f3eb11e
 
 
 
e499f58
f3eb11e
 
1104400
6638946
f3eb11e
 
 
e499f58
 
6638946
f3eb11e
 
6638946
56f8283
1104400
 
 
 
f3eb11e
 
6638946
1104400
1e84118
14cf4cd
6638946
14cf4cd
 
6638946
14cf4cd
 
6638946
14cf4cd
1e84118
e241512
1e84118
 
 
6638946
 
 
1104400
1e84118
 
1104400
 
f3eb11e
bd87b58
 
 
 
6638946
0e924d0
f3eb11e
896ef55
0e924d0
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

import gradio as gr
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

llm = ChatOpenAI(
    base_url="https://api.together.xyz/v1",
    api_key="0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979",
    model="meta-llama/Llama-3.3-70B-Instruct-Turbo-Free",
    max_tokens=1024
)

def generate_report(operation_data, max_tokens, temperature, top_p):
    system_prompt = """تو یک افسر گزارش‌نویس نظامی هستی. وظیفه تو تهیه یک گزارش رسمی، دقیق، ساختاریافته و حرفه‌ای از عملیات نظامی بر اساس داده‌های ارائه‌شده است. اگر اطلاعاتی در متن وجود نداشت، صراحتاً بنویس «ذکر نشده است».
لطفاً گزارش را دقیقاً در قالب فرمتیافته زیر تولید کن، با استفاده از نشانه‌گذاری واضح (مانند ایموجی‌ها و خطوط جداکننده) تا خروجی قابل‌خواندن و رسمی باشد:
━━━━━━━━━━━━━━━━━━━━━━
📄 گزارش رسمی عملیات نظامی
🕒 تاریخ و ساعت شروع عملیات:
[اگر در متن بود بنویس، در غیر این صورت بنویس: ذکر نشده است]
🕓 تاریخ و ساعت پایان عملیات:
[اگر در متن بود بنویس، در غیر این صورت بنویس: ذکر نشده است]
📍 مکان عملیات:
[نام مکان عملیات یا بنویس: ذکر نشده است]
🪖 واحدهای شرکت‌کننده:
[نام گردان‌ها یا یگان‌ها یا بنویس: ذکر نشده است]
🎯 هدف عملیات:
[اهداف اصلی عملیات یا بنویس: ذکر نشده است]
📝 شرح عملیات:
[شرح مختصر عملیات شامل مسیر، تاکتیک، درگیری‌ها و روند پیشروی]
🏁 نتیجه عملیات:
[پیروزی، شکست، توقف، عقب‌نشینی یا ذکر نشده است]
🩻 تلفات نیروهای خودی:
[تعداد شهدا، مجروحین یا بنویس: ذکر نشده است]
🚫 تلفات دشمن:
[در صورت موجود بودن، ذکر شود - در غیر این صورت بنویس: ذکر نشده است]
🛠️ تجهیزات استفاده‌شده یا از دست‌رفته:
[مثلاً تانک، پهپاد، سلاح خاص یا ذکر نشده است]
🗒️ یادداشت‌های اضافی:
[شرایط خاص، اطلاعات پشتیبانی، آب‌وهوا، یا بنویس: ذکر نشده است]
━━━━━━━━━━━━━━━━━━━━━━
✅ این گزارش بر اساس اطلاعات خام ارائه‌شده تولید شده و ممکن است برخی جزئیات در دسترس نبوده باشند.
"""


    messages = [
        HumanMessage(content=f"{system_prompt}\n\n{operation_data}")
    ]

    response = llm.invoke(messages)
    report_text = response.content
    
    with open("report.txt", "w", encoding="utf-8") as file:
        file.write(response.content)
    
    return response.content


demo = gr.Interface(
    fn=generate_report,
    inputs=[
        gr.Textbox(
            label="🪖 اطلاعات عملیات نظامی",
            lines=10,
            placeholder="مثلاً: در ساعت ۵ صبح، گردان الف از محور غربی وارد منطقه شد...",
            elem_id="military-input"
        ),
        gr.Slider(128, 2048, value=1024, step=64, label="🎯 حداکثر توکن خروجی", elem_id="slider-1"),
        gr.Slider(0.1, 1.5, value=0.7, step=0.1, label="🔥 دمای خلاقیت (temperature)", elem_id="slider-2"),
        gr.Slider(0.1, 1.0, value=0.95, step=0.05, label="🎯 Top-p", elem_id="slider-3"),
    ],
    outputs=[
        gr.Textbox(label="📄 گزارش رسمی تولید شده", lines=10, elem_id="military-output")
    ],
    title="🛰️ سامانه گزارش‌ساز هوش مصنوعی «توانا»",
    description="🔰 اطلاعات خام عملیات را وارد کن تا سامانه توانا یک گزارش رسمی، حرفه‌ای و محرمانه تولید کند.",
    css="""
        body {
            background-color: #d9dec5 !important;  /* رنگ بک‌گراند جدید */
            color: #1e293b !important;  /* رنگ متن جدید */
            font-family: 'Vazir', sans-serif;
            direction: rtl;
        }
        .gradio-container {
            background-color: #d9dec5 !important;
        }
        label {
            font-size: 22px !important;
            color: #eeeeee !important;  /* رنگ سفید برای برچسب‌ها */
            font-weight: bold;
        }
        #military-input textarea, #military-output textarea {
            background-color: #d9dec5 !important;
            color: #1e293b !important;
            border: 2px solid #529b39 !important;  /* رنگ جدید برای مرز */
        }
        .gr-button {
            background-color: #529b39 !important;  /* رنگ دکمه‌ها */
            color: #eeeeee !important;
            border-radius: 12px;
            font-size: 18px;
            padding: 14px;
            transition: all 0.3s ease;
        }
        .gr-button:hover {
            background-color: #45a12d !important;  /* تغییر رنگ به هنگام hover */
            transform: scale(1.05);
        }
        .gr-button:active {
            background-color: #3b8e27 !important;  /* رنگ جدید هنگام کلیک */
        }
        .gr-button[type="submit"] {
            background-color: #529b39 !important;  /* رنگ دکمه "تولید گزارش" */
        }
        .gr-button[type="reset"] {
            background-color: #ff7043 !important;  /* رنگ دکمه "پاک کردن" */
        }
        .gradio-footer {
            display: none !important;
        }
        
        .gr-textbox input[type="text"], .gr-textbox textarea {
            background-color: #1e293b !important;  /* رنگ پس‌زمینه ورودی‌ها */
            color: #eeeeee !important;  /* رنگ متن ورودی‌ها */
            border: 2px solid #529b39 !important;  /* رنگ مرز ورودی‌ها */
            font-size: 16px;
        }
        .gr-textbox input[type="text"]:focus, .gr-textbox textarea:focus {
            border-color: #FF6F00 !important;
            outline: none;
        }
    """,
    submit_btn="🎯 تولید گزارش",
    clear_btn="🗑️ پاک کردن"
)

demo.launch(share=True)

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