fabric

by Daniel Miessler (community) · Windows, macOS, Linux

Framework Dev Tools Open Source ★ Must have v1.4.455 · 09.06.2026 активный

Фреймворк для "дополнения человека с помощью AI" через систему паттернов. Каждый паттерн — промпт для конкретной задачи: суммаризация, извлечение идей, создание контента, анализ угроз безопасности. Что внутри: - 200+ готовых паттернов: summarize, extract_wisdom, write_essay, create_threat_model... - Пайплайн: YouTube → транскрипт → суммаризация одной командой - Собственные паттерны: просто создать .md файл - Работает с любым OpenAI-совместимым API - Встроенный yt (YouTube транскрипты) и jina (веб-контент) - Идеально для OSINT, анализа и написания контента

v1.4.455
09.06.2026 current
Добавлен 18.06.2026 · Обновлён 18.06.2026 · Dev Tools
Установка
# Go (рекомендуется):
go install github.com/danielmiessler/fabric@latest

# Первоначальная настройка:
fabric --setup

# Примеры:
# Суммаризовать YouTube видео:
yt https://youtube.com/watch?v=... | fabric -p extract_wisdom

# Анализ текста:
echo "текст" | fabric -p summarize

# Список паттернов:
fabric -l
переведено ИИ
<a href="https://go.warp.dev/fabric" target="_blank">
    <sup>Особая благодарность:</sup>


Warp sponsorship
Warp, создан для кодирования с несколькими ИИ-агентами
Доступен для macOS, Linux и Windows


fabriclogo

fabric

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

fabric — это открытый фреймворк для расширения возможностей человека с помощью ИИ.

English · Китайский

Screenshot of fabric)

ОбновленияЧто и зачемФилософияУстановкаИспользованиеREST APIПримерыПросто используйте шаблоныПользовательские шаблоныВспомогательные приложенияМета

Что и зачем

С начала эпохи современного ИИ в конце 2022 года мы видели необычайно большое количество ИИ-приложений для выполнения задач. Существуют тысячи веб-сайтов, чат-ботов, мобильных приложений и других интерфейсов для использования всего имеющегося ИИ.

Вс это очень захватывающе и мощно, но интегрировать этот функционал в нашу жизнь непросто.

Другими словами, у ИИ нет проблемы возможностей — у него есть проблема интеграции.

Fabric был создан для решения этой проблемы путём создания и организации основных единиц ИИ — самих промптов!

Fabric организует промпты по реальным задачам, позволяя людям создавать, собирать и организовывать свои самые важные ИИ-решения в одном месте для использования в избранных инструментах. А если вы предпочитаете командную строку, вы можете использовать сам Fabric в качестве интерфейса!

Обновления

Для подробного ознакомления с Fabric и его внутренней работой прочитайте документацию в папке docs. Также существует чрезвычайно полезный и регулярно обновляемый DeepWiki для Fabric.

Нажмите, чтобы просмотреть последние обновления

Уважаемые пользователи!

Мы делаем здесь, в Fabric, так много захватывающих вещей, что я хотел дать здесь краткое изложение, чтобы дать вам представление о нашей скорости разработки!

Ниже перечислены новые функции и возможности, которые мы добавили (сначала самые последние):

