mcpField
F
Fabric

Fabric

公式Agent-ready
github.comAI・エージェント44.5kfabric2 日前に更新
リポジトリ公式サイト

Fabric について

Fabric は要約、抽出、リサーチなどの一般的なテキストタスク向けの再利用可能な AI プロンプトパターンを提供します。パイプを通じてコマンドラインワークフローに統合でき、事前構築されたプロンプトを素早く適用できます。

主な機能

  1. 01テキスト入力に事前構築 AI プロンプトパターンを適用
  2. 02利用可能な組み込みパターンをリスト表示・検索
  3. 03パイプ経由でパターンを他のコマンドと連結
  4. 04テキスト要約、情報抽出、リサーチ、分析タスクに対応

活用シーン

  1. 01長い記事、ドキュメント、ノートを迅速に要約
  2. 02テキストから重要情報とデータポイントを抽出
  3. 03テキスト処理パイプラインの AI プロンプト適用を標準化

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install fabric-ai

インストール後にfabric --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
fabric --listpatterns
02
cat article.md | fabric --pattern summarize

詳細


fabriclogo

fabric

Static Badge
GitHub top language GitHub last commit License: MIT Ask DeepWiki

fabric は、AI を活用して人間を拡張するためのオープンソースフレームワークです。

English · العربية · 中文

Screenshot of fabric

Updates • What and Why • Philosophy • Installation • Usage • REST API • Examples • Just Use the Patterns • Custom Patterns • Helper Apps • Meta

何を、なぜ

2022 年後半に現代的な AI が始まって以来、タスクを遂行するための AI アプリケーションが 驚くほど 多く登場しています。さまざまな AI を利用するためのウェブサイト、チャットボット、モバイルアプリ、その他のインターフェースが何千も存在します。

どれも本当に刺激的で強力ですが、こうした機能を私たちの生活に統合するのは簡単ではありません。

言い換えれば、AI には能力の問題はなく、統合の問題があるのです。

Fabric は、AI の基本的な構成単位であるプロンプトそのものを作成し、整理することで、この問題に対処するために生まれました。

Fabric はプロンプトを現実世界のタスクごとに整理し、人々が最も重要な AI ソリューションを 1 か所で作成、収集、整理して、お気に入りのツールで利用できるようにします。そして、コマンドラインを中心に使う方であれば、Fabric 自体をインターフェースとして使用できます。

アップデート

Fabric とその内部構造を詳しく知りたい方は、docs フォルダーにあるドキュメントをお読みください。Fabric については、非常に有用で定期的に更新されている DeepWiki もご利用いただけます。

最近のアップデートを表示するにはクリック

Dear Users,

We've been doing so many exciting things here at Fabric, I wanted to give a quick summary here to give you a sense of our development velocity!

Below are the new features and capabilities we've added (newest first):

Recent Major Features
  • v1.4.447 (2026年4月16日) — Claude Opus 4.7: Anthropic SDK を v1.37.0 に更新し、利用可能なモデルに新しい Claude Opus 4.7 を追加しました。100万トークンのコンテキストウィンドウのサポートも含まれます。
  • v1.4.437 (2026年3月16日) — OpenAI Codex PLugin: Fabric が OpenAI Codex を(OpenAI サブスクリプションを使用して)バックエンドとして利用できるようになりました!
  • v1.4.417 (2026年2月21日) — Azure AI Gateway Plugin: 共有サブスクリプションキー認証を備えた統合 Azure APIM Gateway を介して、複数のバックエンド(AWS Bedrock、Azure OpenAI、Google Vertex AI)をサポートする Azure AI Gateway プラグインを追加しました。
  • v1.4.416 (2026年2月21日) — Azure Entra ID 認証: 共有 Azure ユーティリティ、Entra ID/MSAL サポートを備えた Azure Entra ID 認証プラグインを追加し、共通の Azure ロジックを再利用可能な azurecommon パッケージに抽出しました。
  • v1.4.380 (2026年1月15日) — Microsoft 365 Copilot 統合: 企業向け Microsoft 365 Copilot のサポートを追加し、エンタープライズユーザーが組織の Microsoft 365 データ(メール、ドキュメント、会議)に基づいた AI を活用できるようにしました。
  • v1.4.378 (2026年1月14日) — Digital Ocean GenAI サポート: Digital Ocean GenAI のサポートを追加し、その使用方法のガイドも用意しました。
  • v1.4.356 (2025年12月22日) — 完全な国際化: 10 言語すべてにわたるセットアッププロンプトの完全な i18n サポートを、インテリジェントな環境変数処理とともに実現しました。これにより、構成の一貫性を維持しながら、Fabric が世界中で真に利用しやすくなりました。
  • v1.4.350 (2025年12月18日) — インタラクティブな API ドキュメント: /swagger/index.html に Swagger/OpenAPI UI を追加し、包括的な REST API ドキュメント、強化された開発者ガイド、および統合を容易にするためのエンドポイントの検索性の向上を実現しました。
  • v1.4.338 (2025年12月4日) — Chat-LLM モデル向けの Abacus ベンダーサポートを追加 (詳しくは RouteLLM APIs をご覧ください)。
  • v1.4.337 (2025年12月4日) — 「Z AI」ベンダーサポートを追加。詳細は Z AI overview ページをご覧ください。
  • v1.4.334 (2025年11月26日) — Claude Opus 4.5: Anthropic SDK を最新版に更新し、利用可能なモデルに新しい Claude Opus 4.5 を追加しました。
  • v1.4.331 (2025年11月23日) — GitHub Models のサポート: GitHub Models を使用するためのサポートを追加しました。
  • v1.4.322 (2025年11月5日) — インタラクティブな HTML コンセプトマップと Claude Sonnet 4.5: Vis.js を使用した視覚的な知識表現のための create_conceptmap パターンを追加し、心理分析パターンを備えた WELLNESS カテゴリを導入し、Claude Sonnet 4.5 にアップグレードしました
  • v1.4.317 (2025年9月21日) — ポルトガル語の言語バリアント: ブラジルポルトガル語 (pt-BR) とヨーロッパポルトガル語 (pt-PT) のサポートを備えた BCP 47 ロケール正規化を、インテリジェントなフォールバックチェーンとともに追加しました
  • v1.4.314 (2025年9月17日) — Azure OpenAI への移行: 認証の改善とデフォルト API バージョンのサポートを備えた公式 openai-go/azure SDK に移行しました
  • v1.4.311 (2025年9月13日) — さらなる国際化サポート: de (ドイツ語)、fa (ペルシア語 / ファルシ語)、fr (フランス語)、it (イタリア語)、 ja (日本語)、pt (ポルトガル語)、zh (中国語) を追加
  • v1.4.309 (2025年9月9日) — 包括的な国際化サポート: 英語とスペイン語のロケールファイルを含みます。
  • v1.4.303 (2025年8月29日) — 新しいバイナリリリース: Linux ARM および Windows ARM ターゲット。Raspberry PI や Windows Surface で Fabric を実行できます!
  • v1.4.294 (2025年8月20日) — Venice AI サポート: Venice AI プロバイダーを追加しました。Venice はプライバシー優先のオープンソース AI プロバイダーです。詳細は"About Venice"ページをご覧ください。
  • v1.4.291 (2025年8月18日) — 音声テキスト変換: --transcribe-file、--transcribe-model、--split-media-file フラグによる OpenAI の音声テキスト変換サポートを追加しました。 これらの機能は、Fabric を利用可能な中で最も強力かつ柔軟な AI 拡張フレームワークにするという私たちのコミットメントを表しています!

