---
title: Kuroco RAGの設定方法
description: Kuroco RAGは、外部ソースから取得した情報を使用して生成AIモデルの精度と信頼性を向上させるサービスです。Kuroco RAGで何ができるかを理解することを目的に、Kurocoに保存したコンテンツ情報を参照して回答を生成するGPTの作成をします。
---

## 概要
Kuroco RAGは、外部ソースから取得した情報を使用して生成AIモデルの精度と信頼性を向上させるサービスです。

このドキュメントではKuroco RAGで何ができるかを理解することを目的に、Kurocoに保存したコンテンツ情報を参照して回答を生成するGPTの作成をします。  
説明はKurocoのアカウントを使用して進めますので、Kurocoアカウントを持っていない場合は[無料トライアル](/ja/free_trial/)からアカウント登録してください。

:::info
Kuroco RAGのご利用を希望する場合は以下からお問い合わせください。
- [サポート](/ja/docs/about/support/)
:::

### 学べること
以下の手順でKurocoに保存したコンテンツ情報を参照して回答を生成する独自のGPTを作成します。

- [前提条件](#前提条件)
- [Kurocoの設定](#kurocoの設定)
  - [AIを有効にする](#aiを有効にする)
  - [コンテンツを登録する](#コンテンツを登録する)
  - [APIを設定する](#apiを設定する)
- [ChatGPTの設定](#chatgptの設定)
  - [GPTの作成](#gptの作成)

### 前提条件
以下のアカウントが必要になりますので、持っていない場合はアカウントを作成してください。

- **Kurocoアカウント**：有効なKurocoアカウントを取得している必要があります。まだアカウントをお持ちでない場合は、[無料トライアル](/ja/free_trial/)からアカウント登録してください。

- **ChatGPT Plus、Team、またはEnterpriseプラン**：GPTs(独自にカスタマイズしたChatGPTの機能)を利用するには、[ChatGPT Plus](https://openai.com/blog/chatgpt-plus)、[ChatGPT Team](https://openai.com/chatgpt/team)、または[ChatGPT Enterprise](https://openai.com/chatgpt/enterprise)プランのいずれかを取得している必要があります。  
持っていない場合はアップグレードをご検討ください。

## Kurocoの設定
### AIを有効にする
[AI/RAG] -> [ベクトルデータ]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/4e47d56cef62185748d29321b79ba79d.png)

AIの項目を有効にして、[更新する]をクリックします。 

![Image from Gyazo](https://t.gyazo.com/teams/diverta/e166aac6a92486724a8354f73504e7d4.png)

### コンテンツを登録する
ChatGPTに参照させるコンテンツをKurocoに登録します。  
登録した内容は独自にカスタマイズしたChatGPTのみがAPIを通して取得でき、その他の外部からは参照できないように設定していきます。

#### コンテンツ定義を追加する
[コンテンツ定義一覧](/ja/docs/management/content-structure-topics-group/)の画面から[追加]をクリックします。  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/22303613bafe005dc86e92cf56be990c.png)

以下の内容で設定をします。  

**全般**

|項目|設定|
|:--|:--|
|名前|RAGデモ|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/ff626ed3a68cb0ee19ee26ace85daea8.png)

**項目設定**

|項目|Slug|項目名|項目設定|
|:--|:--|:--|:--|
|ext_1|なし|WYSIWYG|WYSIWYG|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/6ab3132fe663411dec3d1a0ac224d171.png)

**検索設定**

|項目|設定|
|:--|:--|
|ベクトルデータに変換する|有効にする|
|埋め込みモデル|text-embedding-3-small|
|キーワードテンプレート(AI/Vector)|デフォルトのまま|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/21580c3a4bd28a6c172d98529cb42100.png)

設定ができたら[追加する]をクリックしてコンテンツ定義を追加します。 

#### コンテンツを追加する
OpenAIが利用する為の情報をコンテンツに登録します。    

[コンテンツ一覧](/ja/docs/management/content-structure-topics/)の画面から[追加]をクリックします。  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/fde6a35102823dd62276880e9c072892.png)

ここでは例として以下の3コンテンツを追加しました。  

**リモートワークガイドライン**  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/b53d8c1ea95d854992ffbe3ea9f093ea.png)

**福利厚生ガイドブック**  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/d442635a9c6af986e7c1a5693102002f.png)

**連絡先**
![Image from Gyazo](https://t.gyazo.com/teams/diverta/cbf70948f9b5c00bc80e8e363f951309.png)

:::info
例では社内向けのAIアシスタントを想定した社内文書の登録をしています。  
チュートリアルでは3コンテンツのみですが、実際の運用時には就業規則全体を保存し、大量の文章から希望する項目の検索・確認をAIに代行させるような用途で利用します。
:::

#### ベクトルデータを確認する
コンテンツを追加すると、ベクトルデータへの変換が自動で行われます。  
コンテンツ編集画面から[その他]->[ベクトルテンプレート]とクリックし、生成されたキーワードを確認してください。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/32dadda620eb401354ddd83124c63ab8.png)

また、ベクトルデータ生成の進捗と結果は[外部システム連携]->[AI]のページで確認ができます。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f34db47188d71f907b0a2dec623393a1.png)

