Spaces:
Running
Running
File size: 3,148 Bytes
83a2a70 3ba690a 83a2a70 c62298d 83a2a70 3ba690a e5574dd 3ba690a 5ead8fb 3ba690a 99af9f6 c62298d 3ba690a 9a96732 83a2a70 9a96732 83a2a70 d59b989 9a96732 83a2a70 27d5142 83a2a70 e5574dd 3ba690a 99af9f6 3ba690a e5574dd 83a2a70 99af9f6 c62298d 9a96732 83a2a70 04460c9 83a2a70 d59b989 83a2a70 04460c9 3ba690a |
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 |
import os
import gradio as gr
import pandas as pd
import comtradeapicall
from huggingface_hub import InferenceApi
subscription_key = os.getenv("COMTRADE_API_KEY", "")
hf_token = os.getenv("HF_API_TOKEN", None)
proxy_url = None
inference = InferenceApi(repo_id="google/gemma-2b", token=hf_token)
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,
proxy_url=proxy_url
)
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, hs_code: str, year: str, month: str):
if not table_data:
return "ابتدا باید اطلاعات واردات را نمایش دهید."
df = pd.DataFrame(table_data, columns=["کد کشور","نام کشور","ارزش CIF"])
table_str = df.to_string(index=False)
period = f"{year}/{int(month):02d}"
prompt = (
f"جدول زیر کشورهایی را نشان میدهد که کالا با کد HS {hs_code} را در دوره {period} وارد کردهاند:\n"
f"{table_str}\n\n"
"لطفاً بر اساس این اطلاعات دو پاراگراف مشاوره تخصصی بنویسید."
)
raw = inference(prompt, raw_response=True)
return raw.text
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, # حتما interactive=True تا داده به صورت لیست برگردد
)
btn_show.click(get_importers, inputs=[inp_hs, inp_year, inp_month], outputs=out_table)
btn_advice = gr.Button("ارائه مشاوره تخصصی")
out_advice = gr.Textbox(label="مشاوره تخصصی", lines=5)
btn_advice.click(
provide_advice,
inputs=[out_table, inp_hs, inp_year, inp_month],
outputs=out_advice
)
if __name__ == "__main__":
demo.launch()
|