From 27d30ccfe8279373690ccb3ae5526f796ff10376 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sat, 2 Nov 2024 16:34:47 -0400 Subject: [PATCH] Add OpenAI streaming support and enhance provider properties --- CHANGELOG.md | 3 +++ simplemind/providers/_base.py | 1 + simplemind/providers/openai.py | 1 + simplemind/providers/xai.py | 1 + 4 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bb3e46..210b951 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,10 @@ Release History ## 0.2.2 (2024-11-02) +- Add openai streaming support (set `stream=True` to `generate_text`). - `conv.prepend_system_message` now uses system role by default. +- Add `provider.supports_streaming` property. +- Add `provider.supports_structured_response` property. - General improvements. ## 0.2.1 (2024-11-01) diff --git a/simplemind/providers/_base.py b/simplemind/providers/_base.py index 2201c7e..101a33a 100644 --- a/simplemind/providers/_base.py +++ b/simplemind/providers/_base.py @@ -17,6 +17,7 @@ class BaseProvider(ABC): NAME: str DEFAULT_MODEL: str supports_streaming: bool = False + supports_structured_responses: bool = True @cached_property @abstractmethod diff --git a/simplemind/providers/openai.py b/simplemind/providers/openai.py index 5b63995..25ed2af 100644 --- a/simplemind/providers/openai.py +++ b/simplemind/providers/openai.py @@ -24,6 +24,7 @@ class OpenAI(BaseProvider): DEFAULT_MODEL = DEFAULT_MODEL DEFAULT_KWARGS = DEFAULT_KWARGS supports_streaming = True + def __init__(self, api_key: str | None = None): self.api_key = api_key or settings.get_api_key(PROVIDER_NAME) diff --git a/simplemind/providers/xai.py b/simplemind/providers/xai.py index c19a0ae..bf8bff5 100644 --- a/simplemind/providers/xai.py +++ b/simplemind/providers/xai.py @@ -25,6 +25,7 @@ class XAI(BaseProvider): NAME = PROVIDER_NAME DEFAULT_MODEL = DEFAULT_MODEL DEFAULT_KWARGS = DEFAULT_KWARGS + supports_structured_responses = False def __init__(self, api_key: str | None = None): self.api_key = api_key or settings.get_api_key(PROVIDER_NAME)