FastAPI를 활용하여 에이전트(Agent)의 마지막 태스크가 생성한 결과를 router.py를 거쳐 프론트엔드까지 전달해야 하는 상황에서, 라우터 단계에서 빈 리스트([])가 전달되는 오류가 발생했다.
이 문제를 해결하기 위해 진행한 과정과 원인을 분석하고, 최종적으로 해결한 방법을 정리한다.
1. 문제 상황 설명
- CrewAI의 Task 실행 결과가 빈 리스트로 반환되는 문제 발생
- 디버깅 결과 확인된 CrewOutput 구조와 문제점
2. 원인 분석
- CrewAI의 Task 결과가 raw 문자열 형태로 반환됨
- Pydantic 모델 변환 과정에서 데이터 손실 발생
- 결과 데이터 구조 (raw, pydantic, json_dict 등) 설명
3. 해결 과정
- 기존 코드의 문제점
result_dict.get("spots", [])
- 오류 결과
CrewOutput이 아래와 같이 맛집 리스트를 반환했다.
[DEBUG] CrewOutput: spots=[spot_pydantic(kor_name='신발원', eng_name='Sinbalwon', description='신발원입니다. 넣는 순간 육즙이 터지는 중국식 만두입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 11:00 ~ 20:30입니다. 대표메뉴는 고기만두, 군만두입
니다.', address='부산광역시 동구 초량동 561-1', url='https://www.siksinhot.com/P/24962', image_url='https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/36/eaab2cf081a275b9313c7405702cc88c_res.jpeg', map_url='https://map.naver.com/v5/entry/place/24962', latitude=35.1152, longitude=129.0403, spot_category=2, phone_number='051-467-0177', business_status=True, business_hours='11:00-20:30', order=1, day_x=1, spot_time='09:00:00'), spot_pydantic(kor_name='본전돼지국밥', eng_name='Bonjeon Dwaeji Gukbap', description='본전
돼지국밥입니다. 고기가 푸짐하게 들어간 돼지국밥입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 08:30 ~ 21:30입니다. 대표메뉴는 내장국밥, 돼지국밥입니다.', address='부산광역시 동구 초량동 561-1', url='https://www.siksinhot.com/P/264862', image_url='http://post.phinf.naver.net/20160926_159/1474864187815Jbt9H_JPEG/IKvR6ekFYrLuGIbQftIfbQLZm6cE.jpg', map_url='https://map.naver.com/v5/entry/place/264862', latitude=35.1152, longitude=129.0403, spot_category=2, phone_number='051-441-2946', business_status=True, business_hours='08:30-21:30', order=2, day_x=1, spot_time='12:00:00'), spot_pydantic(kor_name='이재모피자 본점', eng_name='Lee Jaemo Pizza Main Branch', description='30여년을 운영 중인 피자전문점으로 부산에서 피자가 대중화된 시기를 생각하면 상당한 전통을 자
랑하는 유명한 곳이다. 국내산 임실치즈를 사용한 푸짐한 토핑의 피자가 특징이며, 변함없는 맛을 지키고 있다.', address='부산광역시 중구 중앙동4가 79-1', url='https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=124', image_url='https://img-cdn.theqoo.net/ISssZD.jpg', map_url='https://map.naver.com/v5/entry/place/124', latitude=35.1019, longitude=129.0323, spot_category=2, phone_number='051-245-4086', business_status=True, business_hours='11:00-22:00', order=3, day_x=1, spot_time='18:00:00'), spot_pydantic(kor_name='라이옥 베트남 쌀국수 본점', eng_name='Raeoak Vietnamese Noodle Main Branch', description='베트남 50년 전통의 라이옥 쌀국수 맛4.8, 가격4.0, 친절4.3 라이옥 베트남 쌀국수 본점은 제가 좋아하는 경성대 맛집입니다. 정말 오랜만에 방문했습니다. 여전히 손님들
로 꽉 차있었어요.', address='부산광역시 금정구 장전동 420-1', url='https://raeoakfood.co.kr/', image_url='https://ldb-phinf.pstatic.net/20180116_136/151604197534614hIF_JPEG/Y-rOiFxZJFb7m4qkxHnnqScE.jpg', map_url='https://map.naver.com/v5/entry/place/420-1', latitude=35.2325, longitude=129.0893, spot_category=2, phone_number='051-515-1234', business_status=True, business_hours='11:00-21:00', order=1, day_x=2, spot_time='09:00:00'), spot_pydantic(kor_name='금수복국 해운대본점', eng_name='Geumsu Bokguk Haeundae Main Branch', description="2024 미쉐린 가이드 서울|부산 편에서 '미쉐린 셀렉티드 레스토랑'으로 선정된 식당이다. 1970년 개업해 50년이 넘는 역사를 보유하고 있다. 네 가지 복어 중 하나를 선택해 복국을 주문할 수 있다.", address='부산광역시 해운대구 중동 1394-65', url='https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=12251fce-8e26-4121-9af1-9d8a7ebf2ab4', image_url='https://d2uja84sd90jmv.cloudfront.net/posts/VwSMjG_gqLd4fYOnabPAlw/ms.jpg', map_url='https://map.naver.com/v5/entry/place/12251fce-8e26-4121-9af1-9d8a7ebf2ab4', latitude=35.1631, longitude=129.1635, spot_category=2, phone_number='051-742-3600', business_status=True, business_hours='10:00-22:00', order=2, day_x=2, spot_time='12:00:00'), spot_pydantic(kor_name='해운대 기와집 대구탕', eng_name='Haeundae Giwajip Daegutang', description='해운대기와집대구탕은 운치 있게 기와집을 고쳐 만든 식당이다. 식당에서는 해운대 해수욕장과 광안대교가 내려다보여 전망이 좋은 곳으로도 유명하다. 메뉴는 대구탕 한 가지뿐이며, 대구가 푸짐하게 들어가 있다.', address='부산광역시 해운대구 중동 1394-65', url='https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=3b85f5a2-0348-4981-9e01-a2b79ace8f31', image_url='http://post.phinf.naver.net/MjAxNzAzMjBfMjMz/MDAxNDkwMDA3NzE5NDM2.3C7g2TzL-DO5Lv1tyQJctb-KipI7zn6-fKcQ3VRWY6cg.3C3EvNIdFWd0sc0W01LEDrFLGlRD2u-BHDyKvMkeS84g.JPEG/I8kuCqqg-fZhMmPWqge_Jc4MUUUQ.jpg', map_url='https://map.naver.com/v5/entry/place/3b85f5a2-0348-4981-9e01-a2b79ace8f31', latitude=35.1631, longitude=129.1635, spot_category=2, phone_number='051-742-3600', business_status=True, business_hours='10:00-22:00', order=3, day_x=2, spot_time='18:00:00')]
[DEBUG] 변환된 CrewOutput: {'raw': '{\n "spots": [\n {\n "kor_name": "신발원",\n "eng_name": "Sinbalwon",\n "description": "신발원입니다. 넣는 순간 육즙이 터지는 중국식 만두입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 11:00 ~ 20:30입니다. 대표메뉴는 고기만두, 군만두입니다.",\n "address": "부산광역시 동구 초량동 561-1",\n "url": "https://www.siksinhot.com/P/24962",\n "image_url": "https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/36/eaab2cf081a275b9313c7405702cc88c_res.jpeg",\n "map_url": "https://map.naver.com/v5/entry/place/24962",\n "latitude": 35.1152,\n "longitude": 129.0403,\n "spot_category": 2,\n "phone_number": "051-467-0177",\n "business_status": true,\n "business_hours": "11:00-20:30",\n "order": 1,\n "day_x": 1,\n "spot_time": "09:00:00"\n },\n {\n "kor_name": "본전돼지국밥",\n "eng_name": "Bonjeon Dwaeji Gukbap",\n "description": "본전돼지국밥입니다. 고기가 푸짐하게 들어간 돼지국밥입니다.
부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 08:30 ~ 21:30입니다. 대표메뉴는 내장국밥, 돼지국밥입니다.",\n "address": "부산광역시 동구 초량동 561-1",\n "url": "https://www.siksinhot.com/P/264862",\n "image_url": "http://post.phinf.naver.net/20160926_159/1474864187815Jbt9H_JPEG/IKvR6ekFYrLuGIbQftIfbQLZm6cE.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/264862",\n "latitude": 35.1152,\n "longitude": 129.0403,\n "spot_category": 2,\n "phone_number": "051-441-2946",\n "business_status": true,\n "business_hours": "08:30-21:30",\n "order": 2,\n "day_x": 1,\n "spot_time": "12:00:00"\n },\n {\n "kor_name": "이재모피자 본점",\n "eng_name": "Lee Jaemo Pizza Main Branch",\n "description": "30여년을 운영 중인 피자전문점으로 부산에서 피자가 대중화된 시기를 생각하면 상당한 전통을 자랑하는 유명한 곳이다. 국내산 임실치즈를 사용한 푸짐한 토핑의 피자가 특징이며, 변함없는 맛을 지키고 있다.",\n "address": "부산광역시 중구 중앙동4가 79-1",\n "url": "https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=124",\n "image_url": "https://img-cdn.theqoo.net/ISssZD.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/124",\n "latitude": 35.1019,\n "longitude": 129.0323,\n "spot_category": 2,\n "phone_number": "051-245-4086",\n "business_status": true,\n "business_hours": "11:00-22:00",\n "order": 3,\n "day_x": 1,\n "spot_time": "18:00:00"\n },\n {\n "kor_name": "라이옥
베트남 쌀국수 본점",\n "eng_name": "Raeoak Vietnamese Noodle Main Branch",\n "description": "베트남 50년 전통의 라이옥 쌀국수 맛4.8, 가격4.0, 친절4.3 라이옥 베트남 쌀국수 본점은 제가 좋아하는 경성대 맛집입니다. 정말 오랜만에 방문했습니다. 여전히 손님
들로 꽉 차있었어요.",\n "address": "부산광역시 금정구 장전동 420-1",\n "url": "https://raeoakfood.co.kr/",\n "image_url": "https://ldb-phinf.pstatic.net/20180116_136/151604197534614hIF_JPEG/Y-rOiFxZJFb7m4qkxHnnqScE.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/420-1",\n "latitude": 35.2325,\n "longitude": 129.0893,\n "spot_category": 2,\n "phone_number": "051-515-1234",\n "business_status": true,\n "business_hours": "11:00-21:00",\n "order": 1,\n "day_x": 2,\n "spot_time": "09:00:00"\n },\n {\n "kor_name": "금수복국 해운대본점",\n "eng_name": "Geumsu Bokguk Haeundae Main Branch",\n "description": "2024 미쉐린 가이드 서울|부산 편에서 \'미쉐린 셀렉티드 레스토랑\'으로 선정된 식당이다
. 1970년 개업해 50년이 넘는 역사를 보유하고 있다. 네 가지 복어 중 하나를 선택해 복국을 주문할 수 있다.",\n "address": "부산광역시 해운대구 중동 1394-65",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=12251fce-8e26-4121-9af1-9d8a7ebf2ab4",\n "image_url": "https://d2uja84sd90jmv.cloudfront.net/posts/VwSMjG_gqLd4fYOnabPAlw/ms.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/12251fce-8e26-4121-9af1-9d8a7ebf2ab4",\n "latitude": 35.1631,\n "longitude": 129.1635,\n
"spot_category": 2,\n "phone_number": "051-742-3600",\n "business_status": true,\n "business_hours": "10:00-22:00",\n "order": 2,\n "day_x": 2,\n "spot_time": "12:00:00"\n },\n {\n "kor_name": "해운대 기와집 대구탕",\n "eng_name": "Haeundae Giwajip Daegutang",\n "description": "해운대기와집대구탕은 운치 있게 기와집을 고쳐 만든 식당이다. 식당에서는 해운대 해수욕장과 광안대교가 내려다보여 전망이 좋은 곳으로도 유명하다. 메뉴는 대구탕 한 가지뿐이며, 대구가 푸짐하게 들
어가 있다.",\n "address": "부산광역시 해운대구 중동 1394-65",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=3b85f5a2-0348-4981-9e01-a2b79ace8f31",\n "image_url": "http://post.phinf.naver.net/MjAxNzAzMjBfMjMz/MDAxNDkwMDA3NzE5NDM2.3C7g2TzL-DO5Lv1tyQJctb-KipI7zn6-fKcQ3VRWY6cg.3C3EvNIdFWd0sc0W01LEDrFLGlRD2u-BHDyKvMkeS84g.JPEG/I8kuCqqg-fZhMmPWqge_Jc4MUUUQ.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/3b85f5a2-0348-4981-9e01-a2b79ace8f31",\n "latitude": 35.1631,\n
"longitude": 129.1635,\n "spot_category": 2,\n "phone_number": "051-742-3600",\n "business_status": true,\n "business_hours": "10:00-22:00",\n "order": 3,\n "day_x": 2,\n "spot_time": "18:00:00"\n }\n ]\n}\n```', 'pydantic': {}, 'json_dict': None, 'tasks_output': [{'description': '부산광역시의 좌표 조회', 'name': None, 'expected_output': '위치 좌표', 'summary': '부산광역시의 좌표 조회...', 'raw': "{'location': '부산광역시', 'coordinates': '35.1731121,129.0714122'}\n```", 'pydantic': None, 'json_dict': None, 'agent': '좌표 조회 전문가', 'output_format': <OutputFormat.RAW: 'raw'>}, {'description': '맛집 기본 정보 조회', 'name': None, 'expected_output': '맛집 기본 정보 리스트', 'summary': '맛집 기본 정보 조회...', 'raw': "[{'title': '신발
원', 'rating': 4.1, 'reviews': 3101, 'latitude': 35.1148152, 'longitude': 129.038688}, {'title': '평산옥', 'rating': 4.1, 'reviews': 664, 'latitude': 35.1143238, 'longitude': 129.0370923}, {'title': '냉수탕가든', 'rating': 4.2, 'reviews': 2107, 'latitude': 35.1444216, 'longitude': 129.0283946}, {'title': '마가만두', 'rating': 4.1, 'reviews': 1329, 'latitude': 35.114485, 'longitude': 129.0385208}, {'title': '본전돼지국밥', 'rating': 4.1, 'reviews': 4491, 'latitude': 35.116595, 'longitude': 129.0414111}, {'title': '영덕
집', 'rating': 4.3, 'reviews': 243, 'latitude': 35.09574780000001, 'longitude': 129.0259823}, {'title': '이재모피자 본점', 'rating': 4.4, 'reviews': 3948, 'latitude': 35.1021046, 'longitude': 129.0305985}, {'title': '미락정', 'rating': 4.2, 'reviews': 82, 'latitude': 35.11189520000001, 'longitude': 129.0397579}, {'title': '대건명가돼지국밥', 'rating': 4.4, 'reviews': 756, 'latitude': 35.1176812, 'longitude': 129.0414076}, {'title': '아마(AMA)', 'rating': 4.7, 'reviews': 53, 'latitude': 35.15938209999999, 'longitude': 129.121501}, {'title': '강갈비탕KANG GALBI-TANG', 'rating': 5, 'reviews': 167, 'latitude': 35.1605194, 'longitude': 129.0566512}, {'title': '초량밀면', 'rating': 3.9, 'reviews': 4209, 'latitude': 35.117359, 'longitude': 129.040609}, {'title': '라이옥 베트남 쌀국
수 본점', 'rating': 4.4, 'reviews': 580, 'latitude': 35.1382873, 'longitude': 129.1040936}, {'title': '송정호 일식집', 'rating': 4.5, 'reviews': 59, 'latitude': 35.1582312, 'longitude': 129.0558003}, {'title': '할매집 돼지국밥 해운대본점', 'rating': 4.2, 'reviews': 886, 'latitude': 35.16307, 'longitude': 129.1650109}, {'title': '금수복국 해운대본점', 'rating': 4.2, 'reviews': 7257, 'latitude': 35.1624205, 'longitude': 129.1645061}, {'title': '해운대 기와집 대구탕', 'rating': 4.1, 'reviews': 3137, 'latitude': 35.1581274, 'longitude': 129.1745688}, {'title': '60년전통 할매국밥', 'rating': 4.2, 'reviews': 2461, 'latitude': 35.14101050000001, 'longitude': 129.0561679}, {'title': '미청식당', 'rating': 4, 'reviews': 569, 'latitude': 35.2602648, 'longitude': 129.2332228}, {'title':
'부산꼼장어맛집 성일집', 'rating': 4.1, 'reviews': 900, 'latitude': 35.0993345, 'longitude': 129.0374018}, {'title': '새아침식당', 'rating': 3.7, 'reviews': 474, 'latitude': 35.1589506, 'longitude': 129.1703582}, {'title': '엘올리브(el Olive)', 'rating': 4.2, 'reviews': 461, 'latitude': 35.1756973, 'longitude': 129.1179853}, {'title': '마산식당', 'rating': 3.8, 'reviews': 1085, 'latitude': 35.1415872, 'longitude': 129.0619592}, {'title': '큰집', 'rating': 4.1, 'reviews': 584, 'latitude': 35.1002668, 'longitude': 129.0298361}, {'title': '이낙에산다 광안리본점', 'rating': 4.5, 'reviews': 60, 'latitude': 35.1470225, 'longitude': 129.1109114}, {'title': '고향카츠', 'rating': 4.4, 'reviews': 201, 'latitude': 35.1509223, 'longitude': 129.1140304}, {'title': '김유순대구뽈찜', 'rating': 4.1, 'reviews': 1445, 'latitude': 35.13636999999999, 'longitude': 129.0915276}, {'title': '기장손칼국수', 'rating': 4, 'reviews': 1839, 'latitude': 35.15548329999999, 'longitude': 129.0582888}, {'title': '부산명물횟집', 'rating': 4, 'reviews': 725, 'latitude': 35.097101, 'longitude': 129.0311162}, {'title': '할매재첩국', 'rating': 4.2, 'reviews': 1561, 'latitude': 35.1518615, 'longitude': 129.1163713}]\n```", 'pydantic': None, 'json_dict': None, 'agent': '맛집 기본 조회 전문가', 'output_format': <OutputFormat.RAW:
'raw'>}, {'description': '맛집 필터링 (평점 4.0 이상, 리뷰 500개 이상)', 'name': None, 'expected_output': '필터링된 맛집 리스트', 'summary': '맛집 필터링 (평점 4.0 이상, 리뷰 500개 이상)...', 'raw': "[{'title': '신발원', 'rating': 4.1, 'reviews': 3101, 'latitude': 35.1148152, 'longitude': 129.038688}, {'title': '평산옥', 'rating': 4.1, 'reviews': 664, 'latitude': 35.1143238, 'longitude': 129.0370923}, {'title': '냉수탕가든', 'rating': 4.2, 'reviews': 2107, 'latitude': 35.1444216, 'longitude': 129.0283946}, {'title': '
마가만두', 'rating': 4.1, 'reviews': 1329, 'latitude': 35.114485, 'longitude': 129.0385208}, {'title': '본전돼지국밥', 'rating': 4.1, 'reviews': 4491, 'latitude': 35.116595, 'longitude': 129.0414111}, {'title': '이재모피자 본점', 'rating': 4.4, 'reviews': 3948,
'latitude': 35.1021046, 'longitude': 129.0305985}, {'title': '대건명가돼지국밥', 'rating': 4.4, 'reviews': 756, 'latitude': 35.1176812, 'longitude': 129.0414076}, {'title': '라이옥 베트남 쌀국수 본점', 'rating': 4.4, 'reviews': 580, 'latitude': 35.1382873, 'longitude': 129.1040936}, {'title': '할매집 돼지국밥 해운대본점', 'rating': 4.2, 'reviews': 886, 'latitude': 35.16307, 'longitude': 129.1650109}, {'title': '금수복국 해운대본점', 'rating': 4.2, 'reviews': 7257, 'latitude': 35.1624205, 'longitude': 129.1645061}, {'title': '해운대 기와집 대구탕', 'rating': 4.1, 'reviews': 3137, 'latitude': 35.1581274, 'longitude': 129.1745688}, {'title': '60년전통 할매국밥', 'rating': 4.2, 'reviews': 2461, 'latitude': 35.14101050000001, 'longitude': 129.0561679}, {'title': '미청식당', 'rating': 4, 'reviews': 569, 'latitude': 35.2602648, 'longitude': 129.2332228}, {'title': '부산꼼장어맛집 성일집', 'rating': 4.1, 'reviews': 900, 'latitude': 35.0993345, 'longitude': 129.0374018}, {'title': '큰집', 'rating': 4.1, 'reviews': 584, 'latitude': 35.1002668, 'longitude': 129.0298361}, {'title': '김유순대구뽈찜', 'rating': 4.1, 'reviews': 1445, 'latitude': 35.13636999999999, 'longitude': 129.0915276}, {'title': '기장손칼국수', 'rating': 4, 'reviews': 1839, 'latitude': 35.15548329999999, 'longitude': 129.0582888}, {'title': '부산명물횟집', 'rating': 4, 'reviews': 725, 'latitude': 35.097101, 'longitude': 129.0311162}, {'title': '할매재첩국', 'rating': 4.2, 'reviews': 1561, 'latitude': 35.1518615, 'longitude': 129.1163713}]\n```", 'pydantic': None, 'json_dict': None, 'agent': '맛집 필터링 전문가', 'output_format': <OutputFormat.RAW: 'raw'>}, {'description': '이전 단계에서 평점 4.0 이상, 리뷰 수 500개 이상으로 필터링된 부산광역시 지역의 맛집 후보 리스트를 바탕으로, 각 식당의 세부 정보를 최신 검색 결과를 활용하여 가져오라. 검색 시 반
드시 아래 JSON 스키마에 맞추어 정확하고 누락 없이 정보를 반환할 것. 특히, 아래 항목들은 최신 정보에 기반하여 모두 포함되어야 한다:\n\n{\n "kor_name": "string (가게 한글이름, 최대 255자)",\n "eng_name": "string 또는 null (가게 영어이름, 최대 255자)",\n "description": "string (가게 설명, 최대 255자)",\n "address": "string (주소, 최대 255자)",\n "url": "string 또는 null (웹사이트 URL, 최대 2083자)",\n "image_url": "string (이미지 URL, 최대 2083자)",\n "map_url": "string (map_url, 최대 2083자)",\n "latitude": "number (위도)",\n "longitude": "number (경도)",\n "spot_category": "2",\n "phone_number": "string 또는 null (전화번호, 최대 300자)",\n "business_status": "string 또는 null (영업 상태)",\n "business_hours": "string 또는 null (영업시간, 최대 255자)",\n}\n\n위 JSON 스키마에 맞추어 모든 필드를 채워서 결과를 반환하라.', 'name': None, 'expected_output': '각 후보 식당의 세부 정보(가게 한글이름, 영어이름, 설명, 주소, 웹사이트 URL, 이미지 URL, map_url, 위도, 경도, 스팟 카테고리, 전화번호, 영업 상태, 영업시간)를 포함하는 details_map', 'summary': '이전 단계에서 평점 4.0 이상, 리뷰 수 500개 이상으로 필터링된...', 'raw': '{\n "신발원": {\n "kor_name": "신발원",\n "eng_name": null,\n "description": "신발원입니다. 넣는 순간 육즙이 터지는 중국식 만두입니다. 부산, 동구 부산역 초량
에 위치하고 있습니다. 영업시간은 매일 11:00 ~ 20:30입니다. 대표메뉴는 고기만두, 군만두입니다.",\n "address": "부산광역시 동구 초량동",\n "url": "https://www.siksinhot.com/P/24962",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1148152,\n "longitude": 129.038688,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": "매일 11:00 ~ 20:30"\n },\n "평산옥": {\n "kor_name": "평산옥",\n "eng_name": null,\n "description": "4대에 걸쳐
운영하고 있는 100년 전통의 돼지수육전문식당으로 돼지수육과 수육 삶은 육수에 말은 국수가 유명하다.",\n "address": "부산광역시 동구 초량동",\n "url": "https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=1104",\n "image_url": null,\n
"map_url": null,\n "latitude": 35.1143238,\n "longitude": 129.0370923,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "냉수탕가든": {\n "kor_name": "냉수탕가든",\n "eng_name": null,\n "description": "부산에서 오리불고기로 유명한 집이다. 가야공원 내에 위치한 냉수탕가든은 산에서 계곡물이 흘러나오고, 야외에 방갈로가 있어 사계절의 정취를 모두 느낄 수 있는 맛집이다.",\n "address": "부산광역시 부산진구 가야동",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=e87d4e41-72aa-4d49-9f49-e5b2bafee68d",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1444216,\n "longitude": 129.0283946,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "마가만두": {\n "kor_name": "마가만두",\n "eng_name": null,\n "description": "부산역 차이나타운에 있는 만두맛집 들리던 명성대로 기타 메뉴들보다 만두가 맛있음 특히 군만두 꼭 드세요.",\n "address":
"부산광역시 동구 초량동",\n "url": "https://www.diningcode.com/profile.php?rid=vxwowQkrytRV",\n "image_url": null,\n "map_url": null,\n "latitude": 35.114485,\n "longitude": 129.0385208,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "본전돼지국밥": {\n "kor_name": "본전돼지국밥",\n "eng_name": null,\n "description": "본전돼지국밥입니다. 고기가 푸짐하게 들어간 돼지국밥입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영
업시간은 매일 08:30 ~ 21:30입니다.",\n "address": "부산광역시 동구 초량동",\n "url": "https://www.siksinhot.com/P/264862",\n "image_url": null,\n "map_url": null,\n "latitude": 35.116595,\n "longitude": 129.0414111,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": "매일 08:30 ~ 21:30"\n },\n "이재모피자 본점": {\n "kor_name": "이재모피자 본점",\n "eng_name": null,\n "description": "30여년을 운영 중인 피자전문점으로 부산에서 피자가 대
중화된 시기를 생각하면 상당한 전통을 자랑하는 유명한 곳이다.",\n "address": "부산광역시 중구",\n "url": "https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=124",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1021046,\n "longitude": 129.0305985,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "대건명가돼지국밥": {\n "kor_name": "대건명가돼지국밥",\n "eng_name": null,\n "description": "부산
대건명가 전통 돼지국밥. 38시간이란 느리지만 정직한 최적의 블렌딩 육수로 만든 국밥.",\n "address": "부산광역시 동구 초량동",\n "url": "https://momgukbap.com/",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1176812,\n "longitude": 129.0414076,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "라이옥 베트남 쌀국수 본점": {\n "kor_name": "라이옥 베트남 쌀국수 본점",\n "eng_name": null,\n "description": "베트남 50
년 전통의 라이옥 쌀국수 맛4.8, 가격4.0, 친절4.3 라이옥 베트남 쌀국수 본점은 제가 좋아하는 경성대 맛집입니다.",\n "address": "부산광역시 금정구",\n "url": "https://raeoakfood.co.kr/",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1382873,\n "longitude": 129.1040936,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "할매집 돼지국밥 해운대본점": {\n "kor_name": "할매집 돼지국밥 해운대본점",\n "eng_name": null,\n "description": "해운대 돼지국밥 맛집 의령식당 (돼지국밥, ★4.5), 수변최고돼지국밥 미포점(국밥, ★4.6), 밀양순대돼지국밥 부산본점(돼지국밥, ★4) 등 43곳의 전체 순위,식당정보,방문자리뷰,사진 등을 확인하세요.",\n "address": "부산광역시 해운대구",\n "url": "https://www.diningcode.com/list.dc?query=%ED%95%B4%EC%9A%B4%EB%8C%80%20%EB%8F%BC%EC%A7%80%EA%B5%AD%EB%B0%A5",\n "image_url": null,\n "map_url": null,\n "latitude": 35.16307,\n "longitude": 129.1650109,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "금수복국 해운대본점": {\n "kor_name": "금수복국 해운대본점",\n "eng_name": null,\n "description": "2024 미쉐린 가이드 서울|부산 편에서 \'미쉐린 셀렉티드 레스토랑\'으로 선정된 식당이다.
1970년 개업해 50년이 넘는 역사를 보유하고 있다.",\n "address": "부산광역시 해운대구",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=12251fce-8e26-4121-9af1-9d8a7ebf2ab4",\n "image_url": null,\n "map_url": null,\n "latitude":
35.1624205,\n "longitude": 129.1645061,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "해운대 기와집 대구탕": {\n "kor_name": "해운대 기와집 대구탕",\n "eng_name": null,\n "description": "해운대기와집대구탕은 운치 있게 기와집을 고쳐 만든 식당이다. 식당에서는 해운대 해수욕장과 광안대교가 내려다보여 전망이 좋은 곳으로도 유명하다.",\n "address": "부산광역시 해운대구",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=3b85f5a2-0348-4981-9e01-a2b79ace8f31",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1581274,\n "longitude": 129.1745688,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "60년전통 할매국밥": {\n "kor_name": "60년전통 할매국밥",\n "eng_name": null,\n "description": "60년 전통의 돼지국밥 전문점으로 식사 시간에는 30분 이상을 기다려야 하는 유명한 식당이다.",\n "address": "부산광역시",\n "url": "https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=246",\n "image_url": null,\n "map_url": null,\n "latitude": 35.14101050000001,\n "longitude": 129.0561679,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "미청식당": {\n "kor_name": "미청식당",\n "eng_name": null,\n "description": "앙장구는 말똥성게를 뜻하는 경상남도 지방의 방언이다. 이름도 귀여운 앙장구 비빔밥과 성게 미역국, 갈치구이, 참가자미 물회가 주메뉴인 미청식
당에는 친절하게도 앙장구 밥을 제대로 잘 먹는 방법까지 소개하고...",\n "address": "부산광역시 기장군 정관",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=11c27865-2c89-48dd-86cc-8bdd9e04a7b8",\n "image_url": null,\n "map_url": null,\n "latitude": 35.2602648,\n "longitude": 129.2332228,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "부산꼼장어맛집 성일집": {\n "kor_name": "부산꼼장어맛집 성일집",\n "eng_name": null,\n "description": "김성용 ... 71년 전통의 맛 : 성일집은 3대를 이어온 가장 오래된 꼼장어 전문점으로 71년을 지켜온 성일집만의 23가지 신선한 재료를 사용합니다.",\n "address": "부산광역시",\n "url": "http://www.ggom.co.kr/",\n "image_url":
null,\n "map_url": null,\n "latitude": 35.0993345,\n "longitude": 129.0374018,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "큰집": {\n "kor_name": "큰집",\n "eng_name": null,\n "description": "한탄강큰집은 현지인이 찾아가는 맛집으로 아침, 점심, 저녁 모두 해결할 수 있는 한식 전문 음식점이다.",\n "address": "부산광역시",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=386d9cc8-bce4-408a-9d6d-129cdb8fd369",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1002668,\n "longitude": 129.0298361,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "김유순대구뽈찜": {\n "kor_name": "김유순대구뽈찜",\n "eng_name": null,\n "description": "김유순 대구뽈찜은 부산광역시 남구 대연동에 있는 대구뽈찜 전문점으로 아삭한 콩나물과 매콤한 양념이 올라간 대구뽈찜을 맛볼 수 있다.",\n "address": "부산광역시 남구 대연동",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=835b0e8a-8dbf-4e7c-a543-81566fe91faa",\n "image_url": null,\n "map_url": null,\n "latitude": 35.13636999999999,\n "longitude": 129.0915276,\n "spot_category": "2",\n "phone_number": null,\n
"business_status": null,\n "business_hours": null\n },\n "기장손칼국수": {\n "kor_name": "기장손칼국수",\n "eng_name": null,\n "description": "직접 손으로 빚은 손칼국수로 유명한 칼국수 전문 식당이다. 백종원의 3대 천왕에도 방영이 된 적 있으며 멸치
로 우려낸 육수에 직접 만든 양념장과 고춧가루, 다진 마늘 등을 넣어 국물이 아주 일품이다.",\n "address": "부산광역시",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=bbd6a69b-2086-48f0-9757-cf3713f67b94",\n "image_url": null,\n "map_url": null,\n "latitude": 35.15548329999999,\n "longitude": 129.0582888,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n },\n "부산명물횟집": {\n "kor_name": "부산명물횟집",\n "eng_name": null,\n "description": "부산명물횟집입니다. 남다른 식감의 횟감과 회백반 맛집입니다. 부산, 중구 광복 남포 중앙에 위치하고 있습니다.",\n "address": "부산광역시 중구 광복동",\n "url": "https://www.siksinhot.com/P/256387",\n "image_url": null,\n
"map_url": null,\n "latitude": 35.097101,\n "longitude": 129.0311162,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": "주중 11:00 ~ 22:00"\n },\n "할매재첩국": {\n "kor_name": "할매재첩국",\n "eng_name": null,\n "description": "낙동강변 재첩요리 먹거리 타운의 28년 된 손맛, 28년 전부터 그 맛 그대로 명성만큼 입소문이 자자한 할매재첩국집이다.",\n "address": "부산광역시",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=2e282f8b-544e-4339-8e11-4cf53b1ceb2f",\n "image_url": null,\n "map_url": null,\n "latitude": 35.1518615,\n "longitude": 129.1163713,\n "spot_category": "2",\n "phone_number": null,\n "business_status": null,\n "business_hours": null\n }\n}\n```', 'pydantic': None, 'json_dict': None, 'agent': '네이버 웹 검색 에이전트', 'output_format': <OutputFormat.RAW: 'raw'>}, {'description': '네이버 이미지 검색으로 맛집 이미지 수집', 'name': None, 'expected_output': '맛집 이미지 URL', 'summary': '네이버 이미
지 검색으로 맛집 이미지 수집...', 'raw': 'Here are the image URLs for the listed restaurants:\n\n- 신발원: [Image URL](https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/36/eaab2cf081a275b9313c7405702cc88c_res.jpeg)\n- 평산옥: [Image URL](https://d2uja84sd90jmv.cloudfront.net/posts/CxXuf6oCeRbLLdTN2vi6Nw/ms.jpg)\n- 냉수탕가든: [Image URL](http://post.phinf.naver.net/MjAxODA0MTdfMjU3/MDAxNTIzOTMxMzUxOTg5.FPmgtCnKSWrWk7ifSQ-LSeOPvEzMSkPI3o1-QUverNsg.Rb5bgGeswk5yBcnNwndmKprsM4XlyGb7TbSHDEtjriwg.JPEG/Il42P6Fw9HOKtzetEZuQujV3nkIE.jpg)\n- 마가만두: [Image URL](https://d2uja84sd90jmv.cloudfront.net/posts/pZuYeLy21gTAURKdHHEsLw/m.jpg)\n- 본전돼지국밥: [Image URL](http://post.phinf.naver.net/20160926_159/1474864187815Jbt9H_JPEG/IKvR6ekFYrLuGIbQftIfbQLZm6cE.jpg)\n- 이재모피자 본점: [Image URL](https://img-cdn.theqoo.net/ISssZD.jpg)\n- 대건명가돼지국밥: [Image URL](http://shop1.phinf.naver.net/20250113_188/1736734650649bSIE3_PNG/87938494570053228_499730687.png)\n- 라이옥 베트남 쌀국수 본점: [Image URL](https://ldb-phinf.pstatic.net/20180116_136/151604197534614hIF_JPEG/Y-rOiFxZJFb7m4qkxHnnqScE.jpg)\n- 할매집 돼지국밥 해운대본점: [Image URL](http://post.phinf.naver.net/MjAxNzAzMDhfMTQy/MDAxNDg4OTcxNzAwNzUy.cPJM3IKbtZRfj3dhSTbJn2e10s6WoXj0-YE61blB5lQg.Ev9spCPFyU-RC0IxIp83yFKTSl9au8yjnD-cWUXGMrog.JPEG/IXfjabvozRmr3Y6JtdpvQWLggc5A.jpg)\n- 금수복국 해운대본점: [Image URL](https://d2uja84sd90jmv.cloudfront.net/posts/VwSMjG_gqLd4fYOnabPAlw/ms.jpg)\n- 해운대 기와집 대구탕: [Image URL](http://post.phinf.naver.net/MjAxNzAzMjBfMjMz/MDAxNDkwMDA3NzE5NDM2.3C7g2TzL-DO5Lv1tyQJctb-KipI7zn6-fKcQ3VRWY6cg.3C3EvNIdFWd0sc0W01LEDrFLGlRD2u-BHDyKvMkeS84g.JPEG/I8kuCqqg-fZhMmPWqge_Jc4MUUUQ.jpg)\n- 60년전통 할매국밥: [Image URL](https://pup-review-phinf.pstatic.net/MjAyMzAyMDNfMTYg/MDAxNjc1MzkxODEzMTI0.mMXfTkaKTovLoLyeQ90iiYqOodtcUsMfbHRsezQQpRcg.PKlCa6232IB8zzhGE31pKWWjBU7FnECatGPI6PtV6Jcg.JPEG/4FA785B2-6DD6-443D-BC3E-AD9B977E8AD2.jpeg?type=w828_60_sharpen)\n- 미청식당: [Image URL](https://cdn.visitkorea.or.kr/img/call?cmd=VIEW&id=78a60487-ccb3-4cb9-820f-1002d3642bdb)\n- 부산꼼장어맛집 성일집:
[Image URL](https://ldb-phinf.pstatic.net/20250121_39/1737436789657wgc05_JPEG/KakaoTalk_20230418_140250281_05.jpg)\n- 큰집: [Image URL](https://cdn.visitkorea.or.kr/img/call?cmd=VIEW&id=716f7852-8384-4364-a8cb-31bad0ed8ac1)\n- 김유순대구뽈찜: [Image URL](https://d2uja84sd90jmv.cloudfront.net/posts/OEwUA9wOXlGXSXhyFDt44A/ms.jpg)\n- 기장손칼국수: [Image URL](https://img.siksinhot.com/story/1501029268344654.jpg)\n- 부산명물횟집: [Image URL](https://cdn.mania.kr/dvdprime/g2/data/cheditor5/2111/view_thumbnail/mania-done-20211124053742_wvbufdti.jpg)\n- 할매재첩국: [Image URL](https://i3.ruliweb.com/img/19/08/24/16cc2dd714b4149a7.jpg)', 'pydantic': None, 'json_dict': None, 'agent': '네이버 이미지 검색 에이전트', 'output_format': <OutputFormat.RAW: 'raw'>}, {'description': '이전 단계
에서 수집한 부산광역시 지역의 맛집 데이터를 바탕으로, 2025-02-10부터 2025-02-11까지 여행하는 10대 연령대의 고객과 동반자(성인 2명, 어린이 1명)의 가족, 맛집 컨셉에 맞는 최종 맛집 리스트를 추천하라.추가 참고: "부산에서 가족과 함께할 수 있는 맛집을 추천해주세요."
도 참고하여 추천해주세요.\n\n필수:\n- spot_category는 2로 고정한다.\n- day_x는 가게가 추천되는 날을 의미한다. (예: 1일차, 2일차 등)\n- order는 해당 day_x에서 가게가 추천되는 순서를 의미한다. (아침이면 1, 점심이면 2, 저녁이면 3)\n- spot_time은 아침, 점심, 저녁 시
간대를 hh:mm:ss 형식으로 표시해야 한다.\n- order와 day_x는 사용자의 여행 일정 일수에 맞게 조정되어야 한다.\n- 최종 맛집 리스트의 개수는 하루 3끼 기준으로 결정된다. 예를 들어, 1박 2일이면 총 6개, 2박 3일이면 총 8개 이상 출력되어야 한다.\n- 위도, 경도, 이미지 데이
터는 이전 태스크들에서 얻은 정보를 가져와서 입력한다.', 'name': None, 'expected_output': '최종 추천 맛집 리스트', 'summary': '이전 단계에서 수집한 부산광역시 지역의 맛집 데이터를 바탕으로, 2025-02-10부터 2025-02-11까지...', 'raw': '{\n "spots": [\n {\n
"kor_name": "신발원",\n "eng_name": "Sinbalwon",\n "description": "신발원입니다. 넣는 순간 육즙이 터지는 중국식 만두입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 11:00 ~ 20:30입니다. 대표메뉴는 고기만두, 군만두입니다.",\n "address": "부산광역시 동구 초량동 561-1",\n "url": "https://www.siksinhot.com/P/24962",\n "image_url": "https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/36/eaab2cf081a275b9313c7405702cc88c_res.jpeg",\n "map_url": "https://map.naver.com/v5/entry/place/24962",\n "latitude": 35.1152,\n "longitude": 129.0403,\n "spot_category": 2,\n "phone_number": "051-467-0177",\n "business_status": true,\n "business_hours": "11:00-20:30",\n "order": 1,\n "day_x": 1,\n "spot_time": "09:00:00"\n },\n {\n "kor_name": "본전돼지국밥",\n "eng_name": "Bonjeon Dwaeji Gukbap",\n "description": "본전돼지국밥입니다. 고기가 푸짐하게 들어간 돼지국밥입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 08:30 ~ 21:30입니다. 대표메뉴는 내장국밥, 돼지국밥입니다.",\n "address": "부산광역시 동구 초량동 561-1",\n "url": "https://www.siksinhot.com/P/264862",\n "image_url": "http://post.phinf.naver.net/20160926_159/1474864187815Jbt9H_JPEG/IKvR6ekFYrLuGIbQftIfbQLZm6cE.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/264862",\n "latitude": 35.1152,\n "longitude": 129.0403,\n "spot_category": 2,\n "phone_number": "051-441-2946",\n "business_status": true,\n "business_hours": "08:30-21:30",\n "order": 2,\n "day_x": 1,\n "spot_time": "12:00:00"\n },\n {\n "kor_name": "이재모피자 본점",\n "eng_name": "Lee Jaemo Pizza Main Branch",\n "description": "30여년을 운영 중인 피자전문점으로 부산에서 피자가 대중
화된 시기를 생각하면 상당한 전통을 자랑하는 유명한 곳이다. 국내산 임실치즈를 사용한 푸짐한 토핑의 피자가 특징이며, 변함없는 맛을 지키고 있다.",\n "address": "부산광역시 중구 중앙동4가 79-1",\n "url": "https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=124",\n "image_url": "https://img-cdn.theqoo.net/ISssZD.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/124",\n "latitude": 35.1019,\n "longitude": 129.0323,\n "spot_category": 2,\n "phone_number": "051-245-4086",\n "business_status": true,\n "business_hours": "11:00-22:00",\n "order": 3,\n "day_x": 1,\n "spot_time": "18:00:00"\n },\n {\n "kor_name": "라이옥 베트남 쌀국수 본점",\n "eng_name": "Raeoak Vietnamese Noodle
Main Branch",\n "description": "베트남 50년 전통의 라이옥 쌀국수 맛4.8, 가격4.0, 친절4.3 라이옥 베트남 쌀국수 본점은 제가 좋아하는 경성대 맛집입니다. 정말 오랜만에 방문했습니다. 여전히 손님들로 꽉 차있었어요.",\n "address": "부산광역시 금정구 장전동 420-1",\n "url": "https://raeoakfood.co.kr/",\n "image_url": "https://ldb-phinf.pstatic.net/20180116_136/151604197534614hIF_JPEG/Y-rOiFxZJFb7m4qkxHnnqScE.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/420-1",\n "latitude": 35.2325,\n
"longitude": 129.0893,\n "spot_category": 2,\n "phone_number": "051-515-1234",\n "business_status": true,\n "business_hours": "11:00-21:00",\n "order": 1,\n "day_x": 2,\n "spot_time": "09:00:00"\n },\n {\n "kor_name": "금수복국 해운대본점",\n "eng_name": "Geumsu Bokguk Haeundae Main Branch",\n "description": "2024 미쉐린 가이드 서울|부산 편에서 \'미쉐린 셀렉티드 레스토랑\'으로 선정된 식당이다. 1970년 개업해 50년이 넘는 역사를 보유하고 있다. 네 가지 복어 중 하
나를 선택해 복국을 주문할 수 있다.",\n "address": "부산광역시 해운대구 중동 1394-65",\n "url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=12251fce-8e26-4121-9af1-9d8a7ebf2ab4",\n "image_url": "https://d2uja84sd90jmv.cloudfront.net/posts/VwSMjG_gqLd4fYOnabPAlw/ms.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/12251fce-8e26-4121-9af1-9d8a7ebf2ab4",\n "latitude": 35.1631,\n "longitude": 129.1635,\n "spot_category": 2,\n "phone_number": "051-742-3600",\n
"business_status": true,\n "business_hours": "10:00-22:00",\n "order": 2,\n "day_x": 2,\n "spot_time": "12:00:00"\n },\n {\n "kor_name": "해운대 기와집 대구탕",\n "eng_name": "Haeundae Giwajip Daegutang",\n "description": "해운대기와집대구탕은 운치 있게 기와집을 고쳐 만든 식당이다. 식당에서는 해운대 해수욕장과 광안대교가 내려다보여 전망이 좋은 곳으로도 유명하다. 메뉴는 대구탕 한 가지뿐이며, 대구가 푸짐하게 들어가 있다.",\n "address": "부산광역시 해운대구 중동 1394-65",\n
"url": "https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=3b85f5a2-0348-4981-9e01-a2b79ace8f31",\n "image_url": "http://post.phinf.naver.net/MjAxNzAzMjBfMjMz/MDAxNDkwMDA3NzE5NDM2.3C7g2TzL-DO5Lv1tyQJctb-KipI7zn6-fKcQ3VRWY6cg.3C3EvNIdFWd0sc0W01LEDrFLGlRD2u-BHDyKvMkeS84g.JPEG/I8kuCqqg-fZhMmPWqge_Jc4MUUUQ.jpg",\n "map_url": "https://map.naver.com/v5/entry/place/3b85f5a2-0348-4981-9e01-a2b79ace8f31",\n "latitude": 35.1631,\n "longitude": 129.1635,\n "spot_category": 2,\n "phone_number": "051-742-3600",\n "business_status": true,\n "business_hours": "10:00-22:00",\n "order": 3,\n "day_x": 2,\n "spot_time": "18:00:00"\n }\n ]\n}\n```', 'pydantic': {}, 'json_dict': None, 'agent': '최종 추천 에이전트', 'output_format': <OutputFormat.PYDANTIC: 'pydantic'>}], 'token_usage': {'total_tokens': 129677, 'prompt_tokens': 116738, 'cached_prompt_tokens': 75648, 'completion_tokens': 12939, 'successful_requests': 30}}
그러나 spots에는 데이터가 없는 빈 배열이 포함된 채 router.py로 전달되었다.
restaurant_response: {'message': '요청이 성공적으로 처리되었습니다.', 'plan': {'name': '여행 일정', 'start_date': '2025-02-10', 'end_date': '2025-02-11', 'main_location': '부산광역시', 'ages': '10대', 'companion_count': 3, 'concepts': '가족, 맛집', 'member_id':
0, 'created_at': '2025-02-06', 'updated_at': '2025-02-06'}, 'spots': []}
- 개선된 코드 - Task 결과 처리
1. 마지막 Task의 결과(tasks_output[-1])를 가져옴
2. Pydantic 모델이면 .model_dump()를 사용해 JSON 변환
3. 그렇지 않으면 raw 데이터를 json.loads()로 파싱
4. 결과가 없으면 기본값 {"spots": []}를 반환
# 마지막 Task(final_recommendation_agent)의 결과 변환
if hasattr(result, "tasks_output") and result.tasks_output:
final_task_output = result.tasks_output[-1] # 마지막 Task의 결과
if hasattr(final_task_output, "pydantic"):
spots_data = final_task_output.pydantic.model_dump()
else:
# raw 문자열을 파싱하는 방식으로 폴백
spots_data = json.loads(final_task_output.raw)
else:
spots_data = {"spots": []}
- 정상 결과
이제 spots 배열이 정상적으로 포함되었다.
restaurant_response: {'message': '요청이 성공적으로 처리되었습니다.', 'plan': {'name': '여행 일정', 'start_date': '2025-02-10', 'end_date': '2025-02-11', 'main_location': '부산광역시', 'ages': '10대', 'companion_count': 3, 'concepts': '가족, 맛집', 'member_id':
0, 'created_at': '2025-02-06', 'updated_at': '2025-02-06'}, 'spots': [{'kor_name': '신발원', 'eng_name': 'Sinbalwon', 'description': '신발원입니다. 넣는 순간 육즙이 터지는 중국식 만두입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일 11:00 ~ 20:30입니다. 대표메뉴는 고기만두, 군만두입니다.', 'address': '부산광역시 동구 초량동', 'url': 'https://www.siksinhot.com/P/24962', 'image_url': 'https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/36/eaab2cf081a275b9313c7405702cc88c_res.jpeg', 'map_url': 'https://map.naver.com/v5/entry/place/24962', 'latitude': 35.1152, 'longitude': 129.0403, 'spot_category': 2, 'phone_number': '051-123-4567', 'business_status': True, 'business_hours': '11:00-20:30', 'order': 1, 'day_x': 1, 'spot_time': '09:00:00'}, {'kor_name': '평산
옥', 'eng_name': 'Pyeongsanok', 'description': '4대에 걸쳐 운영하고 있는 100년 전통의 돼지수육전문식당으로 돼지수육과 수육 삶은 육수에 말은 국수가 유명하다.', 'address': '부산광역시 동구 초량동', 'url': 'https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=1104', 'image_url': 'https://d2uja84sd90jmv.cloudfront.net/posts/CxXuf6oCeRbLLdTN2vi6Nw/ms.jpg', 'map_url': 'https://map.naver.com/v5/entry/place/1104', 'latitude': 35.1153, 'longitude': 129.0404, 'spot_category': 2, 'phone_number': '051-234-5678', 'business_status': True, 'business_hours': '10:00-22:00', 'order': 2, 'day_x': 1, 'spot_time': '12:00:00'}, {'kor_name': '냉수탕가든', 'eng_name': 'Naengsutang Garden', 'description': '부산에서 오리불고기로 유명한 집이다. 가야공원 내에 위치한 냉수탕가든은 산에
서 계곡물이 흘러나오고, 야외에 방갈로가 있어 사계절의 정취를 모두 느낄 수 있는 맛집이다.', 'address': '부산광역시 부산진구 가야동', 'url': 'https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=e87d4e41-72aa-4d49-9f49-e5b2bafee68d', 'image_url': 'http://post.phinf.naver.net/MjAxODA0MTdfMjU3/MDAxNTIzOTMxMzUxOTg5.FPmgtCnKSWrWk7ifSQ-LSeOPvEzMSkPI3o1-QUverNsg.Rb5bgGeswk5yBcnNwndmKprsM4XlyGb7TbSHDEtjriwg.JPEG/Il42P6Fw9HOKtzetEZuQujV3nkIE.jpg', 'map_url': 'https://map.naver.com/v5/entry/place/e87d4e41-72aa-4d49-9f49-e5b2bafee68d', 'latitude': 35.1576, 'longitude': 129.0595, 'spot_category': 2, 'phone_number': '051-345-6789', 'business_status': True, 'business_hours': '11:00-22:00', 'order': 3, 'day_x': 1, 'spot_time': '18:00:00'}, {'kor_name': '마가만두', 'eng_name': 'Maga Mandu', 'description': '부산역 차이나타운에 있는 만두맛집 들리던 명성대로 기타 메뉴들보다 만두가 맛있음 특히 군만두 꼭 드세요.', 'address': '부산광역시 동구 초량동', 'url': 'https://www.diningcode.com/profile.php?rid=vxwowQkrytRV', 'image_url': 'https://d2uja84sd90jmv.cloudfront.net/posts/pZuYeLy21gTAURKdHHEsLw/m.jpg', 'map_url': 'https://map.naver.com/v5/entry/place/vxwowQkrytRV', 'latitude': 35.1154, 'longitude': 129.0405, 'spot_category': 2, 'phone_number': '051-456-7890', 'business_status': True, 'business_hours': '11:00-21:00', 'order': 1, 'day_x': 2, 'spot_time': '09:00:00'}, {'kor_name': '본전돼지국밥', 'eng_name': 'Bonjeon Dwaeji Gukbap', 'description': '본전돼지국밥입니다. 고기가 푸짐하게 들어간 돼지국밥입니다. 부산, 동구 부산역 초량에 위치하고 있습니다. 영업시간은 매일
08:30 ~ 21:30입니다.', 'address': '부산광역시 동구 초량동', 'url': 'https://www.siksinhot.com/P/264862', 'image_url': 'http://post.phinf.naver.net/20160926_159/1474864187815Jbt9H_JPEG/IKvR6ekFYrLuGIbQftIfbQLZm6cE.jpg', 'map_url': 'https://map.naver.com/v5/entry/place/264862', 'latitude': 35.1155, 'longitude': 129.0406, 'spot_category': 2, 'phone_number': '051-567-8901', 'business_status': True, 'business_hours': '08:30-21:30', 'order': 2, 'day_x': 2, 'spot_time': '12:00:00'}, {'kor_name': '이재모피자 본점', 'eng_name': 'Lee Jaemo Pizza Main Branch', 'description': '30여년을 운영 중인 피자전문점으로 부산에서 피자가 대중화된 시기를 생각하면 상당한 전통을 자랑하는 유명한 곳이다.', 'address': '부산광역시 중구', 'url': 'https://www.visitbusan.net/index.do?menuCd=DOM_000000201002001000&uc_seq=124', 'image_url': 'https://img-cdn.theqoo.net/ISssZD.jpg', 'map_url': 'https://map.naver.com/v5/entry/place/124', 'latitude': 35.1067, 'longitude': 129.0323, 'spot_category': 2, 'phone_number': '051-678-9012', 'business_status': True, 'business_hours': '11:00-22:00', 'order': 3, 'day_x': 2, 'spot_time': '18:00:00'}]}
출력된 데이터가 JSON 형식처럼 보였지만, 실제로는 JSON이 아닌 단순 문자열이었다. 때문에 이를 json.loads()를 사용해 변환하는 과정이 필요했고, 이로 인해 정상적으로 데이터를 프론트엔드에 전달할 수 있었다. 향후에도 API 응답 데이터를 다룰 때 형식적인 부분만 보고 지나치지 않고, 실제 데이터 구조를 정확히 파악하는 습관을 들여야겠다.
'AI' 카테고리의 다른 글
| [AI] CrewAI 에이전트를 활용한 키워드 기반 맛집 검색 개선 (0) | 2025.02.16 |
|---|---|
| [AI] 네이버 웹 검색 API × CrewAI 식당 검색, 동기 방식에서 비동기로 업그레이드 (0) | 2025.02.11 |
| [AI] CrewAI를 활용한 맛집 추천 시스템 개선 과정(데이터 최적화 vs 정확도) (0) | 2025.02.03 |
| [AI] CrewAI에서의 Tool, Agent, Task 개념 (0) | 2025.02.02 |
| [AI] CrewAI 설치 시 Microsoft Visual C++ 관련 오류 해결 (0) | 2025.02.01 |