紹介動画

これらの多くは Fabric が Python ベースだった頃に録画されたものであることに注意してください。そのため、以下の最新のインストール手順を使用することを忘れないでください。

ナビゲーション


変更履歴

Fabric は急速に進化しています。

最近のすべての変更については、CHANGELOG を確認して最新機能を把握してください。

哲学

AI はある「もの」ではありません。それはある「もの」の 拡大鏡 です。そしてその「もの」とは 人間の創造性 です。

私たちは、テクノロジーの目的は人間が繁栄するのを助けることだと信じています。そのため、AI について話すときは、私たちが解決したい 人間 の問題から始めます。

問題をコンポーネントに分解する

私たちのアプローチは、問題を個々の部分に分解し(以下を参照)、それらに一度に一つずつ AI を適用することです。いくつかの例については以下を参照してください。

augmented_challenges ### プロンプトが多すぎる

この課題にはプロンプトが役立ちますが、2023年に私が直面した最大の課題は——そしてそれは今も続いています——世の中にAIプロンプトがあまりにも多いことでした。誰もが役立つプロンプトを持っていますが、新しいプロンプトを見つけ、それが優れているかどうかを判断し、気に入ったプロンプトのさまざまなバージョンを管理するのは大変です。

fabric の主な機能の1つは、私たちが パターン と呼ぶプロンプトを集め、生活のさまざまな場面に取り入れられるよう支援することです。

Fabric には、生活や仕事に関するさまざまな活動に使えるパターンが用意されています。たとえば、次のようなものがあります。

  • YouTube 動画やポッドキャストから、最も興味深い部分を抽出する
  • アイデアだけを入力して、自分らしい文体でエッセイを書く
  • 内容がわかりにくい学術論文を要約する
  • 文章にぴったり合う AI アート用のプロンプトを作成する
  • コンテンツの質を評価し、全体を読んだり見たりするかどうかを判断する
  • 長くて退屈なコンテンツを要約する
  • コードについて説明する
  • 質の低いドキュメントを使いやすいドキュメントにする
  • あらゆるコンテンツを入力にして、ソーシャルメディアへの投稿を作成する
  • ほかにも数え切れないほど…

インストール

ワンラインインストール(推奨)

Unix/Linux/macOS:

curl -fsSL https://raw.githubusercontent.com/danielmiessler/fabric/main/scripts/installer/install.sh | bash

Windows PowerShell:

iwr -useb https://raw.githubusercontent.com/danielmiessler/fabric/main/scripts/installer/install.ps1 | iex

カスタムインストールのオプションとトラブルシューティングについては、scripts/installer/README.md をご覧ください。

バイナリを手動でダウンロード

最新リリースのバイナリアーカイブと、対応する SHA256 ハッシュは https://github.com/danielmiessler/fabric/releases/latest で確認できます。

パッケージマネージャーを使用する

注: Homebrew または Arch Linux のパッケージマネージャーを使うと、fabric は fabric-ai として利用可能になります。そのため、これに対応するエイリアスをシェルの起動ファイルに追加してください。

alias fabric='fabric-ai'
macOS(Homebrew)

brew install fabric-ai

Arch Linux(AUR)

yay -S fabric-ai

Windows

Microsoft が公式にサポートしている Winget ツールを使用します。

winget install danielmiessler.Fabric

Windows(Scoop)

scoop install fabric-ai

ソースからインストール

Fabric をインストールするには、Go がインストールされていることを確認し、次のコマンドを実行します。

