Source code for council.llm.openai_llm_configuration
from typing import Any
from council.llm import LLMConfigurationBase
from council.utils import read_env_str, read_env_int, Option
[docs]class OpenAILLMConfiguration(LLMConfigurationBase):
"""
Configuration for :class:OpenAILLM
Args:
api_key (str): the OpenAI api key
model (str): optional model version to use
timeout (int): seconds to wait for response from OpenAI before timing out
Notes:
* see https://platform.openai.com/docs/api-reference/chat
"""
api_key: str
authorization: str # not a parameter - used to optimize calls
model: Option[str] = Option.none()
timeout: int = 30
def __init__(self):
super().__init__("OPENAI_")
def build_default_payload(self) -> dict[str, Any]:
payload = super().build_default_payload()
if self.model.is_some():
payload.setdefault("model", self.model.unwrap())
return payload
@staticmethod
def from_env() -> "OpenAILLMConfiguration":
config = OpenAILLMConfiguration()
config.read_env()
config.api_key = read_env_str("OPENAI_API_KEY").unwrap()
config.authorization = f"Bearer {config.api_key}"
config.model = read_env_str("OPENAI_LLM_MODEL", required=False)
config.timeout = read_env_int("OPENAI_LLM_TIMEOUT", required=False, default=30).unwrap()
return config