langflow 无法在铁路部署上存储全局变量的密钥(Fernet密钥必须是32个url安全的base64编码字节)

beq87vna  于 2个月前  发布在  其他
关注(0)|答案(5)|浏览(46)

我已经在Railway上部署了Langflow,使用了README中的按钮。我不确定部署的是什么版本,因为Langflow UI中似乎没有显示任何版本号,而且我也找不到Railway部署脚本。
当我尝试将凭据设置为全局变量时,我得到了以下错误:
创建变量时出错
Fernet密钥必须是32个url安全的base64编码字节。

重现问题

重现问题的步骤:

  1. 部署到RENDER
  2. 打开Langfoow UI
  3. 转到设置 -> 全局变量
  4. 尝试添加一个凭据变量,例如API密钥
  5. 查看错误
lnxxn5zx

lnxxn5zx1#

要解决"Fernet密钥必须是32个url安全的base64编码字节"错误,并在Railway部署上成功存储密钥全局变量,您需要确保您的密钥正确填充为32个url安全的base64编码字节。以下是如何做到这一点的方法:

  1. 确保使用add_padding函数正确填充您的密钥。
  2. 使用填充后的密钥创建一个Fernet示例。
    以下是相关的代码片段:
def add_padding(s):
    # Calculate the number of padding characters needed
    padding_needed = 4 - len(s) % 4
    return s + "=" * padding_needed

def get_fernet(settings_service=Depends(get_settings_service)):
    SECRET_KEY = settings_service.auth_settings.SECRET_KEY.get_secret_value()
    # It's important that your secret key is 32 url-safe base64-encoded bytes
    padded_secret_key = add_padding(SECRET_KEY)
    fernet = Fernet(padded_secret_key)
    return fernet

请确保您在设置中正确设置了SECRET_KEY,并在使用它创建Fernet示例之前对其进行填充。这应该解决错误,并允许您在Railway部署上存储密钥全局变量1(https://github.com/logspace-ai/langflow/blob/dev/src/backend/langflow/services/auth/utils.py)2(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/services/auth/utils.py)3(https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/services/auth/utils.py)。
要验证当前部署在Railway上的Langflow版本,您可以使用src/backend/base/langflow/utils/version.py文件中的get_version_info函数。此函数检索Langflow包的版本信息:

def get_version_info():
    try:
        from langflow.version import __version__  # type: ignore

        version = __version__
        package = "Langflow"
    except ImportError:
        from importlib import metadata

        version = metadata.version("langflow")
        package = "Langflow"
    return {"version": version, "package": package}

您可以调用此函数以获取已部署Langflow示例的版本和包信息4(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/utils/version.py)5(https://github.com/logspace-ai/langflow/blob/dev/src/backend/langflow/version/version.py)。

  • 要继续与Dosu交谈,请提及@dosu。*
gc0ot86w

gc0ot86w2#

你好@brylie
你可以在Railway的截图中设置变量。你可以参考文档了解如何设置它们。
设置全局变量的链接:
https://docs.langflow.org/settings-global-variables
如果你需要任何支持,请告诉我。如果问题已解决,请告知我们是否可以关闭此工单。

zbsbpyhn

zbsbpyhn3#

谢谢。根据您提供的文档,我在设置变量时遇到了原始帖子中的错误。在Railway上,Langflow UI中是否无法设置变量?

mzsu5hc0

mzsu5hc04#

@carlosrcoelho,我已经更新了重现此问题的方法,以更清楚地表明问题出在Langflow全局变量页面。例如,Langflow变量可以自动插入到组件属性中,因此我经常使用它们。无法设置Langflow变量有点令人困惑和有问题。

c6ubokkw

c6ubokkw5#

@brylie@carlosrcoelho 遇到了相同的问题,不仅在铁路部署上,还在Azure容器示例上。非常希望这个功能能正常工作。愿意协助解决这个问题,请随时告诉我如何提供帮助。

相关问题