Последние основные функции

  • v1.4.447 (16 апреля 2026 г.) — Claude Opus 4.7: Обновляет SDK Anthropic до v1.37.0 и добавляет новую модель Claude Opus 4.7 в доступные модели, включая поддержку контекстного окна в 1M токенов.
  • v1.4.437 (16 марта 2026 г.) — Плагин OpenAI Codex: Fabric теперь поддерживает использование OpenAI Codex (с вашей подпиской OpenAI) в качестве бэкенда!
  • v1.4.417 (21 февраля 2026 г.) — Плагин Azure AI Gateway: Добавлен плагин Azure AI Gateway, поддерживающий несколько бэкендов (AWS Bedrock, Azure OpenAI, Google Vertex AI) через единый шлюз Azure APIM с аутентификацией по общему ключу подписки.
  • v1.4.416 (21 февраля 2026 г.) — Аутентификация Azure Entra ID: Добавлен плагин аутентификации Azure Entra ID с общими утилитами Azure, поддержкой Entra ID/MSAL и выделена общая логика Azure в переиспользуемый пакет azurecommon.
  • v1.4.380 (15 января 2026 г.) — Интеграция с корпоративным Microsoft 365 Copilot: Добавлена поддержка корпоративного Microsoft 365 Copilot, позволяющая сотрудникам предприятий использовать ИИ, основанный на данных их организации в Microsoft 365 (электронная почта, документы, встречи).
  • v1.4.378 (14 января 2026 г.) — Поддержка Digital Ocean GenAI: Добавлена поддержка Digital Ocean GenAI, а также руководство по его использованию).
  • v1.4.356 (22 декабря 2025 г.) — Полная интернационализация: Полная поддержка i18n для начальных подсказок на всех 10 языках с интеллектуальной обработкой переменных окружения — делает Fabric по-настоящему доступным во всем мире, сохраняя согласованность конфигурации.
  • v1.4.350 (18 декабря 2025 г.) — Интерактивная документация API: Добавляет UI Swagger/OpenAPI по адресу /swagger/index.html с исчерпывающей документацией REST API, улучшенными руководствами для разработчиков и улучшенной обнаруживаемостью эндпоинтов для более простой интеграции.
  • v1.4.338 (4 декабря 2025 г.) — Добавлена поддержка поставщика Abacus для моделей Chat-LLM (см. RouteLLM APIs).
  • v1.4.337 (4 декабря 2025 г.) — Добавлена поддержка поставщика "Z AI". Подробности смотрите на странице обзор Z AI.
  • v1.4.334 (26 ноября 2025 г.) — Claude Opus 4.5: Обновляет SDK Anthropic до последней версии и добавляет новую модель Claude Opus 4.5 в доступные модели.
  • v1.4.331 (23 ноября 2025 г.) — Поддержка GitHub Models: Добавлена поддержка использования GitHub Models.
  • v1.4.322 (5 ноября 2025 г.) — Интерактивные HTML-концептуальные карты и Claude Sonnet 4.5: Добавляет шаблон create_conceptmap для визуального представления знаний с использованием Vis.js, вводит категорию WELLNESS с шаблонами психологического анализа и обновляет до Claude Sonnet 4.5.
  • v1.4.317 (21 сентября 2025 г.) — Варианты португальского языка: Добавляет нормализацию локали BCP 47 с поддержкой бразильского португальского (pt-BR) и европейского португальского (pt-PT) с интеллектуальными цепочками отката.
  • v1.4.314 (17 сентября 2025 г.) — Миграция на Azure OpenAI: Переход на официальный SDK openai-go/azure с улучшенной аутентификацией и поддержкой версии API по умолчанию.
  • v1.4.311 (13 сентября 2025 г.) — Расширенная поддержка интернационализации: Добавлены de (немецкий), fa (персидский / фарси), fr (французский), it (итальянский), ja (японский), pt (португальский), zh (китайский).
  • v1.4.309 (9 сентября 2025 г.) — Комплексная поддержка интернационализации: Включены файлы локалей для английского и испанского языков.
  • v1.4.303 (29 августа 2025 г.) — Новые бинарные релизы: Цели для Linux ARM и Windows ARM. Вы можете запускать Fabric на Raspberry PI и на вашем Windows Surface!
  • v1.4.294 (20 августа 2025 г.) — Поддержка Venice AI: Добавлен провайдер Venice AI. Venice — это провайдер ИИ, ориентированный на конфиденциальность и открытый исходный код. Подробности смотрите на странице "О Venice".
  • v1.4.291 (18 августа 2025 г.) — Речь в текст: Добавлена поддержка преобразования речи в текст от OpenAI с флагами --transcribe-file, --transcribe-model и --split-media-file.

Эти функции представляют собой наше стремление сделать Fabric самой мощной и гибкой платформой для расширения ИИ-возможностей!

Видео-введение

Имейте в виду, что многие из них были записаны, когда Fabric был основан на Python, поэтому не забудьте использовать актуальные инструкции по установке ниже.

Навигация


Журнал изменений

Fabric развивается очень быстро.

Следите за последними функциями, изучая ЖУРНАЛ ИЗМЕНЕНИЙ для всех последних обновлений.

