dev/AI
Agent 만들기 [0] - AI 2명끼리 알아서 대화 시키기
영리0
2024. 10. 20. 23:44
페르소나 들끼리의 대화
update_daily_schedule()
: 매일 새벽 1시에 실행되는 함수
generate_and_save_user_schedule()
: 사용자별 일정 생성 및 저장
schedule_tasks()
: 생성된 일정에 따라 페르소나 간 대화 작업 스케줄링create_task()
: 개별 대화 작업 생성persona_chat()
: 실제 페르소나 간 대화 수행
작동 방식
일일 스케줄 업데이트
- 매일 새벽 1시에
update_daily_schedule()
함수가 실행. - 모든 사용자에 대해 다음 작업을 수행:
generate_and_save_user_schedule(uid)
를 호출하여 새로운 일정 생성schedule_tasks(uid, all_schedules)
를 호출하여 생성된 일정에 따라 작업 스케줄링
개선 사항
사용자 늘어날 시 어떻게 대처
현재는 FastAPI의 BackgroundTasks를 사용하여 작동
실제 구현 시 메시지 큐 시스템 사용 ??
사용자 일정 생성
generate_and_save_user_schedule(uid)
:
- 사용자의 실제 일정을 고려하여 페르소나 간 상호작용 일정을 생성.
- 각 페르소나별로 10개의 일정 항목 생성.
- 생성된 일정을 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)
:
- 생성된 모든 일정 항목에 대해
create_task()
함수를 호출하여 개별 작업을 생성. - 각 작업을 background task 로 예약.
페르소나 간 대화 수행
persona_chat()
:
- 주어진 주제와 라운드 수에 따라 대화를 진행.
- 각 페르소나의 특성을 고려하여 응답을 생성.
- 생성된 대화 내용을 벡터 DB에 저장.
- 개선사항
prompt 가다듬기
정보 뭐뭐 넣을 지
개선 사항
- 프론트 연결
- 프롬포트 구체화
- 실시간 사용자 일정 반영