44
55use Aws \Credentials \Credentials ;
66use Aws \Signature \SignatureV4 ;
7- use Generator ;
87use Illuminate \Http \Client \PendingRequest ;
98use Illuminate \Http \Client \Request ;
10- use Illuminate \Support \Facades \Http ;
119use Prism \Bedrock \Enums \BedrockSchema ;
10+ use Prism \Prism \Concerns \InitializesClient ;
1211use Prism \Prism \Contracts \PrismRequest ;
13- use Prism \Prism \Contracts \Provider ;
1412use Prism \Prism \Embeddings \Request as EmbeddingRequest ;
1513use Prism \Prism \Embeddings \Response as EmbeddingsResponse ;
1614use Prism \Prism \Exceptions \PrismException ;
15+ use Prism \Prism \Providers \Provider ;
1716use Prism \Prism \Structured \Request as StructuredRequest ;
1817use Prism \Prism \Structured \Response as StructuredResponse ;
1918use Prism \Prism \Text \Request as TextRequest ;
2019use Prism \Prism \Text \Response as TextResponse ;
2120
22- class Bedrock implements Provider
21+ class Bedrock extends Provider
2322{
23+ use InitializesClient;
24+
2425 const KEY = 'bedrock ' ;
2526
2627 public function __construct (
@@ -94,15 +95,6 @@ public function embeddings(EmbeddingRequest $request): EmbeddingsResponse
9495 return $ handler ->handle ($ request );
9596 }
9697
97- #[\Override]
98- /**
99- * @return Generator<Chunk>
100- */
101- public function stream (TextRequest $ request ): Generator
102- {
103- throw new PrismException ('Prism Bedrock does not support streaming yet. ' );
104- }
105-
10698 public function schema (PrismRequest $ request ): BedrockSchema
10799 {
108100 $ override = $ request ->providerOptions ();
@@ -129,7 +121,8 @@ protected function client(TextRequest|StructuredRequest|EmbeddingRequest $reques
129121 ? false
130122 : $ request ->providerOptions ('enableCaching ' ) ?? false ;
131123
132- return Http::acceptJson ()
124+ return $ this ->baseClient ()
125+ ->acceptJson ()
133126 ->withHeader ('explicitPromptCaching ' , $ enableCaching ? 'enabled ' : 'disabled ' )
134127 ->contentType ('application/json ' )
135128 ->withOptions ($ options )
0 commit comments