RAGSpine
リファレンス

Python API

コアオーケストレーション、ストア、検索、ワークフローのフォーマット/ひな形生成/プレビュー、および Dify/n8n 変換のエントリポイント。

このページでは、安定した合成サーフェスを紹介します。シンボルレベルの pdoc サイトが必要な場合は、ソースのチェックアウトで make docs を実行してください。

エージェントオーケストレーション

from collections.abc import Sequence
from datetime import date

def answer_question(
    question: str,
    store: FactStore,
    provider: LLMProvider,
    *,
    reference_date: date | None = None,
    narrative_retriever: NarrativeRetriever | None = None,
    intent_parser: IntentParser | None = None,
    decomposer: QueryDecomposer | None = None,
    history: Sequence[HistoryTurn] | None = None,
) -> AgentResult: ...

HistoryTurntuple[str, str] です。アシスタントロールとして認識されるのは assistant のみで、それ以外のロールはユーザーとして正規化されます。履歴はシステムメッセージと現在の質問の間に挿入され、生成にのみ使用されます。意図解析、セキュリティ判断、検索クエリ、エビデンス/引用の組み立てに送られることは決してありません。

AgentResultansweranswer_plainroute、省略可能な clarificationtool_results、および sources を公開します。answer_plain は、sources を別途レンダリングする UI のために、インライン引用のサフィックスを省いたものです。

from ragspine.agent.agent import answer_question
from ragspine.agent.llm_provider import MockProvider
from ragspine.storage.fact_store import SqliteFactStore

store = SqliteFactStore("data/fact_metric.db")
store.init_schema()
result = answer_question("China FY2024 revenue", store, MockProvider())

FactStore は実行時チェック可能な Protocol です。Protocol ではなく SqliteFactStore をインスタンス化してください。Fact.metric(...) は、凍結された識別フィールドを取り違えることなくファクトを構築するためのキーワード専用ヘルパーです。保存されるすべてのファクトは source_doc_idsource_locator を保持します。

ナラティブストレージと検索

ナラティブの Chunk/StoredChunk レコードには、追加的な parent_idheadingwindow_textparent_locator フィールドが含まれます。既存の SQLite データベースは追加的にマイグレーションされます。親子展開とセンテンスウィンドウ展開はストア/検索レイヤーで行われます。子ヒットは引用のために自身のテキスト、チャンク ID、ロケータを保持したまま、window_text は生成専用の別個の prompt_text になり得ます。制限付き(restricted)の子は展開前に除外され、親/ウィンドウを通じて漏洩することはありません。

検索は、メタデータフィルタ演算子 eqneinningtgteltltebetween をサポートします。フィルタは絞り込みのみを行い、結果の順序を保持します。MultiIndexRetriever は選択された各ライブラリを個別にクエリし、RRF でランキングを融合し、library_id の出典情報を付与します。ルーターが失敗した場合は、設定済みのすべてのライブラリを検索します。エコノミーモードでは、埋め込みバックエンドもベクトルストアも構築されません。

ワークフロードキュメント

from ragspine.workflows.formats import (
    dump_dify_yaml,
    dump_json,
    load_workflow,
    parse_workflow,
)

workflow = load_workflow("workflow.toml")
same_shape = parse_workflow('{"app":{"mode":"workflow"}}', format="json")
json_text = dump_json(workflow)
yaml_text = dump_dify_yaml(workflow)

受け付けられるすべての JSON/YAML/TOML 入力は、JSON 互換のマッピングに正規化されます。TOML テキストは、.toml パスから読み込まれる場合を除き、明示的なフォーマット指定が必要です。フォーマットパーサーは、重複キー、非有限数、安全でない YAML、サイズ過大またはネストが深すぎるドキュメントを拒否します。ファイルローダーはリンクと通常ファイル以外も拒否します。

カタログとひな形生成

from ragspine.workflows import scaffold_workflow

result = scaffold_workflow(
    "invoice extraction and approval",
    template_id=None,
    reuse=True,
)
print(result.workflow)
print(result.yaml)

ひな形生成はファイルシステムに対して純粋です。設定を返すだけで、書き込みも実行も一切行いません。カタログ API の list/get は防御的コピーを返します。テンプレートを明示的に指定した場合は信頼度 1 が返されます。それ以外の場合、マッチングは設定されたスコア/マージンのしきい値を使用し、固定生成にフォールバックします。

CLI はこれに加えて、安全なアトミック/排他的ファイル作成を担当します。

プレビュー v1

ワークフロープレビュービルダーは、preview_schema_version: 1nodesedges を持つ表示専用の JSON 互換オブジェクトを返します。そこに含まれるのはジオメトリとラベルであり、プロンプト、変数、認証情報、プロバイダー設定、実行可能コードは含まれません。レンダリングの前にバージョンを検証してください。プレビュー JSON を実行系に戻して入力してはいけません。

Dify と n8n

ragspine.dify は Dify YAML を中間表現に解析し、それを分析して、ragspine または spineagent ターゲット向けの命令型 Python を生成します。コード生成は実行ではありません。

ragspine.n8n.n8n_to_difyragspine.n8n.dify_to_n8n は純粋な変換を行い、ターゲットのマッピングと警告を返します。サポートされないセマンティクスは、暗黙のうちに等価であると見なされるのではなく、明示的に報告されます。可能な場合、ラウンドトリップのために元の n8n メタデータが保持されます。

アプリファクトリ

from ragspine.service.api.app import create_app

app = create_app(
    config,
    provider=provider,
    queue=queue,
    faq_cache=faq_cache,
    workflow_matcher=workflow_matcher,
)

サービスパッケージはオプションです。そのワークフロー実行サーフェスはデフォルトで無効化されており、クライアントから提供されたプロバイダー式を受け付けることはできません。

このページ