|
| 1 | +"""Test auto_instrument for boto3 Bedrock Runtime.""" |
| 2 | + |
| 3 | +import os |
| 4 | + |
| 5 | + |
| 6 | +os.environ.setdefault("AWS_EC2_METADATA_DISABLED", "true") |
| 7 | +if not os.environ.get("AWS_PROFILE") and not os.environ.get("AWS_BEARER_TOKEN_BEDROCK"): |
| 8 | + os.environ.setdefault("AWS_ACCESS_KEY_ID", "testing") |
| 9 | + os.environ.setdefault("AWS_SECRET_ACCESS_KEY", "testing") |
| 10 | + os.environ.setdefault("AWS_SESSION_TOKEN", "testing") |
| 11 | + |
| 12 | +import boto3 |
| 13 | +from braintrust.auto import auto_instrument |
| 14 | +from braintrust.integrations.test_utils import autoinstrument_test_context |
| 15 | + |
| 16 | + |
| 17 | +MODEL = os.getenv("BRAINTRUST_BEDROCK_CONVERSE_MODEL", "us.amazon.nova-lite-v1:0") |
| 18 | +REGION = os.getenv("AWS_REGION") or os.getenv("AWS_DEFAULT_REGION") or "us-east-1" |
| 19 | + |
| 20 | +results = auto_instrument() |
| 21 | +assert results.get("bedrock_runtime") is True |
| 22 | + |
| 23 | +results2 = auto_instrument() |
| 24 | +assert results2.get("bedrock_runtime") is True |
| 25 | + |
| 26 | +with autoinstrument_test_context("test_auto_bedrock_runtime", integration="bedrock_runtime") as memory_logger: |
| 27 | + client = boto3.client("bedrock-runtime", region_name=REGION) |
| 28 | + response = client.converse( |
| 29 | + modelId=MODEL, |
| 30 | + messages=[{"role": "user", "content": [{"text": "Say hello in one word."}]}], |
| 31 | + inferenceConfig={"maxTokens": 20, "temperature": 0}, |
| 32 | + ) |
| 33 | + assert response["output"]["message"]["role"] == "assistant" |
| 34 | + |
| 35 | + spans = memory_logger.pop() |
| 36 | + assert len(spans) == 1, f"Expected 1 span, got {len(spans)}" |
| 37 | + span = spans[0] |
| 38 | + assert span["metadata"]["provider"] == "bedrock" |
| 39 | + assert span["metadata"]["model"] == MODEL |
| 40 | + assert span["metadata"]["endpoint"] == "converse" |
| 41 | + assert span["span_attributes"]["name"] == "bedrock.converse" |
| 42 | + |
| 43 | +print("SUCCESS") |
0 commit comments