이번 프로젝트에서는 LangGraph와 LangStudio를 활용하여 나만의 AI 에이전트를 만들어보았습니다. 코드 작성부터 테스트까지 Cursor를 사용해 단 2시간 만에 모두 완료할 수 있었는데, 그 과정과 결과를 간단히 공유하고자 합니다.
일단 영상 부터 보시죠! (feat. screen studio)
# 소개
이 프로젝트의 목표는 AI 에이전트를 설계하고 구현하여 특정 사용자 질문에 따라 적절한 에이전트를 선택하고, 필요한 정보를 제공하는 것입니다. OpenAI의 GPT-4 모델을 활용해 다양한 문서를 기반으로 유연한 답변을 제공하는 기능을 만들었고, 랭그래프를 통해 그 흐름을 설계했습니다. 이 모든 과정을 Cursor의 도움으로 빠르게 진행할 수 있었습니다.
[ 랭그래프 전체 구조 ]
일단 Cursor에서도 이렇게 코드 설명을 MD 파일로 만들어달라고 가능합니다
검은 화면에 있는 챗봇의 스크린샷
# AI Agent System Documentation
## 시스템 개요
이 시스템은 다목적 AI 에이전트 시스템으로, API 문서와 프로젝트 문서를 기반으로 질문에 답변할 수 있는 지능형 챗봇입니다.
## 주요 컴포넌트
### 1. 에이전트 종류
- **API Agent**: Swagger 문서를 기반으로 API 관련 질문 답변
- **Project Docs Agent**: 프로젝트 문서(.md)를 기반으로 프로젝트 관련 질문 답변
- **General Agent**: 일반적인 대화 및 다른 에이전트들의 협력이 필요한 경우 처리
### 2. 핵심 기능
- **에이전트 선택 메커니즘**: 질문 내용을 분석하여 최적의 에이전트 자동 선택
- **문서 컨텍스트 관리**: Swagger 및 마크다운 문서 자동 로드 및 관리
- **대화 요약**: 6개 이상의 메시지가 쌓이면 자동으로 대화 내용 요약
- **상태 관리**: EnhancedState 클래스를 통한 효율적인 상태 관리
### 3. 워크플로우
```mermaid
graph TD
A[시작] --> B[에이전트 선택]
B --> C{선택된 에이전트}
C -->|API 질문| D[API Agent]
C -->|프로젝트 질문| E[Project Docs Agent]
C -->|일반 질문| F[General Agent]
D --> G{계속?}
E --> G
F --> G
G -->|Yes| H[대화 요약]
G -->|No| I[종료]
H --> B
```
## 설정 방법
### 1. 환경 설정
```env
OPENAI_API_KEY=your_api_key
SWAGGER_PATH=./swagger/api-docs.yaml
DOCS_DIRECTORY=./docs
```
### 2. 필요한 패키지
```text
langchain>=0.1.0
langchain-core>=0.2.38,<0.4.0
langgraph>=0.0.10
langchain-openai>=0.0.2
pyyaml>=6.0.1
python-dotenv>=1.0.0
openai>=1.10.0
```
## 사용 예시
```python
# 챗봇 초기화
response = chat("API에서 궁금한게 있습니다...!")
# 프로젝트 문서 질문
response = chat("ZOOM 영상을 유튜브에 업로드하는 방법을 알려주세요.")
# 일반적인 질문
response = chat("이 프로젝트의 목적이 무엇인가요?")
```
## 폴더 구조
```
studio/
├── chatbot.py # 메인 에이전트 시스템
├── requirements.txt # 의존성 패키지
├── .env # 환경 변수
├── swagger/ # API 문서
│ └── api-docs.yaml
├── docs/ # 프로젝트 문서
│ └── *.md
└── langgraph.json # 그래프 설정
```
## 특징 및 장점
1. **모듈화된 설계**
- 각 에이전트가 독립적으로 작동
- 새로운 에이전트 추가가 용이한 구조
2. **컨텍스트 인식**
- 대화 이력 유지 및 요약
- 문서 기반 답변으로 정확성 확보
3. **확장성**
- 새로운 문서 추가 시 자동 로드
- 다양한 형태의 질문 처리 가능
4. **유지보수성**
- 명확한 코드 구조
- 문서화된 설정 및 환경 변수
진행 방법
1. 코드 작성
- LangGraph와 LangStudio 사용: 프로젝트에는 LangGraph의 메시지 상태와 상태 그래프를 활용해 AI 에이전트의 흐름을 설계했습니다. 이를 통해 각 질문에 대해 최적의 에이전트를 선택하고 그에 맞는 답변을 제공하도록 했습니다.
- Cursor로 빠르게 개발: 전체 코드를 작성하는 데에 Cursor를 사용했습니다. 코드 자동 완성 기능 덕분에 코드를 효율적으로 작성하고, 오류를 바로잡을 수 있었습니다.
2. 주요 기능 구현
- 에이전트 선택 기능: 사용자가 질문을 했을 때, API 관련 질문, 프로젝트 문서 관련 질문, 일반적인 질문에 따라 적합한 에이전트를 선택하도록 설계했습니다.
- API 및 프로젝트 문서 연동: Swagger API 문서와 프로젝트 문서를 로드하여 이를 기반으로 답변을 제공할 수 있게 했습니다.
- 대화 요약 기능: 대화가 길어질 경우, 요약하여 이전 대화 내용을 간결하게 관리할 수 있도록 했습니다.
3. 테스트 및 완료
- 각 에이전트가 올바르게 선택되고, API와 프로젝트 문서를 잘 활용해 답변을 제공하는지 테스트했습니다. 모든 테스트를 2시간 내에 마칠 수 있었고, 예상한 대로 잘 작동했습니다.
중간 중간 에러가 나면 Cursor Compose를 통해 에러를 수정했습니다.
또한 가입된 렝스미스에 접속하여 왜 이렇게 결과가 나오는지 확인 가능합니다.
한국어 텍스트 편집기의 스크린샷
추가적으로 렝스미스에서는 토큰을 얼마나 썼고, 얼마나 시간이 걸렸는지도 쉽게 확인해볼 수 있습니다.
한국어 웹사이트 스크린샷
또한 랭스튜디오에서 가장 좋은 기능인 Interrupt 기능은 한 단계마다 멈추어, 어느 노드로 움직이는지 천천히 확인 가능합니다.
에이전트와 프로젝트 간의 대화 스크린샷
# 결과와 배운 점
이번 프로젝트를 통해 LangGraph의 상태 관리와 LLM을 활용한 에이전트 선택 로직을 깊이 이해할 수 있었습니다. 특히, Cursor를 사용하여 개발 시간을 크게 단축할 수 있었고, 자동 완성 기능이 코드 작성의 정확도와 속도를 높이는 데 큰 도움을 주었습니다.
또한, Swagger와 프로젝트 문서를 자동으로 로드하고 AI 모델이 이를 활용해 답변할 수 있도록 한 점이 사용자 경험을 크게 개선하는 데 기여했습니다.
# 개선할 점
앞으로는 더 많은 문서를 연동하고, 다양한 에이전트를 추가하여 더 복잡한 질문도 처리할 수 있도록 개선할 예정입니다. 또한, LangStudio의 시각적인 디버깅 기능을 활용해 워크플로우를 더욱 최적화할 계획입니다.
추가로, 각 에이전트 간 협업이 필요할 때 효율적인 다중 에이전트 협력 로직을 구현해보고 싶습니다. 이를 통해 다양한 도구와의 연계를 강화하여 사용자에게 더욱 유용한 답변 을 제공할 수 있을 것입니다.
# 도움 받은 글
- LangGraph 공식 문서: 상태 그래프 설계와 메시지 상태 관리에 대한 큰 도움을 받았습니다.
- OpenAI Chat Model: GPT-4 모델을 이용해 사용자 질문에 대한 적절한 답변을 생성했습니다.
- Swagger와 프로젝트 문서: API 문서와 프로젝트 관련 정보를 자동으로 로드하고, 이를 바탕으로 답변할 수 있는 기능을 구현하는 데 중요한 역할을 했습니다.
# 마무리
Cursor를 사용해 짧은 시간 안에 프로젝트를 구현하고 테스트까지 완료할 수 있었습니다. 앞으로도 이 AI 에이전트를 더 발전시켜서 실제 업무에 유용하게 활용할 수 있도록 개선해 나가겠습니다.
여러분의 의견이 궁금합니다! 추가 기능이나 개선 아이디어가 있다면 언제든지 공유 부탁드립니다. 😊