>백엔드 개발 >파이썬 튜토리얼 >간단한 생성 AI 챗봇 구축: 실용 가이드

간단한 생성 AI 챗봇 구축: 실용 가이드

Linda Hamilton
Linda Hamilton원래의
2024-12-11 13:12:11222검색

Building a Simple Generative AI Chatbot: A Practical Guide

이 튜토리얼에서는 Python과 OpenAI API를 사용하여 생성 AI 챗봇을 만드는 과정을 안내합니다. 맥락을 유지하면서 도움이 되는 답변을 제공하면서 자연스러운 대화에 참여할 수 있는 챗봇을 구축하겠습니다.

전제 조건

  • 파이썬 3.8
  • Python 프로그래밍에 대한 기본 이해
  • OpenAI API 키
  • RESTful API 기본 지식

환경 설정

먼저 개발 환경을 설정해 보겠습니다. 새 Python 프로젝트를 생성하고 필요한 종속성을 설치합니다.

pip install openai python-dotenv streamlit

프로젝트 구조

저희 챗봇은 깔끔한 모듈식 구조를 갖습니다.

chatbot/
├── .env
├── app.py
├── chat_handler.py
└── requirements.txt

구현

chat_handler.py의 핵심 챗봇 로직부터 시작해 보겠습니다.

import openai
from typing import List, Dict
import os
from dotenv import load_dotenv

load_dotenv()

class ChatBot:
    def __init__(self):
        openai.api_key = os.getenv("OPENAI_API_KEY")
        self.conversation_history: List[Dict[str, str]] = []
        self.system_prompt = """You are a helpful AI assistant. Provide clear, 
        accurate, and engaging responses while maintaining a friendly tone."""

    def add_message(self, role: str, content: str):
        self.conversation_history.append({"role": role, "content": content})

    def get_response(self, user_input: str) -> str:
        # Add user input to conversation history
        self.add_message("user", user_input)

        # Prepare messages for API call
        messages = [{"role": "system", "content": self.system_prompt}] + \
                  self.conversation_history

        try:
            # Make API call to OpenAI
            response = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=messages,
                max_tokens=1000,
                temperature=0.7
            )

            # Extract and store assistant's response
            assistant_response = response.choices[0].message.content
            self.add_message("assistant", assistant_response)

            return assistant_response

        except Exception as e:
            return f"An error occurred: {str(e)}"

이제 app.py에서 Streamlit을 사용하여 간단한 웹 인터페이스를 만들어 보겠습니다.

import streamlit as st
from chat_handler import ChatBot

def main():
    st.title("? AI Chatbot")

    # Initialize session state
    if "chatbot" not in st.session_state:
        st.session_state.chatbot = ChatBot()

    # Chat interface
    if "messages" not in st.session_state:
        st.session_state.messages = []

    # Display chat history
    for message in st.session_state.messages:
        with st.chat_message(message["role"]):
            st.write(message["content"])

    # Chat input
    if prompt := st.chat_input("What's on your mind?"):
        # Add user message to chat history
        st.session_state.messages.append({"role": "user", "content": prompt})
        with st.chat_message("user"):
            st.write(prompt)

        # Get bot response
        response = st.session_state.chatbot.get_response(prompt)

        # Add assistant response to chat history
        st.session_state.messages.append({"role": "assistant", "content": response})
        with st.chat_message("assistant"):
            st.write(response)

if __name__ == "__main__":
    main()

주요 특징

  1. 대화 메모리: 챗봇은 대화 내용을 저장하여 컨텍스트를 유지합니다.
  2. 시스템 프롬프트: 시스템 프롬프트를 통해 챗봇의 행동과 성격을 정의합니다.
  3. 오류 처리: 구현에는 API 호출에 대한 기본 오류 처리가 포함됩니다.
  4. 사용자 인터페이스: Streamlit을 사용한 깔끔하고 직관적인 웹 인터페이스

챗봇 실행하기

  1. OpenAI API 키를 사용하여 .env 파일을 만듭니다.
OPENAI_API_KEY=your_api_key_here
  1. 애플리케이션 실행:
streamlit run app.py

잠재적인 개선 사항

  1. 대화 지속성: 채팅 기록 저장에 데이터베이스 통합을 추가합니다.
  2. 맞춤형 성격: 사용자가 다양한 챗봇 성격을 선택할 수 있습니다.
  3. 입력 검증: 더욱 강력한 입력 검증 및 삭제를 추가합니다.
  4. API 속도 제한: 속도 제한을 구현하여 API 사용량을 관리합니다.
  5. 응답 스트리밍: 더 나은 사용자 경험을 위해 스트리밍 응답을 추가하세요.

결론

이 구현은 기본적이지만 기능적인 생성 AI 챗봇을 보여줍니다. 모듈식 설계를 통해 특정 요구 사항에 따라 쉽게 확장하고 사용자 정의할 수 있습니다. 이 예시에서는 OpenAI의 API를 사용하지만 다른 언어 모델이나 API에도 동일한 원칙을 적용할 수 있습니다.

챗봇 배포 시 다음 사항을 고려해야 한다는 점을 기억하세요.

  • API 비용 및 사용 제한
  • 사용자 데이터 개인정보 보호 및 보안
  • 응답 지연 및 최적화
  • 입력 확인 및 콘텐츠 조정

자원

  • OpenAI API 문서
  • 간단한 문서화
  • Python 환경 관리

위 내용은 간단한 생성 AI 챗봇 구축: 실용 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.