From 04568115b81230638a27b4a2715b308dae12e077 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Wed, 5 Jul 2023 20:47:36 -0700 Subject: [PATCH] Options base class is now llm.Options not Model.Options --- llm/__init__.py | 11 ++++++----- llm/default_plugins/openai_models.py | 2 +- llm/models.py | 11 +++++++++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/llm/__init__.py b/llm/__init__.py index 352506c..d501612 100644 --- a/llm/__init__.py +++ b/llm/__init__.py @@ -1,13 +1,14 @@ from .hookspecs import hookimpl -from .models import LogMessage, Model, Prompt, Response, OptionsError +from .models import LogMessage, Model, Options, Prompt, Response, OptionsError from .templates import Template __all__ = [ - "Template", + "hookimpl", + "LogMessage", "Model", + "Options", + "OptionsError", "Prompt", "Response", - "OptionsError", - "LogMessage", - "hookimpl", + "Template", ] diff --git a/llm/default_plugins/openai_models.py b/llm/default_plugins/openai_models.py index d08d75e..283b9ad 100644 --- a/llm/default_plugins/openai_models.py +++ b/llm/default_plugins/openai_models.py @@ -66,7 +66,7 @@ class Chat(Model): key_env_var = "OPENAI_API_KEY" can_stream: bool = True - class Options(Model.Options): + class Options(llm.Options): temperature: Optional[float] = None max_tokens: Optional[int] = None top_p: Optional[float] = None diff --git a/llm/models.py b/llm/models.py index 258503e..700a86f 100644 --- a/llm/models.py +++ b/llm/models.py @@ -126,6 +126,13 @@ class Response(ABC): db["logs"].insert(message_dict, pk="id") +class Options(BaseModel): + model_config = ConfigDict(extra="forbid") + + +_Options = Options + + class Model(ABC): model_id: str key: Optional[str] = None @@ -133,8 +140,8 @@ class Model(ABC): key_env_var: Optional[str] = None can_stream: bool = False - class Options(BaseModel): - model_config = ConfigDict(extra="forbid") + class Options(_Options): + pass def get_key(self): if self.needs_key is None: