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

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

by 디마드 2024. 3. 11.

Assistants API를 이용해 연애상담 챗봇을 만들어 보자. 어시스턴스를 미리 정의해 만들어 두고, 쓰레드(방)를 만들어 대화내용을 기록하게 한다. 대화의 연속성을 얻을 수 있다. 매번 R&R을 지정하지 않아도 되니 편리하다. 

총 5개 스텝으로 만든다. 

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

# Step 1: Create an Assistant
# my_assistant = client.beta.assistants.create(
#     instructions="""
#      당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요.
#         규칙은 다음과 같아요.
#         1. 친한 친구에게 말하듯 편안하게 상담해줘.
#         2. 비슷한 사례를 들어 해결방법을 제시해줘.     
#      """,
#     name="연애코칭 상담봇",
#     # tools=[{"type": "code_interpreter"}],
#     model="gpt-3.5-turbo",
# )
# print(my_assistant)
assistant_id = "asst_q1m84tdKUftPcDbyLdn9wBcy"

# Step 2: Create a Thread
# thread = client.beta.threads.create()
# print(thread)
thread_id = 'thread_6eqUA4cRem81RGyPRnf80e6w'

# Step 3: Add a Message to a Thread
message = client.beta.threads.messages.create(
    thread_id=thread_id,
    role="user",
    content="좋아하는 사람에게 다가서는 가장 쉬운 방법을 알려줘"
)

print(message)
print()

# Step 4: Run the Assistant
run = client.beta.threads.runs.create(
  thread_id=thread_id,
  assistant_id=assistant_id,
#   instructions="Please address the user as Jane Doe. The user has a premium account."
)
print(run)
print()
# Step 5: Check the Run status
run = client.beta.threads.runs.retrieve(
  thread_id=thread_id,
  run_id=run.id
)
print(run)
print()
# Step 6: Display the Assistant's Response
messages = client.beta.threads.messages.list(
  thread_id=thread_id
)
print(messages)

1단계 : Assistant 만들기

# my_assistant = client.beta.assistants.create(
#     instructions="""
#      당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요.
#         규칙은 다음과 같아요.
#         1. 친한 친구에게 말하듯 편안하게 상담해줘.
#         2. 비슷한 사례를 들어 해결방법을 제시해줘.    
#      """,
#     name="연애코칭 상담봇",
#     # tools=[{"type": "code_interpreter"}],
#     model="gpt-3.5-turbo",
# )
# print(my_assistant)

assistant를 만들면 id가 생성된다. 이 값을 기록해 계속 이용한다. 

openAI 로그인하면 새로 생성한 Assistant를 확인할 수 있다. 

참고는

https://platform.openai.com/docs/assistants/overview

2단계 : Thread 생성

# thread = client.beta.threads.create()
# print(thread)

1,2 단계에서 id가 생성되면 나머지 코드는 주석처리한다. 

3단계 : Thread에 사용자 메시지 입력

message = client.beta.threads.messages.create(
    thread_id=thread_id,
    role="user",
    content="좋아하는 사람에게 다가서는 가장 쉬운 방법을 알려줘"
)

4단계 : Assistant 실행

run = client.beta.threads.runs.create(
  thread_id=thread_id,
  assistant_id=assistant_id,
#   instructions="Please address the user as Jane Doe. The user has a premium account."
)

5단계 : Assistant  실행 상태 체크

run = client.beta.threads.runs.retrieve(
  thread_id=thread_id,
  run_id=run.id
)
 

6단계 : Assistant  실행 결과 출력

messages = client.beta.threads.messages.list(
  thread_id=thread_id
)

 

 

좀 더 자동화를 해서 대화를 이어보자. 

from openai import OpenAI
from dotenv import load_dotenv
import time

load_dotenv()
client = OpenAI()

assistant_id = "asst_q1m84tdKUftPcDbyLdn9wBcy"
thread_id = 'thread_6eqUA4cRem81RGyPRnf80e6w'

while True:
    user_content = input("USER: ")
    # Step 3: Add a Message to a Thread
    message = client.beta.threads.messages.create(
        thread_id=thread_id,
        role="user",
        content=user_content
    )
    # Step 4: Run the Assistant
    run = client.beta.threads.runs.create(
    thread_id=thread_id,
    assistant_id=assistant_id,
    )
    while True:
        # Step 5: Check the Run status
        run = client.beta.threads.runs.retrieve(
            thread_id=thread_id,
            run_id=run.id
        )
        
        # print(run.status)
        
        if run.status == 'completed':
            # Step 6: Display the Assistant's Response
            messages = client.beta.threads.messages.list(
                thread_id=thread_id
            )
            # print(messages.data[0])
            print(f"GPT: {messages.data[0].content[0].text.value}")
            break
        time.sleep(2)

미리 생성한 assistant id와 thread id를 이용하고, 루프를 통해 사용자와 catgpt 고민상담을 시작하게 한다. 그리고 run.status를 체크해 completed 상태이면 메시지를 출력한다. 

 

반응형

댓글