Философия

AI — это не вещь; это усилитель вещи. И эта вещь — человеческая креативность.

Мы считаем, что цель технологии — помогать людям расцветать, поэтому, когда мы говорим об AI, мы начинаем с человеческих проблем, которые хотим решить.

Разбиение проблем на компоненты

Наш подход состоит в том, чтобы разбивать проблемы на отдельные части (см. ниже), а затем применять к ним AI по очереди. Приведенные ниже — некоторые примеры.

augmented_challenges

Слишком много промптов

Промпты хороши для этого, но самая большая проблема, с которой я столкнулся в 2023 году — которая существует и по сей день — это огромное количество AI-промптов на просторах сети. У каждого из нас есть полезные промпты, но сложно находить новые, знать, хороши ли они, а также управлять различными версиями тех, которые нам нравятся.

Одна из основных функций fabric — помогать людям собирать и интегрировать промпты, которые мы называем Шаблонами, в различные области их жизни.

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 установлен, а затем выполните следующую команду.

# Установка Fabric напрямую из репозитория
go install github.com/danielmiessler/fabric/cmd/fabric@latest

Docker

Запускайте Fabric с использованием готовых Docker-образов:

# Используйте последний образ из Docker Hub
docker run --rm -it kayvan/fabric:latest --version

# Используйте определенную версию из GHCR
docker run --rm -it ghcr.io/ksylvan/fabric:v1.4.305 --version

# Запуск настройки (в первый раз)
mkdir -p $HOME/.fabric-config
docker run --rm -it -v $HOME/.fabric-config:/home/appuser/.config/fabric kayvan/fabric:latest --setup

# Используйте Fabric со своими шаблонами
docker run --rm -it -v $HOME/.fabric-config:/home/appuser/.config/fabric kayvan/fabric:latest -p summarize

# Запуск REST API сервера (см. раздел REST API сервер)
docker run --rm -it -p 8080:8080 -v $HOME/.fabric-config:/home/appuser/.config/fabric kayvan/fabric:latest --serve

Доступные образы:

Смотрите scripts/docker/README.md для сборки пользовательских образов и расширенной конфигурации.

Переменные окружения

Вам, возможно, потребуется установить некоторые переменные окружения в файле ~/.bashrc (на Linux) или ~/.zshrc (на Mac), чтобы иметь возможность запускать команду fabric. Вот пример того, что вы можете добавить:

Для Mac на Intel или Linux

# Переменные окружения Golang
export GOROOT=/usr/local/go
export GOPATH=$HOME/go

# Обновление PATH для включения бинарников GOPATH и GOROOT
export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH

Для Mac на Apple Silicon

# Переменные окружения Golang
export GOROOT=$(brew --prefix go)/libexec
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH

Настройка

Теперь выполните следующую команду

# Запуск настройки для создания директорий и ключей
fabric --setup

Если всё работает, вы готовы к использованию.

Поддерживаемые AI-провайдеры

Fabric поддерживает широкий спектр AI-провайдеров:

Нативные интеграции:

  • OpenAI
  • OpenAI Codex (Через приватный бэкенд по подписке ChatGPT/Codex OAuth)
  • Anthropic (Claude)
  • Google Gemini
  • Ollama (локальные модели)
  • Azure OpenAI
  • Amazon Bedrock
  • Vertex AI
  • LM Studio
  • Perplexity

Провайдеры, совместимые с OpenAI:

  • Abacus
  • AIML
  • Cerebras
  • DeepSeek
  • DigitalOcean
  • GitHub Models
  • GrokAI
  • Groq
  • Langdock
  • LiteLLM
  • MiniMax
  • Mistral
  • Novita AI
  • OpenRouter
  • SiliconCloud
  • Together
  • Venice AI
  • Z AI

Запустите fabric --setup, чтобы настроить предпочтительного(-ых) провайдера(-ов), или используйте fabric --listvendors, чтобы увидеть всех доступных провайдеров.

Соответствие моделей для каждого шаблона

Вы можете настроить конкретные модели для отдельных шаблонов с помощью переменных окружения вида FABRIC_MODEL_PATTERN_NAME=vendor|model.

