From fb8b10954593dc81e5e30a047279fa43d140d6be Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Tue, 29 Oct 2024 06:51:25 -0400 Subject: [PATCH] improvements --- simplemind/__init__.py | 11 ++++++----- simplemind/models.py | 11 +++++++++-- simplemind/providers/_base.py | 2 -- simplemind/settings.py | 1 + t.py | 29 ----------------------------- t2.py | 6 ------ 6 files changed, 16 insertions(+), 44 deletions(-) delete mode 100644 t.py delete mode 100644 t2.py diff --git a/simplemind/__init__.py b/simplemind/__init__.py index f57bcd7..2e06d1c 100644 --- a/simplemind/__init__.py +++ b/simplemind/__init__.py @@ -6,13 +6,15 @@ from .settings import settings def create_conversation(llm_model=None, llm_provider=None): """Create a new conversation.""" - return Conversation(llm_model=llm_model, llm_provider=llm_provider) + return Conversation( + llm_model=llm_model, llm_provider=llm_provider or settings.DEFAULT_LLM_PROVIDER + ) def generate_data(prompt, *, llm_model=None, llm_provider=None, response_model=None): """Generate structured data from a given prompt.""" - provider = find_provider(llm_provider) + provider = find_provider(llm_provider or settings.DEFAULT_LLM_PROVIDER) return provider.structured_response( prompt=prompt, @@ -23,8 +25,7 @@ def generate_data(prompt, *, llm_model=None, llm_provider=None, response_model=N def generate_text(prompt, *, llm_model=None, llm_provider=None): """Generate text from a given prompt.""" - - provider = find_provider(llm_provider) + provider = find_provider(llm_provider or settings.DEFAULT_LLM_PROVIDER) return provider.generate_text(prompt=prompt, llm_model=llm_model) @@ -35,5 +36,5 @@ __all__ = [ "find_provider", "generate_data", "generate_text", - "settings" + "settings", ] diff --git a/simplemind/models.py b/simplemind/models.py index 8617904..63b836d 100644 --- a/simplemind/models.py +++ b/simplemind/models.py @@ -1,7 +1,9 @@ import uuid +from abc import ABC, abstractmethod from datetime import datetime from typing import Any, Dict, List, Literal, Optional + from pydantic import BaseModel, Field from .utils import find_provider @@ -20,8 +22,13 @@ class SMBaseModel(BaseModel): return str(self) -class BasePlugin(SMBaseModel): - """The base plugin class.""" +class BasePlugin(ABC): + """The base conversation plugin class.""" + + @abstractmethod + def send_hook(self, conversation: "Conversation"): + """Send a hook to the plugin.""" + raise NotImplementedError class Message(SMBaseModel): diff --git a/simplemind/providers/_base.py b/simplemind/providers/_base.py index 43715d3..dc1abdc 100644 --- a/simplemind/providers/_base.py +++ b/simplemind/providers/_base.py @@ -2,8 +2,6 @@ from abc import ABC, abstractmethod from instructor import Instructor -# from ..models import Conversation, Message - class BaseProvider(ABC): """The base provider class.""" diff --git a/simplemind/settings.py b/simplemind/settings.py index 54ed61f..eb420aa 100644 --- a/simplemind/settings.py +++ b/simplemind/settings.py @@ -13,6 +13,7 @@ class Settings(BaseSettings): GROQ_API_KEY: Optional[SecretStr] = Field(None, description="API key for Groq") OPENAI_API_KEY: Optional[SecretStr] = Field(None, description="API key for OpenAI") XAI_API_KEY: Optional[SecretStr] = Field(None, description="API key for xAI") + DEFAULT_LLM_PROVIDER: str = Field("openai", description="The default LLM provider") model_config = SettingsConfigDict( env_file=".env", env_file_encoding="utf-8", case_sensitive=True, extra="ignore" diff --git a/t.py b/t.py deleted file mode 100644 index 503cfe0..0000000 --- a/t.py +++ /dev/null @@ -1,29 +0,0 @@ -import simplemind as sm - - -class SimpleMemoryPlugin: - def __init__(self): - self.memories = [ - "the earth has fictionally beeen destroyed.", - "the moon is made of cheese.", - ] - - def yield_memories(self): - return (m for m in self.memories) - - def send_hook(self, conversation: sm.Conversation): - for m in self.yield_memories(): - conversation.add_message(role="system", text=m) - - -conversation = sm.create_conversation(llm_model="grok-beta", llm_provider="xai") -conversation.add_plugin(SimpleMemoryPlugin()) - - -conversation.add_message( - role="user", - text="Write a poem about the moon", -) -r = conversation.send() - -print(r.text) diff --git a/t2.py b/t2.py deleted file mode 100644 index b50a8db..0000000 --- a/t2.py +++ /dev/null @@ -1,6 +0,0 @@ -import simplemind as sm - -conversation = sm.create_conversation(llm_model="gpt-4o-mini", llm_provider="openai") -conversation.add_message("user", "Hi there, how are you?") -reply = conversation.send() -print(reply)