Compare commits
No commits in common. "cb1294bd4d0d4293bc0473db246dbf5e1374be72" and "2712a026abf3ae2d989ea073e8659fe455c80ac4" have entirely different histories.
cb1294bd4d
...
2712a026ab
|
@ -20,5 +20,4 @@ RUN pip install --no-cache-dir -r requirements.txt
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Set the entrypoint
|
# Set the entrypoint
|
||||||
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "3000"]
|
CMD ["python", "start_moondream.py"]
|
||||||
|
|
||||||
|
|
33
app (1).py
33
app (1).py
|
@ -1,33 +0,0 @@
|
||||||
import os
|
|
||||||
from dotenv import load_dotenv
|
|
||||||
from fastapi import FastAPI, File, UploadFile, Form
|
|
||||||
from fastapi.responses import JSONResponse
|
|
||||||
from PIL import Image
|
|
||||||
import moondream as md
|
|
||||||
import io
|
|
||||||
|
|
||||||
# Load environment variables
|
|
||||||
load_dotenv()
|
|
||||||
api_key = os.getenv("MOON_DREAM_KEY")
|
|
||||||
|
|
||||||
# Initialize Moondream model
|
|
||||||
model = md.vl(api_key=api_key)
|
|
||||||
|
|
||||||
# FastAPI app
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
@app.post("/caption")
|
|
||||||
async def generate_caption(
|
|
||||||
image: UploadFile = File(...),
|
|
||||||
length: str = Form("short")
|
|
||||||
):
|
|
||||||
try:
|
|
||||||
# Read the uploaded image
|
|
||||||
image_bytes = await image.read()
|
|
||||||
img = Image.open(io.BytesIO(image_bytes))
|
|
||||||
|
|
||||||
# Generate caption
|
|
||||||
response = model.caption(img, length=length)
|
|
||||||
return JSONResponse(content={"caption": response["caption"]})
|
|
||||||
except Exception as e:
|
|
||||||
return JSONResponse(status_code=500, content={"error": str(e)})
|
|
57
app.py
57
app.py
|
@ -1,57 +0,0 @@
|
||||||
import os
|
|
||||||
import io
|
|
||||||
from dotenv import load_dotenv
|
|
||||||
from fastapi import FastAPI, File, UploadFile, Form, Query
|
|
||||||
from fastapi.responses import JSONResponse, StreamingResponse
|
|
||||||
from PIL import Image
|
|
||||||
import moondream as md
|
|
||||||
|
|
||||||
# Load environment variables
|
|
||||||
load_dotenv()
|
|
||||||
api_key = os.getenv("MOON_DREAM_KEY")
|
|
||||||
|
|
||||||
# Initialize Moondream model
|
|
||||||
model = md.vl(api_key=api_key)
|
|
||||||
|
|
||||||
# FastAPI app
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
@app.post("/caption")
|
|
||||||
async def generate_caption(
|
|
||||||
image: UploadFile = File(...),
|
|
||||||
length: str = Form("short")
|
|
||||||
):
|
|
||||||
try:
|
|
||||||
image_bytes = await image.read()
|
|
||||||
img = Image.open(io.BytesIO(image_bytes))
|
|
||||||
response = model.caption(img, length=length)
|
|
||||||
return JSONResponse(content={"caption": response["caption"]})
|
|
||||||
except Exception as e:
|
|
||||||
return JSONResponse(status_code=500, content={"error": str(e)})
|
|
||||||
|
|
||||||
@app.post("/query")
|
|
||||||
async def query_image(
|
|
||||||
image: UploadFile = File(...),
|
|
||||||
question: str = Form(...),
|
|
||||||
stream: bool = Form(False)
|
|
||||||
):
|
|
||||||
try:
|
|
||||||
image_bytes = await image.read()
|
|
||||||
img = Image.open(io.BytesIO(image_bytes))
|
|
||||||
|
|
||||||
if stream:
|
|
||||||
def generate():
|
|
||||||
result = model.query(img, question, stream=True)
|
|
||||||
for chunk in result["chunk"]:
|
|
||||||
yield chunk
|
|
||||||
|
|
||||||
return StreamingResponse(generate(), media_type="text/plain")
|
|
||||||
else:
|
|
||||||
result = model.query(img, question)
|
|
||||||
return JSONResponse(content={
|
|
||||||
"answer": result["answer"],
|
|
||||||
"request_id": result["request_id"]
|
|
||||||
})
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
return JSONResponse(status_code=500, content={"error": str(e)})
|
|
|
@ -1,6 +1,4 @@
|
||||||
moondream
|
moondream
|
||||||
Pillow
|
Pillow
|
||||||
python-dotenv
|
python-dotenv
|
||||||
fastapi
|
|
||||||
uvicorn
|
|
||||||
python-multipart
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
import moondream as md
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
# Load .env
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
# Get key from env
|
||||||
|
api_key = os.getenv("MOON_DREAM_KEY")
|
||||||
|
|
||||||
|
# Use Moondream cloud model
|
||||||
|
model = md.vl(api_key=api_key)
|
||||||
|
|
||||||
|
# Load image
|
||||||
|
image = Image.open("nat.jpg")
|
||||||
|
|
||||||
|
# Generate caption
|
||||||
|
caption_response = model.caption(image, length="short")
|
||||||
|
print(caption_response["caption"])
|
Loading…
Reference in New Issue