local LLM support

This commit is contained in:
2026-07-25 16:17:15 -05:00
parent fc5b3cd795
commit e030d0d4f3
3 changed files with 126 additions and 2 deletions

View File

@@ -10,9 +10,11 @@ from physcom.llm.base import LLMProvider
def build_llm_provider() -> LLMProvider | None:
"""Return an LLMProvider based on env vars, or None if not configured.
LLM_PROVIDER — provider name ('gemini'; more can be added)
LLM_PROVIDER — provider name ('gemini', 'ollama'; more can be added)
GEMINI_API_KEY — required when LLM_PROVIDER=gemini
GEMINI_MODEL — optional Gemini model name (default: gemini-2.0-flash)
OLLAMA_MODEL — optional Ollama model name (default: qwen2.5:7b)
OLLAMA_HOST — optional Ollama server URL (default: http://localhost:11434)
"""
provider = os.environ.get("LLM_PROVIDER", "").lower().strip()
@@ -27,4 +29,10 @@ def build_llm_provider() -> LLMProvider | None:
from physcom.llm.providers.gemini import GeminiLLMProvider
return GeminiLLMProvider(api_key=api_key, model=model)
raise ValueError(f"Unknown LLM_PROVIDER: {provider!r}. Supported: gemini")
if provider == "ollama":
model = os.environ.get("OLLAMA_MODEL", "qwen2.5:7b")
host = os.environ.get("OLLAMA_HOST", "http://localhost:11434")
from physcom.llm.providers.ollama import OllamaLLMProvider
return OllamaLLMProvider(model=model, host=host)
raise ValueError(f"Unknown LLM_PROVIDER: {provider!r}. Supported: gemini, ollama")