首页 > 其他分享 >chainlit s3 minio 存储集成配置

chainlit s3 minio 存储集成配置

时间:2024-09-14 10:24:20浏览次数:14  
标签:minio s3 self chainlit access url key data

chainlit s3 默认对于minio 的支持没有明确说明,但是我们可以通过配置解决(环境变量以及~/.aws/config 都可以)

使用

  • 代码配置
import chainlit as cl
import chainlit.data as cl_data
from chainlit.data.sql_alchemy import SQLAlchemyDataLayer
from chainlit.types import ThreadDict
import os
 
from chainlit.data.storage_clients import S3StorageClient
 
cl_data._data_layer = SQLAlchemyDataLayer(conninfo=os.environ["PG_CONNECTION_STRING"],storage_provider=S3StorageClient(bucket="chainlit"))
启动
环境变量配置
export AWS_ENDPOINT_URL=http://localhost:9000
export AWS_ACCESS_KEY_ID=minio
export AWS_SECRET_ACCESS_KEY=minio123
import chainlit.data as cl_data
  • 效果

chainlit s3 minio 存储集成配置_环境变量配置

chainlit s3 minio 存储集成配置_AWS_02

说明

因为storage_provider是一个抽象类,实际上我们可以自己实现一个minio的S3StorageClient,目前社区也有实现,只是目前还没merge,参考代码

class MinioStorageClient(BaseStorageClient):
    """
    Class to enable MinIO storage provider
 
    params:
        bucket: Bucket name, should be set with public access
        endpoint_url: MinIO server endpoint, defaults to "http://localhost:9000"
        aws_access_key_id: Default is "minioadmin"
        aws_secret_access_key: Default is "minioadmin"
        verify_ssl: Set to True only if not using HTTP or HTTPS with self-signed SSL certificates
    """
    def __init__(self, bucket: str, endpoint_url: str = 'http://localhost:9000', aws_access_key_id: str = 'minioadmin', aws_secret_access_key: str = 'minioadmin', verify_ssl: bool = False):
        try:
            self.bucket = bucket
            self.endpoint_url = endpoint_url
            self.client = boto3.client("s3", endpoint_url=self.endpoint_url, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, verify=verify_ssl)
            logger.info("MinioStorageClient initialized")
        except Exception as e:
            logger.warn(f"MinioStorageClient initialization error: {e}")
 
    async def upload_file(self, object_key: str, data: Union[bytes, str], mime: str = 'application/octet-stream', overwrite: bool = True) -> Dict[str, Any]:
        try:
            self.client.put_object(Bucket=self.bucket, Key=object_key, Body=data, ContentType=mime)
            url = f"{self.endpoint_url}/{self.bucket}/{object_key}"
            return {"object_key": object_key, "url": url}
        except Exception as e:
            logger.warn(f"MinioStorageClient, upload_file error: {e}")
            return {}
"""

参考资料

https://docs.chainlit.io/data-persistence/custom
https://alexocallaghan.com/configure-boto3-endpoint-url
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#guide-configuration

标签:minio,s3,self,chainlit,access,url,key,data
From: https://blog.51cto.com/rongfengliang/12014986

相关文章

  • chainlit 持久化配置问题 null value in column "disableFeedback" of relation "ste
    实际上此问题在github上已经存在了,解决方法很简单,就是对于sql配置的去掉不能为空的判定参考sql修改CREATETABLEIFNOTEXISTSsteps("id"UUIDPRIMARYKEY,"name"TEXTNOTNULL,"type"TEXTNOTNULL,"threadId"UUIDNOTNULL,"parentId"UUID,&qu......
  • UMIJS3剖析
    UMIJS3剖析约定式路由umijs是可扩展的企业级前端应用框架。Umi以路由为基础的,并以此进行功能扩展。然后配以生命周期完善的插件体系,支持各种功能扩展和业务需求约定式路由umi初始化项目mkdirhs-umi3npminit-ycnpmiumi-D运行项目pages\index.jssrc\pages\in......
  • UmiJS3基础
    UmiJS3基础https://umijs.org/UmiJSUmiJS是一个类Next.JS的react开发框架。他基于一个约定,即pages目录下的文件即路由,而文件则导出react组件然后打通从源码到产物的每个阶段,并配以完善的插件体系,让我们能把umi的产物部署到各种场景里。安装umi源码create......
  • Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sq
    前言我在上一篇文章中《Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用(text2sql)》利用langchain中create_sql_agent创建一个数据库代理智能体,但是实测中发现,使用create_sql_agent在对话中,响应速度太慢了,数据的表越多,对话响应就越慢,这次本篇文章l......
  • minio分布式集群部署(三)
    一、优势分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。分布式存储可靠性常用方法 分布式存储,很关键的点在于数据的可靠性,即保证数据的完整,不丢失,不损坏。只有在可靠性实现的前提下,才......
  • Minio安装及使用
    前言在现在项目的开发中,文件存储方面的需求变得越来越多了。现在市面上几大云厂商都有提供一些相关存储的产品,开发者可以很方便的去使用。那我们如果有本地化的需求,那怎么办呢?Minio就是一款开源免费的产品,我们可以使用它进行本地化的部署来满足我们的需求。配置要求一台......
  • Doris3.0.1安装
    apache-doris-3.0.1-bin-x64.tar.gz,jdk-17_linux-x64_bin.tar.gz(jdk-17.0.12)。准备4台服务器,1台FE,3台BE。采用阿里云的ECS云服务器。RockyLinx9.4服务器系统。IP安装doris类别172.25.93.153FE172.25.93.154BE(be1)172.25.93.155BE(be2)172.25.93.156BE(be3)oris默认的端口规划因为安装的......
  • 对象存储方案大比拼——本地存储、OSS、MinIO、Ceph、Apache Ozone 与 OpenIO
    在当今数据驱动的时代,选择合适的对象存储方案对于企业和开发者来说至关重要。本文将对本地存储、阿里云OSS、MinIO、Ceph、ApacheOzone和OpenIO这几种常见的对象存储方案进行详细的介绍和比较,帮助你做出明智的选择。 一、本地存储 (一)特点 1. 直接存储在本地设备......
  • minio的下载和springboot整合minio使用
    下载minio基于docker拉取minio镜像dockerpullminio/minio 创建minio容器先创建/root/minio/data和/root/minio/confdockerrun-d-p9000:9000-p9001:9001--nameminio\-e"MINIO_ROOT_USER=htsdg"\-e"MINIO_ROOT_PASSWORD=12345678"\-v/root/......
  • 006.MinIO基础使用
    图形界面基础使用bucketbucket创建图形界面创建bucket。特性:Versioning开启版本控制,开启版本控制则允许在同一键下保持同一对象的多个版本。ObjectLocking对象锁定防止对象被删除,需要支持保留和合法持有,只能在创建桶时启用。Quita配额限制bucket中的数据量。......