CoolFace
Apppublic

RAHULSR2806/devos-module2

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
utils.py106 linesDownload Raw Back to shared
1"""2DevOS Shared Backend Utilities3Supabase client, Groq client, embeddings, auth middleware4"""5 6import os7from functools import lru_cache8from typing import Optional9import httpx10from supabase import create_client, Client11from groq import Groq12from sentence_transformers import SentenceTransformer13from dotenv import load_dotenv14 15load_dotenv()16 17# ─────────────────────────────────────────18# Supabase Client19# ─────────────────────────────────────────20@lru_cache(maxsize=1)21def get_supabase() -> Client:22    url = os.environ["SUPABASE_URL"]23    key = os.environ["SUPABASE_SERVICE_KEY"]24    return create_client(url, key)25 26# ─────────────────────────────────────────27# Groq Client28# ─────────────────────────────────────────29@lru_cache(maxsize=1)30def get_groq() -> Groq:31    return Groq(api_key=os.environ["GROQ_API_KEY"])32 33# ─────────────────────────────────────────34# Embedding Model (384-dim, fast, free)35# ─────────────────────────────────────────36@lru_cache(maxsize=1)37def get_embedding_model() -> SentenceTransformer:38    return SentenceTransformer("all-MiniLM-L6-v2")39 40def embed_text(text: str) -> list[float]:41    model = get_embedding_model()42    embedding = model.encode(text, normalize_embeddings=True)43    return embedding.tolist()44 45def embed_texts(texts: list[str]) -> list[list[float]]:46    model = get_embedding_model()47    embeddings = model.encode(texts, normalize_embeddings=True, batch_size=32)48    return embeddings.tolist()49 50# ─────────────────────────────────────────51# Groq Chat Helper52# ─────────────────────────────────────────53def groq_chat(54    messages: list[dict],55    model: str = "llama-3.3-70b-versatile",56    temperature: float = 0.3,57    max_tokens: int = 2048,58    system: Optional[str] = None,59) -> str:60    client = get_groq()61    full_messages = []62    if system:63        full_messages.append({"role": "system", "content": system})64    full_messages.extend(messages)65 66    response = client.chat.completions.create(67        model=model,68        messages=full_messages,69        temperature=temperature,70        max_tokens=max_tokens,71    )72    return response.choices[0].message.content73 74def groq_vision(75    image_base64: str,76    prompt: str,77    media_type: str = "image/png",78    model: str = "meta-llama/llama-4-scout-17b-16e-instruct",79) -> str:80    client = get_groq()81    response = client.chat.completions.create(82        model=model,83        messages=[84            {85                "role": "user",86                "content": [87                    {88                        "type": "image_url",89                        "image_url": {90                            "url": f"data:{media_type};base64,{image_base64}"91                        },92                    },93                    {"type": "text", "text": prompt},94                ],95            }96        ],97        max_tokens=2048,98    )99    return response.choices[0].message.content100 101# ─────────────────────────────────────────102# Health Check Response103# ─────────────────────────────────────────104def health_response(module: str) -> dict:105    return {"status": "healthy", "module": module, "version": "1.0.0"}106