Введение
В постоянно развивающейся сфере маркетинга автоматизация — это существенный шаг вперед. Создание контента имеет первостепенное значение, но зачастую оно становится обременительной задачей, отнимающей много времени. Ключ к решению проблемы находится на пересечении искусственного интеллекта и обработки языка.
Поговорим о том, как создать маркетингового ИИ-помощника, способного оптимизировать процесс создания контента. Такой помощник будет полезен как опытному маркетологу, так и владельцу малого бизнеса!
Руководство на YouTube и исходный код
- Посмотрите версию этого руководства на YouTube.
- Исходный код здесь.
Разработка помощника
Маркетинговый ИИ-помощник использует LangChain и OpenAI для создания контента. Он работает на основе разработки серии “цепочек” — цепочки публикаций в блоге, цепочки YouTube-сценария и цепочки видеоконтента для YouTube.
Сначала познакомимся с LLMChain, представим структуру модели и промптов, создадим первый шаблон промптов и цепочку.
Затем представим SimpleSequentialChain, которая может объединять отдельные входные и выходные цепочки, чтобы создавать более сложные модели.
Потом объединим все цепочки с помощью SequentialChain, что позволит создать сложную модель, такую как цепочка автоматизации маркетинга, на которой будет работать приложение.
Наконец, используем Streamlit для создания фронтенда маркетингового ИИ-помощника.
Часть 1. Базовые настройки
Шаг 1. Настройка среды
Прежде чем начать, нужно убедиться, что у нас установлены все необходимые пакеты.
- LangChain: фреймворк, упрощающий использование больших языковых моделей.
- OpenAI: большая языковая модель, которую мы будем использовать.
- Streamlit: фреймворк для создания веб-приложений на Python.
- Python-dotenv: пакет для управления переменными окружения.
Чтобы установить эти пакеты, откройте терминал и запустите:
pip install langchain openai streamlit python-dotenv
Шаг 2. Получение API-ключа OpenAI
Далее вам необходимо получить API-ключ OpenAI. Это уникальный ключ, открывающий доступ к модели GPT-3 (GPT-3.5/ChatGPT, GPT-4). После регистрации учетной записи в OpenAI вы найдете API-ключ на дашборде.
Полученный ключ нужно надежно сохранить в файле .env. В каталоге проекта создайте файл .env и добавьте в него следующую строку:
OPENAI_API_KEY=ваш_ключ_openai
Замените ваш_ключ_openai
на свой действительный ключ OpenAI. Этот файл будет использоваться для безопасного хранения API-ключа.
Шаг 3. Настройка файла app.py и импорт библиотек
Создадим главный файл Python, app.py
. В нем и будем разрабатывать маркетингового ИИ-помощника.
Начнем с импорта необходимых библиотек и загрузки переменных среды:
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SimpleSequentialChain, SequentialChain
import os
from dotenv import load_dotenv
load_dotenv()
В этих строках кода импортируется класс OpenAI из модуля langchain.llms, который позволяет взаимодействовать с моделью GPT. Кроме того, импортируются классы PromptTemplate и LLMChain, которые будут использоваться для создания промптов и цепочек.
Функция load_dotenv() загружает переменные среды OPENAI_API_KEY
из файла .env.
Часть 2. Компоновочные блоки LangChain
Шаг 4. Обзор основных компонентов
Прежде чем приступить к написанию кода, сделаем краткий обзор компонентов, которые будем использовать.
- Большая языковая модель (LLM): экземпляр модели GPT-3.
- Шаблон промптов (Prompt Template): простая инструкция для LLM. Она принимает входные переменные и использует их в шаблоне.
- Цепочка (Chain): комбинация LLM и шаблона промптов. Она является самой малой рабочей единицей в LangChain.
Эти три компонента будут использованы для разработки генератора публикаций в блоге.
Шаг 5. Создание первой LLMChain
Чтобы создать первую цепочку, нужно инициализировать LLM, разработать шаблон промптов, а затем объединить их в цепочку.
Настройте LLM и первый шаблон промптов:
# Пример LLMChain
# Модель
llm = OpenAI(temperature=0.9)
# Промпт
blog_prompt_template = PromptTemplate(
input_variables = ['product_description'],
template = 'Write a blog post on {product_description}'
)
# Цепочка
blog_chain = LLMChain(llm=llm, prompt=blog_prompt_template, verbose=True)
# Запуск
product_description = 'best eco-friendly coffee'
blog_chain.run(product_description)
Совет: параметр temperature управляет рандомностью выходных данных модели. Он принимает значения от 0 до 1, где мы установили значение 0,9, поскольку хотим получить много новых идей, в то время как меньшее значение, например 0, делает модель более детерминированной.
В приведенном выше коде настраивается LLM и создается шаблон промптов, который принимает описание продукта и генерирует в блоге публикацию о нем. Затем эти два шаблона объединяются, чтобы сформировать цепочку. Потом запускается LLMChain с product_description.
Часть 3. Освоение основ цепочек в LangChain
Шаг 6. Создание SimpleSequentialChain
Пока была создана одна цепочка. Теперь создадим последовательность цепочек, которые формируются друг за другом.
Второй промпт создаст YouTube-сценарий, используя в качестве входных данных публикацию в блоге:
# Пример SimpleSequentialChain
# Промпт 2
youtube_script_template = PromptTemplate(
input_variables = ['blog'],
template = '''Write an engaging Youtube Short video script
for a new product based on this blog content: {blog}.'''
)
# Цепочка 2
youtube_script_chain = LLMChain(llm=llm, prompt=youtube_script_template,
verbose=True, output_key='yt_script')
Теперь LLMChain включает output_key, установленный на yt_script. Эти ключи важны, поскольку используются для передачи вывода одной цепочки в другую.
На этом этапе вы можете задаться вопросом: мы ведь не устанавливали output_key в примере с blog_chain? И вы будете правы! Нужно обновить цепочку blog_chain, чтобы включить в нее ключ output_key.
# Цепочка
blog_chain = LLMChain(llm=llm, prompt=blog_prompt_template,
verbose=True, output_key='blog')
Теперь можно создать SimpleSequentialChain, которая принимает blog_chain и youtube_script_chain:
# Sequential Chain
simple_chain = SimpleSequentialChain(chains=[blog_chain, youtube_script_chain],
verbose=True
)
# Запуск
product_description = 'best eco-friendly coffee'
simple_chain.run(product_description)
Совет: установите verbose как True, чтобы увидеть вывод лога в терминале. Это очень полезно при разработке приложения.
Вводим описание продукта в simple_chain. Теперь цепочки выполняются в том порядке, в котором они перечислены.
Шаг 7. Создание сложной SequentialChain
Освоив простые цепочки, переведем приложение на новый уровень. Цепочка SequentialChain предназначена для выполнения сложных задач, требующих нескольких входов.
Сначала генерируем запрос на создание видеоконтента для YouTube. Для этого в качестве входных данных потребуются YouTube-сценарий и контент блога. Полученный шаблон указывает модели на создание подробного поэпизодного описания для видеоконтента для YouTube на основе сценария и контента блога.
# Промпт 3
youtube_visuals_template = PromptTemplate(
input_variables = ['yt_script', 'blog'],
template = '''You're an amazing director, generate the scene by scene
Description for the Youtube video based on the following script: {yt_script}.
Here is additional blog content if additional context is needed: {blog}.'''
)
Теперь определяем цепочку для видеоконтента для YouTube аналогично предыдущим цепочкам.
# Цепочка 3
youtube_visuals_chain = LLMChain(llm=llm, prompt=youtube_visuals_template,
verbose=True, output_key='yt_visuals')
Создадим SequentialChain, называемую “цепочкой автоматизации маркетинга”. Она включает все три цепочки в той последовательности, в которой они будут выполняться. Указываем входные и выходные переменные для каждой цепочки.
# Sequential Chain
marketing_automation_chain = SequentialChain(
chains=[blog_chain, youtube_script_chain, youtube_visuals_chain],
input_variables=['product_description'],
output_variables=['blog', 'yt_script', 'yt_visuals'],
verbose=True
)
Чтобы запустить приложение, просто вызываем функцию run в цепочке автоматизации маркетинга и передаем описание продукта.
# Запуск
product_description = 'best eco-friendly coffee'
marketing_automation_chain(product_description)
С помощью всего нескольких строк кода можно составить мощные языковые модели для создания публикаций в блоге, YouTube-сценария и детальных визуальных эпизодов в видео.
Часть 4. Streamlit — разработка веб-приложения
Шаг 8. Интеграция со Streamlit
Чтобы сделать маркетингового ИИ-помощника более доступным и удобным для пользователя, разработаем веб-приложение с помощью Streamlit.
Начнем с создания названия приложения и краткого обзора его возможностей. Затем создадим текстовое поле ввода, в которое пользователи смогут ввести описание продукта.
import streamlit as st
# Фронтенд приложения Streamlit
st.title('✨🤖 Product Marketing Assistant')
st.text(
"""Features:
1) Blog post
2) Youtube script
3) Youtube visual description
Future: Instagram, Twitter, LinkedIn post generator""")
# Ввод пользователя
user_input = st.text_input('Insert product description:',
placeholder='New recommended feature launch for photos app on phone.')
Теперь создадим кнопку, при нажатии на которую запускается цепочка автоматизации маркетинга на основе введенного пользователем описания продукта.
if st.button('Generate') and user_input:
app_data = marketing_automation_chain(user_input)
st.divider()
st.write(f"Generated content based on {app_data['product_description']}")
st.write('## Blog Post')
st.write(app_data['blog'])
st.divider()
st.write('## Youtube')
st.write('### Script')
st.write(app_data['yt_script'])
st.write('### Visuals')
st.write(app_data['yt_visuals'])
Вот и все! Чтобы запустить маркетингового помощника, откройте терминал и введите streamlit run app.py
.
Теперь у вас есть собственный маркетинговый ИИ-помощник. Этот инструмент позволит автоматизировать создание контента, сэкономить время и сосредоточиться на том, что действительно важно: на развитии бизнеса.
Читайте также:
- Как создать чат-бот на основе данных CSV с LangChain и OpenAI
- BabyAGI — автономный ИИ-агент для оптимизации задач
- Большой языковой модели недостаточно: пример использования Merkle Genai. Часть 2
Читайте нас в Telegram, VK и Дзен
Перевод статьи Wayne Lee: How to Automate Youtube and Blog Content with LangChain & OpenAI: A Step-by-Step Guide