Настройка LLM на сообщениях Slack

Изучение LLM в Slack Настройки и возможности

Примечание редактора: Эли Чен выступает на конференции ODSC West с 30 октября по 2 ноября. Обязательно ознакомьтесь с его докладом «Настройка LLMs для сообщений в Slack»!

Настройка LLMs очень проста благодаря библиотекам HuggingFace. Этот учебник поможет вам адаптировать предварительно обученную модель для генерации текста, имитирующего чат-конверсации из канала Slack. Вы должны быть знакомы с языком программирования Python, чтобы получить максимальную пользу от этого руководства.

Получение данных

Сначала получите данные из Slack, используя API. Прежде чем приступить, убедитесь, что у вас есть токен бота, идентификатор пользователя и идентификатор канала. Если вы не уверены, как их получить, вот быстрое руководство.

Инициализируйте клиент Slack WebClient и определите функцию fetch_messages для извлечения определенных чатов, отфильтрованных по идентификатору пользователя.

token = "YOUR_SLACK_BOT_TOKEN"channel_id = "CHANNEL_ID"user_id = "USER_ID"client = WebClient(token=token)def fetch_messages(channel_id):    messages = []    cursor = None    while True:        try:            response = client.conversations_history(channel=channel_id, cursor=cursor)            assert response["ok"]            for message in response['messages']:                if 'user' in message and message['user'] == user_id:                    messages.append(message['text'])            cursor = response.get('response_metadata',{}).get('next_cursor')            if not cursor:                break        except SlackApiError as e:            print(f"Error: {e.response['error']}")            break    return messagesall_messages = fetch_messages(channel_id)

Функция fetch_messages возвращает список all_messages, содержащий сообщения от указанного пользователя из указанного канала для настройки LLMs.

СОБЫТИЕ – ODSC West 2023

Конференция Очно и Виртуально

С 30 октября по 2 ноября

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

Настройка модели

После сбора сообщений следующим шагом является настройка предварительно обученной языковой модели для имитации конкретных языковых особенностей этого пользователя. Приведенный ниже код использует библиотеку transformers от HuggingFace для упрощения этого процесса.

# Инициализируйте токенизатор и модельtokenizer = AutoTokenizer.from_pretrained("gpt2")tokenizer.pad_token = tokenizer.eos_token  # Установите токен заполнения в eos_tokenmodel = AutoModelForCausalLM.from_pretrained("gpt2")# Токенизируйте строки и создайте объект Datasettokens = tokenizer(all_messages, padding=True, truncation=True, return_tensors="pt")dataset = Dataset.from_dict(tokens)# Создайте DataCollatordata_collator = DataCollatorForLanguageModeling(    tokenizer=tokenizer,    mlm=False,)# Настройте аргументы обученияtraining_args = TrainingArguments(    output_dir="./output",    learning_rate=2e-4,)# Инициализируйте Trainertrainer = Trainer(    model=model,    args=training_args,    data_collator=data_collator,    train_dataset=dataset,)# Fine-tuningtrainer.train()

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

Тестирование вашей модели

После настройки, вы захотите проверить способность модели имитировать сообщения вашего пользователя. Ниже приведен код, показывающий, как сгенерировать текст на основе признака “Привет”.

# Сгенерировать текстinput_text = "Привет "input_ids = tokenizer.encode(input_text, return_tensors="pt")# Сгенерировать образец текстаoutput = model.generate(input_ids, max_length=50, num_return_sequences=1, temperature=1.0)# Декодировать и напечатать текстgenerated_text = tokenizer.decode(output[0], skip_special_tokens=True)print(generated_text)

Для более строгих оценок рассмотрите добавление показателей производительности, таких как балл BLEU или перплексия.

Вывод

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

Для более глубокого погружения, присоединитесь ко мне на моем докладе ODSC West. Я расскажу о реальных опытах обучения, интересных и странных поведениях, которые мы наблюдали на протяжении года, и поделюсь идеями о связанных рисках и стратегиях смягчения.

Об авторе

Эли является главным техническим директором и сооснователем Credo AI. Он руководил командами, разрабатывающими безопасное и масштабируемое программное обеспечение в компаниях Netflix и Twitter. У Эли есть страсть к раскрытию принципов работы вещей и устранению сложных проблем. Будь то использование криптографии для обеспечения безопасности программных систем или проектирование архитектуры распределенных систем, он всегда рад учиться и решать новые задачи. Эли окончил Университет Калифорнии в Беркли, получив степень по электротехнике и компьютерным наукам.