# 串接 ChatGPT

{% hint style="warning" %}
**Webhook 模擬案例限制與商業應用評估提醒**

請注意，以下範例僅為技術層面的模擬案例，若要應用於實際商業場景，請務必評估以下限制：

1. **Webhook 併發數限制**：在高併發情境下，可能無法支援所有交談數量。
2. **Webhook 回應時效**：若未能在極短時間內回應，請求將被系統直接拒絕。
3. **不支援上下文**：此方式僅適用於單一問答場景，無法處理多輪對話。
4. **Webhook 參數字數限制**：`params` 的字數有限，無法與系統內建知識庫的完整內容等量並行。

....等，請務必依據自身業務需求進行評估，以避免在實務應用中遭遇效能瓶頸或功能限制。
{% endhint %}

<figure><img src="https://842546780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNRu7dk70ei7JV9HlW9%2Fuploads%2Fr7frhfWv1LZC76XhkacJ%2Fintegration_chatgpt.png?alt=media&#x26;token=a46179a4-60b4-4e45-a4c9-f93bae72ba1b" alt=""><figcaption></figcaption></figure>

## 申請 OpenAI 金鑰

1. 前往 OpenAI 官方網站 ([https://openai.com/](https://platform.openai.com/account/api-keys))，點擊「Get started for free」按鈕註冊並登入。
2. 串接 OpenAI API 的第一步就是註冊一個帳號，只需要登入 OpenAI 官網，點選右上角的帳號圖示，再選擇 View API keys 就可以進入 API 頁面。
3. 在 API 頁面上，只需要點擊 Create new secret key 就可以取得一組 key 值。請務必妥善保存此 key 值，因為它只會出現一次，萬一遺失就需要重新申請一組。

## 建立 Webhook 腳本

### 新增腳本

首先，我們需要使用「Webhook 腳本」功能呼叫 OpenAI 的 API。在「應用程式」的「整合」分類中，可以找到這個功能。點選「新增」並選擇「交談腳本」，以符合你的使用場景類型，接著你可以為腳本命名，例如「ChatGPT 整合」。

<figure><img src="https://842546780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNRu7dk70ei7JV9HlW9%2Fuploads%2F6LXzdYMHfrHIfrWnTyjJ%2Fimage.png?alt=media&#x26;token=92581d29-6d42-476c-a3f6-42c3af19ccaf" alt=""><figcaption></figcaption></figure>

### 輸入請求資料

接下來，需要依照以下條件輸入整合所需的設定：

1. 呼叫網址：<https://api.openai.com/v1/chat/completions>
2. Http 請求方法：POST
3. 表頭 Headers：選擇 Authorization 並輸入 Bearer <您的 API 金鑰>

最後，輸入最關鍵的參數 Params：

```javascript
// 您可以依序 chatGPT 調整所需的設置
{
  "model": "gpt-3.5-turbo",
  "max_tokens": 1000,
  "temperature": 0.5,
  "messages": [
    // 當然，您也可以透過傳入更多明確的訊息內容來調整 ChatGPT 的對話內容。
    // {
    //  "role": "system",
    //  "content": "你現在是一名XXX，你要針對我提出的問題提供建議。"
    // },
    {
      "role": "user",
      "content": "{{ question }}"
    }
  ]
}
```

### 設定 Callback 操作

最後，點擊「進階」頁籤，可以設定如何處理 API 回傳的資料。這邊的設定將用於「交談腳本」中的變數資料。

```javascript
// 您可以依據自己的需求調整不同的變數名稱，
// 此處表示要將回傳資料中的 choices 個別存入至 answers 與 content 變數內。
{
  "answers": "{{ choices | this_is_array }}",
  "content": "{{ choices.0.message.content }}"
}
```

## 建立交談腳本

我們可以輕鬆地整合 ChatGPT，為客服系統新增一個簡單的對話流程。只要客戶傳送任何訊息，ChatGPT 就會回應，並完成預期的流程。

當然，我們還可以透過增加不同的條件與操作，讓客戶可以進行更多元化的提問，例如透過選項引導客戶提出不同的問題，或是當客戶提到特定關鍵字時，系統可以自動轉接客服人員。

<figure><img src="https://842546780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNRu7dk70ei7JV9HlW9%2Fuploads%2FJdZa2NfCGj9ibaTWA2vC%2Fimage.png?alt=media&#x26;token=a0343818-a747-4cf9-b597-0868fd66fe73" alt=""><figcaption></figcaption></figure>

1. 在腳本開頭新增一個「事件」節點，並選擇「當客戶發送訊息時」，設定「客戶訊息符合」為「\*」，表示收到任何訊息時都繼續往下執行。
2. 接著，新增一個「動作」節點，並選擇「Webhook 腳本」，選擇上一段落所建立的「Webhook 腳本」。
3. 再新增一個「動作」節點，並選擇「發送訊息」，在訊息內容中輸入「{{ content }}」，表示要使用變數「content」回覆客戶。
4. 最後，您只需將您需要使用的管道（例如 LINE 官方帳號、即時聊天）與此腳本進行綁定，就可以開始使用 chatGPT 為您的客戶提供更好的服務體驗了！
5. 🎉 開始進行對話吧！
