|
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="333ac33f5be91819cb7ade101134d73f5e63d299a964ae290850eeac5d82a8d5", |
|
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) |
|
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=15, 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; |
|
direction: rtl; |
|
} |
|
|
|
.gradio-container h1, .gradio-container p { |
|
text-align: center !important; |
|
direction: rtl !important; |
|
} |
|
|
|
.gradio-container h1 { |
|
font-size: 32px !important; |
|
margin-top: 20px !important; |
|
font-weight: bold; |
|
color: #1e293b !important; |
|
} |
|
|
|
.gradio-container p { |
|
font-size: 20px !important; |
|
color: #374151 !important; |
|
margin-bottom: 30px !important; |
|
} |
|
|
|
label { |
|
font-size: 22px !important; |
|
color: #1e293b !important; |
|
font-weight: bold; |
|
text-align: right; |
|
} |
|
|
|
#military-input textarea, #military-output textarea { |
|
background-color: #f0f4e5 !important; |
|
color: #1e293b !important; |
|
border: 2px solid #529b39 !important; |
|
direction: rtl !important; |
|
text-align: right !important; |
|
font-size: 16px; |
|
line-height: 1.8; |
|
} |
|
|
|
.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; |
|
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 { |
|
font-family: 'Vazir', sans-serif; |
|
} |
|
""", |
|
submit_btn="🎯 تولید گزارش", |
|
clear_btn="🗑️ پاک کردن" |
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|