Running a Tool
==============

ツールは、HTTP
POST要求をツールのアクティビティエンドポイントに送信することにより実行されます。アクティビティは、ツールのメソッドを\ ``@activity``
デコレータで修飾することにより定義されます。アクティビティ名はメソッドの名前です。

たとえば、Gen AI Builderが提供する :ref:`CalculatorTool </edb-postgres-ai/1.3/ai-factory/gen-ai/reference/sdk/tools/official-tools#calculator>` を展開した場合、
``calculate``
アクティビティのエンドポイントは\ ``https://cloud.griptape.ai/api/tools/{tool_id}/activities/calculate``
になります。要求本文は、キー\ ``expression``
と値を計算する式とするJSONオブジェクトです。

.. code:: json

   {
     "expression": "10**5"
   }

ツールが作成および展開されたら、以下に概説する3つの方法のいずれかでツールを実行できます。

Cloudコンソールから
-------------------

ツールの\ ``Test``
タブに移動して、生成されたOpenAPI仕様を開きます。そこから、Swagger
UIを使用してテスト要求を作成できます。

APIから
-------

ツールアクティビティのAPIルートは\ ``https://cloud.griptape.ai/api/tools/{tool_id}/activities/{activity_name}``
の形式です。ここで、 ``tool_id``
は、作成したツールのリソースUUIDであり、 ``activity_name``
は、\ ``BaseTool``
クラスで定義されたアクティビティの名前です。アクティビティルートは、http
POSTメソッドのみを受け入れます。

OpenAPIスキーマを取得するためのルートは\ ``https://cloud.griptape.ai/api/tools/{tool_id}/openapi``
です。

.. code:: bash

   export GT_CLOUD_API_KEY="<your API key here>"
   export GT_CLOUD_TOOL_ID="<your tool ID here>"
   export TOOL_ACTIVITY_URL="https://api.griptape.com/v1/tools/${GT_CLOUD_TOOL_ID}/activities/my_activity"

   response=$(curl -X POST -H "Authorization: Bearer ${GT_CLOUD_API_KEY}" --json {"my_key": "my_value"} ${TOOL_ACTIVITY_URL})
   echo "my_activity response: ${response}"

Gen AI Builder SDKを使用する
----------------------------

Gen AI Builder
SDKは、展開されたツールと対話するための :ref:`GriptapeCloudToolTool </edb-postgres-ai/1.3/ai-factory/gen-ai/reference/sdk/tools/official-tools#gen-ai-builder-tool>` を提供します。ツールリソースUUIDを :ref:`tool_id </edb-postgres-ai/1.3/ai-factory/gen-ai/reference/sdk/reference/tools/griptape_cloud_tool/tool#griptape.tools.griptape_cloud_tool.tool.GriptapeCloudToolTool.tool_id>` として渡すだけで、スキーマとアクティビティメソッドがツールに動的に設定されます。
