-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathextract_json
More file actions
116 lines (92 loc) · 3.23 KB
/
extract_json
File metadata and controls
116 lines (92 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import asyncio
from gpt import hotel_agent
from google import genai
from pydantic import BaseModel
import json
from fastapi import FastAPI
from typing import List
class MemberInfo(BaseModel):
name : str
email : str
firstName: str
lastName: str
phoneNumber: str
gender: str
birthDate: str
passportNumber :str
passportExpireDate:str
class Hotel(BaseModel):
departure_date: str
arrival_date: str
destination: str
guests: int
budget: int
requirements: list[str]
class HotelAndMemberInfoResponse(BaseModel):
hotelList: List[Hotel]
MemberInfoList: List[MemberInfo]
class HotelList(BaseModel):
hotels: List[Hotel]
class MemberInfoResponseList(BaseModel):
memberInfoGetResponseList: List[MemberInfo]
class HotelAndMemberInfoResponse(BaseModel):
hotelList: HotelList # 리스트 대신 이 모델 사용
memberInfoList: MemberInfoResponseList # 소문자 m에 맞춤
app = FastAPI()
async def start_hotel(hotel_data: dict, SENSITIVE_DATA):
print(f"호텔 예약 실행 - 호텔: {hotel_data['destination']} ")
await hotel_agent(hotel_data,SENSITIVE_DATA)
await asyncio.sleep(1)
return {"hotel": hotel_data["destination"],"result": "ok"}
async def process_hotels_and_members(hotel_list: List[Hotel], member_list: List[MemberInfo]):
results = []
n = min(len(hotel_list), len(member_list))
for i in range(n):
hotel = hotel_list[i]
member = member_list[i]
# hotel_agent는 dict 타입을 받음 (model_dump)
print("FIRSTNAME:"+member.firstName)
SENSITIVE_DATA = {
"firstName": member.firstName,
"lastName": member.lastName,
"email": member.email,
"phoneNumber": member.phoneNumber
}
result = await start_hotel(hotel.model_dump(), SENSITIVE_DATA)
results.append(result)
return results
@app.post("/hotel-data")
async def receive_data(data: HotelAndMemberInfoResponse):
hotel_list = data.hotelList.hotels
member_list = data.memberInfoList.memberInfoGetResponseList
results = await process_hotels_and_members(hotel_list, member_list)
return {"detail": results}
"""
@app.post("/hotel-data")
async def receive_data(data: HotelAndMemberInfoResponse):
# HotelList 부분만 추출
hotel_list = data.hotelList.hotels # List[Hotel]
# MemberInfoList 부분만 추출
member_list = data.memberInfoList.memberInfoGetResponseList # List[MemberInfo]
# JSON 변환이 필요하다면:
hotel_list_json = [hotel.model_dump() for hotel in hotel_list]
member_list_json = [member.model_dump() for member in member_list]
print("호텔 JSON:", hotel_list_json)
print("멤버 JSON:", member_list_json)
return {
"hotels": hotel_list_json,
"members": member_list_json
}
"""
"""
아래에 똑같이 항공도 넣으면 될 듯. 사실 여기서 3명 가면 3명 다 요구사항이 다른 경우도 추가해야함. 근데 지금 피곤함.
"""
if __name__ == "__main__":
SENSITIVE_DATA = {
"first_name": "JaeYoung",
"last_name": "Lee",
"email": "test@gmail.com",
"country": "대한민국",
"phone_number": "01012345678",
}
#asyncio.run(hotel_agent(hotel_data, SENSITIVE_DATA))