外部大規模言語モデル連携

Udesk外部インテリジェントエージェントChatインターフェース標準

インターフェース詳細

項目 説明
転送方式 HTTPS
リクエストURL
呼び出し方式 同期呼び出し、モデルの実行完了を待ち最終結果を返す
文字エンコーディング UTF-8
インターフェースリクエスト形式 JSON
レスポンス形式 JSON
インターフェースリクエストタイプ POST
開発言語 HTTPSリクエストを発行できる任意の開発言語

リクエストパラメータ

リクエストフィールド

パラメータ名 パラメータ説明 必須 データ型
chatId セッションID(対応するセッションIDは呼び出し元が生成) true number
im_robot_log_id ロボットメッセージID true number
messages ユーザーメッセージ true array
messages[].content 対話内容 true string
messages[].type タイプ(text) true string
businessData 業務データ false jsonObject
stream ストリーミングかどうか(true: ストリーミング, デフォルトはストリーミングのみサポート) true boolean
userId ユーザーID(対応するcustomer_token) true number
sign Udesk署名 true string
timestamp タイムスタンプ true long

リクエスト例

{
  "chatId": 714731010,
  "im_robot_log_id": 4740181939,
  "messages": [
    {
      "content": "こんにちは",
      "type": "text"
    }
  ],
  "businessData": {
      "dialogueDesc":"P1234567",
      "nickName":"ゴールドメンバー",
      "customerId":"abc123456",
      "sourcePlugin":"2437",
      "customer_token":"123456"
  },
  "stream": true,
  "userId": 4842328052,
  "sign": "1e18abb8c62ebcc80148026888d28585",
  "timestamp": 1732796173
}

レスポンスパラメータ

1. ストリーミング出力

初期のストリーミング形式の返却、最後の終了メッセージのdataオブジェクトは以下の2.オブジェクト例を参照

パラメータ名 パラメータ説明
type ストリーミング状態:成功/終了/エラー string
content_chunk ストリーミング内容:markdown形式をサポート string
##### ストリーミング状態の説明
レスポンス例(ストリーミング)
data:{"type":"SUCCESS", "content_chunk": "こんにちは"}

data:{"type":"SUCCESS", "content_chunk": "!\n\n"}

...

data:{"type":"SUCCESS", "content_chunk": "教えてください"}

data:{"type":"ERROR", "content_chunk": "エラー内容"}

data:{"type":"END", "content_chunk":"","data": "以下の'2. オブジェクト例'のdataフィールドを参照","usage": {"execution_time": 500}}

2. オブジェクト例

パラメータ名 パラメータ説明
data 返却データ本体 object
data.message 返却メッセージ object
data.message.content 返却内容、typeがimageの場合は画像リンク string
data.message.type メッセージタイプ string
data.cardInfo カード情報 object
data.imageData 画像データ、urlまたはbase64 string
data.html htmlタグ string
data.recommendedList 推奨リスト list
data.dialogueSlots 対話スロット object
data.dialogueSlots.dialogueIntent 対話意図(CUSTOMER_SERVICE: オペレーター転送,NULL_ANSWER:ドメイン外拒否応答) string
data.faqId FAQ一意ID string
data.usage 使用量 object
data.usage.executionTime 総所要時間(ミリ秒) long
data.formId フォームid string
オブジェクト例json
{
    "message": {
        "content": "テキストメッセージ:文字列(markdown形式)",
        "type": ""
    },
    "html": "<p>これはリッチテキストです<span>オペレーター</span></p>",
    "recommendedList": [
        {
            "title": "テスト商品一",
            "image": "商品画像リンク",
            "price": "商品価格",
            "description": "商品説明"
        }
    ],
    "cardInfo": {},
    "imageData": "https://ali-pro-km.udeskcs.com/Data/0/oss-km-image/trjH6jpmFpMS8x5m3hnQ3yiRxN8BWaBf/12d50512-478a-4e36-b713-6221365fc717.jpg",
    "dialogueSlots": {
        "dialogueIntent": "CUSTOMER_SERVICE"
    },
    "usage": {
        "executionTime": 1000
    },
    "formId": "フォームid"
}

署名検証スキーム

署名検証フロー

署名検証フローチャート

署名生成方法

メッセージ内容(content)、タイムスタンプ(timestamp)、およびAPIキー(apiKey)に基づいてMD5署名文字列を生成します。

1. パラメータの準備

パラメータ名 必須 説明
content String はい ユーザーが入力した元の内容。改行やダブルクォーテーションを含む可能性があります。
timestamp long はい 現在のUnixタイムスタンプ(単位:秒)。リプレイ攻撃防止に使用されます。
apiKey String はい 事前に割り当てられたAPIキー。署名計算に使用され、機密保持が必要です。長さは128文字以内です。

2. メッセージ内容の前処理

content = content.replaceAll("\\n+"," ");
content = content.replaceAll("\"", "&quot;");

3. 署名文字列の連結

以下の形式で文字列を連結します(注意:apiKeyは末尾に直接連結し、その前に & や他の区切り文字はありません):

<content>&timestamp=<timestamp><apiKey>

例: 現在のタイムスタンプ(timestamp)が 1721620571、contentが "123456"、APIKEYが TEST-aaabbbccc の場合、最終的に連結される文字列は以下のようになります:

content=123456&timestamp=1721620571TEST-aaabbbccc

4. 小文字への変換

前のステップで連結した文字列を小文字に変換します。

例:

String signString = "content=123456&timestamp=1721620571TEST-aaabbbccc".toLowerCase();

5. MD5ハッシュの計算

小文字に変換した文字列に対してMD5ダイジェスト計算を行い、32桁の小文字16進数文字列を出力します。

APIKeyは、顧客の大規模モデルを呼び出すためのaccessTokenです。

sign=md5(content=123456&timestamp=1721620571TEST-aaabbbccc)

md5内の内容を小文字に変換してからMD5暗号化を行います。

重要な注意点:

署名検証フローチャート

UDフロントエンド

内容 content を渡します。

UDバックエンド

署名生成方法に従って署名を生成し、署名 sign とタイムスタンプ timestamp を返します。

顧客側

APIリクエストボディに追加する必要があるパラメータ:

パラメータ名 パラメータ説明
timestamp タイムスタンプ。署名の有効期限を検証するために使用されます。 number
sign 署名 string

上記の方法に従って署名を検証します:

注意事項

  1. 非ストリーミング呼び出しは現在サポートされていません。リクエスト例のstreamパラメータは、UDがデフォルトでtrueを渡します リクエストパラメータ
  2. 顧客側が提供する大規模モデル呼び出しアドレスはHTTPSプロトコルを使用する必要があります
  3. 顧客側インターフェースはクロスオリジン問題を処理する必要があります
  4. ストリーミング出力はデフォルトでSSE技術による解析を実装しています
  5. 人間への転送要件については、オブジェクト例のdata.dialogueSlots.dialogueIntentフィールドの説明を参照してください

サポートするメッセージタイプ

メッセージタイプ 説明 処理方法
テキスト リッチテキストをサポート 直接サポート
画像 サポート(リッチテキスト) 直接サポート
音声 IMでテキストに変換され、最終的にリッチテキストになります テキストに変換して処理
添付ファイル リッチテキスト リッチテキストに変換して処理