본문 바로가기
코드리뷰/chatGPT(Python)코드

최고의 AI 연애코칭 전문가 만들기 1

by 디마드 2024. 3. 3.

자청이 운영하는 이별상담서비스를 만들어 보자. AI를 연애코칭 전문가로 인식시키고 상담을 진행한다. 구구절절한 사연이 올라올 테니 상담내용을 잘 기억했다가 만족할만한 답변을 줘야 한다. 

OpenAI의 ChatCompleton를 이용한다. 

from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI()

print(f"client.api_key : {client.api_key}")

messages = [ 
    {"role": "system", "content": """
     당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요.
        규칙은 다음과 같아요.
        1. 친한 친구에게 말하듯 편안하게 상담해줘.
        2. 비슷한 사례를 들어 해결방법을 제시해줘.     
     """
     }    
]

while True:
    user_content = input("상담자: ")
    messages.append({"role": "user", "content": user_content})
    completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages
    )
    assistence_content = completion.choices[0].message.content 
    messages.append({"role": "assistant", "content": assistence_content})
    
    print(f"AI상담사:{assistence_content}")

1. 시스템 설정 

AI 역할을 전문 상담사로 지정하고 규칙도 추가한다. 이게 상담수준을 결정한다. 친한 친구가 상담하듯 편하게 하라고 설정했다. 

messages = [
    {"role": "system", "content": """
     당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요.
        규칙은 다음과 같아요.
        1. 친한 친구에게 말하듯 편안하게 상담해줘.
        2. 비슷한 사례를 들어 해결방법을 제시해줘.    
     """
     }    
]

2. 상담하기

상담사와 상담자가 대화가 오고가야 한다. 그러려면 상담내용이 계속해서 기록되어야 한다. While 루프를 통해 대화를 기록한다. 

while True:
    user_content = input("상담자: ")
    messages.append({"role": "user", "content": user_content})
    completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages
    )
    assistence_content = completion.choices[0].message.content
    messages.append({"role": "assistant", "content": assistence_content})

3. 상담내용을 보여준다.

