
CogniGraph – mô tả một kịch bản, LLM chọn một thùy não và chất điều biến thần kinh.
URL bài viết: https://github.com/madara88645/Cognigraph URL bình luận: https://news.ycombinator.com/item?id=48396828 Điểm: 1 Bình luận: 0
CogniGraph
CogniGraph (thư mục kho lưu trữ: Cognigraph) là một bản demo giáo dục nhỏ: người dùng mô tả một kịch bản thực tế, một mô hình ngôn ngữ lớn (LLM) phân loại thùy não và tông màu chất điều hòa thần kinh, một mạng lưới thần kinh gai (SNN) Brian2 được mô phỏng, và một giao diện người dùng web trực quan hóa hoạt động trên mô hình não 3D. Giao diện người dùng được phục vụ từ / dưới dạng HTML tĩnh cộng với các mô-đun ES trong frontend/js/ (không có bộ đóng gói); các khóa OpenRouter tùy chọn chỉ được nhập trong bảng Cài đặt API trên trang (không có tuyến xác thực hoặc chuyển hướng riêng).
Đây không phải là phần mềm y tế. Các kết quả chỉ dành cho mục đích trực quan hóa và học tập, không dùng để chẩn đoán hoặc điều trị. Giao diện người dùng bao gồm ngữ cảnh cho các trục hormone căng thẳng được mô hình hóa (ví dụ: HPA / cortisol) như các phép ẩn dụ mô phỏng, không phải các phép đo lâm sàng. Đối với cortisol, neuromodulator_intensity chọn một chế độ mô phỏng tải cấp tính tối ưu so với tải mãn tính (ngưỡng tại 0,5), không phải nồng độ hormone.
Ảnh chụp màn hình
Trình xem kích hoạt thần kinh — nhập kịch bản, điều khiển phát lại và phân tích nhận thức (ví dụ: Nâng tạ nặng).
Chế độ xem mô phỏng — lưới thùy màu, bộ đếm gai, ngữ cảnh HPA và nhật ký sự kiện sau khi phát lại hoàn tất.
Kiến trúc (đường ống yêu cầu)
flowchart LR
U[Kịch bản người dùng] --> FE[index.html / Phân tích]
FE -- POST /simulate --> API[FastAPI backend/main.py]
API --> LLM[OpenRouter LLM classify_scenario]
LLM --> NM[neuromodulation.py validate + giải quyết tham số]
NM --> SNN[Brian2 SNN run_snn]
SNN --> VFX[build_vfx_profile]
VFX -- JSON --> FE
FE --> Three[Three.js kết xuất phát sáng/nở]
Đang tải
Yêu cầu
Khuyến nghị Python 3.10+ (yêu cầu 3.x)
pip
Brian2 có thể cần trình biên dịch C trên một số nền tảng để đạt hiệu suất tối đa; xem tài liệu cài đặt Brian2.
Thiết lập
cd Cognigraph
python -m venv .venv
# Windows: .venv\Scripts\activate
# Unix: source .venv/bin/activate
pip install -r requirements.txt
Cấu hình
Sao chép .env.example vào .env trong thư mục gốc của dự án.
Đặt OPENROUTER_API_KEY từ OpenRouter.
Tùy chọn đặt OPENROUTER_DEMO_MODEL (mặc định: qwen/qwen3.5-flash-02-23) — được sử dụng cho lưu lượng truy cập ẩn danh / không có khóa trình duyệt trên các bản demo công khai, với lời nhắc hệ thống kiểu nhà giáo dục mạnh mẽ hơn. Các lựa chọn thay thế: openai/gpt-oss-120b, hoặc openai/gpt-oss-120b:free cho cấp độ miễn phí (áp dụng giới hạn tốc độ). Xem các mô hình.
Tùy chọn đặt OPENROUTER_MODEL (mặc định: deepseek/deepseek-v4-flash) — chỉ được sử dụng khi khách truy cập lưu khóa riêng của họ trong giao diện người dùng (X-OpenRouter-Api-Key); họ trả tiền cho OpenRouter, không phải bạn.
Không bao giờ cam kết .env; nó được liệt kê trong .gitignore.
Chạy
Từ thư mục gốc của kho lưu trữ (với các phụ thuộc đã cài đặt):
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reload
Sau đó mở http://127.0.0.1:8000.
Windows: nhấp đúp vào start-cognigraph.bat, hoặc sử dụng Baslat-Cognigraph.bat cho các thông báo tiếng Thổ Nhĩ Kỳ.
Chạy cục bộ theo kiểu sản xuất
Sử dụng lệnh này để kiểm tra giống sản xuất (không có --reload):
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000
Kiểm tra
pytest
Cấu hình: pytest.ini, các bài kiểm tra trong tests/.
API
Phương thức
Đường dẫn
Mô tả
GET
/
Phục vụ giao diện người dùng web (frontend/index.html).
GET
/healthz
Điểm cuối kiểm tra tình trạng nhẹ cho các thăm dò nền tảng.
POST
/simulate
Chạy phân loại + SNN + trả về các gai và tiếng vang VFX.
POST /simulate JSON body:
Trường
Loại
Mô tả
prompt
chuỗi
Văn bản kịch bản (1–1000 ký tự).
Tiêu đề yêu cầu tùy chọn (cùng nguồn gốc với giao diện người dùng; không bắt buộc đối với bản demo được chia sẻ):
Tiêu đề
Khi nào
Mô tả
X-OpenRouter-Api-Key
BYOK
Khóa OpenRouter của khách truy cập; thanh toán trên tài khoản của họ.
X-OpenRouter-Model
BYOK
Định danh mô hình OpenRouter (ví dụ: deepseek/deepseek-v4-flash). Bị bỏ qua nếu không có X-OpenRouter-Api-Key. Các giá trị không hợp lệ sẽ quay về OPENROUTER_MODEL.
Phản hồi (đơn giản hóa): active_lobe, dominant_neuromodulator, neuromodulator_intensity, neuromodulator_rationale, explanation, duration_ms, spikes (chỉ số và thời gian xung của từng thùy), snn_modulation, vfx_profile.
Nếu OPENROUTER_API_KEY bị thiếu, API sẽ trả về lỗi 503 kèm thông báo rõ ràng.
Các tệp tĩnh được gắn tại /static từ thư mục frontend/.
Triển khai
Triển khai trực tiếp
Fly.io (backend /simulate chính): https://cognigraph-13906.fly.dev
Vercel (giao diện người dùng phản chiếu, ủy quyền /simulate tới Fly): https://cognigraph-tau.vercel.app
Mối quan hệ giữa hai máy chủ: Fly chạy toàn bộ ngăn xếp FastAPI + Brian2 trong một máy ảo Docker tồn tại lâu dài (khởi động nhanh nhờ min_machines_running = 1). Vercel phục vụ giao diện người dùng tĩnh và viết lại /simulate và /healthz thành các proxy bên ngoài tới Fly (vercel.json). Do đó, trang Vercel hoạt động end-to-end mà không cần OPENROUTER_API_KEY trên Vercel — khóa máy chủ nằm trên Fly. Việc viết lại cùng nguồn gốc có nghĩa là trình duyệt vẫn POST tới cognigraph-tau.vercel.app/simulate, vì vậy CORS không áp dụng và các tiêu đề BYOK (X-OpenRouter-Api-Key, X-OpenRouter-Model) được truyền qua nguyên vẹn.
Độ trễ: Phân tích thường mất 6–10 giây trên một máy Fly đã khởi động (LLM + Brian2). Đường dẫn được ủy quyền qua Vercel bổ sung thêm một bước nhảy nhỏ ở biên. Đường dẫn hàm Vercel-Python cũ (khởi động Brian2 trong ngân sách serverless 10–60 giây) không còn được sử dụng cho /simulate.
Mô hình bảo mật cho khóa API
Mỗi người dùng có thể cung cấp khóa OpenRouter của riêng mình trong giao diện người dùng (bảng Cài đặt API).
Khóa được lưu trữ trong bộ nhớ cục bộ của trình duyệt người dùng và được gửi dưới dạng X-OpenRouter-Api-Key.
ID mô hình tùy chọn từ cùng bảng điều khiển được gửi dưới dạng X-OpenRouter-Model khi có khóa người dùng; nếu bị bỏ qua hoặc không hợp lệ, máy chủ sẽ sử dụng OPENROUTER_MODEL. Nếu không có khóa người dùng, X-OpenRouter-Model sẽ bị bỏ qua (lưu lượng truy cập chia sẻ luôn sử dụng OPENROUTER_DEMO_MODEL).
Khóa môi trường phía máy chủ (OPENROUTER_API_KEY) vẫn được hỗ trợ làm dự phòng cho những khách truy cập không thêm khóa.
Các yêu cầu không có X-OpenRouter-Api-Key sử dụng OPENROUTER_DEMO_MODEL (mặc định qwen/qwen3.5-flash-02-23) cộng với lời nhắc hệ thống của nhà khoa học thần kinh-nhà giáo dục; các yêu cầu có khóa người dùng sử dụng OPENROUTER_MODEL hoặc giá trị X-OpenRouter-Model đã được xác thực (thanh toán trên tài khoản OpenRouter của họ).
Đối với các thiết bị dùng chung/công cộng, người dùng nên xóa khóa đã lưu sau khi sử dụng.
Vercel
Vercel được cấu hình như một giao diện người dùng phản chiếu — nó phục vụ giao diện người dùng tĩnh và ủy quyền các điểm cuối động (/simu


Nguồn tin: Hacker News LLM — Tác giả: madara8865. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.