Alli Generative Answer API

Alliの回答自動生成機能は、質問の意味と意図を理解し、ソースとなる膨大なドキュメントのデータから検索を実施することで、正確かつ横断的な回答を生成する機能を備えています。

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

APIキーの取得

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

ユーザー情報の提供

リクエスト ヘッダーにユーザー情報を追加して、どのユーザーがAPIを呼び出すかを指定できます。 ユーザー ID はリクエスト ヘッダーの OWN-USER-ID に指定できます。ユーザー ID は新しいものでも既存のものでもよく、新しいユーザー ID が指定された場合、Alli はその ID を持つ新しいユーザーを作成します。 同じ OWN-USER-IDヘッダーを持つ今後の API 呼び出しは、同じユーザーからのものであるとみなされます。 ユーザーのメールアドレスを同時に更新する場合は、リクエスト ヘッダー USER-EMAILにメールアドレスを指定できます。 以下に例を示します。

-H 'OWN-USER-ID: 5f1234567a409876c082487z' \
-H 'USER-EMAIL: user_1@email.com'

OWN-USER-IDには非 ASCII 文字を使用できません。ユーザー ID に非 ASCII 文字が含まれている場合は、ID を Base64 にエンコードし、base64:CONVERTED_ID を使用できます。 保存されたユーザー ID とメールアドレスの情報は、Alli ダッシュボード上の [顧客] メニューで確認できます。

エラーメッセージ

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

{“errors”: “Method Not Allowed PUT: /webapi/generative_answer”}

Generative Answer

POST https://backend-ja.alli.ai/webapi/generative_answer

Generative Answer API は、非構造化テキスト ドキュメント、Q&A、さらには複雑な表からも回答を見つけ、生成します。

Headers

NameTypeDescription

API-KEY*

string

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

OWN-USER-ID

string

ユーザーの ID を指定することで、この API 呼び出しを行うユーザーを特定できます。ここで指定するIDは、ダッシュボードの [顧客リスト]>[CUSTOMER_ID] もしくは[会話履歴]>[対話情報]にて確認できます。

Request Body

NameTypeDescription

query*

string

質問文の文字列になります。

model

string

回答を生成するときに、選択した LLM を利用します。 デフォルトのモデルは GPT 3.5 Turbo です。

answer_format

string

応答の形式を特定して、統合をより簡単にするために応答の形式を確認してください。

サポートされているのは、DRAFTJSMARKDOWN です。

デフォルトの形式は、DRAFTJSです。

isStateful

Boolean

後続質問の機能を使用するには、以前の会話履歴が必要です。 会話履歴は threadId で管理されます。 isStateful optionをTrueに設定し、threadIdと入力すると、以前の会話履歴に基づいてクエリが再作成されます。 (Default = False)

ThreadId

string(UUID)

threadId は Stateful=True のときに使用されます。

最初の会話を開始するときは空白で、次のクエリからは出力のthreadIdを使用します。 最初の会話からthreadIdを設定したい場合は、UUID形式で作成する必要があります。

例 UUID - 36e7bb2b-1063-47ec- (Default = None)

promptGroupId*

string

回答生成に使用するプロジェクトのグループプロンプトを選択します。この設定は、デフォルトで準備されたグループプロンプトから変更を行い利用している場合などに有効です。

IDはプロジェクト設定>プロンプト管理>回答生成タブの選択します。使用するグループプロンプトを選択した際に表示されるURLからIDが確認できます。 例 :https://app.alli.ai/projects/UHJvamVjdDo2NDljYTRjZDMzMGY2MDZkYWRjOPOjNjE=/settings/prompt-management/generative-answer/groups/TExNUHJvbXB0R3JvdXA6NjUzNzc3MzA5GHUyMGE2ZjlhM2Q5OTIw

mode

string

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

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

clues

boolean

回答を生成するために使用されたclueを出力に含めるかどうか設定できます。(Default = False)

clueTxet

boolean

clueTextはclues=Trueの時に利用できるオプションです。

clueに用いたドキュメントのテキスト情報を含めるかどうか設定できます。(Default = False)

hashtags

json

ハッシュタグを使用してドキュメントとFAQの検索範囲を指定できます。 特定のハッシュタグを含めたり除外したり、選択したハッシュタグのオプションを指定したりできます。 例: { "qnaInclude" : ["hash name", "hash name2"], "qnaIncludeOption" : "and"/"or", "qnaExclude" : ["hash name", "hash name2"], "qnaExcludeOption" : "and"/"or", "docsInclude" : ["hash name", "hash name2"], "docsIncludeOption" : "and"/"or", "docsExclude" : ["hash name", "hash name2"], "docsExcludeOption" : "and"/"or", }

