Учебное пособие для няни: использование исходного кода diffy для локального развертывания платформы разработки приложений LLM
Учебное пособие для няни: использование исходного кода diffy для локального развертывания платформы разработки приложений LLM

В последнее время я был слишком занят... Я долго откладывал эту статью, и собираюсь сдаться, если не напишу ее...

0. Введение в прикладную платформу LLM

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

Тенсент Юаньци:https://yuanqi.tencent.com/my-creation/agent

Уютный заголовок: www.coze.cn/

СмартфонGLM:chatglm.cn

Байду Цяньфан:console.bce.baidu.com/qianfan/ove…

Вэньсинийян:chat.baidu.com/app/create

темная сторона луны:https://www.moonshot.cn/

Обезьяна без ограничений: ai.infmonkeys.com/

и т. д...

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

Возьмем, к примеру, Tencent Yuanqi:

Процесс создания:

Создание агента в основном включает в себя: имя, введение, аватар, подробные настройки, плагины, базу знаний и рабочий процесс.

Официальный плагин

Бот-магазин

Пока у вас есть хорошие идеи, вы организуете свой рабочий процесс и используете подключаемые инструменты и базовые модели голоса, вы будете «супериндивидуальностью». Созданные агенты также можно легко опубликовать на платформах QQ и WeChat.

Но независимо от того, используют ли эти платформы агенты или нет, у всех могут быть разные мнения.

идеальныйсерединаAgent:Agent = LLM+Planning+Feedback+Tool use

Процесс выполнения агента платформы: оркестровка человеком + LLM + использование инструментов

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

В конце прошлого года я написал статью оAgentизстатья:AIAgent: У меня не просто мозг с искусственным интеллектом!

Когда в статье упоминается структура и идеи Агента, то написано, что по опыту полного использования большой модели планирования+исполнения эффект не очень хороший, поэтому мы можем полностью планировать вручную (оркестровка рабочих процессов), и каждая задача может используйте большую модель для выполнения (плагин), и в Microsoft PromptFlow с открытым исходным кодом есть эта идея, но порог ее использования относительно высок, что отпугивает многих студентов, не являющихся разработчиками. Неожиданно через несколько месяцев удобные платформы визуальных агентов стали доступны повсюду. Какой рулон!

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

Идеи академических исследователей передовые, а исполнительские способности корпоративных сотрудников очень сильны.

Однако в этой статье не рассматриваются ни технология агентов, ни процесс создания агентов, ни выбор бизнес-платформы.

В этой статье рассказывается, как развернуть собственную платформу разработки приложений LLM локально на основе Dify. Вам не нужно полгода, вам нужно всего лишь полдня, с благодарностью стоя на плечах гигантов, чтобы построить свою собственную платформу.

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

1. введение в платформу Dify

Dify Это модель большого языка с открытым исходным кодом (LLM). Платформа разработки приложений. Он включает в себя Backend как услугу (Backend as Концепции Service) и LLMOPs позволяют разработчикам быстро создавать генеративные системы производственного уровня. AI приложение.

Поскольку Dify имеет встроенные ключевые технологические стеки, необходимые для создания приложений LLM, включая поддержку сотен моделей, интуитивно понятный интерфейс оркестрации подсказок, высококачественный механизм RAG, надежную структуру агентов и гибкую оркестровку процессов, он также предоставляет набор простых в использовании интерфейсов и API. По сравнению с инфраструктурой LangChain, которая более технична и ориентирована на исследования, Dify предлагает комплексное решение, которое ближе к производственным потребностям и прошло сложную инженерную разработку и тестирование программного обеспечения.

Это экономит разработчикам много времени на изобретение велосипеда, позволяя людям сосредоточиться на инновационных идеях и бизнес-потребностях, в которых они хорошо разбираются.

2. Сценарии использования Dify

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

На официальном сайте представлены преимущества и сценарии использования платформы Dify:

Начать бизнес,быстрыйиз Волятыиз AI При применении идей в реальности необходимо ускорить как успех, так и неудачу. В реальном мире прошли десятки команд Dify строить MVP (минимально жизнеспособный продукт) для получения инвестиций или через POC (Proof of Concept) выигрывает заказ клиента.

