From c03beea0573bb2e9a59a7f805f12a474d3566811 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 28 Oct 2024 18:49:08 -0400 Subject: [PATCH] yay --- simplemind/__init__.py | 27 +++++++++++++++++++++------ simplemind/providers/openai.py | 13 ++++++++----- t.py | 19 ++++++++++++++----- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/simplemind/__init__.py b/simplemind/__init__.py index 986b3e9..259a1f5 100644 --- a/simplemind/__init__.py +++ b/simplemind/__init__.py @@ -1,18 +1,33 @@ from .models import Conversation +from .utils import find_provider class SimpleMind: - def create_conversation(self, *, llm_model=None, llm_provider=None): - return Conversation() def structured_response( - self, *, llm_model=None, llm_provider=None, response_model=None + self, prompt, *, llm_model=None, llm_provider=None, response_model=None ): - pass + provider = find_provider(llm_provider) + + return provider.structured_response( + llm_model=llm_model, response_model=response_model, prompt=prompt + ) -def create_conversation(): - return SimpleMind().create_conversation() +def create_conversation(llm_model=None, llm_provider=None): + return Conversation(llm_model=llm_model, llm_provider=llm_provider) + + +def structured_response( + prompt, *, llm_model=None, llm_provider=None, response_model=None +): + provider = find_provider(llm_provider) + + return provider.structured_response( + prompt=prompt, + llm_model=llm_model, + response_model=response_model, + ) globals().update(locals()) diff --git a/simplemind/providers/openai.py b/simplemind/providers/openai.py index 06c8f09..5d61169 100644 --- a/simplemind/providers/openai.py +++ b/simplemind/providers/openai.py @@ -1,7 +1,6 @@ import openai as oa import instructor -# from ..models import Conversation, Message from ..settings import settings PROVIDER_NAME = "openai" @@ -49,9 +48,13 @@ class OpenAI: llm_provider=PROVIDER_NAME, ) - def structured_response(self, model, response_model, **kwargs): - client = instructor.patch(oa.OpenAI(api_key=self.api_key)) - response = client.chat.completions.create( - model=model, response_model=response_model, **kwargs + def structured_response(self, prompt, response_model, *, llm_model): + # Ensure messages are provided in kwargs + messages = [ + {"role": "user", "content": prompt}, + ] + + response = self.structured_client.chat.completions.create( + messages=messages, model=llm_model, response_model=response_model ) return response diff --git a/t.py b/t.py index c799eb0..de2959f 100644 --- a/t.py +++ b/t.py @@ -1,8 +1,17 @@ import simplemind as sm +from pydantic import BaseModel -conversation = sm.create_conversation() -conversation.add_message(role="user", text="Hello, how are you? Do you like poetry?") -r = conversation.send(llm_provider="openai") -print(r.text) -print(conversation.messages) +class Poem(BaseModel): + title: str + content: str + + +output = sm.structured_response( + "Write a poem about love", + llm_model="gpt-4o-mini", + llm_provider="openai", + response_model=Poem, +) + +print(output)