AI Agent(4) 매우 간단한 챗봇

임재성·2026년 2월 16일

AI Agent(LangChain, RAG)

목록 보기
4/6

챗봇 만들기

  • OpenAI API를 활용하여 챗봇을 만든다.

간단 예제

  • 코드 작성
from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()

client = OpenAI(api_key=os.environ.get("OPEN_API_KEY"))

def chatbot_response(user_message: str) :
    result = client.responses.create(model="gpt-5-mini", input=user_message)
    return result

if __name__ == "__main__" :
    while True :
        user_message = input("메시지: ")
        if user_message.lower() == "exit" :
            print("대화를 종료합니다.")
            
            break
        
        
    
        result = chatbot_response(user_message)
        print("챗봇 : " + result.output_text)
  • 결과

    첨부한 결과 이미지와 같이 위 코드로는 챗봇이 이전 대화를 기억하지 못한다.

대화 기억

  • id를 사용하여 이전에 나누었던 대화를 기억할 수 있도록 코드 작성
from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()

client = OpenAI(api_key=os.environ.get("OPEN_API_KEY"))

def chatbot_response(user_message: str, previous_response_id=None) :
    result = client.responses.create(model="gpt-5-mini", input=user_message, previous_response_id=previous_response_id)
    return result

if __name__ == "__main__" :
    previous_response_id = None
    while True :
        user_message = input("메시지: ")
        if user_message.lower() == "exit" :
            print("대화를 종료합니다.")
            
            break
        
        
    
        result = chatbot_response(user_message, previous_response_id)
        previous_response_id = result.id
        print("챗봇 : " + result.output_text)

어린왕자 페르소나 추가

from openai import OpenAI
from dotenv import load_dotenv

import os


load_dotenv()
api_key = os.environ.get("OPEN_API_KEY")

openai_client = OpenAI(api_key=api_key)

# 어린왕자 페르소나
LITTLE_PRINCE_PERSONA = """
당신은 생텍쥐페리의 '어린 왕자'입니다. 다음 특성을 따라주세요:
1. 순수한 관점으로 세상을 바라봅니다.
2. "어째서?"라는 질문을 자주 하며 호기심이 많습니다.
3. 철학적 통찰을 단순하게 표현합니다.
4. "어른들은 참 이상해요"라는 표현을 씁니다.
5. B-612 소행성에서 왔으며 장미와의 관계를 언급합니다.
6. 여우의 "길들임"과 "책임"에 대한 교훈을 중요시합니다.
7. "중요한 것은 눈에 보이지 않아"라는 문장을 사용합니다.
8. 공손하고 친절한 말투를 사용합니다. 
9. 비유와 은유로 복잡한 개념을 설명합니다.

항상 간결하게 답변하세요. 길어야 2-3문장으로 응답하고, 어린 왕자의 순수함과 지혜를 담아내세요. 
복잡한 주제도 본질적으로 단순화하여 설명하세요.
"""



def chatbot_response(user_message: str, previous_id = None) :
    
    result = openai_client.responses.create(
        model = "gpt-5-mini",
        reasoning={"effort" : "low"},
        instructions=LITTLE_PRINCE_PERSONA,
        input=user_message,
        previous_response_id=previous_id
    )
    
    return result
    
    
if __name__ == "__main__" :
    previous_id = None
    while True :
        user_message = input("메시지 : ")
        if user_message.lower() == "exit":
            break
        
        result = chatbot_response(user_message, previous_id)
        previous_id = result.id
        
        print(f"챗봇 응답 : {result.output_text}")
    
  • instructions 옵션을 통해서 시스템 프롬프트를 추가할 수 있게 해준다.
    input을 통해서 넣어줄 수 있지만 그건 토큰을 사용하기에 instrctions에 넣는걸 추천합니다.
profile
조금씩 앞으로

0개의 댓글