Closed9

GUIでAIエージェントワークフローが作成できる「sim」を試す

kun432kun432

どこかで見かけたのだけど、覚えてない・・・

クラウドサービス

https://www.sim.ai/

GitHubレポジトリも公開されていて、セルフホストが可能

https://github.com/simstudioai/sim

READMEは端的にQuickstartが書かれているだけなので、公式ドキュメントから概要を。

https://docs.sim.ai/introduction

GPT-5による翻訳

はじめに

SimはAIアプリケーション向けのビジュアルワークフロー構築ツールです。キャンバス上でブロックを接続することで、AIエージェントのワークフローを視覚的に構築できます。強力なAIエージェント、自動化ワークフロー、データ処理パイプラインをコーディング不要で作成できます。


referred from https://docs.sim.ai/introduction

作成できるもの

  • AIアシスタント & チャットボット
    Web検索、カレンダーへのアクセス、メール送信、業務ツールとの連携が可能な知的エージェントを作成。

  • 業務プロセス自動化
    データ入力、レポート生成、カスタマーサポート対応、コンテンツ作成などの反復作業を自動化。

  • データ処理 & 分析
    文書からの洞察抽出、データセット分析、レポート生成、システム間のデータ同期を実行。

  • API統合ワークフロー
    複数サービスを統合エンドポイントに接続し、複雑な業務ロジックをオーケストレーションし、イベント駆動の自動化を処理。

仕組み

  • ビジュアルキャンバス
    ブロックをドラッグ&ドロップしてワークフローを構築。AIモデル、データベース、API、業務ツールを簡単に接続。

  • スマートブロック
    処理ブロック(AIエージェント、API、関数)、ロジックブロック(条件、ループ、ルーター)、出力ブロック(レスポンス、評価)から選択可能。

  • 複数トリガー
    チャットインターフェース、REST API、Webhook、スケジュールジョブ、SlackやGitHubの外部イベントからワークフローを開始。

  • チームコラボレーション
    チームメンバーと同時にリアルタイム編集と権限管理を行い、同じワークフロー上で共同作業。

組み込み統合

Simは80以上のサービスとすぐに接続可能です:

  • AIモデル: OpenAI、Anthropic、Google、Groq、Cerebras、ローカルOllamaモデル
  • コミュニケーション: Gmail、Slack、Teams、Telegram、WhatsApp
  • 生産性: Notion、Google Sheets、Airtable、Monday.com
  • 開発: GitHub、Jira、Linear、ブラウザ自動化
  • 検索 & Web: Google Search、Perplexity、Firecrawl、Exa AI
  • データベース: PostgreSQL、MySQL、Supabase、Pinecone、Qdrant

カスタムが必要ですか?MCPインテグレーション を利用して任意の外部サービスと接続可能です。

デプロイオプション

  • クラウドホスティング: sim.ai で即開始可能。マネージドインフラ、自動スケーリング、組み込みモニタリングを提供。
  • セルフホスティング: Dockerを用いて自分のインフラにデプロイ可能。Ollamaを利用したローカルAIモデル対応で完全なデータプライバシーを確保。

なお、ライセンスはApache-2.0(GitHubのREADMEに記載)

ライセンス

このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細は LICENSE ファイルを参照してください。


GUIでエージェントワークフローが作れるものは他にもあるけど、少し気になったので試してみる。

kun432kun432

なお、クラウド版の料金は以下のような感じ。

https://www.sim.ai/#pricing

ざっくりまとめるとこんな感じ。(執筆時点)

プラン 月額料金 主な制限/レート 機能
COMMUNITY 無料 使用上限: $10 公開テンプレートアクセス
コミュニティサポート
ログ保持制限あり
CLI・SDKアクセス
PRO $20 同期: 25 runs/分
非同期: 200 runs/分
無制限ワークスペース
無制限ワークフロー
無制限招待
無制限ログ保持
TEAM $40 同期: 75 runs/分
非同期: 500 runs/分
Proの全機能
専用Slackチャンネル
ENTERPRISE カスタム カスタムレート制限 エンタープライズホスティング
専用サポート

