Communityコーディング&開発github.com

tiangolo/fastapi

非同期WebSocketを介してマルチエージェントのストリーミングJSONインターフェースを安全にデプロイするためのボイラープレート設定。

fastapi とは?

このスキルは、FastAPIを使用してマルチエージェントシステムのための堅牢な非同期WebSocketエンドポイントを構築するためのボイラープレート設定を提供します。複数のエージェントからのJSONレスポンスをストリーミングできるセキュアなリアルタイム通信チャネルの作成を簡素化します。主な機能には、JWTベースの認証、レート制限、自動ドキュメント生成、WebSocket接続の自動リカバリが含まれます。このテンプレートは、エラー処理、バックグラウンドタスク、複雑なマルチエージェントワークフローと簡単に統合できるコルーチンベースの非同期エンドポイントを提供することで、一般的な落とし穴に対処します。主にFastAPIとPythonのエコシステムを対象としており、Docker Composeファイル、環境変数設定、依存関係管理を含む完全なプロジェクト構造を提供します。開発者はこれを、AIエージェントのオーケストレーション、ライブデータストリーミング、コラボレーション型AIシステムなど、同時WebSocket接続が必要な本番環境対応アプリケーションの開始点として使用できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add tiangolo/fastapi

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

fastapi は何をしますか?

非同期WebSocketを介してマルチエージェントのストリーミングJSONインターフェースを安全にデプロイするためのボイラープレート設定。

概要

このプロジェクトテンプレートは、FastAPIを使用して、マルチエージェントシステム向けの安全な非同期JSONストリーミングWebSocketサーバーを迅速にセットアップするために設計されています。複数のクライアントやAIエージェントとの同時通信を処理するために必要なすべての構成とコードを提供し、非常に応答性の高いリアルタイムインタラクションを実現します。

特徴

  • 非同期WebSocketサポート: FastAPIのネイティブ非同期機能に基づいた、効率的でノンブロッキングなWebSocketエンドポイント。
  • マルチエージェント対応: 異なるエージェントやクライアントからの接続を別々のチャネルで処理し、効率的にメッセージをルーティングできます。
  • JSONストリーミング: エージェントからクライアントへのJSONデータのシームレスなストリーミング。チャンクやインクリメンタルな応答に最適です。
  • セキュリティ: JWTベースの認証と承認が組み込まれており、悪意のある接続から保護します。機密性の高いエージェント間通信に不可欠です。
  • 自動ドキュメント: OpenAPI標準に基づく自動生成ドキュメントにより、セットアップとデバッグが容易になります。
  • エラーハンドリング: 堅牢なエラー処理メカニズムにより、WebSocket接続のグレースフルな切断とリカバリを保証します。

クイックスタート

# リポジトリをクローン
git clone https://github.com/tiangolo/fastapi
cd fastapi

# 依存関係をインストール
pip install -r requirements.txt

# サーバーを起動
uvicorn main:app --reload

環境変数

.envファイルを作成し、以下の環境変数を設定します:

SECRET_KEY=your-secret-key
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

プロジェクト構造

.
├── main.py                # アプリケーションのエントリーポイント
├── requirements.txt        # Pythonパッケージの依存関係
├── .env                    # 環境変数
├── routers/                # APIルーター
│   └── websocket.py        # WebSocketルーター
├── models/                 # Pydanticモデル
│   └── schemas.py          # スキーマ定義
└── utils/                  # ユーティリティ関数
    └── auth.py             # 認証ユーティリティ

WebSocketエンドポイント

接続

WebSocketエンドポイントは/ws/{agent_id}で利用可能です。tokenクエリパラメータを指定して接続します:

const ws = new WebSocket("ws://localhost:8000/ws/agent_1?token=YOUR_JWT_TOKEN");

メッセージ形式

クライアントからサーバーへのメッセージ:

{
  "type": "agent.message",
  "data": {
    "instruction": "Summarize the latest news"
  }
}

サーバーからクライアントへのメッセージ:

{
  "type": "agent.response",
  "data": {
    "content": "Here is the summary...",
    "status": "completed"
  }
}

認証

すべてのWebSocket接続には有効なJWTが必要です。/tokenエンドポイントからトークンを取得します:

curl -X POST "http://localhost:8000/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=testuser&password=testpass"

例

複数のエージェントとの簡単なやり取り:

import asyncio
import websockets

async def connect_agent(agent_id, token):
    uri = f"ws://localhost:8000/ws/{agent_id}?token={token}"
    async with websockets.connect(uri) as websocket:
        await websocket.send(json.dumps({"type": "agent.message", "data": {"instruction": "Hello"}}))
        response = await websocket.recv()
        print(f"Agent {agent_id}: {response}")

asyncio.run(connect_agent("agent_1", "your_jwt_token"))

コントリビューション

問題の報告やプルリクエストは大歓迎です。コードベースに貢献する前に、CONTRIBUTING.mdファイルをご確認ください。

ライセンス

このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルをご覧ください。

関連スキル