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 상태이면 메시지를 출력한다.
반응형
'코드리뷰 > chatGPT(Python)코드' 카테고리의 다른 글
ChatGPT로 지식검색 만드는 가장 쉬운 방법 (1) | 2024.03.11 |
---|---|
최고의 AI 연애코칭 전문가 만들기 1 (0) | 2024.03.03 |
OpenAI API 이용해 Hello World 코딩 시키기 (0) | 2024.03.03 |
댓글