summaryrefslogtreecommitdiff
path: root/src/ollama_web/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/ollama_web/routes')
-rw-r--r--src/ollama_web/routes/chat.py12
-rw-r--r--src/ollama_web/routes/pages.py14
2 files changed, 17 insertions, 9 deletions
diff --git a/src/ollama_web/routes/chat.py b/src/ollama_web/routes/chat.py
index 2d855b1..30794be 100644
--- a/src/ollama_web/routes/chat.py
+++ b/src/ollama_web/routes/chat.py
@@ -16,7 +16,9 @@ from starlette.requests import Request
from starlette.responses import StreamingResponse
from ..config import settings
+from ..i18n import t
from ..mcp import collect_mcp_tools, make_mcp_executor
+from ..prompts import get_prompt
from ..sessions import SessionStore, is_valid_id
from ..tools.fetch import pop_fetched_files
from ..tools.helper.image import resize_image
@@ -27,11 +29,7 @@ logger = logging.getLogger("ollama_web.chat")
# System prompt injected when tools are enabled. Encourages the model to use
# tools iteratively rather than firing many searches at once.
-_TOOL_SYSTEM_PROMPT = (
- "あなたはWeb検索・スクレイピング・ファイル取得ツールを利用できます。"
- "一度の回答で必要以上に多くの検索を同時に行わず、結果を確認してから次の調査を行ってください。"
- "各ツール結果は要約されて提供されるため、重要なポイントを把握して活用してください。"
-)
+_TOOL_SYSTEM_PROMPT = get_prompt("tool_system")
def _limit_text(text: str, limit: int) -> str:
@@ -111,7 +109,7 @@ def _attachment_context(store: SessionStore, session_id: str, file_ids: list[str
)
if not parts:
return ""
- return "\n\n".join(["以下はユーザーが添付したファイルの内容です:", *parts])
+ return "\n\n".join([get_prompt("attachment_prefix"), *parts])
def _collect_images(store: SessionStore, session_id: str, file_ids: list[str]) -> list[bytes]:
@@ -257,7 +255,7 @@ async def _chat_event_stream(
# and re-renders in the chat pane.
assistant_text = (
f"[ERROR] {error_msg}\n\n"
- "画像を含むメッセージを送信する場合、vision 対応モデルを選択してください。"
+ f"{t('errors.vision_model_required')}"
)
finally:
diff --git a/src/ollama_web/routes/pages.py b/src/ollama_web/routes/pages.py
index 52af9e8..45a3a01 100644
--- a/src/ollama_web/routes/pages.py
+++ b/src/ollama_web/routes/pages.py
@@ -9,9 +9,11 @@ from starlette.responses import Response
from starlette.templating import Jinja2Templates
from ollama_web import llm
+from ollama_web.i18n import get_messages, t
_TEMPLATES_DIR = Path(__file__).resolve().parent.parent / "templates"
templates = Jinja2Templates(directory=str(_TEMPLATES_DIR))
+templates.env.globals["t"] = t
async def index(request: Request) -> Response:
@@ -22,8 +24,13 @@ async def index(request: Request) -> Response:
return templates.TemplateResponse(
request,
"index.html",
- {"models": models, "default_model": default_model},
+ {
+ "models": models,
+ "default_model": default_model,
+ "messages": get_messages(),
+ },
media_type="text/html; charset=utf-8",
+ headers={"Cache-Control": "no-store, no-cache, must-revalidate, max-age=0"},
)
@@ -32,6 +39,9 @@ async def login(request: Request) -> Response:
return templates.TemplateResponse(
request,
"login.html",
- {},
+ {
+ "messages": get_messages(),
+ },
media_type="text/html; charset=utf-8",
+ headers={"Cache-Control": "no-store, no-cache, must-revalidate, max-age=0"},
)