Spaces:
Running
Running
File size: 3,984 Bytes
83a2a70 3ba690a 0490f39 273a16a 83a2a70 a556cf5 c62298d 0490f39 83a2a70 0490f39 273a16a 3ba690a e5574dd 3ba690a 0490f39 3ba690a a556cf5 3ba690a 99af9f6 a556cf5 99af9f6 a556cf5 c62298d 3ba690a 3caec61 83a2a70 3caec61 83a2a70 4d460a5 9a96732 4d460a5 83a2a70 e7ce7de 8ba43cf e7ce7de 2f84711 8c27317 45e8a69 b7da185 8c27317 b7da185 e7ce7de b7da185 8c27317 e7ce7de 8c27317 |
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 |
import os
import gradio as gr
import pandas as pd
import comtradeapicall
from huggingface_hub import InferenceClient
from googletrans import Translator
# کلید COMTRADE
subscription_key = os.getenv("COMTRADE_API_KEY", "")
# توکن Hugging Face
hf_token = os.getenv("HF_API_TOKEN")
client = InferenceClient(token=hf_token)
translator = Translator()
def get_importers(hs_code: str, year: str, month: str):
period = f"{year}{int(month):02d}"
df = comtradeapicall.previewFinalData(
typeCode='C', freqCode='M', clCode='HS', period=period,
reporterCode=None, cmdCode=hs_code, flowCode='M',
partnerCode=None, partner2Code=None,
customsCode=None, motCode=None,
maxRecords=500, includeDesc=True
)
if df is None or df.empty:
return pd.DataFrame(columns=["کد کشور", "نام کشور", "ارزش CIF"])
df = df[df['cifvalue'] > 0]
result = (
df.groupby(["reporterCode", "reporterDesc"], as_index=False)
.agg({"cifvalue": "sum"})
.sort_values("cifvalue", ascending=False)
)
result.columns = ["کد کشور", "نام کشور", "ارزش CIF"]
return result
def provide_advice(table_data: pd.DataFrame, hs_code: str, year: str, month: str):
if table_data is None or table_data.empty:
return "ابتدا باید اطلاعات واردات را نمایش دهید."
table_str = table_data.to_string(index=False)
period = f"{year}/{int(month):02d}"
prompt = (
f"The following table shows countries that imported a product with HS code {hs_code} during the period {period}:\n"
f"{table_str}\n\n"
f"Please provide a detailed analysis in two complete paragraphs. The first paragraph should discuss the market opportunities and potential demand for this product in these countries. The second paragraph should offer strategic recommendations for exporters targeting these markets, focusing on trade strategies and risk management."
)
print("پرامپت ساختهشده:")
print(prompt)
try:
print("در حال فراخوانی مدل mistralai/Mixtral-8x7B-Instruct-v0.1...")
outputs = client.text_generation(
prompt=prompt,
model="mistralai/Mixtral-8x7B-Instruct-v0.1",
max_new_tokens=512
)
print("خروجی مدل دریافت شد (به انگلیسی):")
print(outputs)
# ترجمه خروجی به فارسی
translated_outputs = translator.translate(outputs, src='en', dest='fa').text
print("خروجی ترجمهشده به فارسی:")
print(translated_outputs)
return translated_outputs
except Exception as e:
error_msg = f"خطا در تولید مشاوره: {str(e)}"
print(error_msg)
return error_msg
current_year = pd.Timestamp.now().year
years = [str(y) for y in range(2000, current_year+1)]
months = [str(m) for m in range(1, 13)]
with gr.Blocks() as demo:
gr.Markdown("## نمایش کشورهایی که یک کالا را وارد کردهاند")
with gr.Row():
inp_hs = gr.Textbox(label="HS Code")
inp_year = gr.Dropdown(choices=years, label="سال", value=str(current_year))
inp_month = gr.Dropdown(choices=months, label="ماه", value=str(pd.Timestamp.now().month))
btn_show = gr.Button("نمایش اطلاعات")
out_table = gr.Dataframe(
headers=["کد کشور", "نام کشور", "ارزش CIF"],
datatype=["number", "text", "number"],
interactive=True,
)
btn_show.click(get_importers, [inp_hs, inp_year, inp_month], out_table)
btn_advice = gr.Button("ارائه مشاوره تخصصی")
out_advice = gr.Textbox(label="مشاوره تخصصی", lines=6)
btn_advice.click(
provide_advice,
inputs=[out_table, inp_hs, inp_year, inp_month],
outputs=out_advice
)
if __name__ == "__main__":
demo.launch() |