44
55use Illuminate \Http \Client \PendingRequest ;
66use Illuminate \Support \Arr ;
7- use Prism \Prism \Exceptions \PrismException ;
8- use Prism \Prism \Providers \Gemini \Concerns \ValidatesResponse ;
7+ use Prism \Prism \Providers \Gemini \Concerns \HandleResponseError ;
98use Prism \Prism \Providers \Gemini \Maps \FinishReasonMap ;
109use Prism \Prism \Providers \Gemini \Maps \MessageMap ;
1110use Prism \Prism \Providers \Gemini \Maps \SchemaMap ;
1918
2019class Structured
2120{
22- use ValidatesResponse ;
21+ use HandleResponseError ;
2322
2423 protected ResponseBuilder $ responseBuilder ;
2524
@@ -32,7 +31,7 @@ public function handle(Request $request): StructuredResponse
3231 {
3332 $ data = $ this ->sendRequest ($ request );
3433
35- $ this ->validateResponse ( $ data );
34+ $ this ->handleResponseError ( );
3635
3736 $ responseMessage = new AssistantMessage (data_get ($ data , 'candidates.0.content.parts.0.text ' ) ?? '' );
3837
@@ -52,7 +51,7 @@ public function sendRequest(Request $request): array
5251 {
5352 $ providerOptions = $ request ->providerOptions ();
5453
55- $ response = $ this ->client ->post (
54+ $ this -> httpResponse = $ this ->client ->post (
5655 "{$ request ->model ()}:generateContent " ,
5756 Arr::whereNotNull ([
5857 ...(new MessageMap ($ request ->messages (), $ request ->systemPrompts ()))(),
@@ -71,23 +70,7 @@ public function sendRequest(Request $request): array
7170 ])
7271 );
7372
74- return $ response ->json ();
75- }
76-
77- /**
78- * @param array<string, mixed> $data
79- */
80- protected function validateResponse (array $ data ): void
81- {
82- if (! $ data || data_get ($ data , 'error ' )) {
83- throw PrismException::providerResponseError (vsprintf (
84- 'Gemini Error: [%s] %s ' ,
85- [
86- data_get ($ data , 'error.code ' , 'unknown ' ),
87- data_get ($ data , 'error.message ' , 'unknown ' ),
88- ]
89- ));
90- }
73+ return $ this ->httpResponse ->json ();
9174 }
9275
9376 /**
0 commit comments