Skip to content

Commit 71acbbd

Browse files
refactor(examples): reduce PR additions below 100 lines
Co-Authored-By: mesutoezdil <versusfinem@gmail.com>
1 parent e6a2ae8 commit 71acbbd

3 files changed

Lines changed: 15 additions & 45 deletions

File tree

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
strands-agents>=1.35.0
22
boto3>=1.38.0
3-
43
opentelemetry-sdk>=1.36.0
54
opentelemetry-exporter-otlp-proto-http>=1.36.0
65
python-dotenv>=1.0.0

examples/zero-code-examples/agentcore/run.py

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
"""Run a dice agent using AWS AgentCore with OTLP export.
2-
3-
Prerequisites:
4-
1. pip install -r requirements.txt
5-
2. agentevals serve --dev
6-
3. AWS credentials configured and Nova Pro model access enabled
7-
8-
Usage:
9-
python examples/zero-code-examples/agentcore/run.py
1+
"""AWS AgentCore zero-code OTLP example. Needs AWS credentials and Nova Pro model access.
2+
Run: python examples/zero-code-examples/agentcore/run.py
103
"""
114

125
import os
@@ -20,7 +13,6 @@
2013
from strands.telemetry import StrandsTelemetry
2114

2215
load_dotenv(override=True)
23-
2416
os.environ.setdefault("OTEL_SEMCONV_STABILITY_OPT_IN", "gen_ai_latest_experimental")
2517

2618

@@ -32,44 +24,30 @@ def roll_die(sides: int = 6) -> dict:
3224

3325

3426
@tool
35-
def check_prime(number: int) -> bool:
27+
def check_prime(n: int) -> bool:
3628
"""Return True if number is prime."""
37-
if number < 2:
38-
return False
39-
for i in range(2, int(number**0.5) + 1):
40-
if number % i == 0:
41-
return False
42-
return True
29+
return n >= 2 and all(n % i for i in range(2, int(n**0.5) + 1))
4330

4431

4532
def main():
4633
if not os.getenv("AWS_DEFAULT_REGION"):
4734
print("AWS_DEFAULT_REGION not set.")
4835
return
49-
endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4318")
50-
print(f"OTLP endpoint: {endpoint}")
51-
os.environ.setdefault(
52-
"OTEL_RESOURCE_ATTRIBUTES",
53-
"agentevals.eval_set_id=agentcore_eval,agentevals.session_name=agentcore-zero-code",
54-
)
36+
os.environ.setdefault("OTEL_RESOURCE_ATTRIBUTES",
37+
"agentevals.eval_set_id=agentcore_eval,agentevals.session_name=agentcore-zero-code")
5538
telemetry = StrandsTelemetry()
56-
telemetry.tracer_provider.add_span_processor(
57-
BatchSpanProcessor(OTLPSpanExporter(), schedule_delay_millis=1000)
58-
)
39+
telemetry.tracer_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(), schedule_delay_millis=1000))
5940
agent = Agent(
6041
model=BedrockModel(model_id="us.amazon.nova-pro-v1:0"),
6142
tools=[roll_die, check_prime],
6243
system_prompt="You are a helpful assistant. Use roll_die when asked to roll dice. Use check_prime when asked about prime numbers.",
6344
name="dice_agent",
6445
)
65-
6646
queries = ["Hi! Can you help me?", "Roll a 20-sided die for me", "Is the number you rolled prime?"]
6747
for i, query in enumerate(queries, 1):
68-
print(f"\n[{i}/{len(queries)}] User: {query}")
69-
print(f" Agent: {agent(query)}")
70-
print()
48+
print(f"\n[{i}/{len(queries)}] User: {query}\n Agent: {agent(query)}")
7149
telemetry.tracer_provider.force_flush()
72-
print("All traces flushed to OTLP receiver.")
50+
print("All traces flushed.")
7351

7452

7553
if __name__ == "__main__":

tests/integration/test_live_agents.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,7 @@
3838
reason="GOOGLE_API_KEY not set",
3939
)
4040

41-
_skip_no_aws = pytest.mark.skipif(
42-
not os.environ.get("AWS_DEFAULT_REGION"),
43-
reason="AWS_DEFAULT_REGION not set",
44-
)
41+
_skip_no_aws = pytest.mark.skipif(not os.environ.get("AWS_DEFAULT_REGION"), reason="AWS_DEFAULT_REGION not set")
4542

4643

4744
def _run_agent(
@@ -382,29 +379,25 @@ def test_session_created_spans_only(self, live_servers):
382379
result = _run_agent(_AGENTCORE_SCRIPT, otlp_http_port, session_name, extra_env=_AGENTCORE_ENV, timeout=60)
383380
assert result.returncode == 0, f"Agent failed:\nstdout: {result.stdout}\nstderr: {result.stderr}"
384381
wait_for_session_complete_sync(mgr, session_name, timeout=60)
385-
session = mgr.sessions[session_name]
386-
assert session.is_complete
387-
assert session.source == "otlp"
388-
assert len(session.spans) > 0, "Expected spans from LLM calls"
382+
s = mgr.sessions[session_name]
383+
assert s.is_complete and s.source == "otlp" and len(s.spans) > 0
389384

390385
def test_invocations_extracted(self, live_servers):
391386
main_port, otlp_http_port, mgr = live_servers
392387
session_name = "e2e-agentcore-inv"
393388
result = _run_agent(_AGENTCORE_SCRIPT, otlp_http_port, session_name, extra_env=_AGENTCORE_ENV, timeout=60)
394389
assert result.returncode == 0, f"Agent failed:\nstdout: {result.stdout}\nstderr: {result.stderr}"
395390
wait_for_session_complete_sync(mgr, session_name, timeout=60)
396-
session = mgr.sessions[session_name]
397-
assert len(session.invocations) > 0, "Expected extracted invocations"
391+
assert len(mgr.sessions[session_name].invocations) > 0
398392

399393
def test_session_visible_via_api(self, live_servers):
400394
main_port, otlp_http_port, mgr = live_servers
401395
session_name = "e2e-agentcore-api"
402396
result = _run_agent(_AGENTCORE_SCRIPT, otlp_http_port, session_name, extra_env=_AGENTCORE_ENV, timeout=60)
403397
assert result.returncode == 0
404398
wait_for_session_complete_sync(mgr, session_name, timeout=60)
405-
resp = httpx.get(f"http://127.0.0.1:{main_port}/api/streaming/sessions")
406-
assert resp.status_code == 200
407-
assert session_name in [s["sessionId"] for s in resp.json()["data"]]
399+
data = httpx.get(f"http://127.0.0.1:{main_port}/api/streaming/sessions").json()["data"]
400+
assert session_name in [s["sessionId"] for s in data]
408401

409402

410403
@_skip_no_openai

0 commit comments

Comments
 (0)