Get LLM configuration from environment variables.
()
| 16 | |
| 17 | |
| 18 | def get_llm_config() -> dict[str, Any]: |
| 19 | """Get LLM configuration from environment variables.""" |
| 20 | openai_api_key = os.getenv("OPENAI_API_KEY") |
| 21 | openai_base_url = os.getenv("OPENAI_API_BASE", "https://api.openai.com/v1") |
| 22 | ollama_api_base = os.getenv("OLLAMA_API_BASE", "http://localhost:11434") |
| 23 | |
| 24 | # Use MEMRADER_ variables from .env as primary source |
| 25 | reader_model = os.getenv("MEMRADER_MODEL", os.getenv("MOS_CHAT_MODEL", "gpt-4o-mini")) |
| 26 | reader_api_key = os.getenv("MEMRADER_API_KEY", openai_api_key) |
| 27 | reader_api_base = os.getenv("MEMRADER_API_BASE", openai_base_url) |
| 28 | |
| 29 | # Check for specific MemReader backend override, otherwise assume openai if keys present |
| 30 | llm_backend = os.getenv("MEMRADER_LLM_BACKEND", "openai") |
| 31 | |
| 32 | if llm_backend == "ollama": |
| 33 | return { |
| 34 | "backend": "ollama", |
| 35 | "config": { |
| 36 | "model_name_or_path": reader_model, |
| 37 | "api_base": ollama_api_base, |
| 38 | "temperature": float(os.getenv("MEMRADER_TEMPERATURE", "0.0")), |
| 39 | "remove_think_prefix": os.getenv("MEMRADER_REMOVE_THINK_PREFIX", "true").lower() |
| 40 | == "true", |
| 41 | "max_tokens": int(os.getenv("MEMRADER_MAX_TOKENS", "8192")), |
| 42 | }, |
| 43 | } |
| 44 | else: # openai |
| 45 | return { |
| 46 | "backend": "openai", |
| 47 | "config": { |
| 48 | "model_name_or_path": reader_model, |
| 49 | "api_key": reader_api_key or "EMPTY", |
| 50 | "api_base": reader_api_base, |
| 51 | "temperature": float(os.getenv("MEMRADER_TEMPERATURE", "0.5")), |
| 52 | "remove_think_prefix": os.getenv("MEMRADER_REMOVE_THINK_PREFIX", "true").lower() |
| 53 | == "true", |
| 54 | "max_tokens": int(os.getenv("MEMRADER_MAX_TOKENS", "8192")), |
| 55 | }, |
| 56 | } |
| 57 | |
| 58 | |
| 59 | def get_embedder_config() -> dict[str, Any]: |
no outgoing calls
no test coverage detected