귀하의 AI 도구가 약간...음, 수동적이라고 느낀 적이 있습니까? 그냥 거기 앉아서 다음 명령을 기다리는 것처럼요? 그들이 주도권을 잡고, 큰 문제를 해결하고, 협력하여 일을 완수할 수 있다고 상상해 보십시오.
이것이 바로 LLM 에이전트가 테이블에 가져오는 것입니다. 복잡한 작업을 자동화하는 방식을 바꾸고 있으며 AI 아이디어를 완전히 새로운 방식으로 구현하는 데 도움이 될 수 있습니다.
이 기사에서는 LLM 에이전트가 무엇인지, 어떻게 작동하는지, 그리고 멋진 오픈 소스 프레임워크를 사용하여 자신만의 에이전트를 구축하는 방법을 살펴보겠습니다.
우리가 다룰 내용:
-
LLM 에이전트의 현황
-
챗봇에서 자율 에이전트까지
-
현재 상담원은 무엇을 할 수 있나요?
-
무엇을 사용하여 구축할 수 있나요?
-
지금이 학습하기에 가장 좋은 시기인 이유
-
-
LLM 에이전트란 무엇이며 왜 중요한가요?
-
LLM이란 무엇인가요?
-
그렇다면 LLM 에이전트란 무엇인가요?
-
이것이 왜 중요합니까?
-
-
오픈 소스 에이전트 프레임워크의 부상
-
인기 있는 오픈 소스 에이전트 프레임워크
-
이 도구를 사용하면 무엇을 할 수 있나요?
-
처음부터 구축하는 대신 프레임워크를 사용하는 이유는 무엇입니까?
-
-
에이전트 설계의 핵심 개념
-
에이전트 루프
-
에이전트의 주요 구성 요소
-
다중 에이전트 협업
-
-
프로젝트:이메일을 통해 일일 일정 자동화
-
우리가 자동화하고 있는 것
-
1단계:필수 도구 설치
-
2단계:작업 정의
-
3단계:LangGraph로 작업 흐름 구축
-
-
CrewAI를 통한 다중 에이전트 협업
-
CrewAI란 무엇인가요?
-
이메일 요약 작업의 샘플 역할
-
샘플 CrewAI 코드
-
-
실행 중에 실제로 어떤 일이 발생하나요?
-
LLM 에이전트는 안전한가요? 보안 및 개인정보 보호에 대해 알아야 할 사항
-
문제 해결 및 팁
-
더 많은 일일 자동화 살펴보기
-
에이전트 기술의 다음 단계는 무엇입니까?
-
최종 요약
LLM 에이전트 현황
LLM 에이전트는 현재 AI 분야에서 가장 흥미로운 개발 중 하나입니다. 이미 실제 작업을 자동화하는 데 도움을 주고 있지만 여전히 진화하고 있습니다. 그럼 오늘 우리는 어디에 있나요?
챗봇에서 자율 에이전트까지
GPT-4, Claude, Gemini 및 LLaMA와 같은 LLM(대형 언어 모델)은 단순한 챗봇에서 놀랍도록 유능한 추론 엔진으로 발전했습니다. 그들은 퀴즈 질문에 답하고 에세이를 작성하는 것에서 복잡한 추론을 수행하고, 다단계 지침을 따르고, 웹 검색 및 코드 해석기와 같은 도구와 상호 작용하는 것으로 발전했습니다.
하지만 여기에 문제가 있습니다. 이 모델은 반응적입니다. . 그들은 입력을 기다리고 출력을 제공합니다. 그들은 작업 사이에 기억을 유지하지 못하고, 미리 계획을 세우거나 스스로 목표를 추구하지 않습니다. LLM 에이전트가 바로 그곳입니다. 들어오세요 – 그들은 구조, 기억, 자율성을 추가하여 이러한 격차를 해소합니다.
현재 상담원은 무엇을 할 수 있나요?
현재 LLM 에이전트는 이미 다음 용도로 사용되고 있습니다:
-
이메일이나 문서 요약
-
일일 일정 계획하기
-
DevOps 스크립트 실행
-
API 또는 도구에서 답변 검색
-
복잡한 작업을 완료하기 위해 소규모 "팀"으로 협력
하지만 아직 완벽하지는 않습니다. 상담원은 다음 작업을 계속할 수 있습니다.
-
루프에 빠지다
-
목표에 대한 오해
-
자세한 메시지와 가드레일 필요
아직 이 기술은 초기 단계이기 때문이다. 프레임워크는 빠르게 개선되고 있지만 안정성과 메모리는 여전히 작업 중입니다. 실험할 때 이 점을 명심하세요.
지금이 배우기 가장 좋은 시기인 이유
사실은 아직 이르다는 것입니다. 하지만 그렇지는 않습니다 일찍.
에이전트 실험을 시작하기에 가장 좋은 시기입니다:
-
실제 프로젝트를 구축할 수 있을 만큼 성숙한 도구입니다.
-
커뮤니티는 빠르게 성장하고 있습니다
-
그리고 AI 전문가가 될 필요는 없으며 Python에 익숙하기만 하면 됩니다
LLM 에이전트란 무엇이며 왜 중요한가요?
흥미진진한 상담원의 세계에 대해 알아보기 전에 기본 사항에 대해 좀 더 빠르게 이야기해 보겠습니다.
LLM이란 무엇인가요?
LLM(Large Language Model)은 기본적으로 책, 기사, 코드 등 인터넷의 방대한 양의 텍스트에서 학습된 AI입니다. 이를 매우 스마트한 자동 완성 엔진으로 생각할 수 있습니다. 하지만 이는 단순히 문장을 완성하는 것 이상의 역할을 합니다. 또한:
-
까다로운 질문에 답하세요
-
긴 기사나 문서를 요약하세요
-
코드, 이메일 또는 창의적인 스토리 작성
-
즉시 언어 번역
-
논리 퍼즐을 풀고 흥미로운 대화를 나눌 수도 있습니다
OpenAI의 GPT 모델을 기반으로 하는 ChatGPT에 대해 들어보셨을 것입니다. 접할 수 있는 다른 인기 LLM으로는 Claude(Anthropic 제공), LLaMA(Meta 제공), Mistral 및 Gemini(Google 제공)가 있습니다.
이러한 모델은 문맥을 기반으로 문장의 다음 단어를 간단히 예측하는 방식으로 작동합니다. 간단하게 들리지만, 수십억 단어로 교육을 받으면 LLM은 놀랍도록 지능적인 행동을 할 수 있고, 지침을 이해하고, 단계별 추론을 따르고, 상상할 수 있는 거의 모든 주제에 대해 일관된 응답을 생성할 수 있습니다.
그럼 LLM 에이전트란 무엇인가요?
LLM은 매우 강력하지만 일반적으로 반응만 합니다. 그들은 당신이 뭔가를 물어볼 때만 응답합니다. 반면에 LLM 상담원은 사전 대응합니다. .
LLM 상담원은 다음을 수행할 수 있습니다.
-
크고 복잡한 작업을 더 작고 관리 가능한 단계로 나누세요
-
현명한 결정을 내리고 다음에 무엇을 해야 할지 알아보세요
-
웹 검색, 계산기 또는 기타 앱과 같은 "도구"를 사용하세요.
-
여러 단계를 거치거나 시도하더라도 목표를 향해 노력하십시오.
-
다른 요원과 협력하여 공동 목표 달성
즉, LLM 상담원은 생각하고, 계획하고, 행동하고, 적응할 수 있습니다.
LLM 에이전트를 매우 효율적인 새 비서로 생각해 보세요. 목표를 제시하면 스스로 목표를 달성하는 방법을 찾아냅니다.
이것이 왜 중요합니까?
단순히 반응하는 것에서 적극적으로 목표를 추구하는 것으로의 전환은 수많은 흥미로운 가능성을 열어줍니다.
-
지루한 IT 또는 DevOps 작업 자동화
-
원시 데이터에서 자세한 보고서 생성
-
다단계 연구 프로젝트를 도와드립니다
-
매일 이메일을 읽고 주요 정보 강조
-
실제 조치를 취하기 위한 내부 도구 실행
기존의 규칙 기반 봇과 달리 LLM 에이전트는 시도를 추론하고 반영하고 학습할 수 있습니다. 따라서 복잡하고 유연성이 필요하며 상황 이해에 의존하는 실제 작업에 훨씬 더 적합합니다.
오픈소스 에이전트 프레임워크의 부상
얼마 전까지만 해도 자율적으로 작동하는 AI 시스템을 구축하려면 엄청난 양의 사용자 지정 코드를 작성하고 메모리를 공들여 관리하며 수십 개의 구성 요소를 연결해야 했습니다. 복잡하고 섬세하며 고도로 전문화된 작업이었습니다.
하지만 그거 알아요? 더 이상 그렇지 않습니다.
2024년에는 환상적인 오픈소스 프레임워크가 대거 등장합니다. 이러한 도구를 사용하면 매번 바퀴를 다시 개발할 필요 없이 강력한 LLM 에이전트를 구축하는 것이 훨씬 쉬워졌습니다.
인기 오픈 소스 에이전트 프레임워크
프레임워크 설명 관리자 에이전트 상태 및 메모리를 위한 LangGraphGraph 기반 프레임워크LangChainCrewAI"역할 기반, 다중 에이전트 협업 엔진"커뮤니티(CrewAI)AutoGen맞춤형 다중 에이전트 채팅 오케스트레이션MicrosoftAgentVerse에이전트 시뮬레이션 및 테스트를 위한 모듈식 프레임워크오픈 소스 프로젝트이 도구를 사용하면
이러한 프레임워크는 에이전트 생성의 까다로운 부분을 처리하기 위해 미리 만들어진 구성 요소를 제공합니다.
-
계획 – 상담원이 다음 행동을 결정하도록 합니다
-
도구 사용 – 에이전트를 파일 시스템, 웹 브라우저, API 또는 데이터베이스 등에 쉽게 연결
-
메모리 – 장기적인 맥락을 위해 과거 정보나 중간 결과를 저장 및 검색
-
다중 에이전트 공동작업 – 공유된 목표를 위해 함께 일하는 상담원 팀 구성
처음부터 구축하는 대신 프레임워크를 사용하는 이유
할 수 있는 동안 처음부터 사용자 정의 에이전트를 구축하면 프레임워크를 사용하여 엄청난 시간과 노력을 절약할 수 있습니다. 오픈 소스 에이전트 라이브러리에는 다음이 포함되어 있습니다:
-
LLM 조정을 위한 기본 지원
-
작업 계획, 현재 위치 추적 및 피드백 받기에 대한 입증된 패턴
-
OpenAI와 같은 인기 모델이나 심지어 로컬에서 실행하는 모델과도 쉽게 통합됩니다.
-
유용한 단일 상담원에서 전체 상담원 팀으로 성장할 수 있는 유연성
기본적으로 이러한 프레임워크를 사용하면 에이전트가 수행해야 하는 작업에 집중할 수 있습니다. , 모든 내부 작업을 구축하는 방법에 얽매이지 않고. 또한 오픈 소스를 선택하면 단일 공급업체에 얽매이지 않고 커뮤니티 기여, 작동 방식의 투명성, 정확한 요구 사항에 맞게 조정할 수 있는 자유 등의 혜택을 누릴 수 있습니다.
에이전트 설계의 핵심 개념
LLM 에이전트의 작동 방식을 실제로 이해하려면 LLM 에이전트를 관찰, 추론, 행동을 지속적으로 순환하는 목표 중심 시스템으로 생각하는 것이 도움이 됩니다. 이러한 지속적인 루프를 통해 단순한 질문과 답변을 넘어 진정한 자동화, 도구 사용 및 즉각적인 적응으로 전환하여 작업을 처리할 수 있습니다.
에이전트 루프
대부분의 LLM 에이전트는 에이전트 루프라는 정신 모델을 기반으로 작동합니다. 작업이 완료될 때까지 반복되는 단계별 주기입니다. 일반적인 작동 방식은 다음과 같습니다.
-
인식: 에이전트는 자신의 환경에서 무언가를 알아차리거나 새로운 정보를 받는 것부터 시작합니다. 이는 프롬프트, 데이터 또는 시스템의 현재 상태일 수 있습니다.
-
계획: 에이전트는 인식한 내용과 전반적인 목표를 기반으로 다음에 수행할 작업을 결정합니다. 작업을 더 작은 하위 목표로 나누거나 작업에 가장 적합한 도구를 찾아낼 수도 있습니다.
-
행위: 그런 다음 에이전트가 작동합니다. 이는 기능 실행, API 호출, 웹 검색, 데이터베이스와의 상호 작용 또는 다른 상담원에게 도움 요청을 의미할 수도 있습니다.
-
반영: 작업을 수행한 후 에이전트는 결과를 살펴봅니다. 효과가 있었나요? 결과가 유용했나요? 다른 접근 방식을 시도해야 할까요? 이를 바탕으로 계획을 업데이트하고 작업이 완료될 때까지 계속 진행합니다.
이 루프는 에이전트를 매우 동적으로 만드는 것입니다. 이를 통해 학생들은 끊임없이 변화하는 작업을 처리하고, 부분적인 결과로부터 학습하고, 진정으로 유용한 AI 보조자를 구축하는 데 필수적인 과정 품질을 수정할 수 있습니다.
에이전트의 주요 구성요소
업무를 효과적으로 수행하기 위해 상담원은 몇 가지 중요한 부분을 중심으로 구성됩니다.
-
도구 에이전트가 실제(또는 디지털) 세계와 상호 작용하는 방식입니다. 검색 엔진, 코드 실행 환경, 파일 판독기, API 클라이언트부터 간단한 계산기나 명령줄 스크립트까지 무엇이든 될 수 있습니다.
-
메모리 상담원이 여러 단계에서 수행했거나 본 내용을 기억할 수 있습니다. 여기에는 이전에 말한 내용, 임시 결과 또는 주요 결정이 포함될 수 있습니다. 일부 프레임워크는 단기 기억(한 세션에 대해서만)을 제공하는 반면 다른 프레임워크는 여러 세션이나 목표에 걸쳐 있을 수 있는 장기 기억을 지원합니다.
-
환경 에이전트가 API, 문서, 데이터베이스, 파일 또는 센서 입력 내에서 작동하는 외부 데이터 또는 시스템 컨텍스트를 나타냅니다. 에이전트가 자신의 환경에 대해 더 많은 정보와 액세스 권한을 가질수록 더 의미 있는 조치를 취할 수 있습니다.
-
목표 에이전트의 궁극적인 목표, 즉 달성하려는 것입니다. 목표는 "일일 일정 생성", "이 문서 요약" 또는 "이메일에서 작업 추출"과 같이 구체적이고 명확해야 합니다.
다중 에이전트 협업
고급 시스템의 경우 여러 에이전트가 함께 작업하여 공유 목표를 달성할 수도 있습니다. 각 상담원에게 특정 역할을 부여할 수 있습니다. 마치 팀에서 일하는 사람들처럼 전문성을 강조하는 것입니다.
예:
-
연구원 에이전트 정보 수집 임무를 맡을 수도 있습니다.
-
코더 에이전트 Python 스크립트나 자동화 루틴을 작성할 수 있습니다.
-
검토자 에이전트 결과를 확인하고 모든 것이 제대로 이루어졌는지 확인할 수도 있습니다.
이러한 에이전트는 서로 채팅하고, 정보를 공유하고, 결정에 대해 토론하거나 투표할 수도 있습니다. 이러한 종류의 팀워크를 통해 AI 시스템은 사물을 체계적이고 모듈식으로 유지하면서 더 크고 복잡한 작업을 처리할 수 있습니다.
프로젝트:이메일을 통해 일일 일정 자동화
자동화 대상
귀하의 일반적인 아침 일과를 생각해 보십시오:
-
받은 편지함을 엽니다.
-
여러 이메일을 빠르게 훑어볼 수 있습니다.
-
회의, 작업, 중요한 알림을 찾으려고 노력합니다.
-
그런 다음 할 일 목록을 수동으로 작성하거나 캘린더에 항목을 추가합니다.
LLM 에이전트를 사용하여 해당 프로세스를 쉽게 만들어 보겠습니다. 우리 대리인은 다음을 수행합니다:
-
이메일 메시지 목록 읽기
-
회의나 마감일 등 시간에 민감한 항목을 꺼내세요
-
모든 것을 깔끔하고 깔끔한 일일 일정으로 요약하세요
1단계:필수 도구 설치
시작하려면 Python, VSCode, OpenAI API 키라는 세 가지 주요 도구가 필요합니다.
1. Python 3.9 이상 설치
공식 웹사이트(https://www.python.org/downloads/)에서 최신 버전의 Python 3.9+를 다운로드하세요.
설치가 완료되면 python --version를 실행하여 다시 확인하세요. 터미널에서.
이 명령은 단순히 시스템에 현재 설치된 Python 버전을 보고하도록 요청합니다. 우리 프로젝트와의 호환성을 보장하려면 Python 3.9.x 이상을 사용하는 것이 좋습니다.
2. VSCode 설치(선택사항이지만 권장됨)
VSCode는 Python과 완벽하게 작동하는 환상적이고 사용자 친화적인 코드 편집기입니다. https://code.visualstudio.com/에서 바로 다운로드할 수 있습니다.
3. OpenAI API 키 받기
https://platform.openai.com
으로 이동하세요.로그인하거나 새 계정을 만드세요. API 키 페이지로 이동합니다. '새 비밀 키 만들기'를 클릭하고 나중에 사용할 수 있도록 해당 키를 안전한 곳에 복사해 두세요.
4. Python 라이브러리 설치
터미널이나 명령 프롬프트를 열고 다음 필수 패키지를 설치하세요:
pip install langgraph langchain openai
이 명령은 Python의 패키지 관리자인 pip를 사용하여 에이전트에 대한 세 가지 중요한 라이브러리를 다운로드하고 설치합니다.
-
langgraph:에이전트의 워크플로를 구축하는 데 사용할 핵심 프레임워크입니다.
-
langchain:LangGraph가 구축된 대규모 언어 모델 작업을 위한 기본 라이브러리입니다.
-
openai:OpenAI의 강력한 AI 모델에 연결하기 위한 공식 Python 라이브러리입니다.
다중 에이전트 설정(5단계에서 다룰 예정)을 시험해보고 싶다면 CrewAI도 설치하세요:
pip install crewai
이 명령은 여러 AI 에이전트가 팀으로 함께 작동하도록 쉽게 조율할 수 있는 전문 프레임워크인 CrewAI를 설치합니다.
5. OpenAI API 키 설정
Python 코드가 OpenAI API 키를 찾고 사용할 수 있는지 확인해야 합니다. 이는 일반적으로 환경 변수로 설정하여 수행됩니다.
macOS/Linux의 경우 터미널에서 다음을 실행하세요("your-api-key"를 실제 키로 바꾸세요):
export OPENAI_API_KEY="your-api-key"
이 명령은 OPENAI_API_KEY라는 환경 변수를 설정합니다. 환경 변수는 Python 스크립트와 같은 애플리케이션이 코드 자체에 직접 하드코딩하지 않고도 중요한 정보에 액세스할 수 있는 안전한 방법입니다.
Windows에서는(명령 프롬프트 사용) 다음을 수행하십시오:
set OPENAI_API_KEY="your-api-key"
이는 OPENAI_API_KEY을 설정하는 Windows 해당 명령입니다. 환경변수입니다.
이제 Python 코드가 모두 OpenAI 모델과 통신하도록 설정되었습니다!
2단계:작업 정의
이 섹션의 시작 부분에서 이에 대해 간략하게 논의했습니다. 하지만 다시 한번 말씀드리지만, 우리 에이전트가 하기를 바라는 것은 다음과 같습니다:
-
회의, 이벤트, 중요한 작업을 검색하세요.
-
노트나 앱에 빠르게 적어보세요.
-
하루를 위한 대략적인 정신 계획을 세우세요.
이 루틴에는 시간과 정신적 에너지가 필요합니다. 따라서 상담원이 이를 수행하도록 하면 큰 도움이 될 것입니다.
3단계:LangGraph로 워크플로 구축
랭그래프란 무엇인가요?
LangGraph는 일종의 흐름도 그리기와 같은 "그래프 기반" 워크플로를 사용하여 에이전트를 구축하는 데 도움이 되는 멋진 프레임워크입니다. LangChain을 기반으로 하며 에이전트 프로세스의 각 단계가 어떻게 진행되는지 정확하게 제어할 수 있습니다.
이 그래프의 각 "노드"는 다음과 같은 결정 지점 또는 기능을 나타냅니다.
-
일부 입력(현재 "상태")을 받습니다.
-
추론을 하거나 조치를 취합니다(종종 LLM 및 해당 도구와 관련됨).
-
업데이트된 출력(새로운 "상태")을 반환합니다.
이러한 노드 사이에 연결을 그리면 LangGraph가 스마트하고 자동화된 상태 시스템처럼 이를 실행합니다.
랭그래프를 사용하는 이유
-
정확한 실행 순서를 제어할 수 있습니다.
-
여러 단계가 있거나 다른 경로로 분기되는 워크플로를 구축하는 데 환상적입니다.
-
OpenAI와 같은 클라우드 기반 모델과 로컬에서 실행하는 모델 모두에서 잘 작동합니다.
좋습니다. 이제 코드를 작성해 보겠습니다.
1. 이메일 입력 시뮬레이션
실제 애플리케이션에서는 에이전트가 Gmail이나 Outlook에 연결하여 실제 이메일을 가져올 가능성이 높습니다. 하지만 이 예에서는 작업을 단순하게 유지하기 위해 몇 가지 샘플 메시지를 하드코딩하겠습니다.
Python
emails = """
1. Subject: Standup Call at 10 AM
2. Subject: Client Review due by 5 PM
3. Subject: Lunch with Sarah at noon
4. Subject: AWS Budget Warning – 80% usage
5. Subject: Dentist Appointment - 4 PM
"""
이 여러 줄의 Python 문자열, emails 는 실제 이메일 콘텐츠에 대한 당사의 대리인 역할을 합니다. 에이전트가 텍스트를 처리하는 방법을 보여주기 위해 간단하고 구조화된 이메일 제목 목록을 제공하고 있습니다.
2. 에이전트 로직 정의
이제 OpenAI의 GPT 모델에 이 이메일 텍스트를 처리하고 요약으로 변환하는 방법을 알려드리겠습니다.
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, List
import operator
# Define the state for our graph
class AgentState(TypedDict):
emails: str
result: str
llm = ChatOpenAI(temperature=0, model="gpt-4o") # Using gpt-4o for better performance
def calendar_summary_agent(state: AgentState) -> AgentState:
emails = state["emails"]
prompt = f"Summarize today's schedule based on these emails, listing time-sensitive items first and then other important notes. Be concise and use bullet points:\n{emails}"
summary = llm.invoke(prompt).content
return {"result": summary, "emails": emails} # Ensure emails is also returned
진행 상황은 다음과 같습니다:
-
가져오기 :필요한 구성 요소를 가져옵니다:
-
ChatOpenAILLM에 연결하려면 -
StateGraph및ENDlanggraph.graph에서 상담원 워크플로를 구축하기 위해 -
TypedDict,Annotated및Listtyping에서 유형 확인 및 구조를 위해 -
operator(이 스니펫에서는 사용되지 않았지만 비교나 논리에 도움이 될 수 있습니다.)
-
-
에이전트 상태 :이
TypedDict에이전트가 작업할 데이터의 형태를 정의합니다. 여기에는 다음이 포함됩니다:-
emails:원시 입력 메시지. -
result:최종 출력(일별 요약).
-
-
llm =ChatOpenAI(...) :언어 모델을 초기화합니다. 우리는
temperature=0와 함께 GPT-4o를 사용하고 있습니다. 구조화된 요약 작업에 완벽하게 일관되고 예측 가능한 출력을 보장합니다. -
calendar_summary_agent(상태:AgentState) :이 기능은 우리 에이전트의 "두뇌"입니다. 그것은:
-
이메일 목록을 포함하는 현재 상태를 가져옵니다.
-
해당 상태에서 이메일을 추출합니다.
-
시간에 민감한 항목의 우선순위를 지정하여 글머리 기호를 사용하여 간결한 일일 일정 요약을 생성하도록 모델에 지시하는 프롬프트를 구성합니다.
-
llm.invoke(prompt).content이 있는 모델에 이 프롬프트를 보냅니다. , LLM의 응답을 일반 텍스트로 반환합니다. -
새로운
AgentState를 반환합니다. 다음을 포함하는 사전:-
result:생성된 요약 -
emails:다운스트림에 필요할 경우를 대비해 보존됩니다.
-
-
3. 그래프 작성 및 실행
이제 LangGraph를 사용하여 단일 에이전트 작업의 흐름을 계획하고 실행해 보겠습니다.
builder = StateGraph(AgentState)
builder.add_node("calendar", calendar_summary_agent)
builder.set_entry_point("calendar")
builder.set_finish_point("calendar") # END is implicit if not set explicitly
graph = builder.compile()
# Run the graph using your simulated email data
result = graph.invoke({"emails": emails})
print(result["result"])
진행 상황은 다음과 같습니다:
-
빌더 =StateGraph(AgentState): StateGraph 개체를 시작하고 있습니다. AgentState를 전달함으로써 LangGraph에 내부 상태에 대한 예상 데이터 구조를 알려줍니다.
-
builder.add_node("calendar", Calendar_summary_agent): 이 줄은 그래프에 "노드"라는 이름을 추가합니다. 우리는 그것을 "캘린더"라고 부르며
calendar_summary_agent에 연결합니다. 함수, 즉 이 노드가 활성화되면 함수가 실행된다는 의미입니다. -
builder.set_entry_point("calendar"): 이는 "캘린더"를 작업 흐름의 첫 번째 단계로 설정합니다. 그래프를 시작하면 여기에서 실행이 시작됩니다.
-
builder.set_finish_point("calendar"): 이는 "캘린더" 노드가 작업을 마치면 전체 그래프 프로세스가 완료된다는 것을 LangGraph에 알려줍니다.
-
그래프 =builder.compile(): 이 명령은 정의된 그래프 청사진을 가져와 실행 가능한 워크플로로 "컴파일"합니다.
-
결과 =graph.invoke({"emails":emails}): 이곳이 바로 마법이 일어나는 곳입니다! 우리는 그래프가 실행을 시작하도록 지시하고 있습니다. 이메일 데이터가 포함된 초기 상태를 전달합니다. 그런 다음 그래프는 끝점에 도달할 때까지 노드를 통해 이 데이터를 처리하여 최종 상태를 반환합니다.
-
인쇄(결과["결과"]): 마지막으로 결과(그래프의 최종 상태)에서 요약된 일정을 가져와 콘솔에 인쇄합니다.
출력 예
Your Schedule:
- 10:00 AM – Standup Call
- 12:00 PM – Lunch with Sarah
- 4:00 PM – Dentist Appointment
- Submit client report by 5:00 PM
- AWS Budget Warning – check usage
붐! 이메일을 읽고 일일 일정을 조정할 수 있는 AI 에이전트를 구축했습니다. 정말 멋지죠? 이는 LLM 상담원이 단 몇 줄의 코드만으로 무엇을 할 수 있는지 간단하면서도 강력하게 보여줍니다.
CrewAI를 통한 다중 에이전트 협업
CrewAI란 무엇인가요?
CrewAI는 팀을 구성할 수 있는 흥미로운 오픈 소스 프레임워크입니다. 실제 프로젝트 팀처럼 원활하게 협력하는 에이전트! CrewAI 설정의 각 에이전트:
-
구체적이고 전문적인 역할을 갖고 있습니다.
-
팀원들과 소통하고 정보를 공유할 수 있습니다.
-
공동의 목표를 달성하기 위해 협력합니다.
이 다중 에이전트 접근 방식은 작업이 에이전트 한 명에게 너무 크거나 복잡할 때, 또는 특정 부분으로 나누어 작업을 더 명확하고 효율적으로 할 때 매우 유용합니다.
이메일 요약 작업을 위한 샘플 역할
소규모 상담원 팀이 이메일 요약 작업을 처리한다고 가정해 보겠습니다.
에이전트 이름 역할 책임 추출기이메일 스캐너"이메일에서 회의, 알림 및 작업 찾기"우선 순위일정 최적화긴급성 및 시간별로 항목 정렬포맷터출력 생성기"깨끗하고 세련된 일일 일정 작성"샘플 CrewAI 코드
from crewai import Agent, Crew, Task, Process
from langchain_openai import ChatOpenAI
import os
# Set your OpenAI API key from environment variables
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY" # Make sure this is set, or defined directly
# Initialize the LLM (using gpt-4o for better performance)
llm = ChatOpenAI(temperature=0, model="gpt-4o")
# Define the agents with specific roles and goals
extractor = Agent(
role="Email Scanner",
goal="Find all meetings, reminders, and tasks from the given emails, accurately extracting details like time, date, and subject.",
backstory="You are an expert at scanning emails for key information. You meticulously extract every relevant detail.",
verbose=True,
allow_delegation=False,
llm=llm
)
prioritizer = Agent(
role="Schedule Optimizer",
goal="Sort extracted items by urgency and time, preparing them for a daily agenda.",
backstory="You are a master of time management, always knowing what needs to be done first. You organize tasks logically.",
verbose=True,
allow_delegation=False,
llm=llm
)
formatter = Agent(
role="Output Generator",
goal="Generate a clean, polished, and concise daily agenda in bullet-point format, clearly listing all schedule items.",
backstory="You are a professional secretary, ensuring all outputs are perfectly formatted and easy to read. You prioritize clarity.",
verbose=True,
allow_delegation=False,
llm=llm
)
# Simulate email input
emails = """
1. Subject: Standup Call at 10 AM
2. Subject: Client Review due by 5 PM
3. Subject: Lunch with Sarah at noon
4. Subject: AWS Budget Warning – 80% usage
5. Subject: Dentist Appointment - 4 PM
"""
# Define the tasks for each agent
extract_task = Task(
description=f"Extract all relevant events, meetings, and tasks from these emails: {emails}. Focus on precise details.",
agent=extractor,
expected_output="A list of extracted items with their details (e.g., '- Standup Call at 10 AM', '- Client Review due by 5 PM')."
)
prioritize_task = Task(
description="Prioritize the extracted items by time and urgency. Meetings first, then deadlines, then other notes.",
agent=prioritizer,
context=[extract_task], # The output of extract_task is the input here
expected_output="A prioritized list of schedule items."
)
format_task = Task(
description="Format the prioritized schedule into a clean, easy-to-read daily agenda using bullet points. Ensure concise language.",
agent=formatter,
context=[prioritize_task], # The output of prioritize_task is the input here
expected_output="A well-formatted daily agenda with bullet points."
)
# Instantiate the crew
crew = Crew(
agents=[extractor, prioritizer, formatter],
tasks=[extract_task, prioritize_task, format_task],
process=Process.sequential, # Tasks are executed sequentially
verbose=2 # Outputs more details during execution
)
# Run the crew
result = crew.kickoff()
print("\n########################")
print("## Final Daily Agenda ##")
print("########################\n")
print(result)
진행 상황은 다음과 같습니다:
-
가져오기: CrewAI의 주요 클래스인 Agent, Crew, Task 및 Process를 가져옵니다.
ChatOpenAI도 가져옵니다. 언어 모델과 OS가 환경 변수를 처리하도록 합니다. -
llm =ChatOpenAI(...): LangGraph 예와 마찬가지로 OpenAI 언어 모델을 설정하여 응답이 직접적인지(온도=0) 확인하고 gpt-4o 모델을 사용합니다.
-
에이전트 정의(추출기, 우선순위 지정자, 포맷터):
-
이러한 각 변수는 Agent 인스턴스를 생성합니다. 에이전트는 역할(하는 일), 달성하려는 구체적인 목표, 배경 이야기(LLM이 목적을 더 잘 이해하는 데 도움이 되는 일종의 성격이나 전문 지식)로 정의됩니다.
-
verbose=True는 에이전트가 작업하면서 "생각"을 인쇄하게 하므로 디버깅에 매우 유용합니다.
-
allowed_delegation=False는 해당 에이전트가 자신에게 할당된 작업을 다른 에이전트에게 전달하지 않음을 의미합니다(더 복잡한 위임 시나리오에서는 True로 설정할 수 있음).
-
llm=llm은 각 에이전트를 OpenAI 언어 모델에 연결합니다.
-
-
시뮬레이션된 이메일: 이 예에서는 동일한 샘플 이메일 데이터를 재사용합니다.
-
작업 정의(extract_task, Prioritize_task, format_task):
-
각 작업은 상담원이 수행해야 하는 특정 작업을 정의합니다.
-
설명은 상담원에게 작업과 관련된 내용을 명확하게 알려줍니다.
-
에이전트는 이 작업을 정의된 에이전트 중 하나(예:extract_task용 추출기)에 할당합니다.
-
context=[...]는 CrewAI 협업의 중요한 부분입니다. 출력을 사용하도록 작업에 지시합니다. 이전 작업을 입력으로 . 예를 들어, Prioritize_task는 extract_task의 출력을 컨텍스트로 사용합니다.
-
예상_출력은 에이전트에게 결과가 어떤 모습이어야 하는지에 대한 아이디어를 제공하여 LLM을 안내하는 데 도움이 됩니다.
-
-
승무원 =승무원(...):
-
여기가 우리 팀을 모으는 곳이에요! Crew 인스턴스를 생성하여 에이전트 및 작업 목록을 제공합니다.
-
process=Process.ential은 작업 목록에 정의된 순서대로 작업을 하나씩 실행하도록 팀에 지시합니다. CrewAI는 계층적 프로세스와 같은 고급 프로세스도 지원합니다.
-
verbose=2는 제작진의 내부 작업과 의사소통에 대한 매우 자세한 로그를 보여줍니다.
-
-
결과 =크루.킥오프(): 이 명령은 공식적으로 전체 다중 에이전트 워크플로를 시작합니다. 상담원은 협력하고, 정보를 전달하고, 할당된 작업을 순차적으로 수행하기 시작합니다.
-
fprint(결과): 마지막으로, 전체 제작진의 공동 노력이 통합된 결과물이 콘솔에 인쇄됩니다.
CrewAI는 에이전트 간의 모든 커뮤니케이션을 영리하게 처리하고, 누가 언제 무엇을 작업해야 하는지 파악하고, 한 에이전트에서 다음 에이전트로 출력을 원활하게 전달합니다. 이는 마치 미니 AI 조립 라인을 갖는 것과 같습니다!
실행 중에 실제로 어떤 일이 발생하나요?
그렇다면 LangGraph를 사용하든 CrewAI를 사용하든 에이전트가 실행될 때 뒤에서 실제로 무슨 일이 벌어지고 있을까요? 실행 과정을 분석해 보겠습니다:
-
시스템이 입력 상태를 얻습니다. (예:이메일).
-
첫 번째 에이전트 또는 그래프 노드는 이 입력을 읽고 LLM(대형 언어 모델)을 사용합니다. 이해를 돕기 위해.
-
에이전트는 이해한 내용을 바탕으로 작업을 결정합니다. 주요 이벤트를 꺼내거나 특정 도구를 호출하는 등의 작업을 수행합니다.
-
필요한 경우 상담원은 도구를 호출할 수 있습니다. (웹 검색이나 파일 리더 등) 더 많은 컨텍스트를 얻거나 외부 작업을 수행합니다.
-
해당 작업의 결과는 다음 에이전트에게 전달됩니다. 팀에서(다중 에이전트 설정인 경우) 또는 귀하에게 직접 반환됩니다.
실행은 다음까지 계속됩니다:
-
작업이 완전히 완료되었습니다.
-
모든 상담원이 할당된 역할을 마쳤습니다.
-
작업 흐름의 중지 조건 또는 지정된 "END" 지점에 도달했습니다.
모든 단계에 추론, 결정, 이전 상호작용 기억이 포함되는 매우 스마트한 워크플로 엔진이라고 생각하세요.
LLM 에이전트는 안전한가요? 보안 및 개인정보 보호에 대해 알아야 할 사항
LLM 에이전트는 멋지지만 다음과 같은 중요한 질문을 제기합니다. AI가 워크플로의 일부를 실행하거나 데이터와 상호 작용할 것이라고 정말로 신뢰할 수 있습니까? 상황에 따라 다릅니다. OpenAI 또는 Anthropic과 같은 서비스를 사용하는 경우 데이터는 전송 중에 암호화되며 (현재로서는) 훈련에 사용되지 않습니다.
그러나 일부 데이터는 남용을 방지하기 위해 일시적으로 기록될 수 있습니다. 일반적으로 테스트나 개인 프로젝트에는 문제가 없지만 민감한 비즈니스 정보, 고객 데이터 또는 비공개 항목을 다루는 경우에는 주의가 필요합니다.
익명화된 입력을 사용하고, 전체 데이터 세트의 노출을 피하고, 완전한 제어가 필요한 경우 LLaMA 또는 Mistral과 같은 오픈 소스 모델을 사용하여 로컬로 에이전트를 실행하는 것을 고려해보세요.
상담원이 지나치지 않도록 명확한 경계를 설정할 수도 있습니다. 새로운 인턴을 온보딩하는 것과 같다고 생각하세요. 첫날부터 모든 것에 대한 액세스 권한을 부여하지는 않습니다.
상담원에게 필요한 도구와 파일만 제공하고, 수행한 작업에 대한 로그를 유지하며, 실제 변경을 허용하기 전에 항상 결과를 검토하세요.
이 기술이 성장함에 따라 더 나은 샌드박싱, 메모리 제한, 역할 기반 액세스와 같은 더 많은 안전 기능이 제공됩니다. 하지만 지금은 에이전트를 사람의 감독이 필요한 강력한 도우미처럼 대하는 것이 현명합니다.
문제해결 및 팁
때로는 상담원이 약간 이상할 수도 있습니다. 다음은 발생할 수 있는 몇 가지 일반적인 문제와 해결 방법입니다.
문제 수정 제안 에이전트가 영원히 반복되는 것 같습니다. 최대 반복 횟수를 설정하거나 보다 명확한 중지 지점을 정의하십시오. 출력이 너무 복잡하거나 장황합니다. 보다 구체적인 프롬프트를 사용하십시오(예:"글머리 기호에만 응답"). 입력이 너무 길거나 잘립니다. 큰 콘텐츠 조각을 더 작은 덩어리로 나누어 개별적으로 요약합니다. 에이전트가 너무 느리게 실행됩니다. gpt-3.5와 같은 더 빠른 LLM 모델을 사용해 보거나 로컬 모델 실행을 고려하십시오.유용한 팁:에이전트 기능 내에 print() 문이나 로깅 메시지를 추가하여 각 단계에서 무슨 일이 일어나고 있는지 확인하고 상태 전환을 디버그할 수도 있습니다.
더 많은 일일 자동화 살펴보기
하나의 에이전트 기반 작업을 구축하고 나면 다른 자동화에 맞게 패턴을 조정하는 것이 매우 쉽다는 것을 알게 될 것입니다. 창의력을 발휘할 수 있는 몇 가지 멋진 아이디어는 다음과 같습니다.
작업 유형 예시 자동화 DevOps Assistant"시스템 로그를 읽고 잠재적인 문제를 감지하고 해결 방법을 제안합니다."Finance Tracker은행 명세서 또는 CSV 파일을 읽고 지출 습관/예산을 요약합니다.Meeting Organizer회의 후 자동으로 작업 항목을 추출하고 소유자를 할당합니다.Inbox Cleaner"긴급하지 않은 이메일에 자동으로 레이블을 지정하고 보관하고 삭제합니다."Note Summarizer일일 메모를 깔끔한 형식의 할 일 목록 또는 요약으로 변환합니다.Link Checker문서에서 URL을 추출하고 아직 남아 있는지 자동으로 테스트합니다. valid.Resume FormatterScore는 작업 설명에 대해 다시 시작하고 자동으로 형식을 지정합니다.이들 각각은 LangGraph이든 CrewAI이든 우리가 논의한 것과 동일한 원칙과 프레임워크를 사용하여 구축할 수 있습니다.
에이전트 기술의 다음 단계는 무엇인가요?
LLM 상담원은 빛의 속도로 발전하고 있으며 차세대 혁신의 물결이 이미 도래했습니다.
-
더 스마트해진 메모리 시스템 :상담원의 장기 기억력이 향상되어 장기간에 걸쳐 학습하고 과거의 대화와 행동을 기억할 수 있을 것으로 기대합니다.
-
다중 모드 에이전트 :상담원은 더 이상 텍스트만 처리하지 않습니다! 이미지, 오디오, 비디오를 처리하고 이해할 수 있게 되어 훨씬 더 다양한 용도로 사용할 수 있게 됩니다.
-
고급 계획 프레임워크 :ReAct, Toolformer 및 AutoGen과 같은 기술은 성가신 "환각"을 추론하고 계획하고 줄이는 에이전트의 능력을 지속적으로 향상시키고 있습니다.
-
에지 배포 :에이전트가 LLaMA 3 또는 Mistral과 같은 경량 모델을 사용하여 로컬 컴퓨터나 장치에서 완전히 오프라인으로 실행된다고 상상해 보세요.
가까운 시일 내에 상담원이 다음과 원활하게 통합되는 모습을 보게 될 것입니다.
-
DevOps 파이프라인
-
대기업 워크플로
-
일상적인 생산성 도구
-
모바일 앱 및 스마트 기기
-
게임, 시뮬레이션 및 교육 플랫폼
최종 요약
좋습니다. 방금 배우고 성취한 모든 멋진 내용을 빠르게 요약해 보겠습니다.
-
LLM 에이전트가 무엇이고 왜 그렇게 강력한지 확실히 이해하셨습니다.
-
LangGraph 및 CrewAI와 같은 오픈 소스 프레임워크를 사용하여 에이전트 구축을 훨씬 쉽게 만드는 방법을 살펴보았습니다.
-
받은 편지함 요약이라는 일반적인 일상 작업을 자동화하기 위해 LangGraph를 사용하여 실제 LLM 에이전트를 구축했습니다!
-
CrewAI를 통해 다중 에이전트 협업의 세계를 탐색하고 AI 팀이 어떻게 협력할 수 있는지 이해하셨습니다.
-
여러분은 이러한 원칙을 적용하고 이를 확장하여 수많은 다른 작업을 자동화하는 방법을 배웠습니다.
따라서 다음 번에 반복적인 작업을 수행하다가 막히게 되면 스스로에게 물어보십시오. "이봐, 내가 그것을 위한 에이전트를 만들 수 있을까?" 아마도 대답은 '그렇다'일 것입니다!
리소스 요약
LLM 에이전트 구축에 대해 더 자세히 알고 싶다면 다음과 같은 몇 가지 유용한 리소스를 참조하세요.
무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요