Alli LLM App Market API

このドキュメントでは、Alli LLM App Market で利用できる REST API に関する詳細情報を提供しています。現在提供しているのは、LLM アプリを取得して実行するための API のみですが、将来的にはさらに多くの API が追加される予定です。

全てのアカウントがAlli LLM App Marketを利用できるわけではありません。 当社のAlli LLM App Marketにご興味がございましたら、弊社Customer Success担当までお問い合わせください。

APIキーの取得

RequestヘッダーのAPI-KEY に、割り当てられたREST APIキー を入力してください。REST APIキーはプロジェクト設定メニューからご確認いただけます。

エラーメッセージ

想定されるresponseがない場合は、エラーメッセージを確認してください。例えば、間違ったHTTPメソッドを使用した場合、以下のような形式のエラーメッセージが戻ります。

{“error”: “Method Not Allowed POST: /webapi/apps”}

例えば、LLMアプリを実行する際にインプットを含めないと、以下のようなエラーメッセージが戻ります。

{"errors": "internal error. Expecting value: line 1 column 1 (char 0)"}

GET https://backend-ja.alli.ai/webapi/apps

LLM App List Search APIを使用すると、プロジェクト内のすべての回答型アプリと会話型アプリを表示できます。

Path Parameters

NameTypeDescription

API-KEY*

string

割り当てられたAPIキーです。プロジェクト設定メニュー>一般タブから確認できます。

published

公開されているアプリのみを表示するかどうかを選択します。 デフォルトではすべてのアプリが表示されます。(true,false)

user

ユーザーIDです。デフォルトはすべてのアプリが表示されます。

id

LLM アプリ IDです。複数のidを入力することも可能です。例:id=abc&id=bcd

Headers

NameTypeDescription

id

string

LLMアプリのIDになります。

name

string

LLMアプリの名称になります。

type

string

LLMアプリのタイプになります。(skill,single_action)

description

string

LLMアプリの説明文になります。

category

string

LLMアプリのカテゴリーになります。(全般、セールス…)

appFrom

string

LLMアプリのソースになります。(first_part, second_part)

appUrl

string

LLMアプリにアクセス可能なURLになります。

inputs

string

SingleActionのLLMアプリのインプットの値になります。(SingleActionのみとなります。)

Request Example

REST_API_KEYをプロジェクトのREST APIキーに変更しなければなりません。APIキーの取得の項目をご参照ください。

curl -vv -X GET \
  'https://backend-ja.alli.ai/webapi/apps' \
  --header 'API-KEY: REST_API_KEY'

Response Example

{
  "result": [
    {
      "id": "TExNQXBwOjY1NzAyNGQ5ZWI4YjUzNGY3MjA0NjdjOA==",
      "name": "New single action (1)",
      "type": "single_action",
      "description": "テスト",
      "category": "全般",
      "appFrom": "second_party",
      "appUrl": "http://localhost:8080/singleAction/YU9DasNkV+MCfzxjk9yg3XXHAs4dW9o9xV7G42K-L+UvlQIxxG-+kDfLpjp0jA6+H0QbNcBd8-2RFylqalUbAcv6lF88X8-1px956jaq3pAS1hgwPkP1MJPliKjXqMfXQY3KMBXguSAdSQbd+WFACQiRNNH7nzBtHws37X7795I=?region=ALLI_US",
      "inputs": [
        {
          "name": "テスト",
          "inputType": "document_basic",
          "value": "test",
          "options": []
        },
        {
          "name": "テスト2",
          "inputType": "text",
          "value": "test2",
          "options": []
        }
      ]
    },
    {
      "id": "TExNQXBwOjY1OTc5ZjliNGM2Y2RiMzNiNmJmNzAzZA==",
      "name": "New single action (3)",
      "type": "single_action",
      "description": null,
      "category": "その他",
      "appFrom": "second_party",
      "appUrl": "http://localhost:8080/singleAction/tfjckyW65--agr7b32-gvaE4+ZXrRnKYRH2QJt4d7mV270WI-NMBzzPssdb+Yz7Ulx1gLiZPOhsH-2yVA55GpBHDj3d0n0zJb4XfaDqC6VoYzTgWGUauY7qbEpe2IP4qT8Msx+6i7RGF2uLE41rRBLscMWYBC6NSZWLMQFYzdi4=?region=ALLI_US",
      "inputs": [
        {
          "name": "single",
          "inputType": "text",
          "value": "single",
          "options": []
        }
      ]
    },
    {
      "id": "TExNQXBwOjY1NmVkMzg5Y2Y4YjZiZTMyOTVlOWFlYQ==",
      "name": "New Skill",
      "type": "skill",
      "description": null,
      "category": "その他",
      "appFrom": "second_party",
      "appUrl": "https://dev-sdk.alli.ai/local/latest/popup.html?campaign_token=OzpxHAuBPAFpL4KOCpn39zngAILCdIeRQjYiYB3nbix5TTVtOfuKzrhPG8z98-VX6O6qZX5xTRVTBM8jjmADz2MR-MZOqg5Xp7kLdFe98kGZjVFMqdhy0KexoTxPlK28ocKdVG9LH2AIeh69Lk2hS6pgmbJp0vS3MBYIe2BBPmc%3D",
      "inputs": []
    },
    {
      "id": "TExNQXBwOjY1OTc5ZjlmNGM2Y2RiMzNiNmJmNzJjNA==",
      "name": "New Skill (1)",
      "type": "skill",
      "description": "test",
      "category": "全般",
      "appFrom": "second_party",
      "appUrl": "https://dev-sdk.alli.ai/local/latest/popup.html?campaign_token=gGnKYYh4M8t4V8mu1trRkGegE-Dc7cslBp6VUH8j1b24dY7wvSKmzGC-y0ZL%2BgVTcY1twVS9Bi9aYujbCnrYkNs6c4YONoWPvakQOjychQwkrCsK42FAn6BH%2BaU0DkNsMoZ61WTQwn1D-9X4QaSQmP%2BWdyoirx%2BTLcMN66CCSzo%3D",
      "inputs": []
    }
  ]
}