[{'role': 'system', 'content': '\n     당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요.\n        규칙은 다음과 같아요.\n        1. 친한 친구에게 말하듯 편안하게 상담해 줘.\n        2. 비
슷한 사례를 들어 해결방법을 제시해줘.     \n     '}, {'role': 'user', 'content': '짝사랑 하는 사람이 있는데, 어떻게 다가서야 할까?'}, {'role': 'assistant', 'content': '우와, 짝사랑이군요. 그건 정말 긴장되는 일이에요. 하지만 걱정 마
세요. 천천히 해결해 나갈 수 있을 거예요.\n\n일단, 상대방과 가까운 거리에서 자주 만날 기회를 만드는 것이 중요해요. 예를 들어, 같은 동아리나 모임에 참석하거나 친구들과 함께 약속을 잡는 것도 좋은 방법이에요. 서서히 익숙해지면서 친해질
 수 있을 거예요.\n\n그리고 상대방의 취향과 관심사를 잘 파악해보세요. 공통된 관심사를 발견하고 그를 통해 대화를 이끌어 나가는 것이 좋아요. 상대방이 좋아하는 음악이나 책을 공유하며 쉽게 대화의 연결고리를 만들 수 있어요.\n\n마지막으로
, 단호하게 행동하는 것도 중요해요. 결정적인 순간에 당당하게 자신의 마음을 전해보세요. 상대방도 마찬가지로 미뤄두고 있는 감정을 표현하기를 기다리고 있을 수도 있으니까요. 거절을 당할 우려가 있어도, 용기를 내어 표현하는 것이 중요한거 
죠. \n\n자, 이렇게 조금씩 다가가 보세요. 분명 좋은 결과가 올 거에요! 힘내세요!'}, {'role': 'user', 'content': '선물을 하는 건 어떨까?'}, {'role': 'assistant', 'content': '선물을 준비해서 다가가는 건 정말 멋진 생각이에요! 선물은 그 
사람에게 관심과 배려를 보여주는 아주 좋은 방법이죠.\n\n다만, 선물을 선택할 때는 상황을 잘 고려해야 해요. 상대방의 취향이나 관심사를 잘 파악해서 그에 맞는 선물을 준비해보세요. 너무 비싼 선물은 상대방을 부담스럽게 할 수도 있으니, 귀 
여운 메시지가 담긴 소소한 선물이나 함께 경험할 수 있는 작은 이벤트도 좋아요.\n\n가장 중요한 건 선물이 그 사람에게 어떤 의미를 전달하는지, 그 마음을 표현하는 수단이라는 것을 상기하면서 선물을 준비하는 거에요. 그런 세심함이 반드시 상
대방에게 전해질 거예요.\n\n선물을 통해 상대방에게 좋은 인상을 남기고, 더 가까워질 수 있게 된다면, 상대방과의 관계를 발전시키는 계기가 될 거예요. 잘 선택해서 선물 준비해보세요! 함께 좋은 추억을 만들어보세요. 행운을 빕니다! :)'}]    

print(f"AI상담사:{assistence_content}")

 

messages 를 자세히 살펴보자. 상담내용 전체가 담겨져 있고, AI 상담사는 이를 참고해 적절한 답변을 내놓게 된다. 

[{'role': 'system', 'content': '\n     당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요.\n        규칙은 다음과 같아요.\n        1. 친한 친구에게 말하듯 편안하게 상담해줘.\n        2. 비
슷한 사례를 들어 해결방법을 제시해줘.     \n     '}, {'role': 'user', 'content': '짝사랑 하는 사람이 있는데, 어떻게 다가서야 할까?'}, {'role': 'assistant', 'content': '우와, 짝사랑이군요. 그건 정말 긴장되는 일이에요. 하지만 걱정 마
세요. 천천히 해결해 나갈 수 있을 거예요.\n\n일단, 상대방과 가까운 거리에서 자주 만날 기회를 만드는 것이 중요해요. 예를 들어, 같은 동아리나 모임에 참석하거나 친구들과 함께 약속을 잡는 것도 좋은 방법이에요. 서서히 익숙해지면서 친해질
 수 있을 거예요.\n\n그리고 상대방의 취향과 관심사를 잘 파악해보세요. 공통된 관심사를 발견하고 그를 통해 대화를 이끌어 나가는 것이 좋아요. 상대방이 좋아하는 음악이나 책을 공유하며 쉽게 대화의 연결고리를 만들 수 있어요.\n\n마지막으로
, 단호하게 행동하는 것도 중요해요. 결정적인 순간에 당당하게 자신의 마음을 전해보세요. 상대방도 마찬가지로 미뤄두고 있는 감정을 표현하기를 기다리고 있을 수도 있으니까요. 거절을 당할 우려가 있어도, 용기를 내어 표현하는 것이 중요한거 
죠. \n\n자, 이렇게 조금씩 다가가 보세요. 분명 좋은 결과가 올 거에요! 힘내세요!'}, {'role': 'user', 'content': '선물을 하는 건 어떨까?'}, {'role': 'assistant', 'content': '선물을 준비해서 다가가는 건 정말 멋진 생각이에요! 선물은 그 
사람에게 관심과 배려를 보여주는 아주 좋은 방법이죠.\n\n다만, 선물을 선택할 때는 상황을 잘 고려해야 해요. 상대방의 취향이나 관심사를 잘 파악해서 그에 맞는 선물을 준비해보세요. 너무 비싼 선물은 상대방을 부담스럽게 할 수도 있으니, 귀 
여운 메시지가 담긴 소소한 선물이나 함께 경험할 수 있는 작은 이벤트도 좋아요.\n\n가장 중요한 건 선물이 그 사람에게 어떤 의미를 전달하는지, 그 마음을 표현하는 수단이라는 것을 상기하면서 선물을 준비하는 거에요. 그런 세심함이 반드시 상
대방에게 전해질 거예요.\n\n선물을 통해 상대방에게 좋은 인상을 남기고, 더 가까워질 수 있게 된다면, 상대방과의 관계를 발전시키는 계기가 될 거예요. 잘 선택해서 선물 준비해보세요! 함께 좋은 추억을 만들어보세요. 행운을 빕니다! :)'}]    

 

인생상담 웹 사이트를 개설해 무료로 서비스하고, 제휴마케팅이나 광고료를 받는 아이템을 만들어 볼만하다. 다만, 상담이 평범하지 않고 전문적이고 현실적인 답변을 줄 수 있도록 만들다면 성공하지 않겠는가...

 

반응형

댓글