파이썬으로 스무고개 게임을 구현하는데 OpenAI API를 사용하는 것은 흥미로운 아이디어입니다. 전체 코드를 검토한 결과, 몇 가지 문제를 해결해야 할 부분이 보입니다. 아래는 전체적으로 고친 코드입니다.
주요 수정 사항
correct_answer
를 저장하고 계속 사용할 수 있도록prompt
에 제대로 반영.- 사용자의 질문과 정답 확인 로직을 명확히 분리.
- OpenAI API 요청에 필요한 메시지들을 올바르게 전달.
수정된 코드
import openai
# OpenAI API 키 설정
openai.api_key = "여긴걍api코드쓰는곳"
def start_twenty_questions():
print("스무고개를 시작하자고 말하면 스무고개 게임을 시작할 수 있어요!")
while True:
start_game = input("스무고개를 시작하자고 말해주세요: ")
if "스무고개를 시작하자" in start_game:
print("좋아요, 스무고개를 시작할게요! 앞으로 20개의 질문을 제게 주세요.")
break
else:
print("스무고개를 시작하자고 말해주세요.")
# 주제 입력
bb = input('주제를 정해주세요: ')
# 제시어 생성 및 정답 설정
prompt = f"""
스무고개를 할거야. 너는 스무고개 문제를 내는 입장인거야.
{bb}라는 주제와 관련된 제시어를 하나 정해줘.
그리고 정한 제시어를 correct_answer라는 변수에 저장해줘.
"""
completion = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": 'You are an examiner of twenty questions game.'},
{"role": "user", "content": prompt}
]
)
correct_answer = completion['choices'][0]['message']['content'].strip()
print("제시어가 설정되었습니다. 이제 20개의 질문을 시작합니다.")
attempts_left = 3
questions_asked = 0
while questions_asked < 20:
question = input("질문을 해주세요: ")
questions_asked += 1
# 질문에 대한 답변 생성
prompt = f"""
우린 스무고개를 하고 있어. 사용자가 질문을 하면 correct_answer에 저장해둔 제시어에 대한 답을 출력해줘.
제시어는 '{correct_answer}'야. 질문: '{question}'
"""
completion = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": prompt}
]
)
answer = completion['choices'][0]['message']['content'].strip()
print(f"답변: {answer}")
# 정답 확인
guess = input("정답을 말해주세요 (생략하려면 엔터): ")
if guess.strip() == correct_answer:
print(f"정답입니다! 제시어는 '{correct_answer}'였습니다.")
return
else:
attempts_left -= 1
if attempts_left > 0:
print(f"틀렸어요! 앞으로 정답을 말할 수 있는 기회는 총 {attempts_left}번이 남았어요!")
else:
print("정답을 말할 수 있는 기회를 모두 잃었어요! ㅠㅠ 다시 한 번 하실 건가요?")
print(f"정답은 '{correct_answer}'였습니다.")
return
print("질문이 모두 종료되었어요. 다음 기회에 도전해주세요.")
# 게임 시작
start_twenty_questions()
주요 변경 사항 설명
- 제시어 생성 및 정답 설정: 주제를 입력받고, OpenAI API를 사용하여 주제와 관련된 제시어를 생성하고
correct_answer
에 저장합니다. - 질문 루프: 질문을 20번까지 받을 수 있도록 루프를 구성하고, 각 질문에 대해 OpenAI API를 호출하여 답변을 생성합니다.
- 정답 확인: 사용자가 정답을 맞추려고 할 때, 정답과 비교하여 맞추면 게임을 종료하고, 아니면 시도 횟수를 줄이며 계속 진행합니다.
이 수정된 코드를 통해 스무고개 게임을 보다 원활하게 진행할 수 있을 것입니다. 추가로 문제가 발생하거나 더 궁금한 사항이 있다면 언제든지 질문해주세요!