Run LLM App

POST https://backend-ja.alli.ai/webapi/apps/:app_id/run

Run LLM App API を使用すると、対象のSingle actionアプリまたはConversationアプリを実行できます。

Headers

NameTypeDescription

API-KEY*

string

割り当てられたAPIキーです。プロジェクト設定メニュー>一般タブから確認できます。

app_id

string

LLMアプリのIDを指定します。(GET https://{host}/webapi/appsで確認できます。)

Request Body

NameTypeDescription

inputs

json

Single actionアプリまたはConversationアプリで使用するためのインプットです。

Single actionアプリ:Single actionアプリで使用される変数のみが使用可能です。

Conversationアプリ:Conversationアプリで使用される変数のみが使用可能です。

{"input1":["item1","item2"], "input2": 965}

mode

string

データをsyncかstreamのどちらで出力するか設定します。(Default = sync)

streamモードの場合、syncと同じ出力形式のjson文字列がstreamとして出力されます。

id

string

LLMアプリのIDになります。

name

string

LLMアプリの名称になります。

type

string

LLMアプリのタイプになります。(skill,single_action)

description

string

LLMアプリの説明文になります。

category

string

LLMアプリのカテゴリになります。

responses(list) id

string

single action または chat id

responses(list) type

string

generator, send_email, llm, …

responses(list) messsage

string

LLMアプリの実行結果の値になります。

error

string

エラーがある場合に返される値です。

Response Example

{
  "result": {
    "id": "TExNQXBwOjY1OTc5ZjliNGM2Y2RiMzNiNmJmNzAzZA==",
    "name": "New single action (3)",
    "type": "single_action",
    "category": "全般",
    "responses": [
      {
        "id": "U2luZ2xlQWN0aW9uOjY1YzFjZjA4MjdmNTY5ZDIxNDI0ODU5Nw==",
        "type": "llm",
        "message": "医療知識とは、人間の健康や病気に関する知識を意味します。医療知識は医学的な知識だけでなく、健康に関する様々な情報を含み、病気の予防、診断、治療、回復などに関する知識を含みます。このような知識は、専門家である医師、看護師、薬剤師だけでなく、個人も持つべき重要な知識であり、健康的な生活を維持するために不可欠です。医療知識を通じて自分の健康を管理し、病気を予防することができ、必要に応じて医療専門家と協力して適切な治療を受けることができます。"
      }
    ]
  }
}

実際の使用例

REST_API_KEYをプロジェクトのREST APIキーに変更しなければなりません。APIキーの取得の項目をご参照ください。

LLMアプリのIDを取得

curl -vv -X GET \
  'https://backend-ja.alli.ai/webapi/apps' \
  --header 'API-KEY: REST_API_KEY'

Response Example(下記のidはrun API呼び出し時に使用します)

{
  "result": [
    {
      "id": "TExNQXBwOjY1NWVlYTU1OTZlOWM1MjI4MDY2YjlhOQ==",
      "name": "LLM App用 Skill",
      "type": "skill",
      "description": "LLM App用のSkillです.",
      "category": "全般",
      "appFrom": "second_party"
    },
    {
      "id": "TExNQXBwOjY1NWVlOTI3NzcyOGQxZTE1ZmI0OGRjNQ==",
      "name": "Sample Skill",
      "type": "skill",
      "description": "desc",
      "category": "その他",
      "appFrom": "second_party"
    },
    {
      "id": "TExNQXBwOjY1NWVlYTMzY2IzMzQ1OTVkZjQwNzdhZg==",
      "name": "test sample",
      "type": "single_action",
      "description": "test sampleです。",
      "category": "全般",
      "appFrom": "second_party"
    }
  ]
}

Single Action Request Example

REST_API_KEYをプロジェクトのREST APIキーに変更しなければなりません。APIキーの取得の項目をご参照ください。

curl -vv -X POST \
  'https://backend-ja.alli.ai/webapi/apps/TExNQXBwOjY1NWVlYTMzY2IzMzQ1OTVkZjQwNzdhZg==/run' \
  --header 'Accept: */*' \
  --header 'API-KEY: REST_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{"inputs":{"input": "The Little Prince has sold approximately 140 million copies worldwide, making it one of the best-selling and most translated books ever published. To date, it has been translated into 301 languages and dialects. It was the first novel to be published in the United States. The story of the novel is interesting: Saint-Exupéry was in New York City, and while having dinner with his American publisher, Eugene Reynal, he doodled a child on a napkin. When Eugene Reynal saw the drawing, he suggested to Saint-Maximilien that it would be a good idea to write a children's book about the child before Christmas. (It is said that Eugène Reynal suggested it to relieve his stress.) The basic sketch of the Little Prince was based on a statue of the baby Jesus in Prague, Czech Republic. The narrator, a pilot, was also inspired by visions Saint-Exupéry himself experienced when he and his co-pilot crash-landed in the Sahara Desert in 1935 and were stranded for five days without a drop of water."}}'

Single Action Response Example

{
  "result": {
    "id": "TExNQXBwOjY1OTc5ZjliNGM2Y2RiMzNiNmJmNzAzZA==",
    "name": "New single action (3)",
    "type": "single_action",
    "category": "全般",
    "responses": [
      {
        "id": "U2luZ2xlQWN0aW9uOjY1YzFjZjA4MjdmNTY5ZDIxNDI0ODU5Nw==",
        "type": "llm",
        "message": "The Little Prince is one of the world's best-selling books, with over 140 million copies sold, and has been translated into 301 languages. The novel was first published in the United States, at the suggestion of publisher Eugene Reynal. The basic sketch of The Little Prince was inspired by the statue of the Baby Jesus in Prague, Czech Republic, and the pilot was inspired by Saint-Exupéry's own experiences in the Sahara Desert."
      }
    ]
  }
}

Conversation/Skill Request Example

Conversationアプリでドキュメントを使用する

現在、アプリの実行中にユーザーの操作を必要とするConversationアプリ (ユーザーに選択を求める、メッセージの入力を求めるなど) は、Run LLM App API ではサポートされていません。 ただし、以下の例のように、ドキュメントのアップロード後に LLMノードを起動する場合は例外です。 下記の手順をご参考ください。

1.ドキュメントのidを取得する

例として、Upload document APIを使用してドキュメントidを取得する方法を記載します。 下記を実行し、ドキュメントをアップロードします。 REST_API_KEYをプロジェクトのREST APIキーに変更しなければなりません。APIキーの取得の項目をご参照ください。

curl -vv -F 'file=@"/Users/jay/Downloads/test.txt"' \
-F 'footerUrl="www.allganize.ai"' \
-F 'footerTitle="Allganize website"' \
-F 'followFolderPermission=false' \
-F 'agentViewer="[\"jyp_test@allganize.ai\"]"' \
-H 'API-KEY: REST_API_KEY' https://backend-ja.alli.ai/webapi/upload_file

Response bodyで得られるドキュメントの"id"を控えておいてください。 Run LLM APIのRequestの際に使用します。

2.プロンプトを作成

プロンプトを作成します。

この時、プロンプトで使用する変数は、 "ユーザー変数"かつ変数タイプは"ドキュメント"である必要がありますのでご注意ください。

3.Conversation Appを作成

LLMノードにて、2.で作成したプロンプトを適用します。

4.App IDの取得

LLM App List Search APIにて、実行するアプリのApp idを取得します。

5.Run LLM App APIの実行

Run LLM App APIを実行します。下記はリクエストのサンプルです。 REST_API_KEYをプロジェクトのREST APIキーに変更しなければなりません。APIキーの取得の項目をご参照ください。 リクエストパラメータで指定するApp idは4.で取得した値、リクエストボディ内の"Inputs"で指定するドキュメントのidは1.で取得した値を使用してください。

curl -vv -X POST \
'https://backend-ja.alli.ai/webapi/apps/TExNQXBwOjY2NmJmOWQ1OWExYjVlZTIzNTE2OWEwZQ==/run' \
--header 'Accept: */*' \
--header 'API-KEY: REST_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{"inputs":{"DOC_VIA_API": ["S25vd2xlZGdlQmFzZTo2NjZjMDJhZjEzMDkwYjJiOWZmYTY1NjM="]}, "mode":"sync"}'

Response Example

{
"result": {
 "id": "TExNQXBwOjY2NmJmOWQ1OWExYjVlZTIzNTE2OWEwZQ==", 
 "name": "Run LLM API", 
 "type": "skill", "category": "IT", 
 "responses": [
  {
   "id": "Q2hhdDo2NjcxNWRiNzMxZDZiYzEzMDdkMTNlYzI=", 
   "type": "llm", 
   "message": "{\"blocks\": [{\"key\": \"kcq2\", \"type\": \"unstyled\", \"text\": \"第16回個人情報保護委員会では、以下の議題が議論されました:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"d0u4\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"5sc0\", \"type\": \"unstyled\", \"text\": \"1. **個人情報保護法質問ダイヤルのFAQ公表**:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"61dq\", \"type\": \"unstyled\", \"text\": \"   - 平成28年1月以降に設置された質問ダイヤルに寄せられた質問と回答例をホームページで公表する提案が事務局から説明されました。これにより、問い合わせを減らし、回答を円滑にすることを目指しています。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"2r5u\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"26iu\", \"type\": \"unstyled\", \"text\": \"2. **具体的な質問と回答例**:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"mh1v\", \"type\": \"unstyled\", \"text\": \"   - 家電量販店でのアンケートによる個人情報取得や、他社からの従業員在籍確認に関する質問が例として挙げられました。これらは個人情報取扱事業者向けと個人向けに分けて掲載される予定です。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"zk7a\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"qg6t\", \"type\": \"unstyled\", \"text\": \"3. **改 正法に関する質問と回答例**:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"6ak9\", \"type\": \"unstyled\", \"text\": \"   - 改正法が全面施行された場合の高校の同窓会名簿や自治会 名簿の作成、会社内での個人情報の利用についての質問に対する回答例が示されました。5,000人要件の撤廃や、同一事業者 内での利用目的の範囲についても説明されました。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"102g\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"cy2l\", \"type\": \"unstyled\", \"text\": \"4. **FAQの作成方針**:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"bz4h\", \"type\": \"unstyled\", \"text\": \"   - 個人向けと事業者向けにFAQを分け、特に個人向けには分かりやすい表現が求められます。FAQは常に改善が必要で、利用者からの意見を反映していくべきです。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"e73a\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"sj91\", \"type\": \"unstyled\", \"text\": \"5. **米国との連携強化**:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"84ad\", \"type\": \"unstyled\", \"text\": \"   - 委員会事務局と在日米国大使館の担当者が意見交 換を行い、日米間での密接な対話と連携を進めることで一致しました。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"vnld\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Connection #0 to host backend-ja.alli.ai left intact entityRanges\": [], \"data\": {}}, {\"key\": \"kauw\", \"type\": \"unstyled\", \"text\": \"6. **議事録の公開**:\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"lpqr\", \"type\": \"unstyled\", \"text\": \"   - 透明性を高めるために議事録を公開することが提案され、具体的な公表方法についても説 明されました。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"6koq\", \"type\": \"unstyled\", \"text\": \"\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"qxsv\", \"type\": \"unstyled\", \"text\": \"これらの議論は、個人情報保護法に関するFAQの作 成と改善、国際連携の強化、そして委員会の透明性向上を目指すものでした。\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}], \"entityMap\": {}}"
}]}}

Error Message

想定したresponseが届かない場合は、以下のエラーメッセージをご確認ください。

Status CodeError CodeNameMessageDescription

500

7000

API Error

Something went wrong

以下のエラーには該当しない、API処理の失敗した場合

403

7001

Invalid API Key

API-KEY is not valid

API-KEYが無効な場合

403

7002

Invalid JSON

Cannot decode tuen requested JSON body

リクエストされたjsonをデコードできない場合

400

7003

Invalid Parameter

Requested parameters are not valid. 'text' is empty.

リクエストされたパラメータが間違っている場合

403

7004

Payment error

billing error.

支払いに関する一般的なエラー(例:利用料の支払いが確認できず、環境が利用できない場合など)

403

-

Wrong HTTP Method

-

無効なHTTPメソッドの場合

Error Response example

{
    "type": "APIError",
    "code": 7000,
    "message": "Something went wrong."
}

Last updated