尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證LeoEckert/Hypothetically_Speaking
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Hypothetically Speaking — a Longevity AI Scientist
An agent that takes a real ageing/longevity research question in plain
English, autonomously plans, retrieves evidence, calls biological data
tools, runs an in-silico gene/pathway enrichment experiment, and returns a
cited, defensible report — hypothesis, what the evidence supports, what it
doesn't, and the next experiment to run — without a human steering each
step.
Built for the "Build a Longevity AI Scientist" hackathon challenge.檢視完整 README ↗An agent that takes a real ageing/longevity research question in plain English, autonomously plans, retrieves evidence, calls biological data tools, runs an in-silico gene/pathway enrichment experiment, and returns a cited, defensible report — hypothesis, what the evidence supports, what it doesn't, and the next experiment to run — without a human steering each step.
Built for the "Build a Longevity AI Scientist" hackathon challenge.
The web UI (Vite + React + shadcn/ui) also shows, live: the grounding
step that runs before PLAN — the question split into claims, each causal
link checked against the literature, and a knowledge-trajectory graph that
draws itself as the verdicts land — which tools were called and whether
each call was live or mock, a running cost/usage breakdown per provider
(Anthropic/OpenRouter, Nebius, Amass, Tavily — real numbers only, never a
guessed dollar figure), a localStorage-backed history of past runs you
can revisit or fork into a new question, and per-tool enable/disable
switches.
Target runtime: under 20 minutes end-to-end, re-runnable from a clean checkout in under 30.
See docs/ARCHITECTURE.md for the full design.
Short version:
frontend/ Vite + React + shadcn/ui SPA: ask a question, watch the trace, read the report, browse history
backend/agent/ the plan -> retrieve -> compute -> revise -> report loop (provider-agnostic tool-use: OpenRouter free models first, Claude as fallback)
backend/tools/ one wrapper per external tool, each independently toggleable + mockable
backend/server/ FastAPI app: POST /api/run, SSE stream of trace events, tool toggle + cost/usage endpoints
scripts/ run_demo.py (canonical run + saved transcript), validate_citations.py
docs/ architecture notes, deploy guide, demo script, judge instructions
In production, frontend/ and backend/ ship as one Vercel project:
the static Vite build plus a Python serverless function serving /api/*
(see docs/DEPLOY.md). Locally they're still two independent processes on
localhost — run both at once (see Setup below).
| Tool | Purpose | Auth | Live/keyless |
|---|---|---|---|
| Tavily | live web/paper/trial/news retrieval | API key | live |
| Amass | scientific memory: literature, trials, patents, bio data | API key | live |
| Open Targets | target–disease association evidence | none | live, keyless |
| PubMed E-utilities | structured literature search with verifiable PMIDs | none | live, keyless |
| ClinicalTrials.gov API v2 | trial-stage evidence for a target/compound | none | live, keyless |
| GenAge / DrugAge (HAGR) | curated ageing-gene and longevity-compound databases | none | local dataset, downloaded once |
| g:Profiler | gene/pathway enrichment analysis (the in-silico experiment) | none | live, keyless |
| Nebius-hosted model | gene/entity extraction from retrieved abstracts, feeds enrichment | API key | live |
Every tool is individually toggleable — via ENABLED_TOOLS in .env, or
live from the web UI's "Available tools" switches (applies starting with
the next run, never an in-flight one). Disabling one should visibly
change the report, proving the tools are inside the reasoning loop rather
than decorative. Every tool also has a mock/offline fallback so the demo
survives a dead key or rate limit.
# backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # local-dev convenience: OPENROUTER_API_KEY (free) and/or ANTHROPIC_API_KEY; TAVILY/AMASS/NEBIUS optional
# which Claude model each deployment uses is backend/config/models.toml (dev preview = Haiku only)
python scripts/fetch_datasets.py # downloads GenAge/DrugAge CSVs once
uvicorn backend.server.app:app --reload # http://localhost:8000 (API only)
# frontend (separate terminal)
cd frontend
npm install
npm run dev # http://localhost:5173 — talks to the backend above by default
Open http://localhost:5173, type a longevity question, watch it run.
This local setup is fully self-contained — it never talks to any
deployed service. The frontend's backend URL (VITE_API_BASE_URL) only
matters for a deployed build; in vite dev it always falls back to
http://localhost:8000. In production this same frontend calls same-origin
/api/*, served by a single Vercel project — see docs/DEPLOY.md.
scripts/run_demo.py runs the agent end-to-end on the canonical demo
question and saves the full trace + report under backend/reports/, so
there is always a re-playable artifact even if a live API is unavailable
during judging. See docs/DEMO_SCRIPT.md.
Deployed: one Vercel project serving both the static frontend and the
backend as a Python serverless function (see docs/DEPLOY.md for the
current URL and the full setup, including a Vercel-account-specific gotcha
in how the backend's Python function is bridged). No LLM key is
platform-held — every visitor brings their own free OpenRouter key (or an
Anthropic key) via a required onboarding popup — keys and model picks are
remembered by the browser (Settings), and with both keys a run starts on
Claude and falls back to the free OpenRouter models only if Claude fails; see
docs/DEPLOY.md. See
docs/ARCHITECTURE.md for open TODOs — notably that NEBIUS_API_KEY is
unset by default, so extract_genes runs on its regex-heuristic fallback
rather than the real Nebius-hosted NER model unless a user brings their own
key.