mirror of
https://github.com/kennethreitz/simplemind.git
synced 2026-06-05 22:50:18 +00:00
chore: Update .gitignore to ignore .envrc and .env files
This commit is contained in:
@@ -162,3 +162,5 @@ cython_debug/
|
||||
#.idea/
|
||||
|
||||
.vscode/**
|
||||
.envrc
|
||||
.env
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
from .integrations import *
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class Context:
|
||||
def __init__(self):
|
||||
self.plugins = [kv, basic_memory]
|
||||
|
||||
|
||||
# TODO: explore pluggy for this.
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
from .claude import Claude
|
||||
from .openai import OpenAI
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .base import BaseClientProvider
|
||||
|
||||
class OpenAI(BaseClientProvider):
|
||||
class Claude(BaseClientProvider):
|
||||
pass
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user