From 648cfaf290ed2fc7bc507ecee0235148a7355f6c Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 28 Oct 2024 07:11:56 -0400 Subject: [PATCH] chore: Update .gitignore to ignore .envrc and .env files --- .gitignore | 2 ++ simplemind/__init__.py | 1 + simplemind/concepts.py | 6 +++++ simplemind/integrations/__init__.py | 2 ++ simplemind/integrations/base.py | 16 +++++-------- simplemind/integrations/claude.py | 2 +- simplemind/integrations/openai.py | 35 ++++++++++++++++++++++------- t.py | 6 +++++ 8 files changed, 50 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index c603bfe..9f243e9 100644 --- a/.gitignore +++ b/.gitignore @@ -162,3 +162,5 @@ cython_debug/ #.idea/ .vscode/** +.envrc +.env diff --git a/simplemind/__init__.py b/simplemind/__init__.py index e69de29..7dbc0d4 100644 --- a/simplemind/__init__.py +++ b/simplemind/__init__.py @@ -0,0 +1 @@ +from .integrations import * diff --git a/simplemind/concepts.py b/simplemind/concepts.py index e69de29..bd84ae0 100644 --- a/simplemind/concepts.py +++ b/simplemind/concepts.py @@ -0,0 +1,6 @@ +class Context: + def __init__(self): + self.plugins = [kv, basic_memory] + + +# TODO: explore pluggy for this. diff --git a/simplemind/integrations/__init__.py b/simplemind/integrations/__init__.py index e69de29..d17c4bc 100644 --- a/simplemind/integrations/__init__.py +++ b/simplemind/integrations/__init__.py @@ -0,0 +1,2 @@ +from .claude import Claude +from .openai import OpenAI diff --git a/simplemind/integrations/base.py b/simplemind/integrations/base.py index 569892e..6b227c6 100644 --- a/simplemind/integrations/base.py +++ b/simplemind/integrations/base.py @@ -1,22 +1,16 @@ -import os -import logging +# import logging class BaseClientProvider: - def __init__(self, *, api_key_environ_key=None, api_key=None): - self.logger = logging.getLogger(self.__class__.__name__) + def __init__(self, *, api_key=None): + # self.logger = logging.getLogger(self.__class__.__name__) self.client = None # Load API key from environment if not provided - self._api_key = api_key or self._load_from_environ(self._api_key_environ_name) + self._api_key = api_key - @classmethod - def from_environ(cls, environ_key): - """Loads the API key from the environment (recommended).""" - return cls(api_key=os.environ.get(environ_key)) - - def initialize(self): + def login(self): """Initializes the AI provider client.""" msg = "This method must be implemented by the AI provider client." diff --git a/simplemind/integrations/claude.py b/simplemind/integrations/claude.py index 8e0c3e2..55286da 100644 --- a/simplemind/integrations/claude.py +++ b/simplemind/integrations/claude.py @@ -1,4 +1,4 @@ from .base import BaseClientProvider -class OpenAI(BaseClientProvider): +class Claude(BaseClientProvider): pass diff --git a/simplemind/integrations/openai.py b/simplemind/integrations/openai.py index 7d9a92e..49c3dd9 100644 --- a/simplemind/integrations/openai.py +++ b/simplemind/integrations/openai.py @@ -1,20 +1,39 @@ +import os + +import instructor +from openai import OpenAI + from .base import BaseClientProvider class OpenAI(BaseClientProvider): - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.initialize() - def initialize(self): - assert self._api_key, "API key is required for OpenAI client" - assert self._api_key.startswith("sk-"), "OpenAI API key must start with 'sk-'" + def __init__(self, *args, **kwargs): + return super().__init__(*args, **kwargs) + self.login() - self.logger.info("Initializing OpenAI client") - self.logger.debug(f"API key: {self._api_key}") + + def login(self): + """Initialize OpenAI client, with Instructor enabled.""" + + # Default to environment variable if not provided. + if self._api_key is None: + self._api_key = os.getenv("OPENAI_API_KEY") + + base_client = OpenAI(api_key=self._api_key) + self.client = instructor.from_openai(base_client) self.test_connection() + def available_models(self): + pass def test_connection(self): + try: + # openai.api_key = self._api_key + self.client.models.list() + # self.logger.info("OpenAI connection test successful") + except Exception as e: + # self.logger.error(f"OpenAI connection test failed: {str(e)}") + raise diff --git a/t.py b/t.py index e69de29..133af6d 100644 --- a/t.py +++ b/t.py @@ -0,0 +1,6 @@ +import simplemind + +context = None + +openai = simplemind.integrations.OpenAI() +print(openai.login())