by Daniel Miessler (community) Windows, macOS, Linux
Фреймворк для "дополнения человека с помощью AI" через систему паттернов. Каждый паттерн — промпт для конкретной задачи: суммаризация, извлечение идей, создание контента, анализ угроз безопасности. Что внутри: - 200+ готовых паттернов: summarize, extract_wisdom, write_essay, create_threat_model... - Пайплайн: YouTube → транскрипт → суммаризация одной командой - Собственные паттерны: просто создать .md файл - Работает с любым OpenAI-совместимым API - Встроенный yt (YouTube транскрипты) и jina (веб-контент) - Идеально для OSINT, анализа и написания контента
# 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, создан для кодирования с несколькими ИИ-агентами
Доступен для macOS, Linux и Windows

fabricfabric — это открытый фреймворк для расширения возможностей человека с помощью ИИ.English · Китайский
)
Обновления • Что и зачем • Философия • Установка • Использование • REST API • Примеры • Просто используйте шаблоны • Пользовательские шаблоны • Вспомогательные приложения • Мета
С начала эпохи современного ИИ в конце 2022 года мы видели необычайно большое количество ИИ-приложений для выполнения задач. Существуют тысячи веб-сайтов, чат-ботов, мобильных приложений и других интерфейсов для использования всего имеющегося ИИ.
Вс это очень захватывающе и мощно, но интегрировать этот функционал в нашу жизнь непросто.
Fabric был создан для решения этой проблемы путём создания и организации основных единиц ИИ — самих промптов!
Fabric организует промпты по реальным задачам, позволяя людям создавать, собирать и организовывать свои самые важные ИИ-решения в одном месте для использования в избранных инструментах. А если вы предпочитаете командную строку, вы можете использовать сам Fabric в качестве интерфейса!
Для подробного ознакомления с Fabric и его внутренней работой прочитайте документацию в папке docs. Также существует чрезвычайно полезный и регулярно обновляемый DeepWiki для Fabric.
Нажмите, чтобы просмотреть последние обновления
Уважаемые пользователи!
Мы делаем здесь, в Fabric, так много захватывающих вещей, что я хотел дать здесь краткое изложение, чтобы дать вам представление о нашей скорости разработки!
Ниже перечислены новые функции и возможности, которые мы добавили (сначала самые последние):
azurecommon./swagger/index.html с исчерпывающей документацией REST API, улучшенными руководствами для разработчиков и улучшенной обнаруживаемостью эндпоинтов для более простой интеграции.create_conceptmap для визуального представления знаний с использованием Vis.js, вводит категорию WELLNESS с шаблонами психологического анализа и обновляет до Claude Sonnet 4.5.openai-go/azure с улучшенной аутентификацией и поддержкой версии API по умолчанию.--transcribe-file, --transcribe-model и --split-media-file.Эти функции представляют собой наше стремление сделать Fabric самой мощной и гибкой платформой для расширения ИИ-возможностей!
Имейте в виду, что многие из них были записаны, когда Fabric был основан на Python, поэтому не забудьте использовать актуальные инструкции по установке ниже.
fabricFabric развивается очень быстро.
Следите за последними функциями, изучая ЖУРНАЛ ИЗМЕНЕНИЙ для всех последних обновлений.
AI — это не вещь; это усилитель вещи. И эта вещь — человеческая креативность.
Мы считаем, что цель технологии — помогать людям расцветать, поэтому, когда мы говорим об AI, мы начинаем с человеческих проблем, которые хотим решить.
Наш подход состоит в том, чтобы разбивать проблемы на отдельные части (см. ниже), а затем применять к ним AI по очереди. Приведенные ниже — некоторые примеры.
Промпты хороши для этого, но самая большая проблема, с которой я столкнулся в 2023 году — которая существует и по сей день — это огромное количество AI-промптов на просторах сети. У каждого из нас есть полезные промпты, но сложно находить новые, знать, хороши ли они, а также управлять различными версиями тех, которые нам нравятся.
Одна из основных функций fabric — помогать людям собирать и интегрировать промпты, которые мы называем Шаблонами, в различные области их жизни.
Fabric имеет Шаблоны для всевозможных жизненных и рабочих задач, включая:
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'
brew install fabric-ai
yay -S fabric-ai
Используйте официально поддерживаемый инструмент Microsoft Winget:
winget install danielmiessler.Fabric
scoop install fabric-ai
Для установки Fabric убедитесь, что Go установлен, а затем выполните следующую команду.
# Установка Fabric напрямую из репозитория
go install github.com/danielmiessler/fabric/cmd/fabric@latest
Запускайте 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
Если всё работает, вы готовы к использованию.
Fabric поддерживает широкий спектр AI-провайдеров:
Нативные интеграции:
Провайдеры, совместимые с OpenAI:
Запустите 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 (например, 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
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:
# 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:
# 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:
# 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. Подробности и примеры см. в руководстве.
Fabric включает встроенный сервер REST API, который предоставляет весь основной функционал через HTTP. Запустите сервер командой:
fabric --serve
Сервер предоставляет эндпоинты для:
Полная документация по эндпоинтам, настройке аутентификации и примеры использования доступны в Документации REST API.
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.
Запустите паттерн summarize на основе входных данных из stdin. В данном случае — содержимое статьи.
bash
pbpaste | fabric --pattern summarize
Запустите паттерн analyze_claims с опцией --stream для получения немедленных и потоковых результатов.
bash
pbpaste | fabric --stream --pattern analyze_claims
Запустите паттерн extract_wisdom с опцией --stream для получения немедленных и потоковых результатов из любого видео Youtube (аналогично оригинальному вводному видео).
bash
fabric -y "https://youtube.com/watch?v=uXs-zPc63kM" --stream --pattern extract_wisdom
Создание паттернов — вы должны создать файл .md с паттерном и сохранить его в ~/.config/fabric/patterns/[имя_вашего_паттерна].
Запустите паттерн analyze_claims на веб-сайте. Fabric использует Jina AI для преобразования URL в формат markdown перед отправкой модели.
bash
fabric -u https://github.com/danielmiessler/fabric/ -p analyze_claims
Если вы не ищете чего-то сложного и просто хотите получить много отличных промптов, вы можете перейти в директорию /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.
bash
fabric --setup
Выберите опцию "Custom Patterns" (Пользовательские паттерны) в меню "Tools" и введите желаемый путь к директории (например, ~/my-custom-patterns)
Fabric автоматически создаст директорию, если она не существует.
bash
mkdir -p ~/my-custom-patterns/my-analyzer
bash
echo "You are an expert analyzer of ..." > ~/my-custom-patterns/my-analyzer/system.md
bash
fabric --pattern my-analyzer "analyze this text"
fabric --listpatterns вместе со встроеннымиfabric --updatepatternsВаши пользовательские паттерны полностью приватны и не будут затронуты обновлениями Fabric!
Fabric также использует несколько вспомогательных приложений (инструментов) для упрощения интеграции с вашими рабочими процессами. Вот несколько примеров:
to_pdfto_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.
code2contextcode2context используется в паре с паттерном create_coding_feature.
Он генерирует json-представление директории с кодом, которое может быть передано модели ИИ
с инструкциями по созданию новой функции или редактированию кода определенным образом.
Смотрите README паттерна Create Coding Feature Pattern для подробностей.
Установите его сначала, используя:
go install github.com/danielmiessler/fabric/cmd/code2context@latest
generate_changeloggenerate_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).
В примерах используется программа 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 теперь включает встроенный веб-интерфейс, который предоставляет графический интерфейс в качестве альтернативы интерфейсу командной строки. Инструкции по установке и обзор возможностей смотрите в README веб-приложения).
[!NOTE] Особая благодарность следующим людям за их вдохновение и вклад!
-c, который добавляет предсозданный контекст из каталога ./config/fabric/ ко всем запросам Паттернов.llama2 перед отправкой на gpt-4 для анализа.Сделано с помощью contrib.rocks.
fabric был создан Даниэлем Мисслером в январе 2024 года.
Я трачу сотни часов в год на проект с открытым исходным кодом. Если вы хотите поддержать этот проект, вы можете стать моим спонсором здесь. 🙏🏼