Strands Agents
Strands Agents
Strands Agents로 AI 에이전트를 만들고 있다면, init() 한 번으로 추적을 시작할 수 있어요. Strands Agents는 AWS의 오픈소스 에이전트 SDK입니다. 통합은 OpenTelemetry로 동작하는데, confident-trace가 Strands의 내장 tracer가 이미 쓰는 공유 전역 TracerProvider에 exporter를 설치하므로, Agent를 실행하기 전에 init()만 호출하면 됩니다.
출처: 문서
본문
개요
Strands Agents는 AWS의 오픈소스 SDK로, AI 에이전트를 만들고 실행하기 위한 것입니다.
이 통합은 OpenTelemetry로 동작합니다. Confident AI의 OpenTelemetry 네이티브 추적 SDK인 confident-trace가 Strands의 내장 tracer가 이미 쓰는 공유 전역 TracerProvider에 exporter를 설치하므로, Agent를 실행하기 전에 init()을 한 번 호출하기만 하면 돼요.
Strands는 자체 모델 스팬을 만들고,
init()은 Confident AI의 OpenAI·Anthropic·Google GenAI 통합도 켭니다. 같은 호출이 두 번 보이는 걸 피하려고, 현재 스팬이 같은 프로바이더의 Strands 모델 스팬일 때 Confident AI의 프로바이더 통합은 비켜서요. 직접 SDK 호출 — 도구 함수 안에서 하는 것 포함 — 은 자체 LLM 스팬을 받습니다.
Amazon Bedrock AgentCore 안에서 Strands를 실행하나요? AgentCore 페이지가 거기에 적용되는 서버 스팬, 세션 전파, AWS exporter 설정을 다룹니다.
| Runtime | Requirements | Setup |
|---|---|---|
| Python | Python 3.10+, strands-agents (tested with 1.54.0) |
Call init() before running the agent |
| TypeScript | Not supported | — |
자동 계측
EU 리전 사용자는 OTEL 엔드포인트를 EU 버전으로 설정하세요. 그렇지 않으면 트레이스가 우리 US 서버로 보내집니다.
export CONFIDENT_OTEL_ENDPOINT="https://eu.otel.confident-ai.com/v1/traces"
의존성 설치
confident-trace를 Strands 및 에이전트가 쓰는 모델 프로바이더 extra와 함께 설치하세요(아래 예는 OpenAI를 사용).
pip install confident-trace 'strands-agents[openai]'
Confident AI 키 설정
Confident AI Project API key를 받아 환경 변수로 설정하거나, init()에 직접 전달하세요.
export CONFIDENT_API_KEY="<your-confident-api-key>"
export OPENAI_API_KEY="<your-openai-key>"
from confident_trace import init
init(api_key="<your-confident-api-key>")
Strands 계측
시작 시, Agent를 실행하기 전에 init()을 한 번 호출하세요. 전역 TracerProvider에 Confident AI exporter를 설치해서, Strands의 내장 tracer가 자동으로 잡아요.
from confident_trace import init, shutdown
from strands import Agent
from strands.models.openai import OpenAIModel
init()
agent = Agent(model=OpenAIModel(model_id="gpt-4.1-mini"), callback_handler=None)
try:
result = agent("Explain OpenTelemetry in one sentence.")
print(result)
finally:
shutdown()
Strands는 OTel GenAI 시맨틱 컨벤션 속성(
gen_ai.usage.input_tokens,gen_ai.operation.name등)을 네이티브로 만들기 때문에, 이 통합은 추가 설정 없이 에이전트·LLM·도구 스팬을 자동으로 포착해요.Agent를init()전에 만들든 후에 만들든 문제가 되지 않습니다 — Strands는 전역 프로바이더가 설치되면 해석되는 프록시 tracer를 들고 있거든요.
한 번 초기화하고, 한 번 종료하세요. 장기 실행 서버에서는 시작 시
init()을, 정상 종료 시 활성 에이전트 실행이 끝난 뒤shutdown()을 호출하세요 — 요청마다 하지 마세요. 한 번 초기화를 참고하세요.
에이전트 실행
스크립트를 실행해 트레이스를 Confident AI로 보내세요.
python main.py
완료 ✅. Confident AI 프로젝트에서 Observatory를 열어 트레이스를 확인하세요.
트레이스가 안 보이면, 거의 항상 프로그램이 트레이스를 보낼 기회가 생기기 전에 종료됐기 때문이에요. 종료 전에 반드시
shutdown()(장기 실행 프로세스에선flush())을 호출하세요 — 트러블슈팅 페이지를 참고하세요.
무엇이 포착되나
Strands 에이전트 실행은 계층이 그대로 보존된 채 내보내져서, 에이전트에서 모델·도구 호출까지를 따라갈 수 있어요.
- 에이전트 실행 — 작업 이름, 타이밍, 상태, 입력, 출력, 단계 사이의 관계
- 모델 호출 — 모델 상세, 입출력 메시지, 토큰 사용량
- 도구 호출 — 도구 이름과 그 입출력
- 이벤트·오류 — 수명 주기 이벤트와 실패한 작업이 트레이스의 관련 부분에 붙어 유지
동기·비동기·스트리밍 실행을 모두 지원합니다. 콘텐츠는 Strands의 텔레메트리 구성이 제어해요.
트레이스 스팬 속성 설정
호출이 시작되기 전에 아는 속성을 추가하려면 트레이스 컨텍스트를 사용하세요. 추가 스팬은 만들지 않아요. agent()가 시작한 트레이스가 태그, 메타데이터, 사용자 ID, 고객 ID를 상속받습니다.
from confident_trace import init, trace_context
from strands import Agent
init()
agent = Agent()
with trace_context(
tags=["support"],
metadata={"release": "2026-09"},
user_id="user-42",
customer_id="customer-7",
):
result = agent("Explain OpenTelemetry in one sentence.")
각 ID와 함께 선택적 표시 이름을 설정하려면 사용자와 고객을, 지원되는 모든 트레이스 속성과 갱신 동작은 트레이스 컨텍스트를 참고하세요.
다중 턴 계측
Strands 엔트리포인트 호출 하나가 이미 하나의 대화 턴일 때는 turn()이 필요 없어요 — 통합이 그 턴의 트레이스를 자동으로 만들어 주거든요. 경계를 직접 정의하고 싶을 때, 예를 들어 두 번의 연속 Strands 호출을 하나의 턴으로 묶고 싶을 때 turn()을 사용하세요. 이후 턴에서 같은 스레드 ID를 재사용해 하나의 대화로 묶으면 돼요.
from confident_trace import init, turn
init()
with turn("support-turn", thread_id="chat-42"):
context = agent("Find the relevant account details.")
answer = agent(f"Summarize these details: {context}")
스레드 입출력, 턴 ID, 사용자 ID는 스레드를 참고하세요.
Strands 계측 비활성화
특정 통합만 활성화하려면 init()에 통합 식별자 목록을 전달하세요. Strands의 식별자는 Python에서 "strands"이고, 이를 빼면 이 통합이 비활성화돼요. 빈 목록은 모든 자동 계측을 비활성화합니다.
from confident_trace import init
init(instrumentations=())
# Use ("strands",) to opt in; omit "strands" to disable it.
이렇게 하면 Confident AI의 자동 instrumentor가 꺼져요. Strands는 여전히 자체 네이티브 OpenTelemetry 스팬을 만들 수 있습니다.
다음 단계
에이전트를 추적했으니, 더 깊이 들어가 볼까요.
Online Evals
트레이스와 스팬이 Confident AI로 수집되는 실시간으로 평가를 돌려 에이전트 품질을 모니터링하세요.
Amazon Bedrock AgentCore
Strands 에이전트를 AgentCore에 배포하고 있나요? 거기에 적용되는 서버 스팬, 세션 전파, AWS exporter 설정을 확인하세요.
더 알아보기
- AgentCore — AgentCore 위에서 Strands 에이전트 다루기
- Online Evals — 실시간 트레이스·스팬 평가
- Threads — 대화를 스레드로 묶어 평가