Chittrarasu commited on
Commit
79eca0e
·
0 Parent(s):
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