2025년 3월 18일에 진행한 DateP Project 작업을 요청하신 대로 정리해보겠습니다.
작업 내용은 두 가지 주요 업데이트로 나뉘며, 아래에 상세히 설명드립니다.
1. searchPlacesHandler.ts 수정: 언어별 랜덤 수식어 추가
- 목적: Basic과 Premium 플랜에서 places 데이터를 관리하는 로직을 개선하여, 매번 동일한 데이터가 아닌 다양한 데이터를 반환하도록 함.
- 수정 내용:
- 언어별로 랜덤 수식어(Random Adjectives)를 정의.
- 예를 들어, "good", "great", "cozy" 같은 수식어를 언어별로 설정(영어: "cozy", 한국어: "아늑한", 일본어: "居心地の良い" 등).
- 이 수식어를 places 데이터 요청에 동적으로 추가하여 반환되는 결과에 변화를 줌.
- 효과:
- 동일한 장소 데이터가 반복되지 않고, 사용자에게 더 다채로운 추천을 제공.
- 예: "Seoul 근처 맛집" → "Seoul 근처 아늑한 맛집", "Seoul 근처 훌륭한 맛집" 등.
- 구현 예시 (의사 코드):
const adjectives: Record<string, string[]> = {ko: ["아늑한", "훌륭한", "맛있는"],en: ["cozy", "great", "tasty"],ja: ["居心地の良い", "素晴らしい", "美味しい"]};
const getRandomAdjective = (lang: string) => {const options = adjectives[lang] || adjectives["en"];return options[Math.floor(Math.random() * options.length)];};
const query = `${meetingPlace} 근처 ${getRandomAdjective(language)} 데이트 장소`;
2. onlygpt.ts 수정: GPT 삭제 및 PERPLEXITY_API로 전환
- 목적: Free 플랜에서 기존 GPT+Unsplash 기반의 장소 데이터를 PERPLEXITY_API로 대체하여 실시간, 실제 장소 정보를 가져오도록 개선.
- 기존 문제점:
- GPT는 실시간 데이터를 반영하지 못해 최신 장소 정보를 제공하지 못함.
- 반환 데이터가 실제 장소와 맞지 않거나 부정확한 경우가 빈번.
- 수정 내용:
- GPT 삭제: GPT 호출 로직 제거.
- PERPLEXITY_API 도입: sonar 모델을 사용하여 실시간 웹 데이터를 기반으로 장소 정보 수집.
- 반환 필드: displayname, googlemapslink, rating, price, type, description을 PERPLEXITY_API로부터 받아옴.
- Modal에 이 데이터를 띄우도록 UI 연결.
- 장점:
- 실시간으로 실제 장소 데이터를 가져와 정확성 향상.
- 예: "Los Angeles 근처 맛집" 요청 시, 실제 존재하는 레스토랑 정보 반환.
- PERPLEXITY_API 비용:
- Sonar 기본 버전: 1회 요청당 약 $0.0002 ~ $0.0003.
- 2025년 3월 환율($1 = 1,400원 가정) 기준: 약 0.28원 ~ 0.42원.
- 저렴한 비용으로 Free 플랜에서도 충분히 활용 가능.
수정된 onlygpt.ts 일부 예시
export async function getPlaceInfoWithImage(
meetingPlace: string,
language: LanguageCode,
userAge: number,
userHobby: string
): Promise<GptPlace[]> {
try {
console.log("onlygpt.ts - API 키:", PERPLEXITY_API_KEY);
const exampleResponse = exampleResponses[language] || exampleResponses["en"];
const response = await axios.post(
{
model: "sonar",
messages: [
{
role: "system",
content: `
`,
},
{
role: "user",
content: `Recommend 3 great dating spots near ${meetingPlace}. ,
Respond strictly in **${language}** and in **valid JSON format only** (no additional text outside the JSON).`},
],
},
{
headers: {
"accept": "application/json",
"content-type": "application/json",
"Authorization": `Bearer ${PERPLEXITY_API_KEY}`,
},
}
);
오늘(2025년 3월 18일) 작업 정리
- searchPlacesHandler.ts 업데이트:
- 언어별 랜덤 수식어 도입.
- 동일 places 데이터 반복 방지, 다양한 결과 제공.
- onlygpt.ts 업데이트:
- GPT 제거, PERPLEXITY_API(sonar-pro)로 전환.
- 실시간 장소 데이터(displayname, googlemapslink, rating, price, type, description) 반환.
- price가 없을 경우 "None" 반환하도록 프롬프트 수정.
- 비용: Sonar 기본 버전 기준 요청당 0.28원 ~ 0.42원 (2025년 3월 환율 기준).
결과
- Basic/Premium 플랜: searchPlacesHandler.ts로 더 풍부한 데이터 경험 제공.
- Free 플랜: PERPLEXITY_API로 실시간, 정확한 장소 정보 반환, Modal에 표시.
- 비용 효율성: Sonar 모델의 저렴한 가격으로 Free 플랜 유지 가능.
'DateP' 카테고리의 다른 글
| DateP 프로젝트: 2025년 3월 19일 - Firebase Functions 배포 완료 및 Home Screen 로딩 스피너 추가 (1) | 2025.03.20 |
|---|---|
| DateP 프로젝트: 2025년 3월 18일 - Free Plan에 방문 시간 추가, UI 개선, 속도 문제 해결 시도 (0) | 2025.03.18 |
| DateP 프로젝트 업데이트 2025 03 16 (0) | 2025.03.16 |
| [개발 일지] DateP 프로젝트: 백엔드와 GPT 연동, 로딩 상태와 Modal 개선 (0) | 2025.03.14 |
| 오늘 Date P 작업 요약 (2025년 3월 10일) (0) | 2025.03.09 |