yeonghoon.kim

  • 게시판
  • 갤러리
  • aws

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

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

# 이 코드는 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

번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 2468
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 2019
28 CentOS7 php 7.4 + composer 설치 김영훈 2023.08.18 861
27 ELK Stack 테스트 [1] 김영훈 2023.08.30 550
26 sar bash 스크립트 [1] 김영훈 2023.09.05 770
25 자바스크립트 화살표 함수 김영훈 2023.10.06 588
24 rocky linux 9 - init_script.sh 김영훈 2023.12.08 920
23 2023년 월간 소비 비중 file 김영훈 2024.01.01 631
22 AttributeError: module 'tarfile' has no attribute 'data_filter' 에러 김영훈 2024.01.02 966
21 Stable Diffusion 설치 - rockylinux9 [테스트 - 나 / 정리 -chatgpt] [1] 김영훈 2024.01.02 1679
20 마크다운 TIL 템플릿 김영훈 2024.01.03 1062
19 error: rpmdb: BDB2034 unable to allocate memory for mutex; resize mutex region [1] 김영훈 2024.01.08 1593
18 Oracle 9i cx_Oracle 클라이언트 연결 방법 [1] 김영훈 2024.01.12 1727
17 리눅스 공인 아이피 확인 - curl ipinfo.io 김영훈 2024.01.29 1197
16 오라클 클라우드 arm 환경에서 Palworld 서버 구축 [11] 김영훈 2024.01.29 2367
15 Dev-C++ 5.11 설치 매뉴얼 file 김영훈 2024.03.09 1577
» openai api를 이용한 챗봇 구현 샘플 김영훈 2024.06.11 2579
13 백업된 디스크 복구 김영훈 2024.06.13 1862
12 달력 이미지(chatgpt) file 김영훈 2024.09.05 1208
11 정보보안기사 오답노트 김영훈 2024.10.01 1059
10 rockylinux8 apache-2.4.16, php-5.3.29 설치 file 김영훈 2024.10.11 1406
9 rockylinux8 php7.2 -> php7.4 업그레이드 : dnf module 기능 이용 김영훈 2024.10.14 1568
쓰기 태그
 첫 페이지 5 6 7 8 9 10 11 12 13 14 끝 페이지