有料の場合は、無制限だけどレート制限がある、って感じなのか、で上位プランにするとそれが拡大されると。まあどれぐらい使うかによって変わる感じだけど、比較的始めやすそうな感はある。

ただ、逆に無料の範囲がよくわからないね。何を以て$10という計算になるんだろう?まあ試すには気にするほどのことではなさそうだけども。

kun432kun432

セルフホスト

ということで、GitHubのREADMEに従って、セルフホストでやってみる。

https://github.com/simstudioai/sim

インストール

セルフホストのインストール方法は3通りかな。

  • NPMパッケージ
  • Docker Compose
  • DevContainer
  • ソース

一番お手軽そうなDockerでやってみる。今回はローカルのMac上で。

レポジトリをクローン

git clone https://github.com/simstudioai/sim && cd sim

docker composeで起動。なお、docker-compose.yamlは他にもOllamaを使うものなどがあるみたいだが、今回は標準のものを使う。

docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.prod.yml ps

ちょっとWARNINGがでているけど、とりあえず3つぐらいコンテナが起動している。DBはPostgreSQL。

出力
WARN[0000] The "COPILOT_API_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "SIM_AGENT_API_URL" variable is not set. Defaulting to a blank string.
NAME              IMAGE                                  COMMAND                   SERVICE     CREATED         STATUS                   PORTS
sim-db-1          pgvector/pgvector:pg17                 "docker-entrypoint.s…"   db          4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp
sim-realtime-1    ghcr.io/simstudioai/realtime:latest    "/usr/local/bin/dock…"   realtime    4 minutes ago   Up 3 minutes (healthy)   0.0.0.0:3002->3002/tcp, [::]:3002->3002/tcp
sim-simstudio-1   ghcr.io/simstudioai/simstudio:latest   "/usr/local/bin/dock…"   simstudio   4 minutes ago   Up 3 minutes (healthy)   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp

ブラウザで3000番ポートを開くとログイン画面が出てくるので、まずはアカウントを作成。

ログインできた。

kun432kun432

Getting Started

ここからは公式ドキュメントの Getting Startedに従って進めれそう。

https://docs.sim.ai/getting-started

このGetting Startedでは以下のような「人物リサーチエージェント」のワークフローを作成するみたい。

  1. チャットで人物名を受け取る
  2. 検索機能を備えたAIエージェントを使用
  3. 検索ツール(ExaLinkup)で検索
  4. 応答フォーマットを使って構造化された情報を抽出
  5. その人物に関する包括的なデータを返す

手順ではまずワークフローを作成することになっている。初回ログインした状態でもどうやらデフォルトでワークフローが作成されているようだが、手順に従って新規にワークフローを作成することとする。

左のメニューの "default-agent" と表示されているのがデフォルトのワークフローらしい。新規ワークフローを作成するには、"+"から"+ New workflow" をクリック。

ランダムな名前でワークフローはランダムな名前で生成されるので、名前を変更。"Getting Started" とした。

ここからワークフローを作っていくが、一番最初に表示されているのが"Start"ブロックで、これが入力を受ける処理の起点となる。入力の受け方などによっては設定が必要になる場合もあるが、今回作成するワークフローではチャットで入力を受けるため、特に設定は必要ない様子。

左下のメニューから、"Agent"ブロックをドラッグ&ドロップで"Start"ブロックの横に配置すると、自動的に"Start"からつながった。

"Agent"ブロックをとりあえず以下のように設定

設定項目
System Prompt あなたは人物調査エージェントです。人物の名前が与えられたら、利用可能な検索ツールを用いて、その人物の所在地、職業、学歴、その他の関連情報を含む包括的な情報を探し出してください。
Model gpt-4o
API Key <OpenAI APIキーをセット>

で、"Start" ブロックからの入力を "User Prompt" に設定する必要があるが、これは "Agent" ブロックの上にある小さな "Start" アイコンを "User Prompt" にドラッグ&ドロップすると設定される。

"User Prompt" に < が入力され、下にリストが表示されるので、"Start" をクリック。

これでOK。実際には、"Start"ブロックへの入力は <start.input> らしいのだが、この設定でそれが "User Prompt" に渡されるようになる。

次に、このエージェントにツールを渡す。ここでは以下の検索ツールを使うので、それぞれAPIキーが必要になる。アカウントを作成してAPIキーを取得しておく。

https://exa.ai/

https://www.linkup.so/

"Agent"ブロックの"+ Add Tool"をクリックして、Exaを選択。

Exaの設定項目が出てきたら、APIキーを入力。同様にしてLinkupを追加してAPIキーをセットする。

2つともセットするとこうなる。

ではワークフローをテストしてみる。右上の"Chat" をクリック。

チャット用のパネルが表示されるので、上の"Select output sources" で、"Agent1"の"content" を選択して、下の入力欄にメッセージを入力する。

スティーブ・ジョブズについて教えて。 と入力してみるとこうなった。なお、日本語IMEのEnterで送信されてしまうのはあるある・・・

さらにこの出力を構造化する。"Agent"ブロックの一番下の"Response Format"のところを選択すると、「魔法の杖」のようなアイコンが表示されるので、これをクリック。

上に入力欄が表示される。ここにスキーマを生成するプロンプトを入力する。

personという名前のスキーマを作成し、location、profession、education を含めて。 と入力した。これでスキーマもLLMで生成されるみたい

・・・が何も起きない・・・

コンテナのログを見ると、以下のように出力されていた。

出力
[2025-09-28T19:05:53.768Z] [ERROR] [WandGenerateAPI] [7834ba22] AI client not initialized. Missing API key.

んー、"Agent"ブロックにOpenAIのAPIキーをセットしたけども、それはあくまでもワークフローに入ってきたデータを処理するためのものであって、この画面上では使えない、ってことなのかな?とりあえず今回はGetting Startedの冒頭の画像からからひっこぬいた。

{
  "name": "person",
  "description": "Contains information about a person including their location, profession, and education.",
  "strict": true,
  "schema": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string",
        "description": "The location of the person"
      },
      "profession": {
        "type": "string",
        "description": "The profession of the person"
      },
      "education": {
        "type": "string",
        "description": "The education level or background of the person"
      }
    },
    "additionalProperties": false,
    "required": ["location", "profession", "education"]
  }
}

チャットパネルでチャットをクリアして、再度"Select output sources" をクリックするとこんな感じで表示が変わる。なるほど、スキーマに従って出力する項目を選べるみたい。

全部選択して、最初と同じようにチャットしてみる。

ドキュメントには「構造化されたJSON出力が行われる」とあるけどJSONではない。そもそもドキュメントにあるキャプチャでも構造化された「JSON」にはなってない・・・ただ一応各項目ごとに出力されてはいるかな。ただチャットインタフェースなのでそうなってるのかもしれない。チャットは基本的にはテスト用みたいなので、別の入出力インタフェースがあるのかも。

kun432kun432

んー、"Agent"ブロックにOpenAIのAPIキーをセットしたけども、それはあくまでもワークフローに入ってきたデータを処理するためのものであって、この画面上では使えない、ってことなのかな?とりあえず今回はGetting Startedの冒頭の画像からからひっこぬいた。

「魔法の杖」アイコン、Magic Wand機能というらしいが、これが動かなかったのは、ざっと見てみた感じだと

  • どうやらこの機能は OpenAI / Azure OpenAI を使用するようになっている
  • simstudioコンテナは上記のAPIキーを環境変数から取得する様子
  • docker-compose.*.yaml にはどうやらこの設定がされていない

ということで、これを動かすには .env を作成し環境変数を設定、docker-compose.*.yamlで渡してやればいい。

.env
OPENAI_API_KEY=XXXXXXXX
docker-compose.prod.yml
services:
  simstudio:
    (snip)
    environment:
      (snip)
      - OPENAI_API_KEY=${OPENAI_API_KEY}

これでMagic Wandが動作してスキーマが自動生成されることは確認できた。

ただ、上にも書いたけどこの機能は OpenAI / Azure OpenAI 「のみ」でハードコードされてる様子。docker-composeのYAMLは、Ollamaみたいなローカル向けも用意されてるけど、その場合はどうなるのかな?

