메모리 기능, 내장 검색, LiteLLM 사용 Google Agent Development Kit을 활용한 에이전트 🤖 Gemini, Fast API, Streamlit 🗃
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
앱 개발
대상자
AI 에이전트 개발에 관심 있는 개발자, 특히 Python 및 클라우드 서비스에 익숙한 중급 이상 개발자
핵심 요약
- Google Agent Development Kit (ADK)는
메모리 기능
,내장 검색 도구
,다양한 LLM(예: Bedrock, OpenAI, Ollama)
을 지원하는 오픈소스 프레임워크로, 프로덕션 환경에서 사용 가능한 로깅, 모니터링, 오류 처리 기능을 제공합니다. - MemoryService는
InMemoryMemoryService
와VertexAiRagMemoryService
두 가지 방식으로 구현되며, VertexAiRagMemoryService는 Google Cloud의 Vertex AI RAG 서비스를 활용해 지속적인 지식 저장이 가능합니다. - LiteLLM을 사용하여
bedrock/meta.llama3-1-405b-instruct-v1:0
과 같은 다양한 LLM 모델을 호환할 수 있으며, Streamlit과 FastAPI를 통해 프론트엔드 인터페이스를 구축할 수 있습니다.
섹션별 세부 요약
1. Google Agent Development Kit (ADK) 소개
- 구조화된 워크플로우: 에이전트가 결정, 도구 사용, 응답 생성을 명확한 루프로 자동화합니다.
- 다중 에이전트 협업: 복잡한 작업을 위해 전문적인 에이전트가 협업할 수 있도록 설계되었습니다.
- LLM 유연성: GPT, Claude, Nova 등 다양한 모델을 사용하고 전환할 수 있습니다.
2. 메모리 서비스 (MemoryService) 구현
- SessionService: 단일 대화의 세션 상태를 관리하며, 세션 생성, 조회, 업데이트, 삭제를 처리합니다.
- InMemoryMemoryService: 애플리케이션 메모리에 데이터를 저장하지만, 재시작 시 데이터가 소멸됩니다.
- VertexAiRagMemoryService: Google Cloud의 Vertex AI RAG 서비스를 사용하여 지속적인 지식 저장 및 세마틱 검색이 가능합니다.
3. LiteLLM과 다양한 LLM 모델 사용
- LiteLlm 클래스를 사용해
bedrock/meta.llama3-1-405b-instruct-v1:0
과 같은 모델을 사용할 수 있습니다. - 구성 예시:
Agent(model=LiteLlm(model="bedrock/meta.llama3-1-405b-instruct-v1:0"), ...)
4. 프론트엔드 (Streamlit) 구현
- Streamlit UI를 사용해 사용자 입력과 에이전트 응답을 실시간으로 표시합니다.
.env
파일에 Gemini API 키와 Serper API 키를 설정해야 합니다.
5. 백엔드 구현 (FastAPI)
- FastAPI를 통해 에이전트의 메모리 및 검색 기능을 처리하는 백엔드를 구축합니다.
- 요청 처리 예시:
from fastapi import FastAPI
app = FastAPI()
6. GitHub 샘플 프로젝트
- 두 가지 샘플 프로젝트가 제공되며, 주소는 다음과 같습니다:
- 04-agent-memory-builtin-search-tool
- 05-agent-litellm-bedrock-ollama
결론
- VertexAiRagMemoryService를 사용해 지속적인 지식 저장이 필요한 경우, Google Cloud 프로젝트와 Vertex AI RAG 리소스를 설정해야 합니다.
- LiteLLM을 통해 다양한 LLM 모델을 호환하고, Streamlit과 FastAPI를 결합해 사용자 친화적인 인터페이스를 구축할 수 있습니다.
- Gemini API 키와 Serper API 키를
.env
파일에 설정하고,pip install
을 통해 필요한 라이브러리(fastapi
,google-adk
,google-generativeai
)를 설치해야 합니다.