53 チャットAPI

チャットAPIは、ベクトル検索の結果でLLMプロンプトを自動的に拡張し、対話型問合せとコンテキストに沿ったレスポンスを生成できます。

Endpoint
http request
POST /api/kb/<storeName>/chat
Sample Request Payload
json
{
  "chatModel":    "OpenAI/gpt-4o-2024-08-06",
  "question":     "How can I implement PortableType in Java?",
  "maxResults":   10,
  "minScore":     0.7,
 "fullTextWeight": 0.5,
  "scoringModel": "-/ms-marco-TinyBERT-L-2-v2"
}

`chatModel`属性はオプションです。指定しない場合、ストアのデフォルト/構成済のチャット・モデルが使用されます。

`scoringModel`、`minScore`および`fullTextWeight`属性もオプションであり、前述の`/search`エンドポイントと同じように動作します。

Sample Response
text

JavaでPortableTypeを実装するには、クラスの注釈付け、ビルド・ツールの構成、POF (Portable Object Format)コンテキストの設定など、いくつかのステップに従う必要があります。提供される情報に基づく段階的なガイドを次に示します:

ステップ1: @PortableTypeを使用してクラスに注釈を付ける:

クラスがポータブル・タイプであることを示すために、`@PortableType`でクラスに注釈を付ける必要があります。各クラスに一意の`id`を割り当てます。

 @PortableType(id = 1)
   public class Pet {
       @Portable
       protected String name;

       // constructors, accessors, etc.
   }

   @PortableType(id = 2)
   public class Dog extends Pet {
       @Portable
       private String breed;

       // constructors, accessors, etc.
   }

シリアライズする必要があるフィールドには、`@Portable`を使用します。特定のタイプについては、`@PortableDate`、`@PortableArray`などのその他の注釈があります。

ステップ2: コンパイル時のクラスの計測

MavenまたはGradleプラグインを構成します:

コンパイル時にこれらのクラスを計測するには、MavenまたはGradle POFプラグインのいずれかを使用する必要があります。このステップは、必要なシリアライズ・コードを生成するため重要です。

次の構成を`pom.xml`に追加します:

<plugin>
     <groupId>com.oracle.coherence.ce</groupId>
     <artifactId>pof-maven-plugin</artifactId>
     <version>14.1.2-0-0</version>
     <executions>
       <execution>
         <id>instrument</id>
         <goals>
           <goal>instrument</goal>
         </goals>
       </execution>
       <execution>
         <id>instrument-tests</id>
         <goals>
           <goal>instrument-tests</goal>
         </goals>
       </execution>
     </executions>
   </plugin>

このプラグインは、ビルド中にインストゥルメンテーション・プロセスを処理します。

レスポンス・トークンは、チャット・モデルから受信されるとすぐにクライアントにストリーミングされ、即時に処理(応答性の向上)、またはすべてのトークンがクライアントによって受信されたら全体として処理できます。

チャットAPIおよびAI

チャット・モデルは、ドキュメント取得と会話型AIを統合して、コンテキスト対応のレスポンスを提供します。埋込みおよびスコアリング・モデルとは異なり、チャット・モデルは、OCI GenAIモデル、OpenAI、Cohere、Anthropic、AWS Bedrock、その他のLangChain4Jサポート対象プロバイダを含むリモート・モデルのみをサポートします。これにより、高品質で最新の会話型AI機能にアクセスできます。

チャット・モデルの名前は、前述の[埋込みモデル](#embedding-model)の項で説明されている同じ`<provider>/<modelName>`構文を使用して指定します。

前述の例では、`OpenAI/gpt-4o-2024-08-06`を使用しています。たとえば、`OCI/cohere.command-r-08-2024`などの別のモデルを使用するには、単純にリクエスト・ペイロードの`chatModel`プロパティを変更します:

json
{
  "chatModel":    "OCI/cohere.command-r-08-2024",
  "question":     "How can I implement PortableType in Java?",
  "maxResults":   10,
  "minScore":     0.7,
  "scoringModel": "-/ms-marco-TinyBERT-L-2-v2"
}

ドキュメント・ストア間での検索およびチャット

ユーザーは複数のドキュメント・ストアを同時に問合せできるため、リポジトリ間での検索機能を使用できます。

そのためには、前述の検索およびチャット・エンドポイントからストア名を単に省略します。リクエスト・ペイロードおよびレスポンスはまったく同じです。

Search Endpoint
http request
POST /api/kb/search

Chat Endpoint
http request
POST /api/kb/chat