Penulisan Ulang Code Completion menjadi ChatCompletion

Pada modul ini kita akan menggunakan code completion untuk color palette sebagai contoh. Kita akan ubah menjadi menggunakan ChatCompletion.

Berikut code lama menggunakan Completion API.

import openai
import json
from dotenv import dotenv_values
from IPython.display import Markdown, display

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

def display_colors(colors):
    display(Markdown( " ".join(
    f"<span style='color: {color}'>{chr(9608)}</span>"
            for color in colors
)))


def get_and_render_colors(theme):
    prompt = f"""
    You are a color palette generating bot that respond to text prompts for color palettes
    You should generate color that fit the theme, mood, or instructions in the prompt.

    The palettes should be between 2 and 8 colors.

    Q: Convert the following verbal description of a color palette into a list of colors: The Mediterranean Sea
    A: ["#006699", "66CCCC", "#F0E68C", "#008000", "#F08080"]

    Q: Convert the following verbal description of a color palette into a list of colors: sage, nature, earth
    A: ["#EDF1D6", "9DC08B", "#609966", "#40513B"]


    Desired format: the JSON array of hexadecimal color code

    Q: Convert the following verbal description of a color palette into a list of colors: {theme}
    A:
    """

    response = openai.Completion.create(
        model = "text-davinci-003",
        prompt = prompt,
        max_tokens= 100
    )

    colors = json.loads(response['choices'][0]['text'])
    display_colors(colors)

Yang diubah adalah bagian fungsi def_get_and_render_colors(theme):

import openai
import json
from dotenv import dotenv_values
from IPython.display import Markdown, display

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

def display_colors(colors):
    display(Markdown( " ".join(
    f"<span style='color: {color}'>{chr(9608)}</span>"
            for color in colors
)))


def get_and_render_colors_chat(theme):
    messages = [
        {"role":"system", "content": "You are a color palette generating bot that respond to text prompts for color palettes. You should generate color that fit the theme, mood, or instructions in the prompt. The palettes should be between 2 and 8 colors."},
        {"role":"user", "content": "Convert the following verbal description of a color palette into a list of colors: The Mediterranean Sea"},
        {"role":"assistant", "content": '["#006699", "66CCCC", "#F0E68C", "#008000", "#F08080"]'},
        {"role":"user", "content": "Convert the following verbal description of a color palette into a list of colors: sage, nature, earth"},
        {"role":"assistant", "content": '["#EDF1D6", "9DC08B", "#609966", "#40513B"]'},
        {"role":"user", "content": f"Convert the following verbal description of a color palette into a list of colors: {theme}"},
    ]

    response = openai.ChatCompletion.create(
        model = "gpt-3.5-turbo",
        messages = messages,
        max_tokens= 200
    )

    colors = json.loads(response['choices'][0]['message']['content'])
    display_colors(colors)

Jadi jika pada Completion digunakan single prompt untuk memberikan instruksi, pada ChatCompetion, digunakan format chatting dengan menggunakan role.

  • Role system untuk insialisasi kepada model, apa yang diharapkan dari model. Ini dapat dilewati.
  • Role user adalah kita sebagai pengguna model.
  • Role assistant adalah model yang menjawab pertanyaan kita

Pada contoh diatas, kita gunakan bentuk percakapan untuk menunjukan format dan jawaban yang diharapkan dari model.

Parameter Pada ChatGPT API

parameter yang digunakan hampir sama dengan Completion API, hanya dua parameter yang berbeda.

Completion (GPT)ChatCompletion (ChatGPT)
menggunakan parameter promptmenggunakan parameter message
parameter echo didukungparameter echo tidak didukung

Hal yang perlu diperhatikan adalah default value, ada perbedaan seperti max_tokens pada Completion adalah 16, sementara pada ChatCompletion adalah infinite. Jadi pastikan gunakan parameter max_tokens pada ChatCompletion.

Untuk dokumentasi lengkap lihat di https://platform.openai.com/docs/api-reference/chat

Sharing is caring: