Skip to content

Commit 5fb4033

Browse files
Python: Adding converse_stream_pdf.py sample to show how does converse stream API process PDF file. Bedrock runtime (#7292)
* add converse_stream_pdf.py under bedrock_runtime...anthropic_claude
1 parent 0acf0fd commit 5fb4033

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
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

Comments
 (0)