Spaces:
Running
Running
| """Modal deployment for Spice Bae AI Advisor. | |
| Deploy with: modal deploy modal_app.py | |
| Test locally: modal serve modal_app.py | |
| """ | |
| import modal | |
| app = modal.App("spice-bae") | |
| image = ( | |
| modal.Image.debian_slim(python_version="3.11") | |
| .pip_install( | |
| "gradio[mcp]==5.50.0", | |
| "fastapi[standard]", | |
| "neo4j", | |
| "python-dotenv", | |
| "requests", | |
| "beautifulsoup4>=4.12.0", | |
| ) | |
| .add_local_file("app.py", "/root/app.py") | |
| .add_local_dir("tools", "/root/tools") | |
| .add_local_dir("data", "/root/data") | |
| ) | |
| def serve(): | |
| """Serve the Spice Bae Gradio app.""" | |
| import sys | |
| import os | |
| import subprocess | |
| # Add mounted code directory to Python path | |
| sys.path.insert(0, "/root") | |
| os.chdir("/root") | |
| # Launch Gradio app directly with its built-in server | |
| subprocess.Popen( | |
| [ | |
| sys.executable, | |
| "-c", | |
| """ | |
| import sys | |
| sys.path.insert(0, "/root") | |
| import os | |
| os.chdir("/root") | |
| from app import demo | |
| demo.launch( | |
| server_name="0.0.0.0", | |
| server_port=7860, | |
| mcp_server=True, | |
| share=False, | |
| ssr_mode=False | |
| ) | |
| """ | |
| ], | |
| env={**os.environ} | |
| ) | |
| # Instructions for deployment: | |
| # | |
| # 1. Install Modal CLI: | |
| # pip install modal | |
| # modal setup | |
| # | |
| # 2. Deploy vLLM first (for open-source LLM): | |
| # modal deploy modal_vllm.py | |
| # Note the URL: https://YOUR_USERNAME--spice-bae-llm-serve.modal.run | |
| # | |
| # 3. Create secrets (using vLLM endpoint): | |
| # modal secret create spice-bae-secrets \ | |
| # NEO4J_URI="neo4j+s://xxx.databases.neo4j.io" \ | |
| # NEO4J_USERNAME="neo4j" \ | |
| # NEO4J_PASSWORD="your_password" \ | |
| # OPENAI_API_BASE="https://YOUR_USERNAME--spice-bae-llm-serve.modal.run/v1" \ | |
| # OPENAI_API_KEY="not-needed" \ | |
| # OPENAI_MODEL="Qwen/Qwen2.5-7B-Instruct" | |
| # | |
| # OR use Anthropic instead: | |
| # modal secret create spice-bae-secrets \ | |
| # NEO4J_URI="neo4j+s://xxx.databases.neo4j.io" \ | |
| # NEO4J_USERNAME="neo4j" \ | |
| # NEO4J_PASSWORD="your_password" \ | |
| # ANTHROPIC_API_KEY="sk-ant-xxx" | |
| # | |
| # 4. Deploy: | |
| # modal deploy modal_app.py | |
| # | |
| # 5. Your app will be available at: | |
| # https://your-username--spice-bae-serve.modal.run | |
| # | |
| # MCP Endpoint: | |
| # https://your-username--spice-bae-serve.modal.run/gradio_api/mcp/sse | |