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 openaidefexecute(변수들): openai.api_key ='<사용자 API 키>' description = 변수들['설명'] response = openai.Image.create( prompt=description, n=1, size="1024x1024" ) image_url = response['data'][0]['url']returnf"당신의 이미지 링크는 다음과 같습니다:{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_docsfrom langchain.chat_models import ChatOpenAIfrom langchain.chains import APIChaindefexecute(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으로 실행할 수 있습니다. 따라서 도구는 이 제약 조건 내에서 실행을 완료해야 합니다.