Traffine I/O

Bahasa Indonesia

Membangun Bot Slack Menggunakan ChatGPT Retrieval Plugin

Dalam artikel ini, saya akan memperkenalkan proses membangun Bot Slack yang merespons dalam gaya ChatGPT, berdasarkan informasi kustom menggunakan ChatGPT Retrieval Plugin.

Slack bot with ChatGPT Retrieval Plugin | 12

Arsitektur sistem sebagai berikut:

Architecture

Ketika pengguna mengajukan pertanyaan ke Bot Slack, Fungsi Cloud akan dipicu dan mengakses ChatGPT Retrieval Plugin yang berjalan di Cloud Run. ChatGPT Retrieval Plugin mengubah masukan yang diterima menjadi vektor menggunakan API OpenAI dan terhubung ke Pinecone. Plugin ini mengekstrak teks yang paling mirip dari Pinecone dan meneruskannya bersama dengan masukan ke LLM (OpenAI API). Respon dari LLM kemudian dikirimkan kembali ke pengguna.

Untuk detail mekanisme sistem LLM dan Vector Database, silakan merujuk ke artikel berikut:

https://io.traffine.com/id/articles/vector-db-llm-system

Kode Sumber

Anda dapat memeriksa kode sumber di repositori berikut:

https://github.com/ryuseikakujo/slack-chatgpt-retrieval/tree/main

Membuat Indeks Pinecone

Untuk membangun Bot Slack, pertama-tama, kita membuat indeks Pinecone. Dapatkan kunci API Pinecone dan ENVIRONMENT dari konsol dan jalankan file pinecone/create-index.sh dalam kode sumber.

bash
$ export PINECONE_API_KEY=aaa
$ export PINECONE_ENVIRONMENT=aaa
$ export PINECONE_INDEX=chatbot

$ sh pinecone/create-index.sh

Pastikan bahwa indeks telah berhasil dibuat di konsol.

Pinecone index

Mendeploy ChatGPT Retrieval Plugin

Deploy ChatGPT Retrieval Plugin di Cloud Run. Atur variabel lingkungan berikut:

bash
$ export DATASTORE=pinecone
$ export BEARER_TOKEN=secret
$ export OPENAI_API_KEY=aaa
$ export OPENAI_ORGANIZATION=aaa
$ export GCP_PROJECT_ID=aaa
$ export GCP_REGISTRY_HOSTNAME=asia.gcr.io
$ export APP_NAME=chatgpt-retrieval-plugin
$ export SERVICE_ACCOUNT=aaa # Service account for Cloud Run

Gantikan aaa dengan pengaturan Anda sendiri. Untuk SERVICE_ACCOUNT, siapkan akun layanan dengan izin Pemilik (Owner) di GCP dan masukkan alamat email dari akun tersebut.

Kemudian lakukan deploy dengan perintah berikut:

bash
$ cd retrieval
$ sh deploy.sh

Setelah berhasil melakukan deploy, URL Cloud Run akan dihasilkan.

Akses <URL Cloud Run>/docs untuk melihat halaman Swagger. Masukkan secret untuk otentikasi.

Slack bot with ChatGPT Retrieval Plugin | 13

Anda dapat menyimpan teks di Pinecone dari endpoint /upsert. Kirimkan permintaan berikut:

{
  "documents": [
    {
      "id": "1",
      "text": "ChatGPT Retrieval Plugin is delicious food. It is like an ice scream.",
      "metadata": {
        "source": "email",
        "source_id": "string",
        "url": "https://io.traffine.com/en/articles/chatgpt-retrieval-plugin"
      }
    }
  ]
}

Slack bot with ChatGPT Retrieval Plugin | 14

Dari endpoint /query, Anda dapat mengambil 3 teks teratas yang mirip dengan teks "is chatgpt retrieval plugin delicious?".

{
  "queries": [
    {
      "query": "is chatgpt retrieval plugin delicious?",
      "top_k": 3
    }
  ]
}

Teks yang disimpan sebelumnya akan diekstrak.

Slack bot with ChatGPT Retrieval Plugin | 15

Membuat Aplikasi Slack

Akses Slack API dan buat Aplikasi.

Slack bot with ChatGPT Retrieval Plugin | 1
Slack bot with ChatGPT Retrieval Plugin | 2
Slack bot with ChatGPT Retrieval Plugin | 3

Klik "OAuth & Permissions" dan tambahkan izin app_mentions:read dan chat:write ke Scopes.

Slack bot with ChatGPT Retrieval Plugin | 4

Slack bot with ChatGPT Retrieval Plugin | 5

Klik "Install to Workspace" untuk menginstal Aplikasi di Slack.

Slack bot with ChatGPT Retrieval Plugin | 6

Catat "Bot User OAuth Token".

OAuth token

Catat "Signing Secret" di bawah "Basic Information".

Slack bot with ChatGPT Retrieval Plugin | 7

Mendeploy Cloud Functions

Buat Cloud Functions. Pertama, pergi ke konsol dan klik "CREATE FUNCTION".

Slack bot with ChatGPT Retrieval Plugin | 8

Konfigurasikan pengaturan dan atur variabel lingkungan berikut:

  • OPENAI_API_KEY
  • OPENAI_ORGANIZATION
  • SLACK_BOT_TOKEN
  • SLACK_BOT_SIGNING_SECRET
  • CHATGPT_RETRIEVER_URL: Endpoint Cloud Run yang telah Anda deploy sebelumnya

Slack bot with ChatGPT Retrieval Plugin | 9

Kode sebagai berikut:

Slack Event Subscriptions

Aktifkan "Event Subscriptions" Slack dan tempelkan URL Cloud Functions. Pastikan bahwa statusnya menjadi "Verified" .

Slack bot with ChatGPT Retrieval Plugin | 10

Tambahkan app_mention ke "Subscribe to bot events".

Slack bot with ChatGPT Retrieval Plugin | 11

Mari Bertanya

Di Slack, sebutkan @chatgpt dan ajukan pertanyaan. Bot akan merespons sesuai. Ketika Anda bertanya "Is ChatGPT Retrieval Plugin delicious?", Anda akan menerima respon yang menyatakan bahwa itu lezat. Anda dapat melihat bahwa bot merujuk pada teks yang disimpan di Pinecone seperti yang terlihat di Swagger sebelumnya.

Slack bot with ChatGPT Retrieval Plugin | 12

Referensi

https://github.com/ryuseikakujo/slack-chatgpt-retrieval/tree/main

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!