언어모델 LLM/프로젝트 예제

OpenAI API를 활용한 디스코드 챗봇 만들기

General AI 2024. 7. 6. 15:18
728x90
반응형

OpenAI API를 활용한 디스코드 챗봇 만들기

OpenAI API를 활용한 디스코드 챗봇 만들기

이번 포스팅에서는 OpenAI의 최신 API를 사용하는 버전을 만들어보겠습니다. 이 봇은 지정된 채널에서만 사용자의 메시지에 응답하며, OpenAI API의 최신 버전과 호환됩니다.

준비 사항

  1. Python 3.7 이상
  2. discord.py 라이브러리
  3. openai 라이브러리 (1.0.0 이상 버전)
  4. python-dotenv 라이브러리
  5. Discord 봇 토큰
  6. OpenAI API 키
  7. 챗봇을 사용할 Discord 채널 ID

필요한 라이브러리 설치:

pip install discord.py openai python-dotenv

업데이트된 코드

ex4-openai-chatbot.py 파일을 작성합니다.

import os
import discord
from discord.ext import commands
from openai import OpenAI
from dotenv import load_dotenv

# .env 파일에서 환경 변수 로드
load_dotenv()

# Discord 봇 설정
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)

# OpenAI 클라이언트 설정
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))

# 지정된 채널 ID
CHANNEL_ID = int(os.getenv('CHANNEL_ID'))

@bot.event
async def on_ready():
    print(f'{bot.user} 봇이 준비되었습니다!')
    print(f'지정된 채널 ID: {CHANNEL_ID}')

@bot.event
async def on_message(message):
    if message.author == bot.user:
        return

    if message.channel.id != CHANNEL_ID:
        return

    if message.content.startswith('!chat'):
        await chat(message)

async def chat(message):
    try:
        # '!chat ' 이후의 메시지만 추출
        user_message = message.content[6:].strip()

        if not user_message:
            await message.channel.send("메시지를 입력해주세요. 예: !chat 안녕하세요")
            return

        print(f"받은 메시지: {user_message}")  # 디버깅을 위한 출력

        # OpenAI API를 사용하여 응답 생성
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": user_message}
            ]
        )

        # 생성된 응답 추출
        ai_response = response.choices[0].message.content

        print(f"AI 응답: {ai_response}")  # 디버깅을 위한 출력

        # Discord에 응답 전송
        await message.channel.send(ai_response)
    except Exception as e:
        print(f"Error: {e}")
        await message.channel.send("죄송합니다. 응답을 생성하는 중 오류가 발생했습니다.")

# Discord 봇 실행
bot.run(os.getenv('DISCORD_TOKEN'))

사용 방법

  1. .env 파일에 다음 내용을 추가합니다:
  2. DISCORD_TOKEN=your_discord_bot_token_here OPENAI_API_KEY=your_openai_api_key_here CHANNEL_ID=your_discord_channel_id_here
  3. 터미널에서 봇을 실행합니다:
  4. python ex4-openai-chatbot.py
  5. 지정된 Discord 채널에서 다음과 같이 명령어를 사용합니다:
  6. !chat 안녕하세요, 오늘 날씨에 대해 알려주세요.

OpenAI API를 활용한 디스코드 챗봇 만들기

주의사항

  • 반드시 OpenAI 라이브러리의 최신 버전(1.0.0 이상)을 사용해야 합니다.
  • 올바른 채널 ID를 .env 파일에 입력해야 합니다.
  • 봇은 지정된 채널에서만 응답합니다.
  • OpenAI API 사용량과 비용에 주의하세요.
  • API 키와 봇 토큰의 보안에 유의하세요.

트러블슈팅

  1. 라이브러리 버전 문제:
    • pip install --upgrade openai 명령어로 OpenAI 라이브러리를 최신 버전으로 업그레이드하세요.
  2. 봇이 응답하지 않는 경우:
    • 올바른 채널에서 명령어를 사용하고 있는지 확인하세요.
    • 콘솔 출력을 확인하여 봇이 메시지를 받았는지 확인하세요.
    • CHANNEL_ID가 올바르게 설정되었는지 확인하세요.
  3. API 오류가 발생하는 경우:
    • OpenAI API 키가 올바른지 확인하세요.
    • API 사용 한도를 초과하지 않았는지 확인하세요.

이 업데이트된 버전의 챗봇은 OpenAI API의 최신 변경사항을 반영하여 더욱 안정적으로 동작합니다. 특정 채널에서만 동작하며, 향상된 에러 처리와 디버깅 정보를 제공합니다. 이를 기반으로 더욱 발전된 Discord 챗봇을 개발해보세요!

728x90
반응형