Mise à jour avec la possibilité de mettre des images

This commit is contained in:
2026-04-21 02:47:09 +02:00
parent bffbe1a662
commit 17f197484a
125 changed files with 4866 additions and 348 deletions

View File

@@ -26,6 +26,20 @@ class OllamaLLMProvider:
self._base_url = settings.ollama_base_url
self._model = settings.llm_model
self._timeout = settings.llm_timeout_seconds
self._num_ctx = settings.llm_num_ctx
def _build_options(self, temperature: float | None) -> dict[str, object]:
"""Construit le dict `options` attendu par Ollama (hyperparamètres).
`num_ctx` est TOUJOURS envoyé — sinon Ollama retombe sur son défaut
2048 et tronque silencieusement les gros prompts (Structural Context
du Lore enrichi depuis b9). `temperature` n'est ajoutée que si
fournie par le use case (sinon Ollama utilise son défaut).
"""
options: dict[str, object] = {"num_ctx": self._num_ctx}
if temperature is not None:
options["temperature"] = temperature
return options
async def generate(
self,
@@ -39,12 +53,10 @@ class OllamaLLMProvider:
"model": self._model,
"prompt": prompt,
"stream": False,
"options": self._build_options(temperature),
}
if output_format is not None:
payload["format"] = output_format
if temperature is not None:
# Ollama attend les hyperparamètres sous la clé "options".
payload["options"] = {"temperature": temperature}
async with httpx.AsyncClient(timeout=self._timeout) as client:
try:
@@ -87,9 +99,8 @@ class OllamaLLMProvider:
"model": self._model,
"messages": payload_messages,
"stream": True,
"options": self._build_options(temperature),
}
if temperature is not None:
payload["options"] = {"temperature": temperature}
async with httpx.AsyncClient(timeout=self._timeout) as client:
try: