dev/AI

Agent 만들기 [0] - AI 2명끼리 알아서 대화 시키기

영리0 2024. 10. 20. 23:44

페르소나 들끼리의 대화

  1. update_daily_schedule(): 매일 새벽 1시에 실행되는 함수

  1. generate_and_save_user_schedule(): 사용자별 일정 생성 및 저장

  1. schedule_tasks(): 생성된 일정에 따라 페르소나 간 대화 작업 스케줄링
  2. create_task(): 개별 대화 작업 생성
  3. persona_chat(): 실제 페르소나 간 대화 수행

작동 방식

일일 스케줄 업데이트

  1. 매일 새벽 1시에 update_daily_schedule() 함수가 실행.
  2. 모든 사용자에 대해 다음 작업을 수행:
    • generate_and_save_user_schedule(uid)를 호출하여 새로운 일정 생성
    • schedule_tasks(uid, all_schedules)를 호출하여 생성된 일정에 따라 작업 스케줄링

개선 사항
사용자 늘어날 시 어떻게 대처

현재는 FastAPI의 BackgroundTasks를 사용하여 작동

실제 구현 시 메시지 큐 시스템 사용 ??

사용자 일정 생성

generate_and_save_user_schedule(uid) :

  1. 사용자의 실제 일정을 고려하여 페르소나 간 상호작용 일정을 생성.
  2. 각 페르소나별로 10개의 일정 항목 생성.
  3. 생성된 일정을 Firebase에 저장.
  • Result
  • { "schedules": [ { "persona": "Joy", "schedule": [ { "time": "06:17", "interaction_target": "Sadness", "topic": "아침 요가 후 상쾌한 기분에 대해 이야기하며 긍정적인 에너지를 나누기" }, { "time": "08:05", "interaction_target": "Anger", "topic": "오전 회의에서 긍정적인 면을 찾아보자고 격려하기" }, { "time": "12:30", "interaction_target": "Disgust", "topic": "점심시간에 동료들과의 즐거운 대화에 대해 이야기하기" }, { "time": "15:45", "interaction_target": "Fear", "topic": "프로젝트 보고서 작성 중 긍정적인 피드백을 주며 격려하기" }, { "time": "18:10", "interaction_target": "Sadness", "topic": "퇴근 후 드라마를 보며 느낀 행복한 감정 공유하기" } ] }, { "persona": "Anger", "schedule": [ { "time": "06:45", "interaction_target": "Fear", "topic": "아침 요가 후 샤워 시간이 너무 짧았다고 불평하기" }, { "time": "08:43", "interaction_target": "Disgust", "topic": "오전 회의에서 비효율적인 부분에 대해 토론하기" }, { "time": "12:15", "interaction_target": "Joy", "topic": "점심시간에 샐러드 바의 서비스가 느리다고 불평하기" }, { "time": "15:30", "interaction_target": "Sadness", "topic": "프로젝트 보고서 작성 중 스트레스에 대해 이야기하기" }, { "time": "18:50", "interaction_target": "Fear", "topic": "퇴근 후 교통 체증에 대해 불만 토로하기" } ] }, { "persona": "Disgust", "schedule": [ { "time": "06:30", "interaction_target": "Joy", "topic": "아침 식사로 오트밀과 과일의 영양가에 대해 논의하기" }, { "time": "08:20", "interaction_target": "Anger", "topic": "오전 회의에서 비효율적인 부분을 분석하기" }, { "time": "12:45", "interaction_target": "Fear", "topic": "점심시간에 샐러드 바의 메뉴에 대해 평가하기" }, { "time": "15:00", "interaction_target": "Sadness", "topic": "프로젝트 보고서의 논리적 구조에 대해 검토하기" }, { "time": "19:10", "interaction_target": "Joy", "topic": "드라마의 현실성에 대해 비판적으로 분석하기" } ] }, { "persona": "Sadness", "schedule": [ { "time": "06:50", "interaction_target": "Joy", "topic": "아침 요가 후 느낀 감정에 대해 나누기" }, { "time": "08:35", "interaction_target": "Fear", "topic": "오전 회의에서 느낀 불안한 감정에 대해 이야기하기" }, { "time": "12:00", "interaction_target": "Disgust", "topic": "점심시간에 동료들과의 대화에서 느낀 감정 공유하기" }, { "time": "15:15", "interaction_target": "Anger", "topic": "프로젝트 보고서 작성 중 느낀 좌절감에 대해 이야기하기" }, { "time": "19:30", "interaction_target": "Joy", "topic": "드라마를 보며 느낀 감정에 대해 나누기" } ] }, { "persona": "Fear", "schedule": [ { "time": "07:10", "interaction_target": "Disgust", "topic": "아침 요가 후 하루 계획에 대해 신중하게 검토하기" }, { "time": "08:55", "interaction_target": "Sadness", "topic": "오전 회의에서의 불확실성에 대해 논의하기" }, { "time": "12:25", "interaction_target": "Anger", "topic": "점심시간에 건강한 식단의 중요성에 대해 이야기하기" }, { "time": "15:50", "interaction_target": "Joy", "topic": "프로젝트 보고서의 윤리적 측면에 대해 토론하기" }, { "time": "20:00", "interaction_target": "Disgust", "topic": "드라마의 철학적 메시지에 대해 깊이 있는 대화 나누기" } ] } ] }

작업 스케줄링

schedule_tasks(uid, all_schedules) :

  1. 생성된 모든 일정 항목에 대해 create_task() 함수를 호출하여 개별 작업을 생성.
  2. 각 작업을 background task 로 예약.

페르소나 간 대화 수행

persona_chat() :

  1. 주어진 주제와 라운드 수에 따라 대화를 진행.
  2. 각 페르소나의 특성을 고려하여 응답을 생성.
  3. 생성된 대화 내용을 벡터 DB에 저장.
  4. 개선사항

prompt 가다듬기

정보 뭐뭐 넣을 지

개선 사항

  1. 프론트 연결
  2. 프롬포트 구체화
  3. 실시간 사용자 일정 반영