メインコンテンツまでスキップ
バージョン: 2025-10-31

2.1. バックエンド仕様 (API)

FastAPIで構築されたバックエンドAPI。主な責務は、認証、ビジネスロジックの実行、外部サービス連携です。

コンポーネント図​

コンポーネント説明
RoutersAPIエンドポイントを定義し、リクエストを適切なサービスにルーティングする。
Servicesビジネスロジックを実装する。LLMサービス連携やNetworkXMCPの呼び出しなど。
Models/SchemasPydanticモデルとデータベーススキーマを定義する。
Database InterfaceSQLAlchemyを使用してデータベースとのやり取りを抽象化する。
Auth LogicOAuth2/JSON Web Tokenによるユーザー認証・認可のロジックを実装する。

APIエンドポイント一覧​

認証 (/auth)​

MethodPath説明
POST/register新規ユーザーを登録する。
POST/tokenユーザー名とパスワードで認証し、JWTアクセストークンを発行する。
GET/users/me現在認証中のユーザー情報を取得する。

チャット・LLM連携 (/chat)​

MethodPath説明
POST/conversations新しい会話を作成する。
GET/conversationsユーザーの会話一覧を取得する。
GET/conversations/{id}特定の会話の詳細を取得する。
GET/conversations/{id}/messages特定の会話のメッセージ一覧を取得する。
POST/processチャットUIからのメッセージを処理し、LLMやツール呼び出しを実行して最終結果を返す。
POST/recommend-layoutネットワーク概要に基づき、LLMが最適なレイアウトを推薦する。

/chat/process の詳細​

  • Request Body:
{
"conversation_id": "conv_12345",
"message": {
"role": "user",
"content": "次数中心性を計算して、重要なノードを大きく表示してください。"
}
}
  • Response Body (Success):
{
"message": {
"role": "assistant",
"content": "次数中心性を計算し、ノードのサイズに反映しました。"
},
"graph_updated": true,
"new_vis_data": { ... } // `visual_styles`テーブルに保存された最終レンダリングデータ
}

このエンドポイントが呼び出された際の、Backend、LLM、NetworkXMCP間のより詳細な連携フローについては、以下のドキュメントを参照してください。

ネットワーク (/network)​

MethodPath説明
POST/uploadGraphMLファイルをアップロードし、新しい会話とネットワークを作成する。 multipart/form-data を使用。この処理の中でNetworkXMCPを呼び出し、デフォルトのレイアウトを適用した初期レンダリングデータを生成し、visual_stylesテーブルに保存する。詳細は初期グラフ表示フローを参照。
GET/{network_id}/visdataネットワークの最終レンダリングデータ(nodes_dataとedges_data)をvisual_stylesテーブルから取得する。
GET/{network_id}/exportネットワークをGraphMLファイルとしてダウンロードする。

主要なデータモデル (Pydantic Schemas)​

APIで送受信される主要なデータ構造です。

  • User
フィールド名型説明
idintユーザーID
usernamestrユーザー名
  • Token
フィールド名型説明
access_tokenstrJWTアクセストークン
token_typestrトークン種別 (例: "bearer")
  • Conversation
フィールド名型説明
idstr会話ID
titlestr会話のタイトル
user_idintこの会話を所有するユーザーのID
created_atdatetime作成日時
  • ChatMessage
フィールド名型説明
idstrメッセージID
conversation_idstr所属する会話のID
rolestr発言者の役割 (user or assistant)
contentstrメッセージの本文
created_atdatetime作成日時
  • Network (DBモデル)
フィールド名型説明
idstrネットワークID
namestrネットワーク名
graphml_contentstrGraphML形式の元データ
conversation_idstr関連付けられた会話のID

外部サービス連携​

  • NetworkXMCP: グラフ計算が必要なリクエストを http://networkx-mcp:8001 に転送(プロキシ)します。(このURLは環境変数で設定可能であるべきです。)
  • LLMサービス: ユーザーの指示解釈、ツールコール変換、結果の要約のために外部LLM(OpenAI, Gemini等)のAPIを呼び出します。