### APIを設定する
次に独自にカスタマイズしたChatGPTがコンテンツ情報を取得するためのAPIを準備します。  

#### APIの追加
Kuroco管理画面のAPIより「追加」をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/22c37e75a8244f384deb5b706d4979da.png)

API作成画面が表示されるので、下記入力し「追加する」をクリックします。  

|項目|設定|
|:--|:--|
|タイトル|RAGデモ|
|版|1.0|
|説明|このAPIで、Kuroco RAGデモ株式会社に関する就業規則の情報が取得できます。|
|並び順|0|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/7f658ed17793c03add787cb0e2c56c72.png)

:::info
こちらの設定内容は後ほどChatGPTに入力されますので、説明などは本APIが何をするためのものか分かるように書いてください。
:::

#### セキュリティの設定
次にセキュリティの設定をします。[セキュリティ] をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/13343765f26ba0b7cbc38f3ec672029e.png)

セキュリティを[静的アクセストークン]に設定して、[保存する]をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/c84a5a31f1e82c0ac13f230b6dbb1c1d.png)

#### CORSの設定
次にCORSの設定をします。[CORSを設定する] をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f1615114fde46f36accb17c533005333.png)

CORS_ALLOW_ORIGINSの [Add Origin] をクリックし、下記を追加します。

- 管理画面URL
- `https://chatgpt.com/`

CORS_ALLOW_METHODSの [Add Method] をクリックし、下記を追加します。

- GET

CORS_ALLOW_HEADERSの [Add Header] をクリックし、下記を追加します。

- x-rcms-api-access-token

CORS_ALLOW_CREDENTIALSの[Allow Credentials]にチェックが入っていることを確認します。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/bc5b4897582b0a76e12b09c4a3fae339.png)

問題なければ [保存する] をクリックします。

#### 静的アクセストークンの発行
[Swagegr UI]をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/5cba3395f6e4a591ac72e4de24b38ba0.png)

静的アクセストークンの有効期限を設定して[生成する]をクリックします。  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/92d73cd0e035e4189781d1f56816781f.png)

静的アクセストークンが発行されるので値をメモします。  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/17088d004596c9f8b4e0164f2cd2e4d5.png) 

#### エンドポイントの作成
RAGデモのAPIから[新しいエンドポイントの追加]をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/c974e89072808dfc5014a00735b36ef4.png)

以下のエンドポイントを作成します。

|項目|設定|
|---|---|
|パス|`search`|
|カテゴリー|コンテンツ|
|モデル|Topics|
|オペレーション|list|
|topics_group_id|先ほど作成したコンテンツ定義のID|
|cnt|APIレスポンスで返されるエントリ数を制限するために`3`を設定|
|required_param|vector_search|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f335e7aa8d0f3c43cba4fa746009569d.png)

![Image from Gyazo](https://t.gyazo.com/teams/diverta/a1537ad24321c3d941651c2681dee316.png)

![Image from Gyazo](https://t.gyazo.com/teams/diverta/6fa1b5c405edab22280fb0b66c2f78f8.png)

設定ができたら[追加]をクリックしてエンドポイントを追加します。

#### OpenAPI設定ファイルのエクスポート
KurocoにはOpenAPIエクスポートの機能があり、OpenAPIの仕様に沿った形式でAPIの情報を出力できます。

エンドポイント一覧の画面から[OpenAPIエクスポートする]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/93c87525c1a6a10a458eb607897db585.png)

ダウンロード用のモーダルが表示されるので、形式をYAMLにし、対象のエンドポイントにチェックを入れて、[エクスポート]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/af0f993df1ffb9316429f76ee32a76f9.png)

