lanny xu commited on
Commit
92c9888
·
1 Parent(s): 9285882

delete gradio

Browse files
Files changed (1) hide show
  1. kaggle_gradio_app.py +0 -208
kaggle_gradio_app.py DELETED
@@ -1,208 +0,0 @@
1
- """
2
- Kaggle Gradio 智能问答界面
3
- 适合在 Kaggle Notebook 中运行的交互式 RAG 系统
4
- """
5
-
6
- import gradio as gr
7
- import sys
8
- import os
9
-
10
- # 添加项目路径
11
- if '/kaggle/working/adaptive_RAG' not in sys.path:
12
- sys.path.insert(0, '/kaggle/working/adaptive_RAG')
13
-
14
- from main import AdaptiveRAGSystem
15
-
16
-
17
- class RAGChatInterface:
18
- """RAG聊天界面"""
19
-
20
- def __init__(self):
21
- """初始化RAG系统"""
22
- print("🚀 正在初始化RAG系统...")
23
- try:
24
- self.rag_system = AdaptiveRAGSystem()
25
- self.initialized = True
26
- print("✅ RAG系统初始化成功")
27
- except Exception as e:
28
- print(f"❌ RAG系统初始化失败: {e}")
29
- self.initialized = False
30
- self.error_message = str(e)
31
-
32
- def chat(self, message, history):
33
- """
34
- 处理聊天消息
35
-
36
- Args:
37
- message: 用户输入的消息
38
- history: 聊天历史记录
39
-
40
- Returns:
41
- 响应消息
42
- """
43
- if not self.initialized:
44
- return f"❌ 系统未初始化: {self.error_message}"
45
-
46
- if not message or not message.strip():
47
- return "⚠️ 请输入有效的问题"
48
-
49
- try:
50
- # 查询RAG系统
51
- result = self.rag_system.query(message, verbose=False)
52
-
53
- # 构建响应
54
- answer = result.get('answer', '无法生成答案')
55
-
56
- # 添加评估指标(可选)
57
- metrics = result.get('retrieval_metrics')
58
- if metrics:
59
- metrics_text = f"\n\n📊 检索指标:\n"
60
- metrics_text += f"- 耗时: {metrics.get('latency', 0):.2f}秒\n"
61
- metrics_text += f"- 文档数: {metrics.get('retrieved_docs_count', 0)}\n"
62
- metrics_text += f"- Precision@3: {metrics.get('precision_at_3', 0):.2f}\n"
63
- # answer += metrics_text # 取消注释以显示指标
64
-
65
- return answer
66
-
67
- except Exception as e:
68
- return f"❌ 查询失败: {str(e)}"
69
-
70
- def create_interface(self):
71
- """创建Gradio界面(兼容性增强版)"""
72
-
73
- # 创建简单的聊天界面(避免版本兼容问题)
74
- with gr.Blocks(title="🤖 自适应RAG智能问答") as demo:
75
- gr.Markdown(
76
- """
77
- # 🤖 自适应RAG智能问答系统
78
-
79
- 基于LangGraph的自适应检索增强生成系统
80
-
81
- **使用方法**: 在下方输入框输入问题,系统会自动选择最佳检索策略并生成答案。
82
- """
83
- )
84
-
85
- # 聊天界面(使用最简单的配置)
86
- chatbot = gr.Chatbot(
87
- label="对话历史",
88
- height=500
89
- )
90
-
91
- # 输入框
92
- msg = gr.Textbox(
93
- label="输入问题",
94
- placeholder="例如: AlphaCodium论文讲的是什么?",
95
- lines=2
96
- )
97
-
98
- with gr.Row():
99
- submit_btn = gr.Button("🚀 发送", variant="primary")
100
- clear_btn = gr.Button("🗑️ 清空对话")
101
-
102
- # 示例问题
103
- gr.Examples(
104
- examples=[
105
- "AlphaCodium论文讲的是什么?",
106
- "解释embedding嵌入的原理",
107
- "什么是LLM Agent?",
108
- "如何防止LLM产生幻觉?",
109
- ],
110
- inputs=msg,
111
- label="💡 示例问题"
112
- )
113
-
114
- # 状态信息
115
- if self.initialized:
116
- gr.Markdown("✅ **系统状态**: 运行正常")
117
- else:
118
- gr.Markdown(f"❌ **系统状态**: 初始化失败 - {self.error_message}")
119
-
120
- # 事件绑定
121
- def respond(message, chat_history):
122
- """响应用户消息"""
123
- if not message:
124
- return "", chat_history
125
-
126
- # 添加用户消息到历史
127
- chat_history.append((message, None))
128
-
129
- # 获取AI响应
130
- bot_message = self.chat(message, chat_history)
131
-
132
- # 更新历史
133
- chat_history[-1] = (message, bot_message)
134
-
135
- return "", chat_history
136
-
137
- # 绑定发送按钮
138
- submit_btn.click(
139
- respond,
140
- inputs=[msg, chatbot],
141
- outputs=[msg, chatbot]
142
- )
143
-
144
- # 绑定回车键
145
- msg.submit(
146
- respond,
147
- inputs=[msg, chatbot],
148
- outputs=[msg, chatbot]
149
- )
150
-
151
- # 清空对话
152
- clear_btn.click(lambda: None, None, chatbot, queue=False)
153
-
154
- return demo
155
-
156
-
157
- def launch_app(share=False, server_port=None):
158
- """
159
- 启动Gradio应用
160
-
161
- Args:
162
- share: 是否创建公开链接(Kaggle中建议False)
163
- server_port: 服务器端口(None表示自动选择)
164
- """
165
- print("=" * 60)
166
- print("🚀 启动 Gradio RAG 智能问答系统")
167
- print("=" * 60)
168
-
169
- # 检查是否在Kaggle环境
170
- is_kaggle = os.path.exists('/kaggle/working')
171
-
172
- if is_kaggle:
173
- print("🎯 检测到 Kaggle 环境")
174
- print("💡 提示: 运行后会显示本地URL")
175
-
176
- # 创建界面
177
- interface = RAGChatInterface()
178
- demo = interface.create_interface()
179
-
180
- # 启动服务
181
- print(f"\n🌐 正在启动服务...")
182
-
183
- # Kaggle 环境特殊配置
184
- if is_kaggle:
185
- # 在 Kaggle 中必须使用 share=True 或 inline 模式
186
- demo.launch(
187
- share=True, # Kaggle 中强制使用 share
188
- server_name="0.0.0.0",
189
- server_port=server_port, # None会自动选择端口
190
- show_error=True,
191
- inline=True, # 内嵌显示
192
- quiet=False
193
- )
194
- else:
195
- # 本地环境配置
196
- demo.launch(
197
- share=share,
198
- server_port=server_port if server_port else 7860,
199
- server_name="0.0.0.0",
200
- show_error=True,
201
- quiet=False
202
- )
203
-
204
-
205
- if __name__ == "__main__":
206
- # 在Kaggle Notebook中运行时自动启动
207
- # server_port=None 会自动选择可用端口,避免端口冲突
208
- launch_app(share=False, server_port=None)