mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-04 12:07:34 +00:00
Implements a complete S3-based file storage provider for Llama Stack with: Core Implementation: - S3FilesImpl class with full OpenAI Files API compatibility - Support for file upload, download, listing, deletion operations - Sqlite-based metadata storage for fast queries and API compliance - Configurable S3 endpoints (AWS, MinIO, LocalStack support) Key Features: - Automatic S3 bucket creation and management - Metadata persistence - Proper error handling for S3 connectivity and permissions Dependencies: - Adds boto3 for AWS S3 integration - Adds moto[s3] for testing infrastructure Testing: Unit: `./scripts/unit-tests.sh tests/unit/files tests/unit/providers/files` Integration: Start MinIO: `podman run --rm -it -p 9000:9000 minio/minio server /data` Start stack w/ S3 provider: `S3_ENDPOINT_URL=http://localhost:9000 AWS_ACCESS_KEY_ID=minioadmin AWS_SECRET_ACCESS_KEY=minioadmin S3_BUCKET_NAME=llama-stack-files uv run llama stack build --image-type venv --providers files=remote::s3 --run` Run integration tests: `./scripts/integration-tests.sh --stack-config http://localhost:8321 --provider ollama --test-subdirs files`
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the terms described in the LICENSE file in
|
|
# the root directory of this source tree.
|
|
|
|
from llama_stack.providers.datatypes import (
|
|
AdapterSpec,
|
|
Api,
|
|
InlineProviderSpec,
|
|
ProviderSpec,
|
|
remote_provider_spec,
|
|
)
|
|
from llama_stack.providers.utils.sqlstore.sqlstore import sql_store_pip_packages
|
|
|
|
|
|
def available_providers() -> list[ProviderSpec]:
|
|
return [
|
|
InlineProviderSpec(
|
|
api=Api.files,
|
|
provider_type="inline::localfs",
|
|
# TODO: make this dynamic according to the sql store type
|
|
pip_packages=sql_store_pip_packages,
|
|
module="llama_stack.providers.inline.files.localfs",
|
|
config_class="llama_stack.providers.inline.files.localfs.config.LocalfsFilesImplConfig",
|
|
description="Local filesystem-based file storage provider for managing files and documents locally.",
|
|
),
|
|
remote_provider_spec(
|
|
api=Api.files,
|
|
adapter=AdapterSpec(
|
|
adapter_type="s3",
|
|
pip_packages=["boto3"] + sql_store_pip_packages,
|
|
module="llama_stack.providers.remote.files.s3",
|
|
config_class="llama_stack.providers.remote.files.s3.config.S3FilesImplConfig",
|
|
description="AWS S3-based file storage provider for scalable cloud file management with metadata persistence.",
|
|
),
|
|
),
|
|
]
|