Можно ли в GigaChat создать функцию промпта таким образом, чтобы не отправлять ее каждый раз?

Как можно разработать единственный промпт для автоматической модерации контента, который будет определять ненормативную лексику, контактные данные и автоматически исправлять ошибки? Необходимо, чтобы на выходе всегда получался ответ в строго заданном формате, например, "true/false" и исправленная версия текста.
  • 31 марта 2025 г. 2:04
Ответы на вопрос 2
Создание функции промпта для автоматической модерации контента в GigaChat должно включать несколько шагов. Основная идея заключается в том, чтобы сформулировать единый промпт, который будет использоваться на постоянной основе. Вот как можно это сделать:

1. **Определите критерии модерации**: Для начала необходимо четко определить, какие именно элементы будут обнаруживаться и исправляться в тексте. Например:
   - Ненормативная лексика.
   - Контактные данные (номера телефонов, email-адреса).
   - Орфографические и грамматические ошибки.

2. **Сформулируйте промпт**: Вам нужно создать структуру промпта, которая включает все необходимые операции. Например:

   ```
   "Пожалуйста, проанализируй следующий текст на наличие ненормативной лексики, контактных данных и ошибок. Если найдены нарушения, исправь текст и дай ответ в формате 'true/false' и исправленный текст. Текст: '[вставьте текст]'"
   ```

3. **Структурируйте вывод**: Убедитесь, что вывод всегда будет в одном и том же формате. Например:
   - Если нарушения обнаружены: "true", "Исправленный текст".
   - Если нарушений нет: "false", "Текст остается неизменным".

4. **Реализуйте промпт в GigaChat**: Настройте систему так, чтобы этот промпт отправлялся автоматически каждый раз, когда требуется модерация текста. Если это возможно в вашем интерфейсе, создайте сценарий или функцию, которая обращается к этой инструкции.

5. **Тестирование**: Протестируйте систему с различными примерами текстов, чтобы убедиться, что она корректно выявляет и исправляет ошибки, а также правильно предоставляет вывод в заданном формате.

### Пример итогового промпта

```
"Проанализируй следующий текст на наличие ненормативной лексики, контактных данных и ошибок. Если обнаружены нарушения, исправь текст и дай ответ в формате 'true'/'false' и исправленный текст. Текст: 'Вставьте сюда текст для анализа.'"
```

Если будет возможность сохранять этот промпт в системе, вы сможете автоматизировать процесс модерации, повторно используя его без необходимости ввода каждый раз.
если модель запускаешь с помощью vllm то можно увидеть такую строчку в логах: 
INFO 03-31 09:31:34 [config.py:588] This model supports multiple tasks: {'score', 'classify', 'embed', 'generate', 'reward'}. Defaulting to 'generate'.

тогда в запросах будет доступен режим classification но мне кажется такое будет работать только для хороших моделей или лучше специально тюненых на это действие (т.е. собрать датасет примеров и дотюнить модель именно на классификацию), набор утилит и библиотек для этого peft
upd. архитектура открытой gigachat - DeepseekForCausalLM

Еще есть режим structured outputs (это фича приложения, с помощью которого запускается модель или соответственно провайдера), в этом случае можно прописать в формате допустимые значения, но на практике, тупое ограничение модели в формате вывода понижает ее качество, неплохо было бы разрешить модели некоторую свободу для поболтать, оставив поля для этого.
например есть у llama.cpp и у vllm

Хорошим бустом для качества модели будет приведение примеров (порядка 5 штук) сразу после системного промпта (вместе с токенами ассистент/пользователь), это позволяет модели настроиться на нужную тематику и формат вывода (отличным примером является системный промпт последней mistral3, там пара примеров размещена, причем сильно тупых, скорее всего это разработчики vllm в шаблоне оставили)
Похожие вопросы