Z przyjemnością informuję, że mój projekt automatycznego wdrożenia LibreChat na AWS EC2 został zaktualizowany w celu naprawy problemów związanych z niedawnymi zmianami w sposobie instalacji LibreChat, jednocześnie wspierając teraz wersję v0.7.6. Ta aktualizacja obejmuje również możliwość wyboru między instancjami On-Demand a Spot, a także ulepszenia mające na celu uproszczenie użytkowania, nawet dla początkujących.

Co nowego w tej aktualizacji?

Wsparcie dla wersji v0.7.6 LibreChat

Projekt klonuje bezpośrednio tag v0.7.6 LibreChat, zapewniając, że wszystkie wdrożenia używają zweryfikowanej i przetestowanej wersji. Unika to niespodzianek związanych z nieoczekiwanymi zmianami w głównym repozytorium.

Zaktualizowany kod w skrypcie User-Data:

# Clone le dépôt LibreChat avec uniquement le tag v0.7.6
git clone --branch v0.7.6 --depth 1 https://github.com/danny-avila/LibreChat.git
cd LibreChat/

Zarządzanie instancjami On-Demand i Spot

Dodałem zmienną spot_enabled w Terraform, która umożliwia dynamiczny wybór, czy wdrożenie używa instancji Spot czy On-Demand. Domyślnie tryb On-Demand jest aktywowany, aby oferować bardziej przystępne doświadczenie dla początkujących, unikając konieczności konfigurowania cen spot. Gwarantuje to, że projekt jest natychmiast funkcjonalny dla wszystkich.

Zaktualizowany fragment ec2.tf:

# Bloc dynamique pour conditionner les options du marché Spot
dynamic "instance_market_options" {
  for_each = var.spot_enabled ? [1] : [] # Si spot_enabled est true, le bloc est créé
  content {
    market_type = "spot"
    spot_options {
      max_price                      = var.spot_max_price[var.instance_type]
      instance_interruption_behavior = var.spot_request_type == "persistent" ? "stop" : null
      spot_instance_type             = var.spot_request_type
    }
  }
}

Fragment variables.tf:

variable "spot_enabled" {
  description = "Active ou désactive l'utilisation du marché Spot"
  type        = bool
  default     = false
}

Aktualizacja wersji Terraform

Wersja Terraform używana w projekcie została zaktualizowana z 1.5.7 do 1.10.3. Zapewnia to kompatybilność z najnowszymi funkcjami i usprawnieniami Terraform.

# Version de l'image Docker Terraform
TERRAFORM_VERSION: hashicorp/terraform:1.10.3

Poprawki konfiguracji modeli Mistral

Konfiguracja Mistral w librechat.yaml została zaktualizowana, aby obsługiwać zmiany formatu w najnowszej wersji. Klucz API jest nadal pobierany z AWS Systems Manager (SSM), podobnie jak w przypadku innych modeli, a domyślne modele obejmują teraz mistral-large-latest.

Zaktualizowany kod:

# Remplace la ligne contenant apiKey: '${MISTRAL_API_KEY}' par la clé réelle dans librechat.yaml
sed -i "s|apiKey: '\${MISTRAL_API_KEY}'|apiKey: '${MISTRAL_API_KEY}'|" librechat.yaml

# Modèles par défaut pour Mistral
sed -i '/- name:.*Mistral/,/default:/ s|default:.*|default: [\'mistral-tiny\', \'mistral-small\', \'mistral-medium\', \'mistral-large-latest\']|' librechat.yaml

Dodanie plików README w wielu językach

Aby uczynić projekt dostępnym dla większej liczby użytkowników na całym świecie, użyłem mojego skryptu tłumaczenia plików Markdown opartego na AI, zasilanego modelem GPT-4o, aby wygenerować pliki README w kilku językach. Obsługiwane języki to angielski, niemiecki, hiszpański, japoński, koreański i chiński.