Это удобно для поддержки таких соответствий моделей для каждого шаблона в файлах запуска вашей оболочки.

Добавление псевдонимов для всех шаблонов

Чтобы добавить псевдонимы для всех ваших шаблонов и использовать их напрямую как команды (например, summarize вместо fabric --pattern summarize), вы можете добавить следующий код в файл .zshrc или .bashrc. Опционально вы также можете установить переменную окружения FABRIC_ALIAS_PREFIX, если хотите, чтобы все псевдонимы fabric начинались с одного префикса.

# 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."
        return 1
    fi

    transcript_flag="--transcript"
    if [ "$1" = "-t" ] || [ "$1" = "--timestamps" ]; then
        transcript_flag="--transcript-with-timestamps"
        shift
    fi
    local video_link="$1"
    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"
            return
        }
    }

    end {
        if ($videoLink) {
            # Execute and allow output to flow through the pipeline
            fabric -y $videoLink $transcriptFlag
        }
    }
}

Это также создаст псевдоним yt, позволяющий использовать команду вида yt https://www.youtube.com/watch?v=4b0iet22VIk для получения расшифровок видео, комментариев и метаданных.

Сохранение файлов в markdown с использованием псевдонимов

Если, помимо вышеуказанных псевдонимов, вы хотите иметь возможность сохранять вывод в ваше любимое хранилище заметок в формате markdown (например, Obsidian), то вместо предыдущего кода добавьте следующее в файл .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

Это позволит вам использовать шаблоны как псевдонимы, как в примере выше (summarize вместо fabric --pattern summarize --stream). Однако, если вы передадите дополнительный аргумент, например summarize "my_article_title", вывод будет сохранен по пути, указанному в obsidian_base="/path/to/obsidian", в формате YYYY-MM-DD-my_article_title.md, где дата генерируется автоматически. Формат даты можно изменить, изменив формат date_stamp.

Миграция

Если у вас установлена устаревшая (Python) версия и вы хотите перейти на Go-версию, действуйте следующим образом. Суть в двух шагах: 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

Дополнение командной строки (Shell Completions)

Fabric предоставляет скрипты дополнения для оболочек Zsh, Bash и Fish, что упрощает использование CLI благодаря дополнению по клавише Tab для команд и опций.

Быстрая установка (клонирование не требуется)

Вы можете установить дополнения напрямую одной командой:

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
Использование:
  fabric [ОПЦИИ]

