mirror of
https://github.com/Direct-Dev-Ru/go-lcg.git
synced 2025-11-16 01:29:55 +00:00
7.0 KiB
7.0 KiB
🔧 Конфигурация валидации длины полей
📋 Переменные окружения
Все настройки валидации можно настроить через переменные окружения:
Основные лимиты
| Переменная | Описание | По умолчанию |
|---|---|---|
LCG_MAX_SYSTEM_PROMPT_LENGTH |
Максимальная длина системного промпта | 1000 |
LCG_MAX_USER_MESSAGE_LENGTH |
Максимальная длина пользовательского сообщения | 2000 |
LCG_MAX_PROMPT_NAME_LENGTH |
Максимальная длина названия промпта | 200 |
LCG_MAX_PROMPT_DESC_LENGTH |
Максимальная длина описания промпта | 500 |
LCG_MAX_COMMAND_LENGTH |
Максимальная длина команды/ответа | 2000 |
LCG_MAX_EXPLANATION_LENGTH |
Максимальная длина объяснения | 2000 |
🚀 Примеры использования
Установка через переменные окружения
# Увеличить лимит системного промпта до 2к символов
export LCG_MAX_SYSTEM_PROMPT_LENGTH=2000
# Уменьшить лимит пользовательского сообщения до 1к символов
export LCG_MAX_USER_MESSAGE_LENGTH=1000
# Увеличить лимит названия промпта до 500 символов
export LCG_MAX_PROMPT_NAME_LENGTH=500
Установка в .env файле
# .env файл
LCG_MAX_SYSTEM_PROMPT_LENGTH=2000
LCG_MAX_USER_MESSAGE_LENGTH=1500
LCG_MAX_PROMPT_NAME_LENGTH=300
LCG_MAX_PROMPT_DESC_LENGTH=1000
LCG_MAX_COMMAND_LENGTH=3000
LCG_MAX_EXPLANATION_LENGTH=5000
Установка в systemd сервисе
[Unit]
Description=Linux Command GPT
After=network.target
[Service]
Type=simple
User=lcg
WorkingDirectory=/opt/lcg
ExecStart=/opt/lcg/lcg serve
Environment=LCG_MAX_SYSTEM_PROMPT_LENGTH=2000
Environment=LCG_MAX_USER_MESSAGE_LENGTH=1500
Environment=LCG_MAX_PROMPT_NAME_LENGTH=300
Restart=always
[Install]
WantedBy=multi-user.target
Установка в Docker
FROM golang:1.21-alpine AS builder
# ... build steps ...
FROM alpine:latest
COPY --from=builder /app/lcg /usr/local/bin/
ENV LCG_MAX_SYSTEM_PROMPT_LENGTH=2000
ENV LCG_MAX_USER_MESSAGE_LENGTH=1500
CMD ["lcg", "serve"]
# docker-compose.yml
version: '3.8'
services:
lcg:
image: lcg:latest
environment:
- LCG_MAX_SYSTEM_PROMPT_LENGTH=2000
- LCG_MAX_USER_MESSAGE_LENGTH=1500
- LCG_MAX_PROMPT_NAME_LENGTH=300
ports:
- "8080:8080"
🔍 Где применяется валидация
1. Консольная часть (main.go)
- ✅ Валидация пользовательского сообщения
- ✅ Валидация системного промпта
- ✅ Цветные сообщения об ошибках
2. API эндпоинты
- ✅
/execute- валидация промпта и системного промпта - ✅
/api/save-result- валидация всех полей - ✅
/api/add-to-history- валидация всех полей
3. Веб-интерфейс
- ✅ Страница выполнения - валидация в JavaScript и на сервере
- ✅ Управление промптами - валидация всех полей формы
4. JavaScript валидация
- ✅ Клиентская валидация перед отправкой
- ✅ Динамические лимиты из конфигурации
- ✅ Понятные сообщения об ошибках
🛠️ Технические детали
Структура конфигурации
type ValidationConfig struct {
MaxSystemPromptLength int // LCG_MAX_SYSTEM_PROMPT_LENGTH
MaxUserMessageLength int // LCG_MAX_USER_MESSAGE_LENGTH
MaxPromptNameLength int // LCG_MAX_PROMPT_NAME_LENGTH
MaxPromptDescLength int // LCG_MAX_PROMPT_DESC_LENGTH
MaxCommandLength int // LCG_MAX_COMMAND_LENGTH
MaxExplanationLength int // LCG_MAX_EXPLANATION_LENGTH
}
Функции валидации
// Основные функции
validation.ValidateSystemPrompt(prompt)
validation.ValidateUserMessage(message)
validation.ValidatePromptName(name)
validation.ValidatePromptDescription(description)
validation.ValidateCommand(command)
validation.ValidateExplanation(explanation)
// Вспомогательные функции
validation.TruncateSystemPrompt(prompt)
validation.TruncateUserMessage(message)
validation.FormatLengthInfo(systemPrompt, userMessage)
Обработка ошибок
- API: HTTP 400 с JSON сообщением об ошибке
- Веб-интерфейс: HTTP 400 с текстовым сообщением
- Консоль: Цветные сообщения об ошибках
- JavaScript: Alert с предупреждением
📝 Примеры сообщений об ошибках
❌ Ошибка: system_prompt: системный промпт слишком длинный: 1500 символов (максимум 1000)
❌ Ошибка: user_message: пользовательское сообщение слишком длинное: 2500 символов (максимум 2000)
❌ Ошибка: prompt_name: название промпта слишком длинное: 300 символов (максимум 200)
🔄 Миграция с жестко заданных значений
Если ранее использовались жестко заданные значения в коде, теперь они автоматически заменяются на значения из конфигурации:
// Старый код
if len(prompt) > 2000 {
return errors.New("too long")
}
// Новый код
if err := validation.ValidateSystemPrompt(prompt); err != nil {
return err
}
🎯 Рекомендации по настройке
Для разработки
export LCG_MAX_SYSTEM_PROMPT_LENGTH=2000
export LCG_MAX_USER_MESSAGE_LENGTH=2000
export LCG_MAX_PROMPT_NAME_LENGTH=200
export LCG_MAX_PROMPT_DESC_LENGTH=500
Для продакшена
export LCG_MAX_SYSTEM_PROMPT_LENGTH=1000
export LCG_MAX_USER_MESSAGE_LENGTH=1500
export LCG_MAX_PROMPT_NAME_LENGTH=100
export LCG_MAX_PROMPT_DESC_LENGTH=300
Для высоконагруженных систем
export LCG_MAX_SYSTEM_PROMPT_LENGTH=500
export LCG_MAX_USER_MESSAGE_LENGTH=1000
export LCG_MAX_PROMPT_NAME_LENGTH=50
export LCG_MAX_PROMPT_DESC_LENGTH=200
Примечание: Все значения настраиваются через переменные окружения и применяются ко всем частям приложения (консоль, веб-интерфейс, API).