diff --git a/README.md b/README.md index e19d50e..9b6286a 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ ## Sidekick for Laravel Say hello to Sidekick! A Laravel plugin that provides a common syntax for using Claude, Mistral and OpenAi APIs. -![Latest Version](https://img.shields.io/badge/Version-0.1.0-blue) -![Stability](https://img.shields.io/badge/Stability-beta-red) +![Latest Version](https://img.shields.io/badge/Version-0.1.1-blue) +![Stability](https://img.shields.io/badge/Stability-beta-yellow) ### Upcoming Features diff --git a/src/Drivers/Claude.php b/src/Drivers/Claude.php index 6e56bf7..2056a2e 100644 --- a/src/Drivers/Claude.php +++ b/src/Drivers/Claude.php @@ -30,4 +30,9 @@ public function uniformedResponse($response) { return $response['content'][0]['text']; } + + public function validate($response): bool + { + return !($response['type'] == "error"); + } } diff --git a/src/Drivers/Mistral.php b/src/Drivers/Mistral.php index 62c266b..0fe21dd 100644 --- a/src/Drivers/Mistral.php +++ b/src/Drivers/Mistral.php @@ -38,4 +38,9 @@ public function uniformedResponse($response) { return $response['choices'][0]['message']['content']; } + + public function validate($response): bool + { + return !($response['object'] == "error"); + } } diff --git a/src/Drivers/OpenAi.php b/src/Drivers/OpenAi.php index 50ebde9..df4c5f2 100644 --- a/src/Drivers/OpenAi.php +++ b/src/Drivers/OpenAi.php @@ -63,4 +63,9 @@ public function uniformedResponse($response) { return $response['choices'][0]['message']['content']; } + + public function validate($response): bool + { + return !isset($response['error']); + } } diff --git a/src/SidekickConversation.php b/src/SidekickConversation.php index 47e8ea3..2c475e1 100644 --- a/src/SidekickConversation.php +++ b/src/SidekickConversation.php @@ -44,14 +44,18 @@ public function sendMessage(string $message) { $newMessage ]; - $this->conversation->messages()->create($newMessage); - $response = $this->sidekick->complete()->sendMessage( model: $this->conversation->model, systemPrompt: $this->conversation->system_prompt, messages: $allMessages, maxTokens: $this->conversation->max_tokens); + if(!$this->validResponse($response)) { + throw new \Exception(json_encode($response)); + } + + $this->conversation->messages()->create($newMessage); + $chatResponse = [ 'role' => 'assistant', 'content' => $this->sidekick->uniformedResponse($response) @@ -65,4 +69,9 @@ public function sendMessage(string $message) { ]; } + private function validResponse($response): bool + { + return $this->sidekick->validate($response); + } + }