Параметры приложения:
  -p, --pattern=                    Выберите шаблон из доступных шаблонов
  -v, --variable=                   Значения для переменных шаблона, например -v=#role:expert -v=#points:30
  -C, --context=                    Выберите контекст из доступных контекстов
      --session=                    Выберите сессию из доступных сессий
  -a, --attachment=                 Путь или URL вложения (например, для сообщений распознавания изображений OpenAI)
  -S, --setup                       Запустить настройку всех перенастраиваемых частей fabric
  -t, --temperature=                Установить температуру (по умолчанию: 0.7)
  -T, --topp=                       Установить top P (по умолчанию: 0.9)
  -s, --stream                      Потоковая передача
  -P, --presencepenalty=            Установить штраф за присутствие (по умолчанию: 0.0)
  -r, --raw                         Использовать параметры модели по умолчанию без отправки параметров чата
                                    (температура, top_p и т.д.). Влияет только на провайдеров, совместимых с OpenAI.
                                    Модели Anthropic всегда используют умный выбор параметров для соответствия
                                    требованиям конкретной модели.
  -F, --frequencypenalty=           Установить штраф за частоту (по умолчанию: 0.0)
  -l, --listpatterns                Вывести все шаблоны
  -L, --listmodels                  Вывести все доступные модели
  -x, --listcontexts                Вывести все контексты
  -X, --listsessions                Вывести все сессии
  -U, --updatepatterns              Обновить шаблоны
  -c, --copy                        Копировать в буфер обмена
  -m, --model=                      Выберите модель
  -V, --vendor=                     Укажите поставщика для выбранной модели (например, -V "LM Studio" -m openai/gpt-oss-20b)
      --modelContextLength=         Длина контекста модели (влияет только на ollama)
  -o, --output=                     Вывод в файл
      --output-session              Вывести всю сессию (включая временную) в выходной файл
  -n, --latest=                     Количество последних шаблонов для вывода (по умолчанию: 0)
  -d, --changeDefaultModel          Изменить модель по умолчанию
  -y, --youtube=                    "URL" видео или плейлиста YouTube для извлечения транскрипции, комментариев
                                    и отправки в чат, вывода в консоль и сохранения в выходной файл
      --playlist                    Предпочитать плейлист видео, если в URL присутствуют оба идентификатора
      --transcript                  Извлечь транскрипцию из видео YouTube и отправить в чат (используется по
                                    умолчанию).
      --transcript-with-timestamps  Извлечь транскрипцию из видео YouTube с таймкодами и отправить в чат
      --visual                      Извлечь визуальные данные из видео с помощью OCR и FFmpeg
      --visual-sensitivity          Допуск для обнаружения сцен FFmpeg (0.0 - 1.0)
      --visual-fps                  Извлекать определенное количество кадров в секунду вместо обнаружения сцен
      --comments                    Извлечь комментарии из видео YouTube и отправить в чат
      --metadata                    Вывести метаданные видео
  -g, --language=                   Укажите код языка для чата, например -g=en -g=zh
  -u, --scrape_url=                 Собрать содержимое веб-сайта в формате markdown с помощью Jina AI
  -q, --scrape_question=            Выполнить поиск вопроса с помощью Jina AI
  -e, --seed=                       Начальное значение (seed) для генерации LMM
  -w, --wipecontext=                Очистить контекст
  -W, --wipesession=                Очистить сессию
      --printcontext=               Вывести контекст
      --printsession=               Вывести сессию
      --readability                 Преобразовать HTML-вход в чистое, читаемое представление
      --input-has-vars              Применять переменные ко входным данным пользователя
      --no-variable-replacement     Отключить замену переменных шаблона
      --dry-run                     Показать, что было бы отправлено модели, без фактической отправки
      --serve                       Запустить REST API сервер Fabric
      --serveOllama                 Запустить REST API сервер Fabric с эндпоинтами ollama
      --address=                    Адрес для привязки REST API (по умолчанию: :8080)
      --api-key=                    API-ключ для защиты серверных маршрутов
      --config=                     Путь к файлу конфигурации YAML
      --version                     Вывести текущую версию
      --listextensions              Вывести все зарегистрированные расширения
      --addextension=               Зарегистрировать новое расширение по пути конфигурационного файла
      --rmextension=                Удалить зарегистрированное расширение по имени
      --strategy=                   Выберите стратегию из доступных стратегий
      --liststrategies              Вывести все стратегии
      --listvendors                 Вывести всех поставщиков
      --shell-complete-list         Вывести сырой список без заголовков/форматирования (для автодополнения оболочки)
      --search                      Включить инструмент веб-поиска для поддерживаемых моделей (Anthropic, OpenAI, Gemini)
      --search-location=            Установить местоположение для результатов веб-поиска (например, 'America/Los_Angeles')
      --image-file=                 Сохранить сгенерированное изображение в указанный путь к файлу (например, 'output.png')
      --image-size=                 Размеры изображения: 1024x1024, 1536x1024, 1024x1536, auto (по умолчанию: auto)
      --image-quality=              Качество изображения: low, medium, high, auto (по умолчанию: auto)
      --image-compression=          Уровень сжатия 0-100 для форматов JPEG/WebP (по умолчанию: не установлен)
      --image-background=           Тип фона: opaque, transparent (по умолчанию: opaque, только для
                                    PNG/WebP)
      --suppress-think              Скрыть текст, заключенный в тегах размышлений
      --think-start-tag=            Начальный тег для секций размышлений (по умолчанию: )
      --disable-responses-api       Отключить Responses API OpenAI (по умолчанию: false)
      --voice=                      Имя голоса TTS для поддерживаемых моделей (например, Kore, Charon, Puck)
                                    (по умолчанию: Kore)
      --list-gemini-voices          Вывести все доступные голоса TTS Gemini
      --notification                Отправить уведомление на рабочий стол по завершении команды
      --notification-command=       Пользовательская команда для уведомлений (переопределяет встроенные
                                    уведомления)
      --yt-dlp-args=                Дополнительные аргументы для yt-dlp (например '--cookies-from-browser brave')
      --thinking=                   Установить уровень рассуждений/размышлений (например, off, low, medium, high или
                                    числовые токены для Anthropic или Google Gemini)
      --show-metadata               Выводить метаданные (токены ввода/вывода) в stderr
      --debug=                      Установить уровень отладки (0: выключен, 1: базовый, 2: подробный, 3: трассировка)
