Spaces:
Running
Running
| title: DeepCritical | |
| emoji: 🧬 | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: gradio | |
| sdk_version: "6.0.1" | |
| python_version: "3.11" | |
| app_file: src/app.py | |
| pinned: false | |
| license: mit | |
| tags: | |
| - mcp-in-action-track-enterprise | |
| - mcp-hackathon | |
| - drug-repurposing | |
| - biomedical-ai | |
| - pydantic-ai | |
| - llamaindex | |
| - modal | |
| # DeepCritical | |
| ## Intro | |
| ## Features | |
| - **Multi-Source Search**: PubMed, ClinicalTrials.gov, bioRxiv/medRxiv | |
| - **MCP Integration**: Use our tools from Claude Desktop or any MCP client | |
| - **Modal Sandbox**: Secure execution of AI-generated statistical code | |
| - **LlamaIndex RAG**: Semantic search and evidence synthesis | |
| - **HuggingfaceInference**: | |
| - **HuggingfaceMCP Custom Config To Use Community Tools**: | |
| - **Strongly Typed Composable Graphs**: | |
| - **Specialized Research Teams of Agents**: | |
| ## Quick Start | |
| ### 1. Environment Setup | |
| ```bash | |
| # Install uv if you haven't already | |
| pip install uv | |
| # Sync dependencies | |
| uv sync | |
| ``` | |
| ### 2. Run the UI | |
| ```bash | |
| # Start the Gradio app | |
| uv run gradio run src/app.py | |
| ``` | |
| Open your browser to `http://localhost:7860`. | |
| ### 3. Connect via MCP | |
| This application exposes a Model Context Protocol (MCP) server, allowing you to use its search tools directly from Claude Desktop or other MCP clients. | |
| **MCP Server URL**: `http://localhost:7860/gradio_api/mcp/` | |
| **Claude Desktop Configuration**: | |
| Add this to your `claude_desktop_config.json`: | |
| ```json | |
| { | |
| "mcpServers": { | |
| "deepcritical": { | |
| "url": "http://localhost:7860/gradio_api/mcp/" | |
| } | |
| } | |
| } | |
| ``` | |
| **Available Tools**: | |
| - `search_pubmed`: Search peer-reviewed biomedical literature. | |
| - `search_clinical_trials`: Search ClinicalTrials.gov. | |
| - `search_biorxiv`: Search bioRxiv/medRxiv preprints. | |
| - `search_all`: Search all sources simultaneously. | |
| - `analyze_hypothesis`: Secure statistical analysis using Modal sandboxes. | |
| ## Architecture | |
| DeepCritical uses a Vertical Slice Architecture: | |
| 1. **Search Slice**: Retrieving evidence from PubMed, ClinicalTrials.gov, and bioRxiv. | |
| 2. **Judge Slice**: Evaluating evidence quality using LLMs. | |
| 3. **Orchestrator Slice**: Managing the research loop and UI. | |
| - iterativeResearch | |
| - deepResearch | |
| - researchTeam | |
| ### Iterative Research | |
| sequenceDiagram | |
| participant IterativeFlow | |
| participant ThinkingAgent | |
| participant KnowledgeGapAgent | |
| participant ToolSelector | |
| participant ToolExecutor | |
| participant JudgeHandler | |
| participant WriterAgent | |
| IterativeFlow->>IterativeFlow: run(query) | |
| loop Until complete or max_iterations | |
| IterativeFlow->>ThinkingAgent: generate_observations() | |
| ThinkingAgent-->>IterativeFlow: observations | |
| IterativeFlow->>KnowledgeGapAgent: evaluate_gaps() | |
| KnowledgeGapAgent-->>IterativeFlow: KnowledgeGapOutput | |
| alt Research complete | |
| IterativeFlow->>WriterAgent: create_final_report() | |
| WriterAgent-->>IterativeFlow: final_report | |
| else Gaps remain | |
| IterativeFlow->>ToolSelector: select_agents(gap) | |
| ToolSelector-->>IterativeFlow: AgentSelectionPlan | |
| IterativeFlow->>ToolExecutor: execute_tool_tasks() | |
| ToolExecutor-->>IterativeFlow: ToolAgentOutput[] | |
| IterativeFlow->>JudgeHandler: assess_evidence() | |
| JudgeHandler-->>IterativeFlow: should_continue | |
| end | |
| end | |
| ### Deep Research | |
| sequenceDiagram | |
| actor User | |
| participant GraphOrchestrator | |
| participant InputParser | |
| participant GraphBuilder | |
| participant GraphExecutor | |
| participant Agent | |
| participant BudgetTracker | |
| participant WorkflowState | |
| User->>GraphOrchestrator: run(query) | |
| GraphOrchestrator->>InputParser: detect_research_mode(query) | |
| InputParser-->>GraphOrchestrator: mode (iterative/deep) | |
| GraphOrchestrator->>GraphBuilder: build_graph(mode) | |
| GraphBuilder-->>GraphOrchestrator: ResearchGraph | |
| GraphOrchestrator->>WorkflowState: init_workflow_state() | |
| GraphOrchestrator->>BudgetTracker: create_budget() | |
| GraphOrchestrator->>GraphExecutor: _execute_graph(graph) | |
| loop For each node in graph | |
| GraphExecutor->>Agent: execute_node(agent_node) | |
| Agent->>Agent: process_input | |
| Agent-->>GraphExecutor: result | |
| GraphExecutor->>WorkflowState: update_state(result) | |
| GraphExecutor->>BudgetTracker: add_tokens(used) | |
| GraphExecutor->>BudgetTracker: check_budget() | |
| alt Budget exceeded | |
| GraphExecutor->>GraphOrchestrator: emit(error_event) | |
| else Continue | |
| GraphExecutor->>GraphOrchestrator: emit(progress_event) | |
| end | |
| end | |
| GraphOrchestrator->>User: AsyncGenerator[AgentEvent] | |
| ### Research Team | |
| Critical Deep Research Agent | |
| ## Development | |
| ### Run Tests | |
| ```bash | |
| uv run pytest | |
| ``` | |
| ### Run Checks | |
| ```bash | |
| make check | |
| ``` | |
| ## Join Us | |
| - The-Obstacle-Is-The-Way | |
| - MarioAderman | |
| - Josephrp | |
| ## Links | |
| - [GitHub Repository](https://github.com/The-Obstacle-Is-The-Way/DeepCritical-1) |