Alli LLM App Market API

이 문서는 Alli LLM App Market의 REST API에 대한 자세한 정보를 제공합니다. 현재 LLM App 조회와 실행 API를 제공하며, API는 향후 추가될 예정입니다.

REST API

LLM App 리스트 조회

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

LLM App의 ID 및 정보를 검색합니다.

Path Parameters

NameTypeDescription

API-KEY

string

할당된 API 키입니다. 대시보드의 설정 메뉴 > 일반 탭에서 찾을 수 있습니다.

published

모든 앱을 표시할지 공개된 앱만 표시할지 선택할 수 있습니다. 기본값은 모든 앱을 표시합니다.

user

유저 ID입니다. 기본값은 모든 앱을 가져옵니다

id

LLM App ID입니다. 복수개의 id를 입력하는 것도 가능합니다 (옵셔널) 예: id=abc&id=bcd

Headers

NameTypeDescription

id

string

LLM App Id를 의미합니다.

name

string

LLM App명을 의미합니다.

type

string

LLM App 타입을 의미합니다. (skill, single_action)

description

string

LLM App에 대한 설명을 의미합니다.

category

string

LLM App의 카테고리를 의미합니다. (HR, LEGAL, OTHERS...)

appFrom

string

LLM App의 출처를 의미합니다. (first_part, second_party)

appUrl

string

LLM App에 접근 가능한 url을 의미합니다.

inputs

string

LLM App의 inputs, single action 에 대해서만 값을 가집니다.

Response Example

{
  "result": [
    {
      "id": "TExNQXBwOjY1NzAyNGQ5ZWI4YjUzNGY3MjA0NjdjOA==",
      "name": "New single action (1)",
      "type": "single_action",
      "description": "테스트",
      "category": "General",
      "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": [],
          "model": "turbo",
          "placeholder": "test"
        },
        {
          "name": "테스트2",
          "inputType": "text",
          "value": "test2",
          "options": [],
          "model": "turbo",
          "placeholder": "test"
        }
      ]
    },
    {
      "id": "TExNQXBwOjY1OTc5ZjliNGM2Y2RiMzNiNmJmNzAzZA==",
      "name": "New single action (3)",
      "type": "single_action",
      "description": null,
      "category": "OTHERS",
      "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": "OTHERS",
      "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": "General",
      "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": []
    }
  ]
}

LLM APP 실행

LLM App 실행

GET https://backend.alli.ai/webapi/apps/:app_id/run

특정 LLM App을 실행합니다.

Path Parameters

NameTypeDescription

app_id

string

LLM 앱 ID; GET https://{host}/webapi/apps를 통해 확인 가능

API-KEY

string

할당된 API 키입니다. 대시보드의 설정 메뉴 > 일반 탭에서 찾을 수 있습니다.

Headers

NameTypeDescription

inputs

string

single action 또는 skill에 사용하기 위한 input

single action

string

single action 에서 사용한 변수만 사용 가능

skill

String

user variable 로 설정한 변수만 사용 가능

mode

String

sync, stream (default : sync)

stream mode 일 때는, sync 와 동일한 out format 의 json string 을 streaming 하게 출력

(현재는 single action 에만 적용되어 있음)

Sinlge Action Input Example(single action : single action 에서 사용한 변수만 사용 가능)

{
  "Short Text" : "subject",
  "Paragraph" : "companyname",
  "Single Choice" : "keyword", 
  "Multiple Choice" : "domain1,domain2", 
  "Document Basic" : "document id", / S25vd2xlZGdlQmFzZTo2NWIzMDUxYTQ4YmE1NDMwNGVjNDBiOWI
  "Document Advanced" : "document id"
}

Input Example

{
  "inputs": {
    "short_text": "short_text",
    "paragraph": "paragraph",
    "single_choice" : "single_chocie_1",
    "multiple_choice" : "multiple_choice_1,multiple_choice_2",
    "document_basic" : "S25vd2xlZGdlQmFzZTo2NWIzMDUxYTQ4YmE1NDMwNGVjNDBiOWI=",
    "document_advanced" : "S25vd2xlZGdlQmFzZTo2NWIzMDUxYTQ4YmE1NDMwNGVjNDBiOWI="
  },
  "mode": "sync"
}

Skill Example (user variable 로 설정한 변수만 사용 가능)

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

Response

Response

GET

Path Parameters

NameTypeDescription

published

boolean

