我很高兴地宣布,我的在AWS EC2上自动部署LibreChat的项目已更新,解决了最近LibreChat安装方式变化带来的问题,同时现在支持v0.7.6版本。此更新还包括在按需实例和竞价实例之间进行选择的功能,以及旨在简化使用、即使是初学者也能轻松上手的改进。

此次更新有哪些新内容?

支持LibreChat v0.7.6版本

该项目直接克隆了LibreChat的v0.7.6标签,确保所有部署都使用经过验证和测试的版本。这避免了主仓库意外更改带来的惊喜。

在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/

管理按需和竞价实例

我在Terraform中添加了一个名为spot_enabled的变量,可以动态选择部署使用竞价实例还是按需实例。默认情况下,启用按需模式,为初学者提供更友好的体验,避免了配置竞价价格的必要。这确保了项目对所有人立即可用。

更新的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
    }
  }
}

variables.tf片段:

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

更新Terraform版本

项目中使用的Terraform版本已从1.5.7更新到1.10.3。这确保了与Terraform最新功能和改进的兼容性。

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

修复Mistral模型的配置

librechat.yaml中的Mistral配置已更新,以支持最新版本中的格式更改。API密钥仍然从AWS Systems Manager (SSM)获取,与其他模型一样,默认模型现在包括mistral-large-latest

更新的代码:

# 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

添加多语言README文件

为了让全球更多的用户能够访问该项目,我使用了基于AI的Markdown文件翻译脚本,由GPT-4o模型提供支持,生成了多种语言的README文件。支持的语言包括英语、德语、西班牙语、日语、韩语和中文。

添加的文件:

  • 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

更新Nginx配置

默认提供的用于SSL的Nginx配置在该版本中已被弃用。我通过调整指令并使用sed命令添加SSL证书支持来修正了这一点,以确保兼容性。

更新的代码:

# 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

Terraform改进

  • 将默认实例类型从t3a.micro更改为t3a.small,以获得更好的性能。
  • 更新variables.tf中的竞价价格,以反映当前成本。

更新的variables.tf片段:

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

为什么此更新很重要

通过固定LibreChat的版本,修复Nginx和Mistral配置相关的问题,并提供在按需和竞价实例之间选择的功能,此更新增强了项目的可靠性和灵活性。默认的按需模式,即使是初学者也可以在没有复杂前提条件的情况下部署LibreChat。

总结

  • 支持LibreChat v0.7.6版本:克隆正确的标签,避免未控制更改带来的问题。
  • 实例管理:在按需和竞价之间选择,默认使用按需,简化用户体验。
  • Terraform版本:更新到1.10.3版本,享受最新改进。
  • Mistral AI:自动管理API密钥和模型,适应新格式。
  • 多语言README:提供多种语言的文档。
  • Nginx:SSL配置已修正并适应新指令。
  • Terraform:针对更好的性能和准确的成本进行了调整。

了解完整项目

您可以在GitLab仓库查看和使用此项目。

欢迎分享您的反馈或为该项目做出贡献!

本文件已使用模型o1-preview从fr版本翻译为zh语言。有关翻译过程的更多信息,请参阅 https://gitlab.com/jls42/ai-powered-markdown-translator