Spaces:
Runtime error
Runtime error
Commit
·
79eca0e
0
Parent(s):
deploy
Browse files- Dockerfile +17 -0
- README.md +8 -0
- Requirements.txt +8 -0
- __pycache__/main.cpython-313.pyc +0 -0
- main.py +8 -0
- models/__pycache__/model_loader.cpython-313.pyc +0 -0
- models/model_loader.py +4 -0
- routes/__pycache__/sms_router.cpython-313.pyc +0 -0
- routes/sms_router.py +24 -0
- schemas/__pycache__/schema.cpython-313.pyc +0 -0
- schemas/schema.py +21 -0
- service/__pycache__/embedded_service.cpython-313.pyc +0 -0
- service/embedded_service.py +8 -0
Dockerfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Use official Python base image
|
| 2 |
+
FROM python:3.9-slim
|
| 3 |
+
|
| 4 |
+
# Set the working directory
|
| 5 |
+
WORKDIR /app
|
| 6 |
+
|
| 7 |
+
# Copy all files to the container
|
| 8 |
+
COPY . /app
|
| 9 |
+
|
| 10 |
+
# Install dependencies
|
| 11 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 12 |
+
|
| 13 |
+
# Expose port (Hugging Face uses port 7860 by default)
|
| 14 |
+
EXPOSE 7860
|
| 15 |
+
|
| 16 |
+
# Run the FastAPI server using uvicorn
|
| 17 |
+
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
|
README.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Embedding FastAPI
|
| 3 |
+
emoji: 🏆
|
| 4 |
+
colorFrom: red
|
| 5 |
+
colorTo: red
|
| 6 |
+
sdk: docker
|
| 7 |
+
pinned: false
|
| 8 |
+
---
|
Requirements.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi
|
| 2 |
+
uvicorn
|
| 3 |
+
sentence-transformers
|
| 4 |
+
torch
|
| 5 |
+
scikit-learn
|
| 6 |
+
numpy
|
| 7 |
+
pandas
|
| 8 |
+
openpyxl
|
__pycache__/main.cpython-313.pyc
ADDED
|
Binary file (311 Bytes). View file
|
|
|
main.py
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import FastAPI
|
| 2 |
+
from routes.sms_router import router as sms_router
|
| 3 |
+
|
| 4 |
+
# Initialize FastAPI app
|
| 5 |
+
app = FastAPI
|
| 6 |
+
|
| 7 |
+
# Include the router for SMS endpoints
|
| 8 |
+
app.include_router(sms_router)
|
models/__pycache__/model_loader.cpython-313.pyc
ADDED
|
Binary file (297 Bytes). View file
|
|
|
models/model_loader.py
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from sentence_transformers import SentenceTransformer
|
| 2 |
+
|
| 3 |
+
# Load the pre-trained model once at startup
|
| 4 |
+
model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
|
routes/__pycache__/sms_router.cpython-313.pyc
ADDED
|
Binary file (1.14 kB). View file
|
|
|
routes/sms_router.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import APIRouter, HTTPException
|
| 2 |
+
from schemas.schema import SMSRequest
|
| 3 |
+
from schemas.schema import EmbeddingResponse
|
| 4 |
+
from service.embedded_service import generate_embeddings
|
| 5 |
+
|
| 6 |
+
# Initialize Router
|
| 7 |
+
router = APIRouter()
|
| 8 |
+
|
| 9 |
+
@router.post("/get_embeddings/", response_model=EmbeddingResponse)
|
| 10 |
+
async def get_embeddings(sms_request: SMSRequest):
|
| 11 |
+
# Check if the input list is not empty
|
| 12 |
+
if not sms_request.messages:
|
| 13 |
+
raise HTTPException(status_code=400, detail="No messages provided.")
|
| 14 |
+
|
| 15 |
+
# Generate embeddings
|
| 16 |
+
embeddings = generate_embeddings(sms_request.messages)
|
| 17 |
+
|
| 18 |
+
# Structure the response
|
| 19 |
+
response = [
|
| 20 |
+
EmbeddingResponse(message=msg, embedding=emb)
|
| 21 |
+
for msg, emb in zip(sms_request.messages, embeddings)
|
| 22 |
+
]
|
| 23 |
+
|
| 24 |
+
return {"embeddings": response}
|
schemas/__pycache__/schema.cpython-313.pyc
ADDED
|
Binary file (1.18 kB). View file
|
|
|
schemas/schema.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel
|
| 2 |
+
from typing import List, Optional
|
| 3 |
+
|
| 4 |
+
class SMSRequest(BaseModel):
|
| 5 |
+
messages: List[str]
|
| 6 |
+
|
| 7 |
+
class EmbeddingResponse(BaseModel):
|
| 8 |
+
dimensions: int
|
| 9 |
+
embeddings: List[List[float]]
|
| 10 |
+
|
| 11 |
+
class Config:
|
| 12 |
+
|
| 13 |
+
json_schema_extra = {
|
| 14 |
+
"example": {
|
| 15 |
+
"dimensions": 768,
|
| 16 |
+
"embeddings": [
|
| 17 |
+
[0.1, 0.2, 0.3, ...], # 768 values for each message
|
| 18 |
+
[0.4, 0.5, 0.6, ...]
|
| 19 |
+
]
|
| 20 |
+
}
|
| 21 |
+
}
|
service/__pycache__/embedded_service.cpython-313.pyc
ADDED
|
Binary file (569 Bytes). View file
|
|
|
service/embedded_service.py
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import numpy as np
|
| 2 |
+
from models.model_loader import model
|
| 3 |
+
|
| 4 |
+
def generate_embeddings(messages: list):
|
| 5 |
+
# Generate embeddings
|
| 6 |
+
embeddings = model.encode(messages)
|
| 7 |
+
embeddings = np.array(embeddings).tolist() # Convert to list for JSON serialization
|
| 8 |
+
return embeddings
|