mgokg commited on
Commit
eebf1aa
·
verified ·
1 Parent(s): af7a20a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -53
app.py CHANGED
@@ -1,59 +1,19 @@
1
- import os
2
  import asyncio
3
- import gradio as gr
4
- from google import genai
5
- from google.genai import types
6
 
7
- # Korrekte Import-Struktur für 2026
8
- from mcp import ClientSession
9
- from mcp.client.streamable_http import streamablehttp_client
10
-
11
- async def generate(input_text):
12
- mcp_url = "https://mgokg-db-timetable-api.hf.space"
13
-
14
  try:
15
- client = genai.Client(api_key=os.environ.get("GEMINI_API_KEY"))
16
-
17
- async with streamablehttp_client(mcp_url) as (read_stream, write_stream):
18
- async with ClientSession(read_stream, write_stream) as mcp_session:
19
- await mcp_session.initialize()
20
-
21
- model_id = "gemini-2.0-flash"
22
-
23
- generate_content_config = types.GenerateContentConfig(
24
- temperature=0.4,
25
- tools=[
26
- types.Tool(google_search=types.GoogleSearch()),
27
- # Überprüfen, ob mcp_session hier korrekt verwendet wird
28
- types.Tool(mcp_session=mcp_session) # Beispiel für die korrekte Verwendung
29
- ],
30
- )
31
-
32
- response_text = ""
33
- async for chunk in client.aio.models.generate_content_stream(
34
- model=model_id,
35
- contents=input_text,
36
- config=generate_content_config,
37
- ):
38
- if chunk.text:
39
- response_text += chunk.text
40
-
41
- return response_text, ""
42
-
43
  except Exception as e:
44
- return f"Verbindungsfehler zum MCP-Server oder Gemini: {str(e)}", ""
45
 
46
- def gradio_wrapper(input_text):
47
- return asyncio.run(generate(input_text))
 
 
 
 
48
 
49
- if __name__ == '__main__':
50
- with gr.Blocks() as demo:
51
- gr.Markdown("# Gemini Flash + DB Timetable (Hugging Face MCP)")
52
- with gr.Row():
53
- input_tx = gr.Textbox(label="Anfrage", placeholder="Nächster Zug von Berlin nach Hamburg?")
54
- btn = gr.Button("Senden")
55
- output_md = gr.Markdown()
56
-
57
- btn.click(fn=gradio_wrapper, inputs=input_tx, outputs=[output_md, input_tx])
58
-
59
- demo.launch()
 
 
1
  import asyncio
 
 
 
2
 
3
+ async def connect_to_server(server):
 
 
 
 
 
 
4
  try:
5
+ # Simulierte Verbindung zum Server
6
+ await asyncio.sleep(1) # Simuliert eine Verzögerung
7
+ raise ConnectionError("Verbindungsfehler") # Simuliert einen Verbindungsfehler
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  except Exception as e:
9
+ print(f"Fehler beim Verbinden mit {server}: {e}")
10
 
11
+ async def main():
12
+ servers = ["MCP-Server", "Gemini"]
13
+ tasks = [connect_to_server(server) for server in servers]
14
+
15
+ # Verwendung von asyncio.gather, um alle Aufgaben zu verwalten
16
+ await asyncio.gather(*tasks, return_exceptions=True)
17
 
18
+ # Ausführung des Hauptprogramms
19
+ asyncio.run(main())