yeonghoon.kim

  • 게시판
  • 갤러리
  • aws

openai api를 이용한 챗봇 구현 샘플

김영훈 2024.06.11 10:02 조회 수 : 565

# 이 코드는 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 콘텐츠를 가져오는 데 실패한 경우, 오류 메시지를 출력합니다.

  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

업로드 중... (0%)

0개 첨부 됨 ( / )
 
번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 986
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 639
265 BPFDoor 악성코드 통합 점검 스크립트 (KISA 가이드 기반) 김영훈 2025.05.16 119
264 error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive] 김영훈 2025.05.08 66
263 prometheus, grafana, node-exporter 임시 김영훈 2025.01.03 302
262 MegaCli64 Hotspare 구성 김영훈 2024.11.11 521
261 12월 기타큐슈 2박 3일 관련 김영훈 2024.11.08 448
260 rockylinux8 php7.2 -> php7.4 업그레이드 : dnf module 기능 이용 김영훈 2024.10.14 595
259 rockylinux8 apache-2.4.16, php-5.3.29 설치 file 김영훈 2024.10.11 620
258 정보보안기사 오답노트 김영훈 2024.10.01 442
257 달력 이미지(chatgpt) file 김영훈 2024.09.05 646
256 백업된 디스크 복구 김영훈 2024.06.13 552
» openai api를 이용한 챗봇 구현 샘플 김영훈 2024.06.11 565
254 Dev-C++ 5.11 설치 매뉴얼 file 김영훈 2024.03.09 864
253 오라클 클라우드 arm 환경에서 Palworld 서버 구축 [11] 김영훈 2024.01.29 1509
252 리눅스 공인 아이피 확인 - curl ipinfo.io 김영훈 2024.01.29 566
251 Oracle 9i cx_Oracle 클라이언트 연결 방법 [1] 김영훈 2024.01.12 663
250 error: rpmdb: BDB2034 unable to allocate memory for mutex; resize mutex region [1] 김영훈 2024.01.08 714
249 마크다운 TIL 템플릿 김영훈 2024.01.03 560
248 Stable Diffusion 설치 - rockylinux9 [테스트 - 나 / 정리 -chatgpt] [1] 김영훈 2024.01.02 741
247 AttributeError: module 'tarfile' has no attribute 'data_filter' 에러 김영훈 2024.01.02 718
246 2023년 월간 소비 비중 file 김영훈 2024.01.01 359
쓰기 태그
 첫 페이지 1 2 3 4 5 6 7 8 9 10 끝 페이지