ダウンロードしたYAMLファイルにはエンドポイントのURLや利用可能なパラメータの設定全てが含まれるので少し調整します。  
今回はChatGPTに`vector_search`のパラメータのみを利用させるので、parametersの項目から`vector_search`パラメータ以外のすべてのパラメータを削除します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/c5de8a3a1e2528925003ca0ad577bd22.png)

また、`vector_search`のrequiredを`true`に設定します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/52b368a54c283376d0e852cfdbad481d.png)

YAMLファイルの例は以下のようになります。

```yaml
openapi: 3.1.0
info:
  title: RAGデモ
  version: '1.0'
  description: 'このAPIで、Kuroco RAGデモ株式会社に関する就業規則の情報が取得できます。'
servers:
  -
    url: 'https://YOUR_SITEKEY.g.kuroco.app'
    description: 'API Backend'
paths:
  /rcms-api/8/search:
    get:
      tags:
        - コンテンツ
      summary: ''
      description: |
        
        ### **Topics::list (v1)**
        
        
        ## Controller parameters
        
        > **topics_group_id** `27`
        
        > **cnt** `3`
        
        > **required_param** `vector_search`
        
      parameters:
        -
          name: vector_search
          schema:
            type: string
            format: ''
          in: query
          required: true
          style: form
          explode: true
          description: ベクトル検索
      responses:
        '200':
          description: 'Topics data successfully fetched'
        '404':
          description: 'Topics data could not be found'
      security:
        -
          Token-Auth: []
      operationId: getRcmsApi8Search
components:
  schemas: {  }
  securitySchemes:
    Token-Auth:
      type: apiKey
      in: header
      name: X-RCMS-API-ACCESS-TOKEN
```

ここまでできたらKuroco側の準備は完了です。

## ChatGPTの設定
### GPTの作成
https://chat.openai.com/ にアクセスしてログインします。  

サイドバーの[GPTを探す]をクリックし、ページ右上の[+作成する]をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f5075a2631210fe401f35343333c7c90.png)

GPTの作成画面が開くので、構成タブで以下のように設定します。

|項目|内容|
|:--|:--|
|名前|Kuroco RAGデモ株式会社 社内ルールアシスタンタント|
|説明|Kuroco RAGデモ株式会社の就業規定を参照して質問に回答します。|
|指示|効率的かつ正確な対応を行うため、ユーザーとのやり取りは以下のガイドラインに従って行ってください。<br/>1. 必ず指定したエンドポイントにリクエストを送ってから回答してください。<br/>2. エンドポイントから得た情報に含まれないことを推測して回答することは禁止します。<br/>3. 業務に関係ないと思われる質問には回答しないでください。|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/3eb2b32e4a156e7b1df07165e3fe486c.png)

次に、画面下までスクロールし、[新しいアクションを作成する]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/7305a56f5f3fa53ef90bf2689f0394aa.png)

スキーマにKurocoからエクスポートして調整したopenapi.yamlファイルの内容を張り付け、認証横の歯車マークをクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/0176375b95bb64f8a08deeb4f2a3c7ec.png)

以下のように設定して[保存する]をクリックします。

|項目|値|
|:--|:--|
|認証タイプ|APIキー|
|APIキー|Kurocoで発行した静的アクセストークン|
|認証タイプ|カスタム|
|カスタムヘッダーの名前|X-RCMS-API-ACCESS-TOKEN|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/26a30e0473facc3781902c7cef566ef0.png)

[テストする]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/fb78cec11a36c5ef48be155cd9792b05.png)

GPTがKurocoとの通信を試みますので、[許可する]をクリックし、データが取得できれば完了です。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/d2a7ff374c76f46afbfc56bb7071fb1a.png)

[作成する]をクリックして公開範囲を指定し、GPTの作成を完了してください。

### 動作の確認
作成したGPTにアクセスして質問をすると、Kurocoに保存したコンテンツの内容を参照して回答することが確認できます。  
意図しない回答をする場合はGPTに対する指示を更新して調整します。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/253c06839ae83901aec9ce93f01b1703.png)

以上でKuroco RAGを利用したGPTの作成が完了しました。  
このように、Kuroco RAGはGPTに与える情報の管理と連携を容易にする役割を担い、GPTは外部のコンテンツを参照することで生成AIの精度が向上します。