Параметры помощи:
  -h, --help                        Показать это справочное сообщение

Уровни отладки

Используйте флаг --debug для управления журналированием во время выполнения:

  • 0: выключен (по умолчанию)
  • 1: базовая отладочная информация
  • 2: подробная отладка
  • 3: уровень трассировки

Режим пробного запуска

Используйте --dry-run для предварительного просмотра того, что было бы отправлено модели ИИ, без вызова API:

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

Это полезно для отладки шаблонов, проверки построения запросов и проверки форматирования входных данных перед использованием кредитов API.

Расширения

Fabric поддерживает расширения, которые можно вызывать внутри шаблонов. Полная документация доступна в Руководстве по расширениям.

Важно: Расширения работают только внутри файлов шаблонов, а не через прямой ввод stdin. Подробности и примеры см. в руководстве.

Сервер REST API

Fabric включает встроенный сервер REST API, который предоставляет весь основной функционал через HTTP. Запустите сервер командой:

fabric --serve

Сервер предоставляет эндпоинты для:

  • Завершения чата с потоковыми ответами
  • Управления шаблонами (создание, чтение, обновление, удаление)
  • Управления контекстами и сессиями
  • Вывода списков моделей и поставщиков
  • Извлечения транскрипций с YouTube
  • Управления конфигурацией

Полная документация по эндпоинтам, настройке аутентификации и примеры использования доступны в Документации REST API.

Режим совместимости с Ollama

Fabric может выступать в качестве готовой замены Ollama, предоставляя совместимые с Ollama API-эндпоинты. Запустите сервер с помощью:

fabric --serve --serveOllama

Это активирует следующие совместимые с Ollama эндпоинты:

  • GET /api/tags — Вывести доступные паттерны как модели
  • POST /api/chat — Чат-дополнения
  • GET /api/version — Версия сервера

Приложения, настроенные для работы с API Ollama, можно направить на ваш сервер Fabric, что позволит использовать любой из поддерживаемых провайдеров ИИ Fabric через интерфейс Ollama. Паттерны отображаются как модели (например, summarize:latest).

Наш подход к промптингу

Паттерны Fabric отличаются от большинства промптов, которые вы видели.

  • Во-первых, мы используем Markdown, чтобы обеспечить максимальную читаемость и удобство редактирования. Это помогает не только создателю сделать хороший паттерн, но и любому, кто хочет глубоко понять его работу. Важно, это также касается и ИИ, которому вы его отправляете!

Вот пример паттерна Fabric.

https://github.com/danielmiessler/Fabric/blob/main/data/patterns/extract_wisdom/system.md

пример-паттерна

  • Далее, мы крайне ясно формулируем наши инструкции, и используем структуру Markdown, чтобы подчеркнуть, что мы хотим от ИИ и в каком порядке.

  • И наконец, мы склонны использовать секцию System промпта практически эксклюзивно. За более чем год глубокой работы с этим мы просто наблюдали большую эффективность такого подхода. Если это изменится, или нам покажут данные, говорящие об обратном, мы скорректируем нашу стратегию.

Примеры

Следующие примеры используют функцию pbpaste в macOS для вставки из буфера обмена. Смотрите раздел pbpaste ниже для альтернатив в Windows и Linux.

Теперь давайте посмотрим, что можно делать с Fabric.

  1. Запустите паттерн summarize на основе входных данных из stdin. В данном случае — содержимое статьи.

    bash pbpaste | fabric --pattern summarize

  2. Запустите паттерн analyze_claims с опцией --stream для получения немедленных и потоковых результатов.

    bash pbpaste | fabric --stream --pattern analyze_claims

  3. Запустите паттерн extract_wisdom с опцией --stream для получения немедленных и потоковых результатов из любого видео Youtube (аналогично оригинальному вводному видео).

    bash fabric -y "https://youtube.com/watch?v=uXs-zPc63kM" --stream --pattern extract_wisdom

  4. Создание паттернов — вы должны создать файл .md с паттерном и сохранить его в ~/.config/fabric/patterns/[имя_вашего_паттерна].

  5. Запустите паттерн analyze_claims на веб-сайте. Fabric использует Jina AI для преобразования URL в формат markdown перед отправкой модели.

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

