diff options
| author | tanaka takashi <isazaka@gmail.com> | 2026-06-24 01:51:37 +0900 |
|---|---|---|
| committer | tanaka takashi <isazaka@gmail.com> | 2026-06-24 01:51:37 +0900 |
| commit | 374ba05fe2a4022d95ed45322a13e9eef3ed59de (patch) | |
| tree | 5ed5fd4a4b5d20766c70789b554ff9a8f5e2f977 /src/ollama_web/routes/sessions.py | |
| parent | ee1733816744a269f532ece6b241f4a99e007c49 (diff) | |
vision対応モデル向けに添付画像の処理を変更
Diffstat (limited to 'src/ollama_web/routes/sessions.py')
| -rw-r--r-- | src/ollama_web/routes/sessions.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/ollama_web/routes/sessions.py b/src/ollama_web/routes/sessions.py index 8980960..8640ec3 100644 --- a/src/ollama_web/routes/sessions.py +++ b/src/ollama_web/routes/sessions.py @@ -8,7 +8,7 @@ from typing import Any from starlette.requests import Request from starlette.responses import JSONResponse -from ..sessions import SessionStore +from ..sessions import SessionStore, _IMAGE_MIMES, _IMAGE_SUFFIXES from ..tools.pdf import extract_pdf_text logger = logging.getLogger("ollama_web.sessions") @@ -18,6 +18,17 @@ def _get_store(request: Request) -> SessionStore: return request.app.state.session_store +def _is_image_file(name: str, mime: str) -> bool: + mime_lower = mime.lower() + name_lower = name.lower() + if mime_lower in _IMAGE_MIMES: + return True + for suffix in _IMAGE_SUFFIXES: + if name_lower.endswith(suffix): + return True + return False + + async def list_sessions(request: Request) -> JSONResponse: store = _get_store(request) return JSONResponse({"sessions": store.list_sessions()}) @@ -85,7 +96,10 @@ async def upload_file(request: Request) -> JSONResponse: name = getattr(upload, "filename", "uploaded-file") or "uploaded-file" content_type = getattr(upload, "content_type", None) or "application/octet-stream" text = "" - if content_type == "application/pdf" or name.lower().endswith(".pdf"): + if _is_image_file(name, content_type): + # Images are passed to ollama via Message.images (base64), not as text. + text = "" + elif content_type == "application/pdf" or name.lower().endswith(".pdf"): text = extract_pdf_text(data) else: # Try decode as text for text-like uploads. |
