""", unsafe_allow_html=True)
query = st.text_input(" ", key="custom_query") # برای گرفتن مقدار واقعی ورودی
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
if query:
thinking = st.empty()
thinking.markdown("⏳ در حال پردازش...")
try:
query_embedding = get_query_embedding_together(query)
data = load_embeddings(EMBEDDING_FILE)
top_chunks = find_most_similar_chunks(query_embedding, data, top_n=10)
context = "\n".join(top_chunks)
prompt = f"""
به سؤال زیر فقط بر اساس اطلاعات موجود در خطوط مرتبط پاسخ بده.
از تحلیل، مقدمهچینی، توضیح مراحل تفکر، یا حدس شخصی خودداری کن.
اگر اطلاعات کافی برای پاسخ دقیق در خطوط مرتبط وجود نداشت، فقط در آن صورت با صراحت اعلام کن،
و سپس میتوانی از دانش عمومی خود استفاده کنی تا یک پاسخ حرفهای و دقیق ارائه دهی.
پاسخ باید نهایی، روان، و در حدود 100 تا 1024 کاراکتر باشد.
مستقیماً پاسخ را بنویس و هیچ توضیحی درباره نحوه رسیدن به پاسخ نده.
سوال:
{query}
خطوط مرتبط:
{top_chunks}
پاسخ نهایی:
"""
response = llm([
SystemMessage(
content="تو یک دستیار دقیق هستی که فقط با اطلاعات موجود در متن پاسخ میدهی. اگر اطلاعات نبود، آن را اعلام میکنی و بعد از دانش خودت استفاده میکنی."
),
HumanMessage(content=prompt)
])
final_answer = clean_text(response.content.strip())
except Exception as e:
final_answer = f"❗ خطا: {str(e)}"
thinking.empty()
st.session_state.chat_history.append(("🧑", query))
st.session_state.chat_history.append(("🤖", final_answer))
st.markdown("""
""", unsafe_allow_html=True)
st.markdown("---")
for sender, message in st.session_state.chat_history:
st.markdown(f'