모든 앱을 표시할지 공개된 앱만 표시할지 선택할 수 있습니다. 기본값은 모든 앱을 표시합니다.

API-KEY

string

할당된 API 키입니다. 대시보드의 설정 메뉴 > 일반 탭에서 찾을 수 있습니다.

Headers

NameTypeDescription

id

string

LLM App Id를 의미합니다.

name

string

LLM App명을 의미합니다.

type

string

LLM App 타입을 의미합니다. (skill, single_action)

description

string

LLM App에 대한 설명을 의미합니다.

category

string

LLM App의 카테고리를 의미합니다. (HR, LEGAL, OTHERS...)

choices(list)

string

id : single action 또는 chat id

type : generator, send_email, llm, …

message : (sync 일 때) 결과값

delta : (stream 일 때) 결과값

error

string

에러가 있을 시 반환됨

Response Example

{
  "result": {
    "id": "TExNQXBwOjY1NTQ2MTNlOWZiZGI4MzA4ODBkYjNmYQ==",
    "name": "llm app v2",
    "type": "skill",
    "category": "GENERAL",
    "choices": [
      {
        "id": "Q2hhdDo2NTVlZTFkMjcyOGI3NDlmMjZkZGQ5ZjI=",
        "type": "llm",
        "message": "{\"blocks\": [{\"key\": \"txg1\", \"type\": \"unstyled\", \"text\": \"Allganize는 AI 솔루션을 제공하고 있으며, 기업의 업무 효율화와 혁신을 실현하고 있습니다.알리 LLM 앱 마켓에서는 100개 이상의 업무 앱이 제공되고 있으며, LLM 앱 빌더 및 LLM 모델 등 LLM과 관련된 기능을 올인원으로 제공하고 있습니다.또한 Alli 챗봇과 Alli Capture를 활용하여 비즈니스 자동화 및 데이터 추출을 수행할 수 있습니다.Allganize는 보험업, 채용, 이커머스, 고객지원 등 다양한 업계에서의 활용 사례가 있습니다.\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}], \"entityMap\": {}}"
      }
    ]
  }
}

실제 사용 예시(공통)

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

curl -vv -X GET \
  'https://backend.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": "General",
      "appFrom": "second_party"
    },
    {
      "id": "TExNQXBwOjY1NWVlOTI3NzcyOGQxZTE1ZmI0OGRjNQ==",
      "name": "Sample Skill",
      "type": "skill",
      "description": "desc",
      "category": "OTHERS",
      "appFrom": "second_party"
    },
    {
      "id": "TExNQXBwOjY1NWVlYTMzY2IzMzQ1OTVkZjQwNzdhZg==",
      "name": "요약 싱글 액션 앱",
      "type": "single_action",
      "description": "요약을 위한 싱글 액션입니다.",
      "category": "General",
      "appFrom": "second_party"
    }
  ]
}

Single Action

Single Action 작성 후 LLM APP 에 등록 (앱 마켓에서 관리 페이지에 추가한 Single Action App도 사용가능)

Run LLM App API 실행

상기에서 발급받은 REST API Key를 이용

curl -vv -X POST \
  'https://backend.alli.ai/webapi/apps/TExNQXBwOjY1NWVlYTMzY2IzMzQ1OTVkZjQwNzdhZg==/run' \
  --header 'Accept: */*' \
  --header 'API-KEY: REST_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{"inputs":{"input": "어린 왕자는 전 세계적으로 약 1억 4천만 부가 팔렸으며, 이는 출판된 책들 중 가장 많이 팔리고 번역된 책들 중 하나이다. 현재까지 301개의 언어와 방언으로 번역되었다. 미국에서 처음 발간된 소설이다. 이 소설의 유래가 참 재밌는데, 생텍쥐페리가 뉴욕에 체류 중이었을 당시, 미국의 담당 출판업자인 유진 레이널(Eugene Reynal)과 저녁 식사를 하던 도중에 냅킨에 낙서로 아이 한 명을 그렸다. 유진 레이널이 그 그림을 보고 생택쥐페리에게 크리스마스 전까지 그 아이를 소재로 동화를 쓰면 참 좋을 텐데요.라고 제안한 것이 이 소설을 탄생시킨 결정적인 계기가 되었다. (유진 레이널이 그의 스트레스 해소를 위해 제안했다는 이야기도 있다.) 어린 왕자의 기본 스케치의 모티브는 체코 프라하의 아기 예수상이라고 한다. 또한 작중 화자인 조종사는 생택쥐페리 본인이 1935년 사하라 사막에 부조종사와 함께 불시착해 5일 동안 먹을 물 한 방울 없이 고립되어 있을 때 경험한 환상들에서 모티브를 얻었다."}, "mode":"sync"}'

