File size: 8,642 Bytes
ad87178 6341792 766e6f9 bd87b58 6341792 bff60c3 6341792 896ef55 bd87b58 9aa2922 3df797e de5dcef 766e6f9 3df797e 766e6f9 3df797e bd87b58 766e6f9 3df797e bd87b58 35c3d0c be8dda8 766e6f9 bd87b58 f3eb11e bd87b58 be8dda8 bd87b58 f3eb11e e499f58 f3eb11e e499f58 f3eb11e 1104400 56f8283 f3eb11e e499f58 f3eb11e 14cf4cd 56f8283 1104400 f3eb11e 14cf4cd 1104400 1e84118 14cf4cd 1e84118 e241512 1e84118 e499f58 56f8283 e499f58 1104400 1e84118 1104400 f3eb11e be8dda8 bd87b58 be8dda8 f3eb11e 896ef55 53033da |
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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
import gradio as gr
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
# مدل LLaMA-3 از طریق Together API
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(messages)
# ذخیره گزارش در یک فایل متنی
with open("report.txt", "w", encoding="utf-8") as file:
file.write(response.content)
return response.content, "report.txt" # لینک به فایل متنی برای دانلود
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"),
gr.File(label=" دانلود گزارش", elem_id="download-btn", visible=False) # لینک دانلود مخفی است تا وقتی گزارش نوشته شده
],
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;
}
/* استایل جدید برای دکمه دانلود به شکل کارت */
#download-btn {
background-color: #FF6F00 !important; /* رنگ پسزمینه کارت نارنجی */
color: #eeeeee !important; /* رنگ متن */
border-radius: 12px;
padding: 10px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
font-size: 16px;
font-weight: bold;
text-align: center;
transition: all 0.3s ease;
display: inline-block;
margin-top: 20px;
cursor: pointer;
width: 100%;
max-width: 200px;
text-decoration: none;
border: none;
}
#download-btn:hover {
background-color: #e65c00 !important; /* تغییر رنگ به هنگام hover */
transform: scale(1.05);
box-shadow: 0 6px 8px rgba(0, 0, 0, 0.3);
}
#download-btn:active {
background-color: #cc5200 !important; /* رنگ پسزمینه هنگام کلیک */
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* نمایش کارت دانلود فقط بعد از تولید گزارش */
.gr-file {
visibility: hidden;
}
""",
submit_btn="🎯 تولید گزارش",
clear_btn="🗑️ پاک کردن"
)
def update_download_button(response, file):
if response:
return gr.File.update(visible=True, value=file)
return gr.File.update(visible=False)
demo.launch()
if __name__ == "__main__":
demo.launch() |