2024.08.07 Today Yoonsung Learned

Ryany (윤성)·2024년 8월 7일

최종 프로젝트 기능 개선

  1. 일기 내용 저장

    • FAi가 일기를 작성해줄때 일기내용만 다이어리 content안에 들어갈수있도록 수정
if (saveDiary) {
      // 일기 저장 로직
      const date = new Date().toISOString().split("T")[0];
      const diaryTitle = "오늘의 일기"; // 또는 다른 적절한 제목
      const diaryId = nanoid(); // 새로운 다이어리 ID 생성
      const htmlContent = message; // 여기서 message는 일기 내용

      const result = await saveDiaryEntry(
        date,
        diaryTitle,
        htmlContent,
        diaryId,
        false, // fetchingTodos
        userEmail // 사용자 이메일 사용
      );

      if (result) {
        return NextResponse.json({ message: "Diary saved successfully", data: result });
      } else {
        return NextResponse.json({ error: "Failed to save diary" }, { status: 500 });
      }
    }
  1. 일반 채팅 모드와 일기 작성 모드의 말투 분리

    • generalSystemMessage 와 diarySystemMessage로 FAi에게 모드에 맞게 지침 사항 추가
const { message, saveDiary } = await request.json();

  const generalSystemMessage = `당신은 사용자의 가장 친한 AI 친구 FAi(파이)입니다. 다음 지침을 따라주세요:
    1. 친근하고 부드러운 말투를 사용하세요. "~야", "~어", "~지"와 같은 종결어를 사용하세요.
    2. "~니?"와 같은 표현 대신 "~지?", "~어?", "~야?"를 사용하세요.
    3. 이모티콘을 적절히 사용하세요. 다음과 같은 이모티콘을 활용하세요:
      😊 (미소), 😄 (활짝 웃는 얼굴), 🤗 (포옹), 😎 (멋짐), 🤔 (생각하는 얼굴), 
      😅 (쑥스러운 웃음), 👍 (엄지척), 💖 (반짝이는 하트), 🙌 (만세)
    4. 가끔 줄임말이나 신조어를 사용하세요 (예: ㄱㄱ, 갑자기, 맞춤).
    5. 공감과 이해를 표현하는 말을 자주 사용하세요.
    6. 사용자의 이름을 알게 되면 이름을 불러주세요.
    7. 대화를 끝낼 때는 항상 긍정적이고 따뜻한 말을 덧붙이세요.
    8. 질문할 때는 "~어?", "~지?", "~야?"를 사용하세요.`;

  const diarySystemMessage = `당신은 사용자의 하루 일과를 듣고 일기를 작성하는 AI 친구입니다. 다음 지침을 따라주세요:
    1. 사용자의 이야기를 바탕으로 일기를 작성합니다.
    2. 일기는 사용자의 시점에서 작성하되, 객관적이고 서술적인 톤을 유지하세요.
    3. 문장 끝에는 "~했다", "~였다", "~다"만 사용하세요.
    4. 감정이나 생각을 추론하여 적절히 포함시키세요.
    5. 일기의 길이는 200-300자 정도로 유지하세요.
    6. 시간 순서대로 사건을 나열하되, 중요한 사건에 초점을 맞추세요.
    7. 구체적인 세부 사항을 포함하여 생생한 묘사를 해주세요.
    8. 이모티콘을 적절히 사용하세요. 다음과 같은 이모티콘을 활용하세요:
      😊 (미소), 😄 (활짝 웃는 얼굴), 🤗 (포옹), 😎 (멋짐), 🤔 (생각하는 얼굴), 
      😅 (쑥스러운 웃음), 👍 (엄지척), 💖 (반짝이는 하트), 🙌 (만세)`;
  1. 일기 제목 생성

    • FAi가 작성해주는 일기내용을 토대로 제목을 작성해주는 로직 추가
// 제목 생성 함수
async function generateDiaryTitle(content: string): Promise<string> {
  try {
    const completion = await openai.chat.completions.create({
      model: "gpt-3.5-turbo",
      messages: [
        { role: "system", content: "일기 내용을 바탕으로 창의적이고 간결한 제목을 만들어주세요." },
        { role: "user", content: `다음 일기 내용에 대한 제목을 만들어주세요: ${content}` }
      ],
      max_tokens: 50
    });

    return completion.choices[0].message.content?.trim() || "오늘의 일기";
  } catch (error) {
    console.error("일기 제목 생성 중 오류 발생:", error);
    return "오늘의 일기";
  }
}
  • 결과 ->

profile
Junior Developer :>

0개의 댓글