# Install Fabric directly from the repo
go install github.com/danielmiessler/fabric/cmd/fabric@latest
Docker

ビルド済みの Docker イメージを使って Fabric を実行します。

# Use latest image from Docker Hub
docker run --rm -it kayvan/fabric:latest --version

# Use specific version from GHCR
docker run --rm -it ghcr.io/ksylvan/fabric:v1.4.305 --version

# Run setup (first time)
mkdir -p $HOME/.fabric-config
docker run --rm -it -v $HOME/.fabric-config:/home/appuser/.config/fabric kayvan/fabric:latest --setup

# Use Fabric with your patterns
docker run --rm -it -v $HOME/.fabric-config:/home/appuser/.config/fabric kayvan/fabric:latest -p summarize

# Run the REST API server (see REST API Server section)
docker run --rm -it -p 8080:8080 -v $HOME/.fabric-config:/home/appuser/.config/fabric kayvan/fabric:latest --serve

利用可能なイメージ:

カスタムイメージのビルドと高度な設定については、scripts/docker/README.md をご覧ください。

環境変数

fabric コマンドを実行できるようにするには、Linux では ~/.bashrc に、Mac では ~/.zshrc ファイルに環境変数を設定する必要がある場合があります。追加できる設定の例を以下に示します。

Intel ベースの Mac または Linux の場合

# Golang environment variables
export GOROOT=/usr/local/go
export GOPATH=$HOME/go

# Update PATH to include GOPATH and GOROOT binaries
export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH

Apple Silicon ベースの Mac の場合

# Golang environment variables
export GOROOT=$(brew --prefix go)/libexec
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH
セットアップ

次のコマンドを実行します。

# Run the setup to set up your directories and keys
fabric --setup

問題なく動作すれば、準備完了です。

対応 AI プロバイダー

Fabric は幅広い AI プロバイダーに対応しています。

ネイティブ連携:

  • OpenAI
  • OpenAI Codex(プライベートバックエンド経由の ChatGPT/Codex サブスクリプション OAuth)
  • Anthropic(Claude)
  • Claude Code(ローカルの claude CLI を使った Claude サブスクリプション)
  • Google Gemini
  • Ollama(ローカルモデル)
  • Azure OpenAI
  • Amazon Bedrock
  • Vertex AI
  • LM Studio
  • Perplexity

OpenAI 互換プロバイダー:

  • Abacus
  • AIML
  • AIStupidLevel
  • API Route
  • Apple Foundation Models(ローカル、macOS 27 以降:sudo fm license を一度実行し、その後 fm serve --port 1976 を実行します。API キーは不要です。有効にするには、fabric -S で一度選択してください)
  • Cerebras
  • Cheaper Inference
  • DeepSeek
  • DemonRoute
  • DigitalOcean
  • Eden AI
  • GrokAI
  • Groq
  • Hostinger Router
  • Langdock
  • LiteLLM
  • MiniMax
  • Mistral
  • Novita AI
  • OpenCode Go
  • OpenCode Zen
  • OpenRouter
  • Opper
  • OrcaRouter
  • OVHcloud
  • Pzero
  • Requesty
  • SiliconCloud
  • Synthorai
  • Together
  • Venice AI
  • Y-API
  • Z AI

fabric --setup を実行して利用するプロバイダーを設定するか、fabric --listvendors を実行して利用可能なベンダーをすべて確認してください。

パターンごとのモデルマッピング

FABRIC_MODEL_PATTERN_NAME=vendor|model のような環境変数を使用して、個々のパターンに特定のモデルを設定できます。

これにより、こうしたパターンごとのモデルマッピングをシェルの起動ファイルで簡単に管理できます。

すべてのパターンにエイリアスを追加する

すべてのパターンにエイリアスを追加し、それらをコマンドとして直接使用するには、たとえば fabric --pattern summarize の代わりに summarize のようにします。 次の内容を .zshrc または .bashrc ファイルに追加できます。また、すべての fabric エイリアスを同じプレフィックスで始めたい場合は、事前に FABRIC_ALIAS_PREFIX 環境変数を任意で設定することもできます。

