Поскольку предыдущая статья закладывает основу, эта статья начинается с разговора о том, как использовать рабочий процесс ИИ и приложения «ИИ», в которых нет ИИ.
в прошлом месяце,мы говорили《использовать Dify и AWS Bedrock Веселиться Anthropic Claude 3》,Он объясняет, какиспользовать Лучший интерактивный опытиз Prompt IDE, которая поможет нам удобно отлаживать AI в приложении Подскажите и быстро создайте AI приложение.
Полмесяца назад, Диди Команда запустила AI Workflow новые возможности v0.6.0,Хотя эта функция была сделана с конца прошлого года.,Но поскольку функция сложна,Огромное количество изменений кода,до сегодняшнего дня v0.6.4 Только после того, как он будет официально выпущен, он вступит в относительно стабильный период, поэтому будет уместно написать новую статью, чтобы поговорить об этом.
Почувствуйте, чем команда Dify занималась последние две недели:
Быстрые маленькие шаги, молодцы.
и получить API Key Очень низкая сложность MoonShot, недавно незаметно запущенный “Tool Use” Функция. В сообществе открытого исходного кода мы обычно называем эту функцию Function Вызовите, с помощью специальной структуры запроса и слов подсказки, автоматическую предпочтительную модель и вызов определяемых пользователем удаленных функций для достижения интеллектуальных результатов. RPA вызов.
Я планирую разделить все, что связано с рабочим процессом, на две статьи. Я не хочу переключать модели в процессе, поэтому выбрал ту, которая поддерживает «Вызов функций». В следующей статье мы поговорим о том, как использовать эту функцию и объединить ее с «Рабочим процессом», чтобы реализовать интересную автоматизацию. Эта статья является базовой. Давайте сначала воспользуемся ее основными функциями. Уровень сложности, вероятно, «просто имейте навыки».
Что я использовал в этой статье Dify и WordPress из Docker Файлы конфигурации, связанные с запуском в один клик, теперь имеют открытый исходный код. soulteary/dify-with-wordpress,Если вас интересует какая-либо конфигурация использования, отличная от официальной оптимизации, советы по обслуживанию.,Ниже вы можете прочитать раздел «Оптимизация обслуживания».
Начнем с базового практического боя.
Хотите завершить практику гладко,Я рекомендую вам установить Docker,Независимо от того, есть ли в вашем устройстве видеокарта или нет.,Вы можете настроить его в соответствии с предпочтениями вашей операционной системы.,Обратитесь к этим двум Главазавершить базовую средуиз Конфигурация《на основе Docker Среда глубокого обучения: Windows Глава》、《на основе Docker из Deep Learning Environment: Getting Started Глава》。конечно,использовать Docker после,Есть много вещей, которые вы можете сделать,например:ДоДесятки практик, связанных с Docker,существования Я не буду здесь вдаваться в подробности.
существовать Доиздва или три Главастатья《Пучок WordPress становиться BaaS Сервис:API вызовгид》、《WordPress попрощаться MySQL:Docker SQLite WordPress》、《Подробности упаковки образа WordPress SQLite Docker》середина,Я представил легкийотредактировано、Возможность быстрого запуска существует локально из WordPress, а также возможность предоставить API Интерактивный WordPress план. Если вам интересно, вы можете прочитать это самостоятельно, но я не буду здесь вдаваться в подробности.
Для того, чтобы было проще перекинуть содержание этой статьи,Я упаковал готовый вариантиз、легкийотредактировано、можетпоставлять API Интерактивный WordPress Docker Зеркало, проект теперь с открытым исходным кодом soulteary/docker-wp-api,Метод очень прост:
docker pull soulteary/wp-api:6.5.2-sqlite
Вышеуказанная команда завершена Docker Загрузите образ, а затем настройте его аналогично приведенному ниже, чтобы быстро запустить образ. WordPress:
version: '3'
services:
wordpress:
image: soulteary/wp-api:6.5.2-sqlite
restart: always
ports:
- 8080:80
volumes:
- ./wordpress:/var/www/html
конечно,Чтобы сделать это проще,я будустатья Связанныйизкоди Конфигурация Все Открытый исходный код прибыл soulteary/dify-with-wordpress,ты можешьсуществоватьпроектсередина Получить всеизкод。проектсерединаиз Конфигурация Воля Dify Это связано с зависимостями WordPress. Все упаковано вместе:
version: '3'
services:
# API service
api:
image: langgenius/dify-api:0.6.4
restart: always
env_file:
- ./config/api.env
- ./config/middleware.env
depends_on:
- db
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
# worker service
worker:
image: langgenius/dify-api:0.6.4
restart: always
env_file:
- ./config/worker.env
- ./config/middleware.env
depends_on:
- db
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
# Frontend web application.
web:
image: langgenius/dify-web:0.6.4
restart: always
environment:
EDITION: SELF_HOSTED
CONSOLE_API_URL: ''
APP_API_URL: ''
SENTRY_DSN: ''
# The postgres database.
db:
image: postgres:15-alpine
restart: always
environment:
PGUSER: postgres
POSTGRES_PASSWORD: difyai123456
POSTGRES_DB: dify
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- ./volumes/db/data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 1s
timeout: 3s
retries: 30
# The redis cache.
redis:
image: redis:6-alpine
restart: always
volumes:
- ./volumes/redis/data:/data
command: redis-server --requirepass difyai123456
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
# The Weaviate vector store.
weaviate:
image: semitechnologies/weaviate:1.19.0
restart: always
volumes:
- ./volumes/weaviate:/var/lib/weaviate
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
DEFAULT_VECTORIZER_MODULE: 'none'
CLUSTER_HOSTNAME: 'node1'
AUTHENTICATION_APIKEY_ENABLED: 'true'
AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih'
AUTHENTICATION_APIKEY_USERS: 'hello@dify.ai'
AUTHORIZATION_ADMINLIST_ENABLED: 'true'
AUTHORIZATION_ADMINLIST_USERS: 'hello@dify.ai'
# The DifySandbox
sandbox:
image: langgenius/dify-sandbox:latest
restart: always
cap_add:
- SYS_ADMIN
environment:
API_KEY: dify-sandbox
GIN_MODE: release
WORKER_TIMEOUT: 15
nginx:
image: nginx:latest
restart: always
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- api
- web
ports:
- "8082:80"
wordpress:
image: soulteary/wp-api:6.5.2-sqlite
restart: always
ports:
- 8083:80
volumes:
- ./wordpress:/var/www/html
После того как мы получим код проекта, выполняем docker-compose up -d
После этого, подождав некоторое время, мы можем получить доступ соответственно в браузере:
http://localhost:8082
Приходитьинициализацияидоступ Difyhttp://localhost:8083
Приходитьинициализацияидоступ WordPressкогда дваприложение Всеинициализация После завершения,Мы только что закончили все это.
Если вы тоже часто пишетестатьяили текст Характер Материал,Тогда я верю, что ты можешь быть таким же, как я.,существуют Когда следует дать подходящее название письменному контенту,Вы можете волноваться и чесать голову.
Так,Давайте сначала реализуем простую из Фунцию,позволять WordPress Когда мы пишем контент, мы можем автоматически генерировать подходящий заголовок на основе контента. Вы можете сделать выводы из одного примера, чтобы лучше других, из «генерации контента, оптимизации» также есть AI изменять.
Нажмите на аватар пользователя в правом верхнем углу интерфейса.,Нажмите «Настройки» в раскрывающемся меню существования.,существуют Выберите меню «Модель поставщика» слева во всплывающем окне.,может Видеть Dify Поддерживает настройку всех типов моделей.
Скуществовать пролистнуть список вниз,Найдите «Темную сторону Луны»,Затем Пучокнасиз Модель API Token настроен на Dify середина.
После завершения настройки,Существует это всплывающее окно. Выберите «Настройки модели системы» вверху.,Установите «Модель системного вывода» на самый быстрый отклик и наименьшую стоимость из модели 8K.
Когда обе конфигурации настроены, во всплывающем окне отображается модель существования Dify. Он полностью пригоден к использованию.
Закройте всплывающее окно выше,нас Создайтеновыйизгенерация текстаприложение,ты можешьпо твоемуизпредпочтения Приходитьзаполнятьприложениеиззаголовокиописывать。
По нашему воображению,насиз Модельприложениедолженможетв соответствии снаспоставлятьизсодержание,для автоматического создания подходящего заголовка,Работа по лучшей модели оправдывает ожидания,нас Можетсуществовать Dify из IDE завершено в Prompt от Отладка и Написание работ.
Здесь рекомендуется использовать относительно иерархическую структуру. Markdown грамматика Приходить Давать Модель“установить некоторые правила”,Эффект будет относительно лучше,Здесь предполагается, что модель является «сердцем машины» репортера,Умеет копать контент и писать заголовки:
Вы — главный репортер Media Machine Heart, профессиональной платформы в области искусственного интеллекта.,Хорошо на основе Пользовательский контент,Изысканный и уместныйиззаголовок。
## Генерация требований
- Название как можно больше AI Связанный
- Титульные результаты не превышают 20 Характер
- Создать только один заголовок
- Выводить только содержимое заголовка
## Пользовательский контент
{{content}}
## Вывод результатов заголовка
существует. В приведенном выше слове-подсказке мы задаем имя под названием “content
” изпеременное, существование, за которым следуют изреальные моделивызов, мы можем существовать API Содержимое этих данных динамически корректируется в параметрах запроса для решения различных задач по созданию заголовков статей.
Потому что мы хотим, чтобы генерация заголовков была относительно разумной.,исодержаниеотносительно Связанныйсекс,изаголовок Характер Число относительно небольшое,Таким образом, мы можем обратиться к вышеуказанному методу для установки параметров модели.,Приходите, чтобы выбрать модель извызов за меньшее время.
Поскольку мы Prompt Все подсказки выбираются из слов, а все символы — «Сердце машины», поэтому проверочный тест из статьи также сообщается с «Сердцем машины». Например, здесь я выбираю из. “Линус спрей AI Hype из отчета Главы”。
Вставьте содержимое теста в диалоговое окно отладки и нажмите «Выполнить». Мы сможем убедиться, что модель находится в этом состоянии. Prompt ивызов из ведет себя по параметрам,Тебе нравится говорить?,Для отладки и сравнения можно открыть несколько разных моделей.
Вы можете увидеть это здесь,существуютдо из Быстрый запрос,Хотя ощущение «Сердца машины» в названии не было создано (модель, созданная из названия, немного скучна по сравнению с ней),Тем не менее, он создал строку, соответствующую требованиям.Характер Требования к собеседованиюиззаголовок,Выполните требования для продолжения броска. Если у вас более высокие требования,Вы можете терпеливо корректировать приведенное выше слово.
Итак, начнем с WordPress серединаизбросать。
существовать Dify Конфигурация из AI приложениестраницасередина,Нажимаем кнопку «Опубликовать»,существоватьвыпадающее менюсерединавыбирать“доступ API", мы можем узнать, как передать API Конфигурация доступа хорошая из AI приложениеиз В документации указано。
Нам просто нужно позвонить /completion-messages
интерфейс, просто Prompt Средняя настройка из content
Просто передайте интерфейс.
существоватьвызов Dify API по истечении времени нам необходимо пройти аутентификацию, в правом верхнем углу этой страницы нажмите «API». Ключ" кнопка для создания API Просто ключ.
// вызов dify сервис для генерации титров
function generate_title_by_content($content)
{
$ch = curl_init();
curl_setopt(
$ch,
CURLOPT_URL,
"http://10.11.12.90:8082/v1/completion-messages"
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer app-YChjQYVOeEgiMR6tsmrXfVZM",
"Content-Type: application/json",
]);
$payload = [
"inputs" => [
"content" => $content,
],
"response_mode" => "blocking",
"user" => "soulteary",
];
curl_setopt(
$ch,
CURLOPT_POSTFIELDS,
json_encode($payload, JSON_UNESCAPED_UNICODE)
);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if (empty($data["answer"])) {
return "AI Не удалось создать заголовок";
}
$title = $data["answer"];
$title = str_replace('"', "", $title);
return $title;
}
Созданный Dify AI приложениеиз API Key Наконец, мы можем записать извызов в приведенном выше документе в простой вид. PHP Модель вызывает функцию. Эта функция получает параметр (содержимое статьи) и передает содержимое статьи в Dify В структуре извызов, когда Dify вызов Moonshot После модели мы анализируем результаты вызова и извлекаем возвращенный контент из answer
Характерчасть,Вы получаете модель, созданную на основе содержимого заголовка.
И пусть WordPress Когда мы можем существовать из нашей статьи, у которой есть содержание и нет заголовка, функция вызова выше становится еще проще (с помощью WordPress Умеренные возможности настройки hooks/the_post):
// Когда статья публикуется или обновляется, если заголовок пуст, заголовок генерируется автоматически.
add_action("the_post", "update_post_title");
function update_post_title($post)
{
// Когда заголовок сохраняется в существовании, он больше не будет генерироваться.
if (!empty($post->post_title)) {
return;
}
// создать заголовок
$post_title = generate_title_by_content($post->post_content);
// Обновить заголовок в базе данных
wp_update_post(["ID" => $post->ID, "post_title" => $post_title]);
// Обновить текущий объект статьи
$post->post_title = $post_title;
}
Полная реализация плагина, может существовать soulteary/dify-with-wordpress/title-generate.php найден, вы можете поместить этот файл в свой автозагрузку WordPress Каталог программ wordpress/wp-content/plugins/title-generate.php
Место, где вы существовали WordPress Включите этот плагин в фоновом режиме в разделе «Управление плагинами». (Примечание о замене http://10.11.12.90:8082/v1/completion-messages
Настоящее развертывание для вас Dify из IP адрес или доменное имя)
здесь,Мы все еще ленивы,Давайте пока воспользуемся сердцем машиныиз1 статьяПриходитькак“заголовоксгенерированный материал”。
Откройте сердце машины из статьи,Часть копировать используется для создания заголовков и текстового контента. конечно,Вы также можете написать некоторый контент самостоятельно,Вместо этого мы находим материалы для тестирования и проверки непосредственно в Интернете.
Далее открываем WordPress В фоновом режиме создайте Главу новую статью, а затем введите в нее какой-нибудь контент. Мне здесь лень, и я решил вставить содержимое статьи, которую я только что нашел из Machine Heart. Поскольку ты хочешь AI Чтобы создать заголовок, мы просто оставляем поле заголовка пустым.
Когда мы нажимаем кнопку «Опубликовать», WordPress Да, мы настроили это выше. Dify AI приложение,Отправьте содержание нашей статьи в Dify, создайте новое слово из (полное из) подсказки, а затем Moonshot изModel делает запрос и заполняет область заголовка результатами генерации модели.
конечно,Потому что настройки параметров модели, которые мы упомянули выше, относительно разумны.,Это время должно существовать 1 Секунды до прибытия 2 между секундами.
Потому что мы Prompt Слова подсказки и параметры вызова модели сохраняются. Dify серединаиз, поэтому, если мы хотим улучшить модель правил генерации, стиля и количества генерации, нам нужно только обновить приведенное выше Dify IDE серединаиз Prompt Не правда ли, очень удобно подсказывать содержание слова, не модифицируя программу?
Конфигурация проекта Dify по умолчанию в настоящее время имеет относительно большое пространство, что может сделать конфигурацию более простой и легкой в обслуживании и управлении в долгосрочной перспективе.
Чиновник очень внимательныйизсуществоватьпроектсерединапоставлять了一键启动изКонфигурационный файл,Но если внимательно просмотреть,Вы обнаружите, что официальный представитель предоставляет как можно больше вариантов.
Однако, Диди Связанный Служитьиз Конфигурация На самом деле сейчас это немного сложно,API и Worker — это одно и то же изображение,Но существуют в другом режиме работы,Их конфигурации несколько отличаются.
Итак, мы можем пройти Compose File из env file Функция файлабстрактныйиаккуратный,позволятьпозвоночник Конфигурационный файл более понятен и краток. Например, мы можем изменить оригинал. 230 Многострочная конфигурация упрощена до следующего более лаконичного и красивого формата:
version: '3'
services:
# API service
api:
image: langgenius/dify-api:0.6.4
restart: always
env_file:
- ./config/api.env
- ./config/middleware.env
depends_on:
- db
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
# Worker service
worker:
image: langgenius/dify-api:0.6.4
restart: always
env_file:
- ./config/worker.env
- ./config/middleware.env
depends_on:
- db
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
В соответствии с потребностями обслуживания из переменных среды мы сохраняем две потребности обслуживания из переменных среды (конфигурации). config/api.env
и config/worker.env
два файласередина,И два Служитьобщийизбаза данных Связанный Конфигурация,нас Может保存существовать config/middleware.env
, добиться «конфигурации общей среды» и изменить один файл и две службы.
чиновник Nginx Файл конфигурации следует использовать для справки. Nginx Docker контейнерсерединамодульизменятьобработаноиз Конфигурация Пример,Связанныйиз Конфигурационный Всего в файле три, он использует традиционную вложенную конфигурацию и содержит избыточную конфигурацию обратного прокси, хотя были предприняты попытки абстрагировать одну конфигурацию, называемую proxy.conf
из конфигурации.
Мы можем использовать краткое выражение для завершения того же обращения, и даже изменение конфигурации будет более подходящим. «Расширение», абстрактно необходимо распределить трафик из "внешний интерфейс" и «Бэкенд», существование нужно расширять только при необходимости «Количества порции достаточно»:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
client_max_body_size 15M;
server {
listen 80;
server_name _;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
location @backend {
proxy_pass http://api:5001;
}
location @frontend {
proxy_pass http://web:3000;
}
location /console/api {
try_files $uri $uri/ @backend;
}
location /api {
try_files $uri $uri/ @backend;
}
location /v1 {
try_files $uri $uri/ @backend;
}
location /files {
try_files $uri $uri/ @backend;
}
location / {
try_files $uri $uri/ @frontend;
}
}
}
О прочем из оптимизации конфигурации、приложение Конфигурациядеталь,Подробнее об этом мы расскажем в следующих статьях,здесь Давайте сначала поговорим об этомздесь。
ХОРОШО,На этом статья Глава закончится.,Далее в статье,нас Продолжим разговор о том, как построить “AI Рабочий процесс», лучше вам из нет AI изприложение,Способность ИИ изменять.
Что касается некоторых неизведанных предзнаменований, скрытых в этой статье.,На самом деле, есть много интересных способов играть.,например может быть WordPress стать Недорогим, простым и легким RAG База знаний с управлением версиями CMS, сопоставляющая модель использования с управлением версиями Picture Bed.
Увидимся в следующей статье.
--EOF
У нас есть небольшая группа по метанию, в которой мы собираем друзей, которые любят бросать и честны друг с другом.
Мы вместе поговорим о программном и аппаратном обеспечении в существовании.、HomeLab、Программирование、В жизни и на работесерединаизнекоторые вопросы,Время от времени я также делюсь в группе некоторой технической информацией.
Что касается стандартов поиска друзей, пожалуйста, обратитесь к следующей статье:
Су Ян: Новым друзьям: Голосуйте за жизнь и продолжайте искать лучших друзей
конечно,При добавлении друзей через следующую статью Главы,Пожалуйста, укажите ваше настоящее имя, компанию или школу, источник и название.,Цените время друг друга :D
Су Ян: Насчет того, чтобы бросить группу в группу из
В этой статье используется подпись 4.0 интернациональность (CC BY 4.0)» Лицензионное соглашение, его можно перепечатывать, либо повторно изменять и использовать, но с обязательным указанием источника. подпись 4.0 интернациональность (CC BY 4.0)
Автор статьи: Су Ян
Время создания: 24 апреля 2024 г.
Статистическое количество слов: 12884 слова.
Время чтения: 26 минут на чтение.
Ссылка на эту статью: https://soulteary.com/2024/04/24/use-dify-and-moonshot-api-to-build-your-ai-workflow-make-non-ai-applications-goto-ai.html