Response Example

{
  "result": {
    "id": "TExNQXBwOjY1NWVlYTMzY2IzMzQ1OTVkZjQwNzdhZg==",
    "name": "요약 싱글 액션 앱",
    "type": "single_action",
    "category": "General",
    "choices": [
      {
        "id": "U2luZ2xlQWN0aW9uOjY1NWVlZjQ4M2JhMTIzYzA3YWZmNWUzOQ==",
        "type": "llm",
        "message": "어린 왕자는 1억 4천만 부 이상 팔려 세계에서 가장 많이 팔린 책 중 하나이며, 301개 언어로 번역되었다. 이 소설은 미국에서 처음 출판되었으며, 유진 레이널 출판업자의 제안으로 탄생했다. 어린 왕자의 기본 스케치는 체코 프라하의 아기 예수상에서 영감을 받았으며, 조종사는 생텍쥐페리 본인의 사하라 사막에서의 경험에서 영감을 얻었다."
      }
    ]
  }
}

Skill

현재 사용자의 인터랙션이 중간에 요구되는 Skill(예: 앱 실행 중간에 사용자에게 선택, 메시지 입력 요청)은 LLM App API로 지원되지 않습니다. (단, 문서 업로드 후 LLM 노드 실행은 예외적으로 아래 예시와 같이 지원합니다.)

Skill에서 사용할 Variable 생성 (Conversation variables이 아닌 User Variables로 생성해야 합니다)

Skill 에서 사용할 Prompt 생성 (Dynamic input 추가 필요): 프롬프트 관리에 관한 자세한 내용은 이 페이지를 참고하세요.

Prompt 를 사용하여 Skill 생성 및 등록

Skill 에서 사용할 문서 등록 (Answer Bot API 참조) 상기에서 발급받은 REST API Key를 이용

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.alli.ai/webapi/upload_file

Response Example(아래 결과의 id를 input으로 사용)

{
  "result": {
    "id": "S25vd2xlZGdlQmFzZTo2NTVlZjAzNmMxYzFmMDFiYmNmYjYxMWM=",
    "fileName": "test.txt",
    "hashtags": [],
    "footer": "{\"blocks\": [{\"key\": \"xx9l\", \"text\": \"— From Allganize website\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [{\"offset\": 7, \"length\": 17, \"key\": 0}], \"data\": {}}], \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"url\": \"www.allganize.ai\"}}}}",
    "folder": null,
    "agentEditor": [],
    "agentViewer": [
      "jyp_test@allganize.ai"
    ],
    "userViewer": {
      "variables": {}
    },
    "allowOtherAgentsView": true,
    "allowOtherUsersView": true,
    "properties": {}
  }
}

Run LLM APP Api 실행 상기에서 발급받은 REST API Key를 이용

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

Response Example

{
  "result": {
    "id": "TExNQXBwOjY1NWVlYTU1OTZlOWM1MjI4MDY2YjlhOQ==",
    "name": "LLM App용 Skill",
    "type": "skill",
    "category": "General",
    "responses": [
      {
        "id": "Q2hhdDo2NTVlZjFhMGJiOWRkZjBhMWVkMzViNTE=",
        "type": "llm",
        "message": "{\"blocks\": [{\"key\": \"jeno\", \"type\": \"unstyled\", \"text\": \"어머니를 잃은 소녀가 재투성이라 불리며 가족에게 학대를 받지만, 어머니의 무덤에 심은 나무를 통해 위로를 받는 이야기.\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}], \"entityMap\": {}}"
      }
    ]
  }
}

Error Message

예상했던 response 를 받지 못한 경우 에러 메시지를 확인해 주세요. .

Status Code

Error Code

Name

Message

Description

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 파일이 잘못되어 Decode가 불가능한 경우 수령

400

7003

Invalid Parameter

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

요청된 파라미터가 잘못된 경우(e.g., 빈 텍스트로 인퍼런스를 요청 등) 수령

403

7004

Payment error

billing error.

지불 관련 일반 오류 (e.g., 지불 기한이 넘어간 경우 등)가 발생한 경우 수령

405

-

Wrong HTTP Method

-

잘못된 HTTP 메소드를 사용한 경우 수령

Error Response example

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

Last updated