Воля LLM Интеграция в существующий бизнес,Представляя LLM Расширение возможностей существующих приложений и доступа Dify из RESTful API тем самым достигая Prompt Вне связи с бизнес-кодом, в Dify Интерфейс управления предназначен для отслеживания данных, затрат и использования, а также для постоянного улучшения результатов применения.

На уровне предприятия LLM инфраструктура,Некоторые банки и крупные интернет-компании Воля Dify Развертывается внутри предприятия LLM шлюз, ускорение GenAI Технологии внутри предприятияизповышение,и реализоватьсередина Синьхуаизнадзор。

учитывать LLM из границ компетентности,Даже если вы энтузиаст технологий,проходить Dify Вы также можете легко практиковать это Prompt инженерия и Agent технологии, в GPTs До его запуска их уже было более 60,000 Разработчики в Dify Создал свое первое приложение на из.

Если вы просто хотите испытать создание агента,Или вам нужна хорошая идея и вы хотите быстро воплотить ее в жизнь?,На самом деле лучше использовать функции платформы,Они предоставляют более полные функции и услуги.

如果ты工作середина Иметь частное развертываниеизнуждаться,Или вы хотите узнать о создании агентской платформы и стека технологий с технической точки зрения.,Вы можете перейти к следующему шагу.

3. Как развернуть локально

3.1 Подготовка окружающей среды

Я использую среду Ubuntu,первая необходимостьУстановить докериdocker compose

Я установил изdocker Compose версию изv2.

Язык кода:javascript
копировать
sudo curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Затем клонируйте исходный код

Язык кода:javascript
копировать
git clone https://github.com/langgenius/dify.git

Бизнес-потребности окончательного развертыванияизсерединамежду компонентамиPostgresSQL / Redis / Weaviate, для запуска используйте следующую команду:

Язык кода:javascript
копировать
cd docker
docker compose -f docker-compose.middleware.yaml up -d

3.2 Развертывание и запуск серверной службы

3.2.1 среда конды

Язык кода:javascript
копировать
conda create --name dify python=3.10
conda activate dify

3.3.2 Развертывание серверных служб

Этой части инструкций по установке достаточно.

Язык кода:javascript
копировать
# Серверная служба находится в папке API.
cd api
# Копировать конфигурацию среды
cp .env.example .env
# Сгенерируйте случайный ключ и замените .env середина SECRET_KEY из стоимости
OpenSSL rand -base64 42
sed -i 's/SECRET_KEY=.*/SECRET_KEY=<your_value>/' .env
# Среда установки
pip install -r requirements.txt
#  Миграция базы данных
flask db upgrade

3.3.3 Запуск серверной службы

Язык кода:javascript
копировать
# Запустить службу интерфейса API
flask run --host 0.0.0.0 --port=5001 --debug
Язык кода:javascript
копировать
# Запустите рабочую службу и службу асинхронного потребления очереди.
celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail --loglevel INFO

3.3 Развертывание и запуск внешнего сервиса

3.3.1 Среда установки

Здесь обратите внимание, что вам необходимо установить Node.js v18.x (LTS) согласно руководству, иначе при последующей установке будет сообщено об ошибке.

Язык кода:javascript
копировать
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
apt-get install nodejs -y

Установить пакеты зависимостей

Язык кода:javascript
копировать
# Код внешнего интерфейса находится в веб-папке.
cd web
npm install

Если вы также получаете следующую ошибку

Можно обратиться к:https://github.com/langgenius/dify/issues/4549

Воляpackage.json Перейдите в корневой каталог верхнего уровня и выполните npm в этом каталоге. install.

Настройка переменных среды: создание файлов в веб-каталоге. .env.local,икопировать.env.exampleсерединаизсодержание。根据нуждаться修改这些环境变量изценить:

Язык кода:javascript
копировать
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=

Последний код сборки

Язык кода:javascript
копировать
npm run build

3.3.2 Запуск службы

Язык кода:javascript
копировать
npm run start

3.4 Посетите сайт

