MCP_Res / app.py
mgbam's picture
Update app.py
1786f57 verified
raw
history blame
1.44 kB
# app.py
import asyncio, streamlit as st, pandas as pd
from mcp.orchestrator import orchestrate_search
st.set_page_config(layout="wide", page_title="MedGenesis AI")
if "res" not in st.session_state: st.session_state.res = None
st.title("🧬 MedGenesis AI")
llm = st.radio("LLM engine", ["openai","gemini"], horizontal=True)
q = st.text_input("Enter biomedical question")
if st.button("Run Search") and q:
with st.spinner("Fetching data…"):
st.session_state.res = asyncio.run(orchestrate_search(q, llm=llm))
res = st.session_state.res
if res:
st.subheader("🔬 Papers")
for p in res["papers"]:
st.markdown(f"**[{p['title']}]({p['link']})** – {p['authors']}")
st.write(p["summary"])
st.subheader("💡 AI Summary")
st.info(res["ai_summary"])
tabs = st.tabs(["Graph","Variants","Trials"])
with tabs[0]:
from mcp.knowledge_graph import build_agraph
nodes, edges, cfg = build_agraph(res)
from streamlit_agraph import agraph
agraph(nodes, edges, cfg)
with tabs[1]:
if res["variants"]:
st.json(res["variants"])
else:
st.warning("No variants found. Try TP53 or BRCA1.")
with tabs[2]:
if res["trials"]:
st.json(res["trials"])
else:
st.warning("No trials. Try a disease e.g. ‘Breast Neoplasms’ or a drug.")
else:
st.info("Enter a query and press Run Search.")