search_from

json

Generative Answer がデータを検索するソース データの範囲を指定します。現在使用可能な値は、web、qna、document、およびリスト形式でのデータ入力です。 例: ["web", "qna"]

結果は以下の JSON 形式で取得されます。

{
            "answer": "ANSWER",
            "intent": "INTENT",
            "threadId": "threadId",
            "fuQuestion": "fuQuestion",
            "clues":  {
               "clueId": "CLUE_ID_1",
               "source": "SOURCE",
               "title": "TITLE_1",
               "pageNo": "PageNo_1",
               "kbId": "kbId_1",
               "faqId": "faqId_1"
        }
}
利用可能な LLMモデル

OPENAI GPT3.5 TURBO (turbo)

OPENAI GPT3.5 TURBO 16K (turbo_16k)

OPENAI GPT3.5 TURBO INSTRUCT (turbo_instruct)

OPENAI GPT4 (gpt4)

OPENAI GPT4 TURBO (gpt4_turbo)

OPENAI GPT4 TURBO VISION (gpt4_turbo_vision)

OPENAI GPT4 32K (gpt4_32k)

OPENAI GPT-4o (gpt4_o)

OPENAI GPT-4o-mini (gpt4_o_mini)

AZURE GPT3.5 TURBO (azure_turbo)

AZURE GPT3.5 TURBO 16K (azure_turbo_16k)

AZURE GPT3.5 TURBO JA (azure_turbo_ja)

AZURE GPT4 (azure_gpt4)

AZURE GPT4 TURBO (azure_gpt4_turbo)

GOOGLE PALM2 (vertex_text_bison)

NAVER HYPER CLOVA X (hyper_clova_x_lk_0)

ANTHROPIC CLAUDE 2 (anthropic_claude_2)

ANTHROPIC CLAUDE 3 OPUS (anthropic_claude_3_opus)

ANTHROPIC CLAUDE 3 SONNET (anthropic_claude_3_sonnet)

ANTHROPIC CLAUDE 3 HAIKU (anthropic_claude_3_haiku)

GEMINI PRO (gemini_pro)

GEMINI PRO VISION (gemini_pro_vision)

ALPHA F V2 EEVE (alpha_f_v2_eeve)

Output項目

answer: 生成回答 API の実行の結果として生成された回答

intent: 生成回答のインテント (SEARCH または END_OF_CONVERSATION)

clues(list): 回答を生成するために使用された手がかりのリスト (PARAMETER の clues が True の場合のみ)。

clueId: Alli によって管理される手がかりの一意の ID。

source: 手がかりのタイプ (DOCUMENT または FAQ)。

title: Alli に保存されているドキュメントまたは FAQ のタイトル。

pageNo: (type が document の場合のみ) ドキュメントのページ番号。

kbId: (type が document の場合のみ) Alli によって管理されるドキュメントの一意の ID。

faqId: (type が FAQ の場合のみ) Alli によって管理される FAQ の一意の ID。

text: (type が document で clueText が true の場合のみ) 手がかりとして使用されるドキュメントのテキスト。

threadId : 入力として threadId が指定された場合 (PARAMETERの is_stateful が True の場合のみ)、値がそのまま返されます。それ以外の場合は、新しいスレッド ID が作成されて返されます。 なお、threadidについてはRequestのHeadersで"OWN-USER-ID"が指定されている、 かつ、PARAMETERの is_statefulが True の場合のみ作成がされますので注意してください。

fuQuestion : 同じ threadId 内でクエリと応答結果を使用して新しいクエリが作成された場合 (PARAMETER の is_stateful が True の場合のみ)、値が返されます。

直前に同じ threadId 内で「日本の○○代総理大臣は誰ですか?」という質問が行われ、その後に「彼の年齢は?」という質問が行われた場合、「日本の○○代総理大臣の年齢は?」のような fu_question が作成され、その質問がクエリで使用されます。

Request Example

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

curl -X POST -d '{ 
  "query": "can I disclose the composite ratings?",
  "model": "gpt4",
  "isStateful": "True",
  "threadId": "UUID",
  "mode": "sync" ,
  "hashtags":{"docsInclude" : ["test"], "docsIncludeOption" : "or"}
}' \
-H 'API-KEY: REST_API_KEY' \
-H 'Content-Type: application/json' \
-H 'OWN-USER-ID: xxxxx.xxx@allganize.ai' \
https://backend-ja.alli.ai/webapi/generative_answer

Response Example

