MGGroup commited on
Commit
5be7dab
·
verified ·
1 Parent(s): 5dcf751

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -29
app.py CHANGED
@@ -2,32 +2,29 @@ import gradio as gr
2
  import requests
3
  import os
4
  import json
5
- import fitz # PyMuPDF
6
- import re
7
 
8
  # --- 核心配置 ---
9
  OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY")
10
- # 默认使用 Gemini 2.0 Flash (OpenRouter 托管),如遇繁忙可改为 "deepseek/deepseek-chat:free"
11
  MODEL_ID = "google/gemini-2.0-flash-001"
12
 
13
  # --- 核心声明 HTML ---
14
  INFO_HTML = """
15
  <div style="text-align: left; border-left: 4px solid #2196F3; padding-left: 15px; margin-bottom: 20px;">
16
  <h3>MG TaxAI | 跨境财税合规实验室 (Beta)</h3>
17
- <p>本系统依托 <b>MG 核心智库</b> 构建,旨在实现解析结果实时溯源至各国官方税收协定与法律文本。目前系统正处于<b>知识库全量装载阶段</b>,已优先上线核心业务国家的官方协定库。</p>
18
- <p>我们正持续同步全球各主要经济体的国别投资税收指南及多税种年度税收报告。受限于测试版的数据填充进度,相关解析结果仅供专业参考。MG团队正加速完善每一条咨询建议的合规证据链,以确保交付专家级的数字化合规支持。</p>
19
  <hr style="border: 0; border-top: 1px solid #eee; margin: 10px 0;">
20
  <p style="font-size: 0.85em; color: #666;">
21
  <b>⚠️ AI 免责声明:</b><br>
22
- 本系统生成的内容由人工智能根据现有库文件分析得出,不构成正式的法律或税务建议。在使用本系统结果进行任何商业决策前,请务必咨询 MG Consult 专业团队。
23
  </p>
24
  </div>
25
  """
26
 
27
  # --- API 调用逻辑 ---
28
- def ask_ai(user_query):
29
  if not OPENROUTER_API_KEY:
30
- return "错误:未检测到 OPENROUTER_API_KEY,请在环境变量中配置。"
31
 
32
  url = "https://openrouter.ai/api/v1/chat/completions"
33
  headers = {
@@ -37,36 +34,35 @@ def ask_ai(user_query):
37
 
38
  payload = {
39
  "model": MODEL_ID,
40
- "messages": [
41
- {"role": "system", "content": "你是一个专业的国际税务与贸易合规专家。请用专业、严谨的中文回答。"},
42
- {"role": "user", "content": user_query}
43
- ],
44
  "temperature": 0.5
45
  }
46
 
47
  try:
48
- response = requests.post(url, headers=headers, data=json.dumps(payload), timeout=40)
49
  if response.status_code == 200:
50
- result = response.json()
51
- return result['choices'][0]['message']['content']
52
- else:
53
- return f"API 访问异常 (Code {response.status_code}): {response.text}"
54
  except Exception as e:
55
- return f"系统连接失败: {str(e)}"
56
 
57
- # --- 构建 Gradio UI ---
58
- with gr.Blocks(title="MG Consulting TaxAI", css="footer {visibility: hidden}") as demo:
59
- # 嵌入你提供的 HTML 声明
 
60
  gr.HTML(INFO_HTML)
61
 
62
- with gr.Row():
63
- with gr.Column():
64
- chatbot = gr.ChatInterface(
65
- fn=lambda message, history: ask_ai(message),
66
- fill_height=True
67
- )
 
 
 
68
 
69
- # --- 启动应用 ---
70
  if __name__ == "__main__":
71
- # 确保 demo.launch() 缩进正确
72
  demo.launch()
 
2
  import requests
3
  import os
4
  import json
 
 
5
 
6
  # --- 核心配置 ---
7
  OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY")
 
8
  MODEL_ID = "google/gemini-2.0-flash-001"
9
 
10
  # --- 核心声明 HTML ---
11
  INFO_HTML = """
12
  <div style="text-align: left; border-left: 4px solid #2196F3; padding-left: 15px; margin-bottom: 20px;">
13
  <h3>MG TaxAI | 跨境财税合规实验室 (Beta)</h3>
14
+ <p>本系统依托 <b>MG 核心智库</b> 构建,旨在实现解析结果实时溯源至各国官方税收协定与法律文本。目前系统正处于<b>知识库全量装载阶段</b>。</p>
15
+ <p>受限于测试版的数据填充进度,相关解析结果仅供专业参考。MG团队正加速完善每一条咨询建议的合规证据链,以确保交付专家级的数字化合规支持。</p>
16
  <hr style="border: 0; border-top: 1px solid #eee; margin: 10px 0;">
17
  <p style="font-size: 0.85em; color: #666;">
18
  <b>⚠️ AI 免责声明:</b><br>
19
+ 本系统生成的内容由人工智能根据现有库文件分析得出,不构成正式的法律或税务建议。
20
  </p>
21
  </div>
22
  """
23
 
24
  # --- API 调用逻辑 ---
25
+ def ask_ai(message, history):
26
  if not OPENROUTER_API_KEY:
27
+ return "错误:未检测到 API Key。"
28
 
29
  url = "https://openrouter.ai/api/v1/chat/completions"
30
  headers = {
 
34
 
35
  payload = {
36
  "model": MODEL_ID,
37
+ "messages": [{"role": "system", "content": "你是一个专业的国际税务专家。"}] +
38
+ [{"role": "user" if i%2==0 else "assistant", "content": h[0] if i%2==0 else h[1]} for i, h in enumerate(history)] +
39
+ [{"role": "user", "content": message}],
 
40
  "temperature": 0.5
41
  }
42
 
43
  try:
44
+ response = requests.post(url, headers=headers, data=json.dumps(payload), timeout=60)
45
  if response.status_code == 200:
46
+ return response.json()['choices'][0]['message']['content']
47
+ return f"接口异常: {response.status_code}"
 
 
48
  except Exception as e:
49
+ return f"连接失败: {str(e)}"
50
 
51
+ # --- 构建界面 ---
52
+ # 使用 fill_height=True 让容器占满浏览器高度
53
+ with gr.Blocks(title="MG Consulting TaxAI", fill_height=True) as demo:
54
+
55
  gr.HTML(INFO_HTML)
56
 
57
+ # 这里的 ChatInterface 设置 fill_height=True
58
+ # 它会自动根据屏幕大小调整高度,不再是短短的一截
59
+ chat_interface = gr.ChatInterface(
60
+ fn=ask_ai,
61
+ fill_height=True,
62
+ retry_btn="🔄 重试",
63
+ undo_btn="↩️ 撤回",
64
+ clear_btn="🗑️ 清除记录",
65
+ )
66
 
 
67
  if __name__ == "__main__":
 
68
  demo.launch()