JC321 commited on
Commit
a91a3f0
·
verified ·
1 Parent(s): fc525f2

Upload 2 files

Browse files
Files changed (1) hide show
  1. app.py +31 -11
app.py CHANGED
@@ -11,11 +11,21 @@ HEADERS = {
11
  }
12
 
13
  # 初始化 Gradio Client
14
- try:
15
- client = Client(MCP_URL)
16
- except Exception as e:
17
- client = None
18
- print(f"Warning: Failed to initialize Gradio Client: {e}")
 
 
 
 
 
 
 
 
 
 
19
 
20
  def query_financial_data(company_name, query_type):
21
  """查询财务数据的主函数"""
@@ -23,13 +33,23 @@ def query_financial_data(company_name, query_type):
23
  if not company_name:
24
  return "请输入公司名称或股票代码"
25
 
26
- if client is None:
27
- return "❌ Gradio Client 未初始化,无法连接到 MCP 服务"
 
 
 
 
 
 
 
 
 
 
28
 
29
  try:
30
  # 使用 Gradio Client 调用 MCP 服务
31
  # 先搜索公司
32
- company = client.predict(
33
  company_input=company_name,
34
  api_name="/advanced_search"
35
  )
@@ -45,7 +65,7 @@ def query_financial_data(company_name, query_type):
45
 
46
  # 根据查询类型获取数据
47
  if query_type == "最新财务数据":
48
- data = client.predict(
49
  cik=cik,
50
  api_name="/get_latest_financial_data"
51
  )
@@ -60,7 +80,7 @@ def query_financial_data(company_name, query_type):
60
  result += f"- **来源**: {data.get('source_form', 'N/A')}\n"
61
 
62
  elif query_type == "3年趋势":
63
- metrics = client.predict(
64
  cik=cik,
65
  years=3,
66
  api_name="/extract_financial_metrics"
@@ -85,7 +105,7 @@ def query_financial_data(company_name, query_type):
85
  result += f"| FY{period} | ${rev:.2f}B | ${inc:.2f}B | ${eps:.2f} |\n"
86
 
87
  elif query_type == "5年趋势":
88
- metrics = client.predict(
89
  cik=cik,
90
  years=5,
91
  api_name="/extract_financial_metrics"
 
11
  }
12
 
13
  # 初始化 Gradio Client
14
+ client = None
15
+ client_error = None
16
+
17
+ def get_client():
18
+ """获取或初始化 Gradio Client"""
19
+ global client, client_error
20
+ if client is not None:
21
+ return client
22
+
23
+ try:
24
+ client = Client(MCP_URL, verbose=False)
25
+ return client
26
+ except Exception as e:
27
+ client_error = str(e)
28
+ return None
29
 
30
  def query_financial_data(company_name, query_type):
31
  """查询财务数据的主函数"""
 
33
  if not company_name:
34
  return "请输入公司名称或股票代码"
35
 
36
+ # 获取 client
37
+ current_client = get_client()
38
+ if current_client is None:
39
+ error_msg = f"❌ Gradio Client 初始化失败\n\n"
40
+ error_msg += f"**MCP Server**: {MCP_URL}\n"
41
+ if client_error:
42
+ error_msg += f"**错误信息**: {client_error}\n\n"
43
+ error_msg += "**可能原因**:\n"
44
+ error_msg += "- MCP 服务可能正在启动中,请稍后重试\n"
45
+ error_msg += "- MCP 服务可能不可用或已暂停\n"
46
+ error_msg += "- 网络连接问题\n"
47
+ return error_msg
48
 
49
  try:
50
  # 使用 Gradio Client 调用 MCP 服务
51
  # 先搜索公司
52
+ company = current_client.predict(
53
  company_input=company_name,
54
  api_name="/advanced_search"
55
  )
 
65
 
66
  # 根据查询类型获取数据
67
  if query_type == "最新财务数据":
68
+ data = current_client.predict(
69
  cik=cik,
70
  api_name="/get_latest_financial_data"
71
  )
 
80
  result += f"- **来源**: {data.get('source_form', 'N/A')}\n"
81
 
82
  elif query_type == "3年趋势":
83
+ metrics = current_client.predict(
84
  cik=cik,
85
  years=3,
86
  api_name="/extract_financial_metrics"
 
105
  result += f"| FY{period} | ${rev:.2f}B | ${inc:.2f}B | ${eps:.2f} |\n"
106
 
107
  elif query_type == "5年趋势":
108
+ metrics = current_client.predict(
109
  cik=cik,
110
  years=5,
111
  api_name="/extract_financial_metrics"