OPENAI_BASE_URL とか定義すればできそうな気もするが。

kun432kun432

とりあえず、Difyやn8nあたりと比較することになるんだろうけど、この段階ではまだなんとも。もう少し使い込んでみないと判断できないかな。

ただ全体的にスッキリしていて迷うこともあんまりなさそう。上で上げた競合については、あくまでも個人的な印象ではあるが、

  • n8nだとコネクタは多いんだけどエージェント部分はあまり細かく設定できなさそう
  • Difyは機能が増えすぎてもはや直感的ではなくなりつつある

というイメージを持っているので、そのあたりの中間でいい感じのポジションだったらいいなー、という期待感を持っている。

もう少し見てみるつもり。

kun432kun432

ワークフローのデプロイ

作成したワークフローはワークフローをデプロイすることで、外部からアクセスできるらしいが、この辺については具体的な手順が書かれていない・・・(Getting Startedならそこはカバーしてほしいところ)

GUIだとここだろう。

公開方法にはAPIとチャットインタフェースがあるみたい。まずはAPIで。その場合にはAPIキーを作成する必要がある。

APIキーはワークフロー単位(Personal)とワークスペース単位があるみたい。今回はワークフロー単位で。適当な名前を入力して作成する。

APIキーが生成されたので控えておく。

APIキーがセットされたら「Deploy API」をクリック。

APIが公開され、URLやcurlの例が表示されるのだが、入力値はどうやってわたせばいいんだろうか・・・

たしか入力値は<start.input>だったはず。こんな感じでいけた。

export SIM_API_KEY=XXXXXXXXX

curl -X POST \
    -H "X-API-Key: $SIM_API_KEY" \
    -H "Content-Type: application/json" \
    http://localhost:3000/api/workflows/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/execute \
    -d '{"input":"スティーブ・ジョブズについて教えて"}' | jq -r .
出力
{
  "success": true,
  "output": {
    "location": "サンフランシスコ、カリフォルニア州",
    "profession": "Appleの共同創業者、起業家",
    "education": "リード大学を中退",
    "tokens": {
      "prompt": 24976,
      "completion": 117,
      "total": 25093
    },
    (snip)

検索結果なども含めたそこそこの大きなのJSONが返ってくるのだけど、.outputだけ見れば良さそう。確かに構造化されて返ってきてる。

チャットでの公開も。APIと併用できるみたい。こんな感じで諸々設定して公開。ただ、サブドメインの設定が必須になるようなので、別途DNSの設定が必要になるかも。

localhostの場合は特にDNSを気にせずにそのまま指定したらいけた。こんな感じでチャットインタフェースが使える。


デプロイ周りのドキュメントを見ていると、実行の「トリガー」というところにたどり着くのだけど、ちょっと気になるところが。

https://docs.sim.ai/triggers/starter

Starterブロックは非推奨となり、より専門的なコアトリガーに置き換えられました。新しいAPI、チャット、入力フォーム、マニュアル、スケジュール、Webhookトリガーについては、コアトリガーのドキュメントを参照してください。

みたいなことが書いてあって、どうやらStartブロックってのはDeprecatedされる?模様。おそらく入力インタフェースにあわせて個別のトリガー用ブロックを選択する、ということになるのかもしれないけど、現状はデプロイでAPI・チャットを選択できるようになっているので、この辺どうなるのかな?というところ。(内部的に良しなにやってくれるならいいんだろうけど)

このあたり、ドキュメント間でちょっと整合性が合ってない感。マイグレ中とかなのかもね。

kun432kun432

あと、ワークフローの実行周りで気になるのは分岐とか並列が可能なのかとかそのあたり。以下に書いてある。

https://docs.sim.ai/execution/basics

ざっくり

  • あるブロックから複数のブロックにつなぐことができ、デフォルトで並列実行される
  • 並列実行した結果が全部完了したら次のブロックに進み、複数の出力を自動で結合できる
  • 条件による分岐もできる

これなら十分かな

kun432kun432

ワークフローはYAMLでのエクスポート・インポートができる様子。

このスクラップは2025/10/01にクローズされました