{
    "answer": "{\"blocks\": [{\"key\": \"k0\", \"text\": \"看護休暇については、以下の情報があります。\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k1\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k2\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k3\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k4\", \"text\": \"1. 小学校就学の始期に達するまでの子がいる労働者は、病気または怪我をした子の看護のために、年次有給休暇とは別に看護休暇を取得することができます。ただし、日々雇い入れられる者は除かれます [2]。\", \"inlineStyleRanges\": [], \"entityRanges\": [{\"key\": 0, \"offset\": 94, \"length\": 3}], \"type\": \"unstyled\"}, {\"key\": \"k5\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k6\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k7\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k8\", \"text\": \"2. 看護休暇の日数は、労働者1人当たり1年間で5日を限度とします。この場合の1年間とは、4月1日から翌年の3月31日までの期間を指します [2]。\", \"inlineStyleRanges\": [], \"entityRanges\": [{\"key\": 0, \"offset\": 70, \"length\": 3}], \"type\": \"unstyled\"}, {\"key\": \"k9\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k10\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k11\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k12\", \"text\": \"3. 看護休暇中の賃金は無給とされます [2]。\", \"inlineStyleRanges\": [], \"entityRanges\": [{\"key\": 0, \"offset\": 20, \"length\": 3}], \"type\": \"unstyled\"}, {\"key\": \"k13\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k14\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k15\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k16\", \"text\": \"4. 看護休暇を取得するためには、所定の申請用紙に必要事項を記載の上、総務部長に届け出る必要があります [2]。\", \"inlineStyleRanges\": [], \"entityRanges\": [{\"key\": 0, \"offset\": 52, \"length\": 3}], \"type\": \"unstyled\"}, {\"key\": \"k17\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k18\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k19\", \"text\": \"\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}, {\"key\": \"k20\", \"text\": \"以上が看護休暇に関する情報です。\", \"inlineStyleRanges\": [], \"entityRanges\": [], \"type\": \"unstyled\"}], 
           \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"isFromKnowledgeBase\": true, \"source\": \"DOCUMENT\", \"url\": \"https://app.alli.ai/projects/UHJvamVjdDo2NTRiNTc0NjdlMzc0ZTJhY2JmMzgzYjQ=/knowledgeBases/S25vd2xlZGdlQmFzZTo2NTRjZDMxYjU1N2VkODU2M2Y4MzEyYWU=/preview?page=4\", \"knowledgeBasePreview\": {\"pageNo\": 4, \"totalPageCount\": 10, \"knowledgeBase\": {\"id\": \"S25vd2xlZGdlQmFzZTo2NTRjZDMxYjU1N2VkODU2M2Y4MzEyYWU=\", \"title\": \"就業規則.pdf\"}, \"clueId\": \"Q29nbml0aXZlQ2x1ZTo2Njk1Y2I2ZGE0NmY3M2MwYThmZWM0OWFfMQ==\", \"answerHighlightId\": \"Q29nbml0aXZlQ2x1ZTo2Njk1Y2I2ZGE0NmY3M2MwYThmZWM0OWFfMQ==\"}}}}}",
    "intent": "SEARCH",
    "threadId": "7d80f4a1-1e8f-41ea-aba0-261df161db35",
    "fuQuestion": null,
    "clues": [
        {
            "clueId": "Q29nbml0aXZlQ2x1ZTo2Njk1Y2I2ZGE0NmY3M2MwYThmZWM0OWFfMA==",
            "source": "FAQ",
            "title": "病気の際の休暇について",
            "pageNo": null,
            "kbId": null,
            "faqId": "RkFROjY1ZTZlZjJjZDc3OTRiMzQ2MDUyZGM4Mg=="
        },
        {
            "clueId": "Q29nbml0aXZlQ2x1ZTo2Njk1Y2I2ZGE0NmY3M2MwYThmZWM0OWFfMQ==",
            "source": "DOCUMENT",
            "title": "xxxxx.pdf",
            "pageNo": 4,
            "kbId": "S25vd2xlZGdlQmFzZTo2NTRjZDMxYjU1N2VkODU2M2Y4MzEyYWU=",
            "faqId": null
        },
        {
            "clueId": "Q29nbml0aXZlQ2x1ZTo2Njk1Y2I2ZGE0NmY3M2MwYThmZWM0OWFfMg==",
            "source": "DOCUMENT",
            "title": "yyyyy.pdf",
            "pageNo": 8,
            "kbId": "S25vd2xlZGdlQmFzZTo2Njc5NGFkNGQ0ZjA2MzZlOWRlMDRiYTU=",
            "faqId": null
        }
    ]
}

Cluesにdocumentを指定した場合、プレビュー用のURLは、レスポンスボディ"answer"内の"url"に値として返ります。

Last updated