Mise à jour avec la possibilité de mettre des images
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user