Dodane pliki:

  • README-de-gpt-4o.md
  • README-en-gpt-4o.md
  • README-es-gpt-4o.md
  • README-ja-gpt-4o.md
  • README-ko-gpt-4o.md
  • README-zh-gpt-4o.md

Aktualizacja konfiguracji Nginx

Konfiguracja Nginx dla SSL, dostarczana domyślnie, była przestarzała w tej wersji. Naprawiłem to, dostosowując dyrektywy i dodając wsparcie dla certyfikatów SSL za pomocą poleceń sed, aby zapewnić kompatybilność.

Zaktualizowany kod:

# Monter les certificats SSL dans le fichier deploy-compose.yml
sed -i '/- .\/client\/nginx.conf:\/etc\/nginx\/conf.d\/default.conf/a \      - \/etc\/nginx\/ssl:\/etc\/nginx\/ssl' deploy-compose.yml

# Corrige les directives dans nginx.conf pour la version récente de Nginx
sed -i '/listen 443 ssl;/!s/listen 443 ssl;/listen 443 ssl http2;/' client/nginx.conf
sed -i '/listen \[::\]:443 ssl;/!s/listen \[::\]:443 ssl;/listen [::]:443 ssl http2;/' client/nginx.conf

# Corriger les erreurs de commentaire sur les URLs
sed -i 's|https://docs.nginx.com/nginx/admin-guide/web-server/compression/|# https://docs.nginx.com/nginx/admin-guide/web-server/compression/|' client/nginx.conf
sed -i 's|https://docs.nginx.com/nginx/admin-guide/web-server/compression/|# &|' client/nginx.conf

Usprawnienia Terraform

  • Zmiana domyślnego typu instancji z t3a.micro na t3a.small dla lepszej wydajności.
  • Aktualizacja cen spot w variables.tf, aby odzwierciedlały aktualne koszty.

Zaktualizowany fragment variables.tf:

variable "spot_max_price" {
  default = {
    "t3a.large"  = "0.0376"
    "t3a.small"  = "0.0095"
    "t3a.medium" = "0.01940"
    "t3a.micro"  = "0.006"
  }
}

Dlaczego ta aktualizacja jest ważna

Poprzez ustalenie wersji LibreChat, naprawienie problemów związanych z konfiguracjami Nginx i Mistral oraz oferując możliwość wyboru między instancjami On-Demand i Spot, ta aktualizacja wzmacnia niezawodność i elastyczność projektu. Dzięki domyślnemu trybowi On-Demand nawet początkujący mogą wdrożyć LibreChat bez skomplikowanych wymagań wstępnych.

Podsumowanie

  • Wsparcie dla wersji v0.7.6 LibreChat: Klonowanie właściwego tagu, aby uniknąć problemów związanych z niekontrolowanymi zmianami.
  • Zarządzanie instancjami: Wybór między On-Demand a Spot, z domyślnym ustawieniem On-Demand dla uproszczenia doświadczenia użytkownika.
  • Wersja Terraform: Aktualizacja do wersji 1.10.3, aby skorzystać z najnowszych usprawnień.
  • Mistral AI: Automatyczne zarządzanie kluczami API i modelami, dostosowane do nowego formatu.
  • README w wielu językach: Dokumentacja dostępna w kilku językach.
  • Nginx: Poprawiona i dostosowana konfiguracja SSL do nowych dyrektyw.
  • Terraform: Dostosowania dla lepszej wydajności i precyzyjnych kosztów.

Zapoznaj się z pełnym projektem

Możesz przejrzeć i używać tego projektu na repozytorium GitLab.

Nie wahaj się podzielić swoimi uwagami lub przyczynić się do rozwoju projektu!

Ten document został przetłumaczony z wersji fr na język pl przy użyciu modelu o1-preview. Pour plus d’informations sur le processus de traduction, consultez https://gitlab.com/jls42/ai-powered-markdown-translator