Просто используйте Паттерны

скриншот-паттернов-fabric



Если вы не ищете чего-то сложного и просто хотите получить много отличных промптов, вы можете перейти в директорию /patterns и начать исследование!

Мы надеемся, что даже если вы не будете использовать ничего другого из Fabric, одних только Паттернов будет достаточно, чтобы сделать проект полезным.

Вы можете использовать любой из представленных там паттернов в любом ИИ-приложении, будь то ChatGPT или какое-то другое приложение или веб-сайт. Наш план и прогноз состоят в том, что люди вскоре будут делиться гораздо большим количеством паттернов, чем те, которые мы опубликовали, и они будут значительно лучше наших.

Мудрость толпы — вот что решает.

Стратегии Промптинга

Fabric также реализует стратегии промптинга, такие как "Цепочка размышлений" (Chain of Thought) или "Цепочка черновиков" (Chain of Draft), которые могут использоваться в дополнение к базовым паттернам.

Смотрите статью Thinking Faster by Writing Less и раздел Thought Generation на Learn Prompting для примеров стратегий промптинга.

Каждая стратегия доступна как небольшой файл json в директории /strategies.

Модификация промпта стратегии применяется к системному промпту и передается в 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

Стратегии хранятся как JSON-файлы в ~/.config/fabric/strategies/. Смотрите стратегии по умолчанию для спецификации формата.

Пользовательские Паттерны

Вы можете захотеть использовать Fabric для создания собственных паттернов, но не делиться ими с другими. Без проблем!

Теперь Fabric поддерживает специальную директорию для пользовательских паттернов, которая хранит ваши личные паттерны отдельно от встроенных. Это означает, что ваши пользовательские паттерны не будут перезаписаны при обновлении встроенных паттернов Fabric.

Настройка Пользовательских Паттернов

  1. Запустите настройку Fabric:

bash fabric --setup

  1. Выберите опцию "Custom Patterns" (Пользовательские паттерны) в меню "Tools" и введите желаемый путь к директории (например, ~/my-custom-patterns)

  2. Fabric автоматически создаст директорию, если она не существует.

Использование Пользовательских Паттернов

  1. Создайте структуру директории ваших пользовательских паттернов:

bash mkdir -p ~/my-custom-patterns/my-analyzer

  1. Создайте файл вашего паттерна

bash echo "You are an expert analyzer of ..." > ~/my-custom-patterns/my-analyzer/system.md

  1. Используйте ваш пользовательский паттерн:

bash fabric --pattern my-analyzer "analyze this text"

Как Это Работает

  • Система приоритетов: Пользовательские паттерны имеют приоритет над встроенными паттернами с таким же именем
  • Плавная интеграция: Пользовательские паттерны появляются в fabric --listpatterns вместе со встроенными
  • Безопасность при обновлении: Ваши пользовательские паттерны никогда не затрагиваются командой fabric --updatepatterns
  • Приватность по умолчанию: Пользовательские паттерны остаются приватными, пока вы явно не решите ими поделиться

Ваши пользовательские паттерны полностью приватны и не будут затронуты обновлениями Fabric!

Вспомогательные Приложения

Fabric также использует несколько вспомогательных приложений (инструментов) для упрощения интеграции с вашими рабочими процессами. Вот несколько примеров:

to_pdf

to_pdf — это вспомогательная команда, которая конвертирует файлы LaTeX в формат PDF. Вы можете использовать ее следующим образом:

to_pdf input.tex

Это создаст PDF-файл из входного файла LaTeX в той же директории.

Вы также можете использовать ее со stdin, что отлично работает с паттерном write_latex:

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

Это создаст файл с именем output.pdf в текущей директории.

Установка to_pdf

