Fix grounded assistant cross-domain responses
This commit is contained in:
+4
-2
@@ -1114,7 +1114,7 @@ OLLAMA_ENABLED=true
|
||||
OLLAMA_BASE_URL=http://host.docker.internal:11434
|
||||
OLLAMA_DEFAULT_MODEL=qwen3.5:9b
|
||||
OLLAMA_TIMEOUT_SECONDS=120
|
||||
OLLAMA_MAX_OUTPUT_TOKENS=700
|
||||
OLLAMA_MAX_OUTPUT_TOKENS=1200
|
||||
OLLAMA_CONTEXT_TOKENS=16384
|
||||
```
|
||||
|
||||
@@ -1125,7 +1125,9 @@ models with `GET /api/v1/assistant/models` and ask a grounded question through
|
||||
present in Ollama `/api/tags`. Missing water depth/bathymetry remains explicit;
|
||||
the assistant cannot turn 2D water geometry into volume. GeoIntel rejects an
|
||||
answer when Ollama reports `done_reason=length`, so a visibly truncated sentence
|
||||
is never presented as a complete result.
|
||||
is never presented as a complete result. The 1,200-token default leaves enough
|
||||
room for a compact cross-domain profile while the system prompt requires every
|
||||
explicitly requested theme and excludes unrelated themes.
|
||||
|
||||
## Agricultural-use parcel history
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ class Settings(BaseSettings):
|
||||
ollama_base_url: str = Field(default="http://127.0.0.1:11434", validation_alias="OLLAMA_BASE_URL")
|
||||
ollama_default_model: str = Field(default="qwen3.5:9b", validation_alias="OLLAMA_DEFAULT_MODEL")
|
||||
ollama_timeout_seconds: int = Field(default=120, ge=5, le=600, validation_alias="OLLAMA_TIMEOUT_SECONDS")
|
||||
ollama_max_output_tokens: int = Field(default=700, ge=100, le=4_000, validation_alias="OLLAMA_MAX_OUTPUT_TOKENS")
|
||||
ollama_max_output_tokens: int = Field(default=1_200, ge=100, le=4_000, validation_alias="OLLAMA_MAX_OUTPUT_TOKENS")
|
||||
ollama_context_tokens: int = Field(default=16_384, ge=4_096, le=131_072, validation_alias="OLLAMA_CONTEXT_TOKENS")
|
||||
cors_origins: list[str] | str = Field(
|
||||
default=["http://localhost:5173", "http://127.0.0.1:5173"],
|
||||
|
||||
@@ -525,6 +525,8 @@ class GeoAssistantService:
|
||||
"Noem bij cijfers de bron en eenheid. Maak duidelijk onderscheid tussen exacte metingen en schattingen. "
|
||||
"Als is_estimate true is, noem de waarde verplicht een schatting en nooit exact. "
|
||||
"Objectaantallen zijn ondersteunend; geef betekenisvolle oppervlakte-, lengte- of bevolkingsmetriek voorrang. "
|
||||
"Wanneer de gebruiker meerdere thema's opsomt, behandel elk gevraagd thema en voeg geen ongevraagd thema toe. "
|
||||
"Houd het antwoord beknopt: groepeer de kernmetrieken per gevraagd thema en herhaal geen beperkingen. "
|
||||
"Beschrijf alleen waargenomen verschillen; verzin geen oorzaak, voorspelling, verzadiging of andere verklaring. "
|
||||
"Neem waarden en jaren letterlijk over en bereken zelf geen gemiddelde, tempo, oorzaak of afgeleide trend. "
|
||||
"Gebruik platte tekst met korte alinea's en opsommingen, zonder Markdown-symbolen. "
|
||||
|
||||
@@ -202,12 +202,15 @@ def test_geo_assistant_sends_grounded_context_without_thinking_trace(monkeypatch
|
||||
assert captured["payload"]["think"] is False
|
||||
assert captured["payload"]["options"]["temperature"] == 0.0
|
||||
assert captured["payload"]["options"]["num_ctx"] == 16_384
|
||||
assert captured["payload"]["options"]["num_predict"] == 1_200
|
||||
assert "Gebruik uitsluitend feiten en cijfers uit CONTEXT_JSON" in captured["payload"]["messages"][0]["content"]
|
||||
assert "scope.label is het exact geanalyseerde gebied" in captured["payload"]["messages"][0]["content"]
|
||||
assert "noem de waarde verplicht een schatting" in captured["payload"]["messages"][0]["content"]
|
||||
assert "verzin geen oorzaak, voorspelling, verzadiging" in captured["payload"]["messages"][0]["content"]
|
||||
assert "bereken zelf geen gemiddelde, tempo, oorzaak of afgeleide trend" in captured["payload"]["messages"][0]["content"]
|
||||
assert "zonder Markdown-symbolen" in captured["payload"]["messages"][0]["content"]
|
||||
assert "behandel elk gevraagd thema en voeg geen ongevraagd thema toe" in captured["payload"]["messages"][0]["content"]
|
||||
assert "Houd het antwoord beknopt" in captured["payload"]["messages"][0]["content"]
|
||||
assert "water_volume_available" in captured["payload"]["messages"][0]["content"]
|
||||
|
||||
|
||||
@@ -254,6 +257,9 @@ def test_unraid_ollama_context_window_is_configurable() -> None:
|
||||
assert "OLLAMA_CONTEXT_TOKENS: ${OLLAMA_CONTEXT_TOKENS:-16384}" in compose
|
||||
assert 'Target="OLLAMA_CONTEXT_TOKENS"' in template
|
||||
assert "OLLAMA_CONTEXT_TOKENS=16384" in env_example
|
||||
assert "OLLAMA_MAX_OUTPUT_TOKENS: ${OLLAMA_MAX_OUTPUT_TOKENS:-1200}" in compose
|
||||
assert 'Target="OLLAMA_MAX_OUTPUT_TOKENS"' in template
|
||||
assert "OLLAMA_MAX_OUTPUT_TOKENS=1200" in env_example
|
||||
|
||||
|
||||
def test_temporal_comparison_preserves_all_compatible_semantic_metrics() -> None:
|
||||
|
||||
Reference in New Issue
Block a user