# Loop through all files in the ~/.config/fabric/patterns directory
for pattern_file in $HOME/.config/fabric/patterns/*; do
    # Get the base name of the file (i.e., remove the directory path)
    pattern_name="$(basename "$pattern_file")"
    alias_name="${FABRIC_ALIAS_PREFIX:-}${pattern_name}"

    # Create an alias in the form: alias pattern_name="fabric --pattern pattern_name"
    alias_command="alias $alias_name='fabric --pattern $pattern_name'"

    # Evaluate the alias command to add it to the current shell
    eval "$alias_command"
done

yt() {
    if [ "$#" -eq 0 ] || [ "$#" -gt 2 ]; then
        echo "Usage: yt [-t | --timestamps] youtube-link"
        echo "Use the '-t' flag to get the transcript with timestamps."
        echo "Pipe to a pattern: yt URL | fabric -p extract_wisdom"
        return 1
    fi

    transcript_flag="--transcript"
    if [ "$1" = "-t" ] || [ "$1" = "--timestamps" ]; then
        transcript_flag="--transcript-with-timestamps"
        shift
    fi
    local video_link="$1"
    # Outputs the raw transcript to stdout so it can be piped to a pattern:
    #   yt URL | fabric -p extract_wisdom
    fabric -y "$video_link" $transcript_flag
}

PowerShell 内で同等のエイリアスを利用するには、PowerShell ウィンドウで notepad $PROFILE を実行して、以下のコードを追加できます。

# Path to the patterns directory
$patternsPath = Join-Path $HOME ".config/fabric/patterns"
foreach ($patternDir in Get-ChildItem -Path $patternsPath -Directory) {
    # Prepend FABRIC_ALIAS_PREFIX if set; otherwise use empty string
    $prefix = $env:FABRIC_ALIAS_PREFIX ?? ''
    $patternName = "$($patternDir.Name)"
    $aliasName = "$prefix$patternName"
    # Dynamically define a function for each pattern
    $functionDefinition = @"
function $aliasName {
    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline = `$true)]
        [string] `$InputObject,

        [Parameter(ValueFromRemainingArguments = `$true)]
        [String[]] `$patternArgs
    )

    begin {
        # Initialize an array to collect pipeline input
        `$collector = @()
    }

    process {
        # Collect pipeline input objects
        if (`$InputObject) {
            `$collector += `$InputObject
        }
    }

    end {
        # Join all pipeline input into a single string, separated by newlines
        `$pipelineContent = `$collector -join "`n"

        # If there's pipeline input, include it in the call to fabric
        if (`$pipelineContent) {
            `$pipelineContent | fabric --pattern $patternName `$patternArgs
        } else {
            # No pipeline input; just call fabric with the additional args
            fabric --pattern $patternName `$patternArgs
        }
    }
}
"@
    # Add the function to the current session
    Invoke-Expression $functionDefinition
}

# Define the 'yt' function as well
function yt {
    [CmdletBinding()]
    param(
        [Parameter()]
        [Alias("timestamps")]
        [switch]$t,

        [Parameter(Position = 0, ValueFromPipeline = $true)]
        [string]$videoLink
    )

    begin {
        $transcriptFlag = "--transcript"
        if ($t) {
            $transcriptFlag = "--transcript-with-timestamps"
        }
    }

    process {
        if (-not $videoLink) {
            Write-Error "Usage: yt [-t | --timestamps] youtube-link"
            Write-Host "Pipe to a pattern: yt URL | fabric -p extract_wisdom"
            return
        }
    }

    end {
        if ($videoLink) {
            # Outputs the raw transcript to stdout so it can be piped to a pattern:
            #   yt URL | fabric -p extract_wisdom
            fabric -y $videoLink $transcriptFlag
        }
    }
}

これにより、YouTube のトランスクリプトを標準出力に出力する yt ヘルパーも作成されます。パイプでパターンに渡すと、fabric で処理できます。

yt https://www.youtube.com/watch?v=4b0iet22VIk | fabric -p extract_wisdom

まず生のトランスクリプトを確認するには、パイプなしで yt を使用します。

エイリアスを使用してファイルを markdown で保存する

上記のエイリアスに加えて、Obsidian のようなお気に入りの markdown ノート保管庫に出力を保存するオプションも必要な場合は、上記の代わりに次の内容を .zshrc または .bashrc ファイルに追加します。

# Define the base directory for Obsidian notes
obsidian_base="/path/to/obsidian"

# Loop through all files in the ~/.config/fabric/patterns directory
for pattern_file in ~/.config/fabric/patterns/*; do
    # Get the base name of the file (i.e., remove the directory path)
    pattern_name=$(basename "$pattern_file")

    # Remove any existing alias with the same name
    unalias "$pattern_name" 2>/dev/null

    # Define a function dynamically for each pattern
    eval "
    $pattern_name() {
        local title=\$1
        local date_stamp=\$(date +'%Y-%m-%d')
        local output_path=\"\$obsidian_base/\${date_stamp}-\${title}.md\"

        # Check if a title was provided
        if [ -n \"\$title\" ]; then
            # If a title is provided, use the output path
            fabric --pattern \"$pattern_name\" -o \"\$output_path\"
        else
            # If no title is provided, use --stream
            fabric --pattern \"$pattern_name\" --stream
        fi
    }
    "
done

これにより、上記と同様にパターンをエイリアスとして使用できます。たとえば fabric --pattern summarize --stream の代わりに summarize のようにします。ただし、summarize "my_article_title" のように追加の引数を渡すと、出力は obsidian_base="/path/to/obsidian" で設定した保存先に、YYYY-MM-DD-my_article_title.md という形式で保存されます。日付は自動生成されます。 日付の形式は date_stamp の形式を調整することで変更できます。

移行

Legacy (Python) バージョンがインストールされていて、Go バージョンに移行したい場合の手順は次のとおりです。基本的に 2 つのステップです: 1) Python バージョンをアンインストールし、2) Go バージョンをインストールします。

# Uninstall Legacy Fabric
pipx uninstall fabric

# Clear any old Fabric aliases
(check your .bashrc, .zshrc, etc.)
# Install the Go version
go install github.com/danielmiessler/fabric/cmd/fabric@latest
# Run setup for the new version. Important because things have changed
fabric --setup

その後、上記のように環境変数を設定します。

アップグレード/置き換え

Go の素晴らしい点は、既存のインストールを非常に簡単にアップグレードまたは置き換えできることです。最初にインストールしたときと同じコマンドを実行するだけで、常に最新バージョンを取得でき、古いバージョンが自動的に置き換えられます。

go install github.com/danielmiessler/fabric/cmd/fabric@latest

既存のインストールを置き換える場合は、上記のコマンドを実行するだけで、Go が古いバージョンを新しいバージョンに自動的に置き換えます。

重要な注意: アップグレード後に fabric --setup を実行する場合、バージョン間で設定変更があるときは、一部の設定やキーを再構成する必要があるかもしれません。

シェル補完

Fabric は Zsh、Bash、Fish シェル用のシェル補完スクリプトを提供しており、コマンドやオプションのタブ補完によって CLI をより簡単に使用できます。

クイックインストール (クローン不要)

ワンライナーで直接補完をインストールできます:

curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh | sh

任意のバリアント:

# Dry-run (see actions without changing your system)
curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh | sh -s -- --dry-run

# Override the download source (advanced)
FABRIC_COMPLETIONS_BASE_URL="https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions" \
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh)"
Zsh 補完

Zsh 補完を有効にするには:

# Copy the completion file to a directory in your $fpath
mkdir -p ~/.zsh/completions
cp completions/_fabric ~/.zsh/completions/

# Add the directory to fpath in your .zshrc before compinit
echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc
echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
Bash 補完

Bash 補完を有効にするには:

# Source the completion script in your .bashrc
echo 'source /path/to/fabric/completions/fabric.bash' >> ~/.bashrc

# Or copy to the system-wide bash completion directory
sudo cp completions/fabric.bash /etc/bash_completion.d/
Fish 補完

Fish 補完を有効にするには:

# Copy the completion file to the fish completions directory
mkdir -p ~/.config/fish/completions
cp completions/fabric.fish ~/.config/fish/completions/

使用方法

すべての設定が完了したら、次のように使用します。

fabric -h
Usage:
  fabric [OPTIONS]

Application Options:
  -p, --pattern=                    Choose a pattern from the available patterns
  -v, --variable=                   Values for pattern variables, e.g. -v=#role:expert -v=#points:30
  -C, --context=                    Choose a context from the available contexts
      --session=                    Choose a session from the available sessions
  -a, --attachment=                 Attachment path or URL (e.g. for OpenAI image recognition messages)
  -S, --setup                       Run setup for all reconfigurable parts of fabric
  -t, --temperature=                Set temperature (default: 0.7)
  -T, --topp=                       Set top P (default: 0.9)
  -s, --stream                      Stream
  -P, --presencepenalty=            Set presence penalty (default: 0.0)
  -r, --raw                         Use the defaults of the model without sending chat options (temperature,
                                    top_p, etc.). Only affects OpenAI-compatible providers. Anthropic models
                                    always use smart parameter selection to comply with model-specific
                                    requirements.
  -F, --frequencypenalty=           Set frequency penalty (default: 0.0)
  -l, --listpatterns                List all patterns
      --readpattern=                Print the contents of the named pattern to the terminal
  -L, --listmodels                  List all available models
  -x, --listcontexts                List all contexts
  -X, --listsessions                List all sessions
  -U, --updatepatterns              Update patterns
  -c, --copy                        Copy to clipboard
  -m, --model=                      Choose model
  -V, --vendor=                     Specify vendor for the selected model (e.g., -V "LM Studio" -m
                                    openai/gpt-oss-20b)
      --modelContextLength=         Model context length (only affects ollama)
  -o, --output=                     Output to file
      --output-session              Output the entire session (also a temporary one) to the output file
      --extract                     Output only the first fenced code block from the response (full response if
                                    none is found)
      --extract-last                Output only the last fenced code block from the response (full response if
                                    none is found)
  -n, --latest=                     Number of latest patterns to list
  -d, --changeDefaultModel          Change default model
  -y, --youtube=                    YouTube video or play list "URL" to grab transcript, comments from it and
                                    send to chat or print it put to the console and store it in the output file
      --playlist                    Prefer playlist over video if both ids are present in the URL
      --transcript                  Grab transcript from YouTube video and send to chat (it is used per
                                    default).
      --transcript-with-timestamps  Grab transcript from YouTube video with timestamps and send to chat
      --visual                      Extract visual data from video using OCR and FFmpeg
      --visual-sensitivity=         Tolerance for FFmpeg scene detection (0.0 - 1.0) (default: 0.4)
      --visual-fps=                 Extract a specific number of frames per second instead of using scene
                                    detection
      --comments                    Grab comments from YouTube video and send to chat
      --metadata                    Output video metadata
      --yt-dlp-args=                Additional arguments to pass to yt-dlp (e.g. '--cookies-from-browser brave')
      --spotify=                    Spotify podcast or episode URL to grab metadata from and send to chat
  -g, --language=                   Specify the Language Code for the chat, e.g. -g=en -g=zh -g=pt-BR -g=pt-PT
  -u, --scrape_url=                 Scrape website URL to markdown using Jina AI
  -q, --scrape_question=            Search question using Jina AI
      --serply_search=              Search Google using Serply and send the results to chat
      --firecrawl_search=           Search the web using Firecrawl and send the top pages to chat as Markdown
  -e, --seed=                       Seed to be used for LMM generation
  -w, --wipecontext=                Wipe context
  -W, --wipesession=                Wipe session
      --printcontext=               Print context
      --printsession=               Print session
      --print-prompt                Print the rendered prompt without sending it to a model
      --readability                 Convert HTML input into a clean, readable view
      --input-has-vars              Apply variables to user input
      --no-variable-replacement     Disable pattern variable replacement
      --dry-run                     Show what would be sent to the model without actually sending it
      --serve                       Serve the Fabric Rest API
      --serveOllama                 Serve the Fabric Rest API with ollama endpoints
      --address=                    The address to bind the REST API (default: :8080)
      --api-key=                    API key used to secure server routes
      --cors-origins=               Browser origins that can call the server (repeatable; * for all)
      --config=                     Path to YAML config file
      --version                     Print current version
      --listextensions              List all registered extensions
      --addextension=               Register a new extension from config file path
      --rmextension=                Remove a registered extension by name
      --strategy=                   Choose a strategy from the available strategies
      --liststrategies              List all strategies
      --listvendors                 List all vendors
      --shell-complete-list         Output raw list without headers/formatting (for shell completion)
      --search                      Enable web search tool for supported models (Anthropic, OpenAI, Gemini, Grok)
      --search-location=            Set location for web search results (e.g., 'America/Los_Angeles')
      --image-file=                 Save generated image to specified file path (e.g., 'output.png')
      --image-size=                 Image dimensions: 1024x1024, 1536x1024, 1024x1536, auto (default: auto)
      --image-quality=              Image quality: low, medium, high, auto (default: auto)
      --image-compression=          Compression level 0-100 for JPEG/WebP formats (default: not set)
      --image-background=           Background type: opaque, transparent (default: opaque, only for PNG/WebP)
      --suppress-think              Suppress text enclosed in thinking tags
      --think-start-tag=            Start tag for thinking sections (default: <think>)
      --think-end-tag=              End tag for thinking sections (default: </think>)
      --disable-responses-api       Disable OpenAI Responses API (default: false)
      --transcribe-file=            Audio or video file to transcribe
      --transcribe-model=           Model to use for transcription (separate from chat model)
      --split-media-file            Split audio/video files larger than 25MB using ffmpeg
      --voice=                      TTS voice name for supported models (e.g., Kore, Charon, Puck) (default:
                                    Kore)
      --list-gemini-voices          List all available Gemini TTS voices
      --list-transcription-models   List all available transcription models
      --notification                Send desktop notification when command completes
      --notification-command=       Custom command to run for notifications (overrides built-in notifications)
      --thinking=                   Set reasoning/thinking level (e.g., off, low, medium, high, or numeric
                                    tokens for Anthropic or Google Gemini)
      --show-metadata               Print metadata (input/output tokens) to stderr
      --debug=                      Set debug level (0=off, 1=basic, 2=detailed, 3=trace, 4=wire)

Help Options:
  -h, --help                        Show this help message
デバッグレベル

--debug フラグを使用してランタイムログを制御します:

  • 0: オフ (デフォルト)
  • 1: 基本的なデバッグ情報
  • 2: 詳細なデバッグ
  • 3: トレースレベル
  • 4: ワイヤーレベル (リクエストとレスポンスの本文全体)
ドライランモード

--dry-run を使用すると、API 呼び出しを行わずに AI モデルへ送信される内容をプレビューできます:

echo "test input" | fabric --dry-run -p summarize

これは、パターンのデバッグ、プロンプト構築の確認、API クレジットを使用する前の入力フォーマットの検証に役立ちます。

プロンプトのエクスポート

--print-prompt を使用すると、Fabric が構成したプロンプトをレンダリングし、モデル呼び出しの前に終了します:

echo "test input" | fabric --print-prompt -p summarize

これは、Fabric のプロンプトライブラリを他のコマンドライン LLM ツールで再利用したい場合や、Fabric が構成する正確なシステムメッセージとユーザーメッセージの構造を確認したい場合に便利です。

一部のモデルでは、システムメッセージをユーザーメッセージにマージする raw モードが必要です。そのようなモデルの構造を表示するには、-m(または FABRIC_MODEL_<PATTERN>)でモデルを指定します。すると Fabric がベンダーを特定し、モデル一覧リクエストを送信できるようになります。モデルを指定しない場合、--raw を設定しない限り、エクスポートではシステムメッセージとユーザーメッセージが別々に表示されます。

拡張機能

Fabric はパターン内から呼び出せる拡張機能をサポートしています。完全なドキュメントについては、拡張機能ガイドを参照してください。

重要: 拡張機能はパターンファイル内でのみ動作し、直接 stdin からは動作しません。詳細と例についてはガイドを参照してください。

REST API サーバー

Fabric には、すべてのコア機能を HTTP 経由で公開する組み込みの REST API サーバーが含まれています。サーバーを起動するには:

fabric --serve

このサーバーは以下のエンドポイントを提供します:

  • ストリーミングレスポンスによるチャット補完
  • パターン管理(作成、読み取り、更新、削除)
  • コンテキストとセッションの管理
  • モデルとベンダーの一覧表示
  • YouTube トランスクリプトの抽出
  • 設定管理

完全なエンドポイントのドキュメント、認証の設定、使用例については、REST API ドキュメントを参照してください。

Ollama 互換モード

Fabric は、Ollama 互換の API エンドポイントを公開することで、Ollama のドロップイン代替として機能できます。サーバーを起動するには:

fabric --serve --serveOllama

これにより、以下の Ollama 互換エンドポイントが有効になります:

  • GET /api/tags - 利用可能なパターンをモデルとして一覧表示
  • POST /api/chat - チャット補完
  • GET /api/version - サーバーバージョン

Ollama API を使用するように設定されたアプリケーションは、代わりにあなたの Fabric サーバーを指定でき、Ollama インターフェースを通じて Fabric がサポートする任意の AI プロバイダーを利用できます。パターンはモデルとして表示されます(例: summarize:latest)。

プロンプトに対する私たちのアプローチ

Fabric の パターン は、一般的に見られるほとんどのプロンプトとは異なります。

  • まず、私たちは Markdown を使用して、最大限の可読性と編集しやすさを確保しています。これは作成者が優れたパターンを作るのに役立つだけでなく、そのパターンが何をするのかを深く理解したい人にも役立ちます。重要なのは、これにはあなたが送信先とする AI も含まれるということです!

以下は Fabric パターンの例です。

https://github.com/danielmiessler/Fabric/blob/main/data/patterns/extract_wisdom/system.md
pattern-example
  • 次に、私たちは指示を極めて明確にし、Markdown 構造を使って、AI に何をどの順序で実行してほしいかを強調します。

  • そして最後に、私たちはプロンプトの System セクションをほぼ専ら使用する傾向があります。この分野に没頭して 1 年以上が経ちますが、そうすることでより大きな効果が得られると見てきました。もしそれが変わった場合、あるいはそうでないというデータが示された場合には、私たちは調整します。

例

以下の例では、macOS の pbpaste を使用してクリップボードから貼り付けています。Windows および Linux での代替方法については、後述の pbpaste セクションを参照してください。

それでは、Fabric でできることのいくつかを見ていきましょう。

  1. stdin からの入力に基づいて summarize パターンを実行します。この場合は、記事の本文です。

    pbpaste | fabric --pattern summarize
    
  2. --stream オプションを指定して analyze_claims パターンを実行し、即時かつストリーミングで結果を取得します。

    pbpaste | fabric --stream --pattern analyze_claims
    
  3. --stream オプションを指定して extract_wisdom パターンを実行し、任意の YouTube 動画から即時かつストリーミングで結果を取得します(最初の紹介動画とほぼ同様です)。

    fabric -y "https://youtube.com/watch?v=uXs-zPc63kM" --stream --pattern extract_wisdom
    
  4. パターンを作成するには、パターンを記述した .md ファイルを作成し、~/.config/fabric/patterns/[yourpatternname] に保存する必要があります。

  5. ウェブサイトに対して analyze_claims パターンを実行します。Fabric は Jina AI を使用して URL を markdown 形式にスクレイピングしてから、モデルに送信します。

    fabric -u https://github.com/danielmiessler/fabric/ -p analyze_claims
    

パターンを使うだけ

fabric-patterns-screenshot

何か凝ったことをするつもりがなく、優れたプロンプトをたくさん使いたいだけなら、/patterns ディレクトリに移動して探してみてください!

Fabric から他に何も使わなかったとしても、パターンだけでもこのプロジェクトは役に立つはずです。

そこにあるパターンはどれでも、ChatGPT であれ他のアプリやウェブサイトであれ、お持ちの任意の AI アプリケーションで使用できます。私たちの計画と予測では、人々はまもなく私たちが公開したものよりはるかに多くのパターンを共有するようになり、それらは私たちのものよりずっと優れたものになるでしょう。

群衆の知恵の勝利です。

プロンプト戦略

Fabric は「Chain of Thought」や「Chain of Draft」などのプロンプト戦略も実装しており、 基本的なパターンに加えて使用できます。

プロンプト戦略の例については、Thinking Faster by Writing Less の論文と、 Learn Prompting の Thought Generation セクションを参照してください。

各戦略は、/strategies ディレクトリ内の小さな json ファイルとして利用できます。

戦略によるプロンプトの変更はシステムプロンプトに適用され、チャットセッションで LLM に渡されます。

fabric -S を使用し、~/.config/fabric ディレクトリに戦略をインストールするオプションを選択してください。

利用可能な戦略

Fabric にはいくつかのプロンプト戦略が含まれています。

  • cot - Chain-of-Thought: ステップバイステップの推論
  • cod - Chain-of-Draft: 最小限のメモによる反復的な下書き(各ステップ最大 5 語)
  • tot - Tree-of-Thought: 複数の推論パスを生成し、最良のものを選択
  • aot - Atom-of-Thought: 問題を最小の独立した原子的な部分問題に分解
  • ltm - Least-to-Most: 最も簡単な部分問題から最も難しいものへと問題を解決
  • self-consistent - Self-Consistency: 合意を得る複数の推論パス
  • self-refine - Self-Refinement: 回答、批評、改善
  • reflexion - Reflexion: 回答、簡潔な批評、改善された回答の提供
  • standard - Standard: 説明なしの直接回答

戦略を適用するには --strategy フラグを使用します。

echo "Analyze this code" | fabric --strategy cot -p analyze_code

利用可能なすべての戦略を一覧表示するには:

fabric --liststrategies

戦略は ~/.config/fabric/strategies/ に JSON ファイルとして保存されます。形式の仕様については、デフォルトの戦略を参照してください。

カスタムパターン

Fabric を使って独自のカスタムパターンを作成したいが、他の人とは共有したくない、という場合もあるでしょう。問題ありません!

Fabric は現在、専用のカスタムパターンディレクトリをサポートしており、個人用のパターンを組み込みパターンとは別に保つことができます。つまり、Fabric の組み込みパターンを更新しても、カスタムパターンが上書きされることはありません。

カスタムパターンのセットアップ
  1. Fabric のセットアップを実行します:

    fabric --setup
    
  2. ツールメニューから「Custom Patterns」オプションを選択し、希望するディレクトリパス(例: ~/my-custom-patterns)を入力します

  3. ディレクトリが存在しない場合、Fabric が自動的に作成します。

カスタムパターンの使用
  1. カスタムパターンのディレクトリ構造を作成します:

    mkdir -p ~/my-custom-patterns/my-analyzer
    
  2. パターンファイルを作成します

    echo "You are an expert analyzer of ..." > ~/my-custom-patterns/my-analyzer/system.md
    
  3. カスタムパターンを使用します:

    fabric --pattern my-analyzer "analyze this text"
    
仕組み
  • 優先順位システム: カスタムパターンは、同名の組み込みパターンよりも優先されます
  • シームレスな統合: カスタムパターンは、組み込みパターンとともに fabric --listpatterns に表示されます
  • 更新しても安全: カスタムパターンは fabric --updatepatterns の影響を一切受けません
  • デフォルトでプライベート: 明示的に共有しない限り、カスタムパターンはプライベートのままです

カスタムパターンは完全にプライベートであり、Fabric の更新による影響を受けません!

ヘルパーアプリ

Fabric は、さまざまなワークフローとの統合を容易にするために、いくつかのコアヘルパーアプリ(ツール)も利用しています。以下にいくつかの例を示します:

to_pdf

to_pdf は、LaTeX ファイルを PDF 形式に変換するヘルパーコマンドです。次のように使用できます:

to_pdf input.tex

これにより、入力された LaTeX ファイルから同じディレクトリに PDF ファイルが作成されます。

また、stdin と組み合わせて使用することもでき、write_latex パターンとの相性も完璧です:

echo "ai security primer" | fabric --pattern write_latex | to_pdf

これにより、カレントディレクトリに output.pdf という名前の PDF ファイルが作成されます。

to_pdf のインストール

to_pdf をインストールするには、リポジトリ名を変えて Fabric と同じ方法でインストールします。

go install github.com/danielmiessler/fabric/cmd/to_pdf@latest

to_pdf はシステムの PATH に pdflatex が存在する必要があるため、システムに LaTeX ディストリビューション(TeX Live や MiKTeX など)がインストールされていることを確認してください。

code2context

code2context は、create_coding_feature パターンと組み合わせて使用します。 これはコードのディレクトリの json 表現を生成するもので、新しい機能を作成したり、指定された方法でコードを編集したりするための指示とともに AI モデルに渡すことができます。

詳細は Create Coding Feature Pattern README を参照してください。

まず、次を使ってインストールします:

go install github.com/danielmiessler/fabric/cmd/code2context@latest
generate_changelog

generate_changelog は、git のコミット履歴と GitHub のプルリクエストから changelog を生成します。リポジトリの git 履歴をたどり、PR 情報を抽出して、整形された markdown 形式の changelog を生成します。

generate_changelog --help

機能には、高速な増分更新のための SQLite キャッシュ、効率的な PR 取得のための GitHub GraphQL API 統合、Fabric を使用したオプションの AI 強化サマリーが含まれます。

次を使ってインストールします:

go install github.com/danielmiessler/fabric/cmd/generate_changelog@latest

詳細な使用方法とオプションについては、generate_changelog README を参照してください。

pbpaste

examples では、macOS のプログラム pbpaste を使用して、クリップボードから内容を貼り付け、fabric の入力としてパイプしています。pbpaste は Windows や Linux では利用できませんが、代替手段があります。

Windows では、PowerShell のコマンドプロンプトから Get-Clipboard コマンドを使用できます。必要であれば、pbpaste というエイリアスを付けることもできます。従来の PowerShell を使用している場合は ~\Documents\WindowsPowerShell\.profile.ps1 ファイルを、PowerShell Core を使用している場合は ~\Documents\PowerShell\.profile.ps1 を編集して、次のエイリアスを追加します:

Set-Alias pbpaste Get-Clipboard

Linux では、xclip -selection clipboard -o を使用してクリップボードから貼り付けることができます。おそらく、パッケージマネージャーで xclip をインストールする必要があります。Ubuntu を含む Debian ベースのシステムでは、次のとおりです:

sudo apt update
sudo apt install xclip -y

また、~/.bashrc または ~/.zshrc を編集して次のエイリアスを追加することで、エイリアスを作成することもできます:

alias pbpaste='xclip -selection clipboard -o'

Web インターフェース (Fabric Web App)

Fabric には、コマンドラインインターフェースに代わる GUI を提供する組み込みの Web インターフェースが含まれるようになりました。インストール手順と機能の概要については、Web App README を参照してください。

Meta

メモ

ひらめきと貢献をいただいた以下の皆さんに特別な感謝を捧げます!

  • Jonathan Dunn は、新しい Go バージョンや GUI を先導するなど、このプロジェクトで絶対的な MVP 開発者です!しかも、現役の医師でもありながらこれを成し遂げています!
  • Caleb Sima は、これを公開プロジェクトにするかどうかという私の迷いを後押ししてくれました。
  • Eugen Eisler と Frederick Ros は、Go バージョンに非常に貴重な貢献をしてくれました
  • David Peters は、Web インターフェースの作業を担当しました。
  • Joel Parish は、プロジェクトの Github ディレクトリ構造について非常に有用な意見をくれました。
  • Joseph Thacker は、事前に作成したコンテキストを ./config/fabric/ ディレクトリからすべての Pattern クエリに追加する -c コンテキストフラグのアイデアを出してくれました。
  • Jason Haddix は、クラウドモデルに送信する前にローカルモデルでコンテンツをフィルタリングする stitch(チェーンされた Pattern)のアイデアを出してくれました。つまり、分析のために gpt-4 に送信する前に llama2 を使って顧客データをクリーンアップするというものです。
  • Andre Guerra は、物事をよりシンプルで保守しやすくするための数多くのコンポーネントを支援してくれました。
主なコントリビューター

Daniel Miessler Jonathan Dunn Scott Behrens Andre Guerra

コントリビューター
contrib.rocks

Made with contrib.rocks.

fabric は 2024 年 1 月に Daniel Miessler によって作成されました。

X (formerly Twitter) Follow

💜 このプロジェクトを支援する

Sponsor

私は毎年オープンソースに何百時間も費やしています。このプロジェクトの支援にご協力いただける場合は、こちらからスポンサーになれます。🙏🏼

コメント