
이것은 Google Agent Development Kit (ADK)를 기반으로 개발된 지능형 경비 상환 에이전트로, Agent2Agent (A2A) 서버로 실행됩니다. 이 에이전트의 핵심 기능은 지능형 양식 생성입니다: 사용자의 상환 요청에 필요한 정보가 부족할 때, 에이전트가 자동으로 사용자가 작성할 양식을 생성하여 처리 전에 완전한 상환 정보를 수집합니다.
# 프로젝트를 로컬로 클론 (필요한 경우)
git clone https://github.com/sing1ee/a2a-adk-expense-reimbursement.git
cd a2a-adk-expense-reimbursement
# 환경 변수 파일 생성
echo "GOOGLE_API_KEY=your_api_key_here" > .env
# your_api_key_here를 실제 API 키로 교체
# 가상 환경 활성화
source .venv/bin/activate
# uv를 사용하여 프로젝트 실행
uv run .
서버는 http://localhost:10002에서 시작됩니다.
새 터미널 창을 엽니다:
git clone https://github.com/a2aproject/a2a-samples.git
# CLI 클라이언트 디렉토리로 이동 (samples/python/hosts/cli에 있다고 가정)
cd a2a-samples/samples/python/hosts/cli
# 상환 에이전트에 연결
uv run . --agent http://localhost:10002
CLI 클라이언트에서 다음 테스트 명령을 입력하세요:
# 예제 1: 정보가 누락된 요청 (양식이 트리거됨)
점심 식사비 $20를 상환해야 합니다
# 예제 2: 완전한 정보가 있는 요청
2024년 1월 15일 고객 점심 식사비 $50를 상환해야 합니다
# 예제 3: 부분적인 정보가 있는 요청
어제 교통비 $25를 상환해 주세요
a2a-adk-expense-reimbursement/
├── __main__.py # 서버 시작 진입점
├── agent.py # 핵심 에이전트 로직
├── agent_executor.py # A2A 요청 실행기
├── pyproject.toml # 프로젝트 설정 및 종속성
└── README.md # 프로젝트 문서
__main__.py - 서버 진입점agent.py - 핵심 에이전트 로직세 가지 주요 도구 함수를 포함:
create_request_form(): 상환 양식 템플릿 생성return_form(): 양식을 A2A 프로토콜 형식으로 래핑하여 반환reimburse(): 실제 상환 승인 작업 실행agent_executor.py - 요청 실행기다음 시퀀스 다이어그램은 상환 에이전트의 완전한 상호작용 흐름을 보여줍니다:

# Google API 설정
GOOGLE_API_KEY=your_api_key_here
# Vertex AI 사용 (선택사항)
GOOGLE_GENAI_USE_VERTEXAI=TRUE
# 서버 설정
HOST=localhost
PORT=10002
uv run . --host 0.0.0.0 --port 8080
에이전트는 기본적으로 INFO 레벨 로깅을 활성화합니다. 상세한 요청 처리 과정을 확인하세요:
# 서버 로그 보기
uv run . 2>&1 | tee agent.log
에이전트는 JSON Schema 형식을 따르는 양식을 생성합니다:
{
"type": "form",
"form": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date",
"title": "Date",
"description": "Date of expense"
},
"amount": {
"type": "string",
"format": "number",
"title": "Amount",
"description": "Amount of expense"
},
"purpose": {
"type": "string",
"title": "Purpose",
"description": "Purpose of expense"
}
},
"required": ["date", "amount", "purpose"]
}
}
중요 공지: 이 샘플 코드는 Agent2Agent (A2A) 프로토콜의 작동 방식을 보여주기 위한 데모 목적으로만 사용됩니다. 프로덕션 애플리케이션을 구축할 때는 모든 외부 에이전트를 잠재적으로 신뢰할 수 없는 엔티티로 취급해야 합니다.