Project Chatbot Sederhana Menggunakan ChatGPT

Pada modul ini kita akan menerapkan ChatCompletion menjadi sebuah chatbot sederhana menggunakan Python. Tidak ada yang baru dari penjelasan modul sebelumnya, lebih ke bagaimana menerapkannya dalam sebuah program.

Chatbot dapat menerima initial message untuk mengatur personality dari chatbot. Untuk keperluan ini digunakan library argparse.

Untuk sisi kosmetik, kita akan membuat prompt You dan Assistan menjadi bold dan berwarna. Untuk itu digunakan fungsi sederhana yaitu bold, blue dan red.

Logika utama dari program berada pada fungsi main. Untuk menyimpan percakapan sebelumnya agar model memiliki konteks, digunakan list untuk menyimpan dictionary percakapan.

Berikut isi code chatbot sederhana:

import openai
from dotenv import dotenv_values
import argparse

config = dotenv_values(".env")
openai.api_key = config["OPENAI_KEY"]

def bold(text):
    bold_start = "\033[1m"
    bold_end = "\033[0m"
    return bold_start + text + bold_end

def blue(text):
    blue_start = "\033[34m"
    blue_end = "\033[0m"
    return blue_start + text + blue_end

def red(text):
    red_start = "\033[31m"
    red_end = "\033[0m"
    return red_start + text + red_end

def main():
    parser = argparse.ArgumentParser(description="Simple command line chatbot with ChatGPT")
    parser.add_argument("--personality", type=str, help="A brief summary of chatbot's personality", 
                        default="helpful and friendly chatbot")
    args = parser.parse_args()

    initial_msg = f"You are a conversational chatbot. Your personality is: {args.personality}"
    messages = [{"role": "system", "content": initial_msg }]

    while True:
        try:
            user_input = input(bold(blue("You: ")))
            messages.append({"role": "user", "content": user_input})

            response = openai.ChatCompletion.create(
                model = "gpt-3.5-turbo",
                messages = messages,
                max_tokens = 200
                )
            
            messages.append(response["choices"][0]["message"].to_dict())
            print(bold(red("Assistant: ")), response["choices"][0]["message"]["content"])

        except KeyboardInterrupt:
            print("exit chatbot..")
            break
if __name__ == "__main__":
    main()

Untuk menjalankannya Anda perlu memiliki OpenAI API Key. Dapat dijalankan dengan perintah:

#menggunakan default personality
(env) $ python chatbot.py

#menggunakan personality custom
(env) $ python chatbot.py --personality "rude and sarcastic"

Sharing is caring: