반응형

 

 


AI Agent 가 최근 개발 업계에서 화두인것 같다.
Agent 를 쉽게 개발하기 위한 도구들이 많이 생겨 나오고 있고, 우연히 웨비나를 통해 알게 된 Strands 에 대해서 사용법을 포함해 간단히 소개하고자 한다.

Strands 는 AWS 에서 개발한 AI Agent 를 개발하기 위한 오픈 SDK 다.



strand 는 가닥이라는 의미인데, Agent 와 tool 두 가닥으로 쉽게 Agent 를 구현할 수 있다는 의미.. 일 거다.  

아무튼 예제가 너무 쉽게 눈에 들어와서, 최근 AI Agent 과제를 진행하는데 이 SDK 를 선택하기로 했다. 잘 알려진  Langchain 은 너무 거대해서 공부할게 많아 보인다.

준비는 python 개발 환경과 LLM 을 사용할 수 있는 준비가 되겠다.


Strands package 설치는 아래 내용을 진행한다. (가상환경 셋팅 포함)

 

- 준비사항
- python 3.10 이상 설치
- 가상 환경 설치
- strands-agents SDK 패키지 설치

 

$ sudo yum install python3.11 -y
$ python3.11 -m venv .venv

$ pip install strands-agents strands-agents-tools

 

 


LLM 을 사용할 수 있는 준비가 되어야 하는데, 2가지를 소개하겠다.


1) 오픈 소스 Ollama 활용
- Ollama 설치 와 LLM 모델 다운로드 및 실행 (https://ollama.com/)

 

2) AWS 관리형 서비스 활용
- AWS Bedrock 의 LLM 모델활성화

  • AWS Bedrock 토큰 설정
    • 프로그램을 실행할 때 API 를 사용할 수 있는 토큰이 코드 또는 환경변수에  등록되어있어야 한다
    • Discover -> API Keys 진입 > API 키 생성
  • 트러블 슈팅
    • 모델 아이디를 조회하는 방법은 Discover -> Model catalog -> LLM 모델 선택
    • 모델 아이디앞에 지역 코드를 추가 [1]

예제 코드

from strands import Agent, tool
from strands.models import BedrockModel
from strands_tools import calculator
from strands.models.ollama import OllamaModel

  
  

base_model = BedrockModel(
model_id="apac.anthropic.claude-3-7-sonnet-20250219-v1:0",
region_name="ap-northeast-2",
)

base_model = OllamaModel(
host="http://localhost:11434",
model_id = "gpt-oss:20b",,
temperature=0.7
)

@tool
def weather():
""" Get weather """

return "흐림"

  
  
  

agent = Agent(model=base_model,
tools = [weather, calculator],
system_prompt="너는 간단한 수학계산과 날씨를 알려줄수 있는 어이스턴트야.")

response = agent("오늘 날씨는 어때?")

print(response)

 

위 코드 몇줄로 AI Agent 를 만들었다.


Tool 은 AI Agent 가 외부 세계와 상호작용하고 작업을 수행할 수 있게 해주는 기능. 또는 인터페이스를 의미한다.

기본적으로 strands 에서 제공하는 tool 들이 있고 직접 구현할 수 도 있다.
예를 들어 위 예제 코드에서 나는 weather() 라는 툴에 "흐림"을 하드코딩해서 return 했다. AI Agent 는 날씨를 매번 흐림으로 답변 할 것이다.

요즘 많이들 구현하는 MCP 도 Tool의 종류다.


오늘은 여기까지.

 

 

참고

[1] https://repost.aws/questions/QUEU82wbYVQk2oU4eNwyiong/bedrock-api-invocation-error-on-demand-throughput-isn-s-supported
[2] https://github.com/strands-agents/sdk-python

반응형

+ Recent posts