Последнее посещение http://127.0.0.1:3000 Вы можете использовать локальное развертывание из Дифай~

Следует отметить, что из,тынуждаться去设置середина КонфигурацияLLM(нуждатьсяkey)

Инструменты предоставляются, и многие из них требуют, чтобы вы запросили ключ.

В этой статье не будет описан процесс создания приложений, который аналогичен процессу на других платформах.

3.5 Краткое описание сценария запуска

Подведем итог скрипта запуска службы локализации:

Язык кода:javascript
копировать
# Введите Конда среда
conda activate dify

# задняя часть
cd api
# Запустить службу API
flask run --host 0.0.0.0 --port=5001 --debug
# Запуск рабочей службы
celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail --loglevel INFO

# внешний интерфейс
cd web
# запускатьвнешний интерфейс
npm run start

# доступ
http://127.0.0.1:3000

Фактически при развертывании back-end и front-end сред согласно установочному пакету промежуточные компоненты и require.txt 大致就能了解нуждатьсяиз Стек технологий,Явнешний интерфейсзадняя частьизнуб~Но это не мешает нам развернуть。

4. dify VS langchain

Давайте посмотрим на код, связанный с Агентом. Теперь давайте посмотрим на код платформы AI. На что нам следует обратить внимание в первую очередь? Посмотрите на подсказку!

Язык кода:javascript
копировать
ENGLISH_REACT_COMPLETION_PROMPT_TEMPLATES = """Respond to the human as helpfully and accurately as possible. 

{{instruction}}

You have access to the following tools:

{{tools}}

Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).
Valid "action" values: "Final Answer" or {{tool_names}}

Provide only ONE action per $JSON_BLOB, as shown:

```
{
  "action": $TOOL_NAME,
  "action_input": $ACTION_INPUT
}
```

Follow this format:

Question: input question to answer
Thought: consider previous and subsequent steps
Action:
```
$JSON_BLOB
```
Observation: action result
... (repeat Thought/Action/Observation N times)
Thought: I know what to respond
Action:
```
{
  "action": "Final Answer",
  "action_input": "Final response to human"
}
```

Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.
{{historic_messages}}
Question: {{query}}
{{agent_scratchpad}}
Thought:"""

ENGLISH_REACT_COMPLETION_AGENT_SCRATCHPAD_TEMPLATES = """Observation: {{observation}}
Thought:"""

ENGLISH_REACT_CHAT_PROMPT_TEMPLATES = """Respond to the human as helpfully and accurately as possible. 

{{instruction}}

You have access to the following tools:

{{tools}}

Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).
Valid "action" values: "Final Answer" or {{tool_names}}

Provide only ONE action per $JSON_BLOB, as shown:

```
{
  "action": $TOOL_NAME,
  "action_input": $ACTION_INPUT
}
```

Follow this format:

Question: input question to answer
Thought: consider previous and subsequent steps
Action:
```
$JSON_BLOB
```
Observation: action result
... (repeat Thought/Action/Observation N times)
Thought: I know what to respond
Action:
```
{
  "action": "Final Answer",
  "action_input": "Final response to human"
}
```

Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.
"""

ENGLISH_REACT_CHAT_AGENT_SCRATCHPAD_TEMPLATES = ""

Почему это так знакомо! ! ! ! Это точно то же самое, что и Agentizsystem_prompt в langchain. Не поймите меня неправильно, структура dify вообще не зависит от langchain.

оdifyиlangchainDify vs Langchainсерединаупомянул:

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

Если вы привыкли к настройке кода и хотите иметь точный контроль на уровне кода, LangChain подойдет больше.

В итоге,Dify выделяется архитектурными инновациями и гибкостью,Предоставляет широкий спектр точек взаимодействия для улучшения интеграции.,иLangchain则проходить其开发库и集серединаиз Решения по интеграции моделей становятся более рациональными.изметод。

Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024, приходите и разделите со мной приз!

ссылка:

https://docs.dify.ai/v/zh-hans

https://cloud.tencent.com/developer/article/2354001

https://cloud.tencent.com/developer/article/2354001

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода