스마트 도구를 위한 JSON 형식

Python 코드로 작성된 SkyDeck.AI 스마트 도구를 공유하기 위한 휴대용 방법

전체적으로

SkyDeck.AI에서 스마트 도구를 생성하려면 파일 구조 섹션에 언급된 사양에 따라 파일 세트를 업로드해야 합니다. 업로드가 완료되면, 플랫폼이 초기 설정을 수행하며, 이 작업은 몇 분 정도 걸릴 수 있습니다. 이후에 도구는 GenStudio 워크스페이스에서 사용할 수 있게 됩니다.

파일 구조

<tool_name>.json

도구의 동작은 JSON 파일을 통해 구성됩니다. 다음은 구성의 주요 필드에 대한 간략한 개요입니다:

  • version: 도구의 현재 버전입니다.

  • tool_name: 도구의 이름입니다. 이 이름은 여러분의 작업 공간에서 유일해야 합니다.

  • tool_code: 실행할 Python 코드가 포함되어 있습니다. 이 필드에 대한 자세한 내용은 다음 섹션에서 다룰 것입니다.

  • description: 도구가 하는 일에 대한 간략한 설명입니다.

  • usage_notes: 도구 사용 방법에 대한 지시사항입니다.

  • model_version: 후속 질문에 사용할 수 있는 모델을 지정합니다. 모든 모델을 지정하려면 _["gpt-4", "gpt-3.5", "claude", "chat-bison"]_를 사용합니다.

  • creator: 도구 제작자에 대한 정보가 포함되어 있습니다. 이름, 이메일, 조직 등이 포함됩니다.

  • variables: 도구에서 사용하는 변수의 배열입니다. 각 변수는 이름, 설명, 기본 값이 있습니다. UI에서 변수의 순서는 이 배열의 순서를 따릅니다.

  • expected_output: 도구가 생성하는 출력 유형입니다. 개발 단계에서는 값이 항상 텍스트여야 합니다.

  • avatar_type: 도구 UI에서 사용되는 아바타의 형식입니다.

  • timestamp: 도구가 마지막으로 업데이트된 날짜와 시간입니다.

  • requirements: tool_code의 스크립트를 실행하기 위해 필요한 패키지를 지정합니다.

  • avatar: 이 도구의 로고를 나타내는 문자열입니다

tool_code 규칙:

이 스크립트는 도구의 작동 방식을 개요화합니다. 이 스크립트의 주요 구성 요소는 다음 요구 사항을 가진 execute 함수입니다:

  • 함수는 variables 라는 단일 입력 파라미터를 가져야 합니다. 이것은 딕셔너리입니다. 이 딕셔너리의 각 키는 사용자가 도구에 입력하려는 필드에 해당합니다.

  • 함수는 문자열을 반환해야 하며, 이는 GenStudio UI에서 응답으로 표시됩니다.

예제 도구

DALL-E 2를 사용한 이미지 생성

설명:

이 도구는 이미지 설명을 입력으로 받아 이미지에 해당하는 URL을 생성합니다. 출력에는 URL과 만료 주의사항이 포함됩니다. 이 도구는 쿼리를 OpenAI DALL-E API에 전송하고 응답을 받아오는 방식으로 작동합니다.

입력:

  • 설명: 이미지 설명, 예: "하얀 털이 가득한 고양이"

출력:

  • 생성된 이미지 URL과 만료 주의사항이 포함된 메시지

파이썬 스크립트 (image_generation.json 내의 필드가 될 것):

import openai
def execute(변수들):
    openai.api_key = '<사용자 API 키>'
    description = 변수들['설명']
    response = openai.Image.create(
        prompt=description,
        n=1,
        size="1024x1024"
    )
    image_url = response['data'][0]['url']
    return f"당신의 이미지 링크는 다음과 같습니다:{image_url}. 링크는 1시간 후에 만료됩니다."

image_generation.json

{
    "version": "0.1",
    "metadata": {
        "tool_name": "이미지 생성",
        "tool_code": "import openai\n\ndef execute(variables):\n openai.api_key = ''\n description = variables['Description']\n response = openai.Image.create(\n prompt=description,\n n=1,\n size=\"1024x1024\"\n )\n\n image_url = response['data'][0]['url']\n return f\"Here is the link to your image:{image_url}. The link will be expired in 1 hour.\"\n",
        "description": "OpenAI의 DALL-E 모델을 바탕으로 설명에 따른 이미지를 생성합니다.",
        "usage_notes": "상세한 이미지를 묘사하고 그것을 설명 필드에 넣어주세요. 이미지의 URL이 반환됩니다. URL의 유효기간은 약 1시간이므로 만료되기 전에 다운로드하는 것을 잊지 마십시오",
        "model_version": ["gpt-3.5","gpt-3.5-turbo", "gpt-4", "claude"],
        "creator": {
            "name": "SkyDeck AI",
            "email": "skydeck@eastagile.com",
            "organization": "East Agile"
        },
        "variables": [
            {
                "name": "Description",
                "description": "이미지 설명",
                "default": "하얀색 시암 고양이"
            }
        ],
        "expected_output": {
            "type": "text"
        },
        "avatar_type": "base64",
        "timestamp": "2023-05-23T10:00:00Z",
        "requirements": "openai>=0.27.4",
        "avatar": ""
    }
}

Open-Meteo API를 사용한 실시간 날씨 보고서

설명:

이 도구는 Open-Meteo API를 활용하여 사용자의 질문에 따르는 실시간 날씨 정보를 제공합니다. 온도, 강수량, 바람 상황 등에 대한 질문을 통해, 이 도구는 가장 관련성이 높고 최신의 데이터를 검색합니다.

이 도구의 작동은 LangChain 라이브러리의 APIChain 기능에 의존하여 Open-Meteo API 문서를 접근합니다. 이를 통해 도구가 올바른 API 호출을 어떻게 만드는지 학습하고 필요한 정보를 원활하게 가져올 수 있습니다.

입력:

  • 질문: 날씨에 관한 구체적인 질문을 하십시오. 예: "현재 뉴욕시의 온도는 얼마인가요?"

출력:

  • 요청된 날씨 정보를 제공하는 응답.

Python 스크립트 (weather_reporter.json 내의 필드가 될 것입니다):

from langchain.chains.api import open_meteo_docs
from langchain.chat_models import ChatOpenAI
from langchain.chains import APIChain
def execute(variables):
    question = variables['Question']
    llm = ChatOpenAI(
        model_name='gpt-3.5-turbo',
        openai_api_key='<사용자 API 키>'
    )
    api_chain = APIChain.from_llm_and_api_docs(
        llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False
    )
    result = api_chain.run(question)
    return result

weather_reporter.json

{
  "version": "0.1",
  "metadata": {
    "tool_name": "날씨 보고서",
    "tool_code": "from langchain.chains.api import open_meteo_docs\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.chains import APIChain\n\n\ndef execute(variables):\n question = variables['Question']\n llm = ChatOpenAI(model_name='gpt-3.5-turbo',\n openai_api_key='')\n api_chain = APIChain.from_llm_and_api_docs(\n llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False)\n result = api_chain.run(question)\n return result\n",
    "description": "Open-Meteo API를 활용하여 실시간 날씨 정보를 가져옵니다",
    "usage_notes": "제공된 필드에 날씨 관련 질문을 입력하세요",
    "model_version": ["gpt-3.5", "gpt-3.5-turbo", "gpt-4", "claude"],
    "creator": {
      "name": "SkyDeck AI",
      "email": "skydeck@eastagile.com",
      "organization": "East Agile"
    },
    "variables": [
      {
        "name": "Question",
        "description": "날씨 조건에 대해 문의하십시오",
        "default": "성화단위로 표현된 독일 뮌헨의 현재 기온은 어떻게 되나요?"
      }
    ],
    "expected_output": {
      "type": "text"
    },
    "avatar_type": "base64",
    "timestamp": "2023-07-13T10:00:00Z",
    "requirements": "openai>=0.27.4\nlangchain>=0.0.229",
    "avatar": ""
  }
}

제한 사항

AWS Lambda는 기능을 최대 15분 동안, 10GB의 RAM으로 실행할 수 있습니다. 따라서 도구는 이 제약 조건 내에서 실행을 완료해야 합니다.

Last updated