1
+ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ # Use the Conversation API to send a text message along with PDF as input to Anthropic Claude
5
+ # and print the response stream.
6
+
7
+ import boto3
8
+ from botocore .config import Config
9
+
10
+ config = Config (
11
+ connect_timeout = 1000 ,
12
+ read_timeout = 1000 ,
13
+ )
14
+ # Create a Bedrock Runtime client in the AWS Region you want to use.
15
+ session = boto3 .session .Session (region_name = 'us-east-1' )
16
+ bedrock_runtime = session .client (service_name = 'bedrock-runtime' ,
17
+ config = config )
18
+ pdf_path = input ("Enter the path to the PDF file: " )
19
+ prompt = """
20
+ Please analyze this PDF document and provide the following information:
21
+
22
+ 1. Document Title
23
+ 2. Main topics covered
24
+ 3. Key findings or conclusions
25
+ 4. Important dates or numbers mentioned
26
+ 5. Summary in 3-4 sentences
27
+
28
+ Format your response in a clear, structured way.
29
+ """
30
+
31
+ # Set the model ID
32
+
33
+ #SONNET_V2_MODEL_ID = "anthropic.claude-3-5-sonnet-20241022-v2:0"
34
+ SONNET_V2_MODEL_ID = "us.anthropic.claude-3-5-sonnet-20241022-v2:0"
35
+ def optimize_reel_prompt (user_prompt ,ref_image ):
36
+ # open PDF
37
+ with open (ref_image , "rb" ) as f :
38
+ image = f .read ()
39
+
40
+ system = [
41
+ {
42
+ "text" : "You are an expert in summarizing PDF docs."
43
+ }
44
+ ]
45
+ # payload of PDF as input
46
+ messages = [
47
+ {
48
+ "role" : "user" ,
49
+ "content" : [
50
+ {
51
+ "document" : {
52
+ "format" : "pdf" ,
53
+ "name" : "DocumentPDFmessages" ,
54
+ "source" : {
55
+ "bytes" : image
56
+ }
57
+ }
58
+ },
59
+ {"text" : user_prompt }
60
+ ],
61
+ }
62
+ ]
63
+ # Configure the inference parameters.
64
+ inf_params = {"maxTokens" : 800 , "topP" : 0.9 , "temperature" : 0.5 }
65
+ model_response = bedrock_runtime .converse_stream (
66
+ modelId = SONNET_V2_MODEL_ID , messages = messages , system = system , inferenceConfig = inf_params
67
+ )
68
+ text = ""
69
+ stream = model_response .get ("stream" )
70
+ if stream :
71
+ for event in stream :
72
+ if "contentBlockDelta" in event :
73
+ text += event ["contentBlockDelta" ]["delta" ]["text" ]
74
+ print (event ["contentBlockDelta" ]["delta" ]["text" ], end = "" )
75
+ return text
76
+
77
+ if __name__ == "__main__" :
78
+ txt = optimize_reel_prompt (prompt ,pdf_path )
79
+ print (txt )
0 commit comments