Initial commit
This commit is contained in:
parent
72e52e5a0a
commit
a900890625
95
organ_store.py
Normal file
95
organ_store.py
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Organ Store — AI Model Component Marketplace
|
||||||
|
Part of the Inference-X Ecosystem
|
||||||
|
# SALKA ELMADANI | inference-x.com | BSL-1.1
|
||||||
|
Copyright (C) 2024-2026 Salka Elmadani. BSL-1.1.
|
||||||
|
https://git.inference-x.com/inference-x-community/organ-store
|
||||||
|
|
||||||
|
Neural networks have anatomy.
|
||||||
|
Extract. Share. Transplant.
|
||||||
|
The future of open AI.
|
||||||
|
"""
|
||||||
|
from fastapi import FastAPI, Request, UploadFile, File
|
||||||
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
from fastapi.responses import JSONResponse
|
||||||
|
import sqlite3, json, time, os
|
||||||
|
|
||||||
|
app = FastAPI(title="Organ Store", version="1.0.0")
|
||||||
|
app.add_middleware(CORSMiddleware, allow_origins=["*"],
|
||||||
|
allow_methods=["*"], allow_headers=["*"])
|
||||||
|
|
||||||
|
DB = os.environ.get("ORGAN_DB", "./organ_store.db")
|
||||||
|
|
||||||
|
ORGAN_TYPES = ["attention_head","ffn_block","expert_block","embedding","lm_head","custom"]
|
||||||
|
|
||||||
|
def db():
|
||||||
|
conn = sqlite3.connect(DB); conn.row_factory = sqlite3.Row; return conn
|
||||||
|
|
||||||
|
def init_db():
|
||||||
|
with db() as c:
|
||||||
|
c.execute("""CREATE TABLE IF NOT EXISTS organs (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT NOT NULL, type TEXT NOT NULL,
|
||||||
|
source_model TEXT, description TEXT,
|
||||||
|
capability TEXT, download_url TEXT,
|
||||||
|
size_mb REAL DEFAULT 0, downloads INTEGER DEFAULT 0,
|
||||||
|
author TEXT DEFAULT 'anonymous', created_at INTEGER,
|
||||||
|
verified INTEGER DEFAULT 0
|
||||||
|
)""")
|
||||||
|
c.commit()
|
||||||
|
|
||||||
|
init_db()
|
||||||
|
|
||||||
|
@app.get("/catalog")
|
||||||
|
async def catalog(type_filter: str = None, limit: int = 50):
|
||||||
|
"""Browse available organs in the store."""
|
||||||
|
with db() as c:
|
||||||
|
q = "SELECT * FROM organs ORDER BY downloads DESC LIMIT ?"
|
||||||
|
params = [limit]
|
||||||
|
if type_filter and type_filter in ORGAN_TYPES:
|
||||||
|
q = "SELECT * FROM organs WHERE type=? ORDER BY downloads DESC LIMIT ?"
|
||||||
|
params = [type_filter, limit]
|
||||||
|
rows = c.execute(q, params).fetchall()
|
||||||
|
return {"organs":[dict(r) for r in rows],"total":len(rows),"types":ORGAN_TYPES}
|
||||||
|
|
||||||
|
@app.post("/publish")
|
||||||
|
async def publish(request: Request):
|
||||||
|
"""Publish an organ to the community store."""
|
||||||
|
data = await request.json()
|
||||||
|
if not data.get("name") or not data.get("type"):
|
||||||
|
return JSONResponse({"error":"name and type required"}, status_code=400)
|
||||||
|
if data["type"] not in ORGAN_TYPES:
|
||||||
|
return JSONResponse({"error":f"type must be one of {ORGAN_TYPES}"}, status_code=400)
|
||||||
|
with db() as c:
|
||||||
|
c.execute("""INSERT INTO organs (name,type,source_model,description,capability,
|
||||||
|
download_url,size_mb,author,created_at)
|
||||||
|
VALUES (?,?,?,?,?,?,?,?,?)""",
|
||||||
|
(data["name"], data["type"], data.get("source_model",""),
|
||||||
|
data.get("description",""), data.get("capability",""),
|
||||||
|
data.get("download_url",""), float(data.get("size_mb",0)),
|
||||||
|
data.get("author","anonymous"), int(time.time())))
|
||||||
|
organ_id = c.lastrowid
|
||||||
|
c.commit()
|
||||||
|
return {"status":"ok","organ_id":organ_id,"message":"Organ published to the community store."}
|
||||||
|
|
||||||
|
@app.get("/organ/{organ_id}")
|
||||||
|
async def get_organ(organ_id: int):
|
||||||
|
with db() as c:
|
||||||
|
organ = c.execute("SELECT * FROM organs WHERE id=?", (organ_id,)).fetchone()
|
||||||
|
if organ:
|
||||||
|
c.execute("UPDATE organs SET downloads=downloads+1 WHERE id=?", (organ_id,))
|
||||||
|
c.commit()
|
||||||
|
if not organ:
|
||||||
|
return JSONResponse({"error":"Organ not found"}, status_code=404)
|
||||||
|
return dict(organ)
|
||||||
|
|
||||||
|
@app.get("/health")
|
||||||
|
async def health():
|
||||||
|
return {"status":"ok","service":"Organ Store","author":"Salka Elmadani"}
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import uvicorn
|
||||||
|
print("Organ Store — AI Model Component Marketplace")
|
||||||
|
print("Extract. Share. Transplant.")
|
||||||
|
uvicorn.run(app, host="0.0.0.0", port=int(os.environ.get("PORT","7939")))
|
||||||
Loading…
Reference in New Issue
Block a user