# 이 코드는 OpenAI의 GPT-3.5-turbo 모델을 사용하여 FAQ 콘텐츠를 기반으로 사용자 질문에 답변하는 챗봇을 구현하는 예제입니다.
# 주어진 FAQ URL에서 FAQ 내용을 가져와 사용자 질문에 대한 적절한 응답을 생성합니다.
from openai import OpenAI
import requests
# OpenAI API 키 설정
api_key = '사용키'
# OpenAI 클라이언트 초기화
client = OpenAI(api_key=api_key)
def fetch_faq_from_url(url):
"""
주어진 URL에서 FAQ 콘텐츠를 가져옵니다.
Args:
url (str): FAQ가 포함된 URL
Returns:
str or None: 성공 시 FAQ 내용 반환, 실패 시 None 반환
"""
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
def get_response_from_gpt(faq_content, user_message):
"""
OpenAI GPT-3.5-turbo 모델을 사용하여 FAQ 콘텐츠를 기반으로 사용자 메시지에 응답합니다.
Args:
faq_content (str): FAQ 콘텐츠
user_message (str): 사용자 메시지
Returns:
str: 챗봇의 응답
"""
try:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "당신은 친절한 고객센터 직원입니다."},
{"role": "system", "content": "~해요체로 답변해주세요."},
{"role": "system", "content": "{faq_content}에 없는 내용은 답변하지 마세요."},
{"role": "system", "content": "답변할 수 없는 내용입니다. 고객만족센터에 연락주시거나, 게시판에 문의 글을 남겨주세요.라고 답변합니다."},
{"role": "user", "content": f"다음은 자주 묻는 질문과 답변입니다:\n{faq_content}\n\n사용자: {user_message}"}
]
)
return response.choices[0].message.content.strip()
except Exception as e:
return str(e)
# FAQ 내용을 가져올 URL
faq_url = 'http://localhost/_test.json'
# FAQ 내용을 URL에서 가져오기
faq_content = fetch_faq_from_url(faq_url)
if faq_content:
# 사용자 메시지 예시
user_message = "사인 인화시 우측 워터마크 인쇄 되는지 여부를 알고 싶어요"
# GPT-3.5-turbo 모델을 사용하여 응답 생성
chatbot_response = get_response_from_gpt(faq_content, user_message)
# 챗봇 응답 출력
print("챗봇 응답:", chatbot_response)
else:
print("FAQ 내용을 가져오는 데 실패했습니다.")
-
OpenAI API 키 설정 및 클라이언트 초기화:
api_key
변수에 API 키를 저장하고, 이를 사용하여 OpenAI 클라이언트를 초기화합니다.
-
fetch_faq_from_url
함수:- 주어진 URL에서 FAQ 콘텐츠를 가져옵니다.
- HTTP GET 요청을 보내고, 상태 코드가 200(성공)일 경우 FAQ 내용을 반환합니다. 그렇지 않으면
None
을 반환합니다.
-
get_response_from_gpt
함수:- OpenAI GPT-3.5-turbo 모델을 사용하여 FAQ 콘텐츠와 사용자 메시지를 기반으로 응답을 생성합니다.
faq_content
와user_message
를 입력으로 받아, 챗봇의 응답을 생성하여 반환합니다.- GPT 모델의 시스템 메시지를 통해 챗봇의 역할과 답변 방식을 지정합니다.
-
FAQ 내용을 가져올 URL 설정 및 호출:
faq_url
변수에 FAQ 내용을 가져올 URL을 저장하고,fetch_faq_from_url
함수를 호출하여 FAQ 콘텐츠를 가져옵니다.
-
챗봇 응답 생성 및 출력:
- FAQ 콘텐츠가 성공적으로 가져와지면, 사용자 메시지를 입력으로
get_response_from_gpt
함수를 호출하여 챗봇 응답을 생성하고 출력합니다. - FAQ 콘텐츠를 가져오는 데 실패한 경우, 오류 메시지를 출력합니다.
- FAQ 콘텐츠가 성공적으로 가져와지면, 사용자 메시지를 입력으로