Чтобы установить to_pdf, установите его так же, как вы устанавливаете Fabric, просто с другим именем репозитория.

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

Убедитесь, что в вашей системе установлен дистрибутив LaTeX (например, TeX Live или MiKTeX), так как to_pdf требует наличия pdflatex в системном PATH.

code2context

code2context используется в паре с паттерном create_coding_feature. Он генерирует json-представление директории с кодом, которое может быть передано модели ИИ с инструкциями по созданию новой функции или редактированию кода определенным образом.

Смотрите README паттерна Create Coding Feature Pattern для подробностей.

Установите его сначала, используя:

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

generate_changelog

generate_changelog генерирует журналы изменений на основе истории коммитов git и pull-requests из GitHub. Он проходит через историю git вашего репозитория, извлекает информацию о PR и формирует журналы изменений в формате markdown.

generate_changelog --help

Среди функций — кеширование SQLite для быстрых инкрементальных обновлений, интеграция с GraphQL API GitHub для эффективного получения PR и необязательные улучшенные ИИ-резюме с использованием Fabric.

Установите его с помощью:

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

Подробности об использовании и параметрах смотрите в README для generate_changelog).

pbpaste

В примерах используется программа macOS pbpaste для вставки содержимого из буфера обмена и передачи его в fabric в качестве входных данных. pbpaste недоступен в Windows или Linux, но есть альтернативы.

В Windows вы можете использовать команду PowerShell Get-Clipboard из командной строки PowerShell. При желании можно также создать псевдоним для неё, как для pbpaste. Если вы используете классическую PowerShell, отредактируйте файл ~\Documents\WindowsPowerShell\.profile.ps1, а если используете PowerShell Core, — ~\Documents\PowerShell\.profile.ps1 и добавьте псевдоним:

Set-Alias pbpaste Get-Clipboard

В Linux вы можете использовать xclip -selection clipboard -o для вставки из буфера обмена. Вероятно, вам придется установить xclip с помощью менеджера пакетов. Для систем на Debian, включая Ubuntu:

sudo apt update
sudo apt install xclip -y

Вы также можете создать псевдоним, отредактировав ~/.bashrc или ~/.zshrc и добавив алиас:

alias pbpaste='xclip -selection clipboard -o'

Веб-интерфейс (Fabric Web App)

Fabric теперь включает встроенный веб-интерфейс, который предоставляет графический интерфейс в качестве альтернативы интерфейсу командной строки. Инструкции по установке и обзор возможностей смотрите в README веб-приложения).

Мета

[!NOTE] Особая благодарность следующим людям за их вдохновение и вклад!

  • Джонатан Данн — за то, что является абсолютным MVP-разработчиком проекта, включая руководство над новой версией на Go, а также над GUI! И всё это он делает, будучи штатным врачом!
  • Калеб Сима — за то, что подтолкнул меня к решению сделать этот проект публичным.
  • Эуген Эйслер и Фредерик Рос — за их бесценный вклад в версию на Go.
  • Дэвид Питерс — за его работу над веб-интерфейсом.
  • Джоэл Париш — за очень полезные предложения по структуре каталога Github проекта.
  • Джозеф Текер — за идею флага контекста -c, который добавляет предсозданный контекст из каталога ./config/fabric/ ко всем запросам Паттернов.
  • Джейсон Хаддикс — за идею шитья (цепочки Паттернов) для фильтрации контента с помощью локальной модели перед отправкой в облачную модель, т.е. очистки клиентских данных с использованием llama2 перед отправкой на gpt-4 для анализа.
  • Андре Герра — за помощь в многочисленных компонентах, чтобы сделать вещи проще и более поддерживаемыми.

Основные участники

Даниэль Мисслер Джонатан Данн Скотт Беренс Андре Герра

Участники

contrib.rocks

Сделано с помощью contrib.rocks.

fabric был создан Даниэлем Мисслером в январе 2024 года.

X (ранее Twitter) Подписаться

💜 Поддержите этот проект

Спонсировать

Я трачу сотни часов в год на проект с открытым исходным кодом. Если вы хотите поддержать этот проект, вы можете стать моим спонсором здесь. 🙏🏼

Комментарии
Войдите, чтобы оставить комментарий