feat: openai files provider (#3946)

# What does this PR do?
- Adds OpenAI files provider 
- Note that file content retrieval is pretty limited by `purpose`
https://community.openai.com/t/file-uploads-error-why-can-t-i-download-files-with-purpose-user-data/1357013?utm_source=chatgpt.com

## Test Plan
Modify run yaml to use openai files provider:
```
  files:
  - provider_id: openai
    provider_type: remote::openai
    config:
      api_key: ${env.OPENAI_API_KEY:=}
      metadata_store:
        backend: sql_default
        table_name: openai_files_metadata

# Then run files tests
❯ uv run --no-sync ./scripts/integration-tests.sh --stack-config server:ci-tests --inference-mode replay --setup ollama --suite base --pattern test_files
```
This commit is contained in:
ehhuang 2025-10-28 16:25:03 -07:00 committed by GitHub
parent feabcdd67b
commit 1f9d48cd54
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 367 additions and 27 deletions

View file

@ -28,4 +28,13 @@ def available_providers() -> list[ProviderSpec]:
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.",
),
RemoteProviderSpec(
api=Api.files,
provider_type="remote::openai",
adapter_type="openai",
pip_packages=["openai"] + sql_store_pip_packages,
module="llama_stack.providers.remote.files.openai",
config_class="llama_stack.providers.remote.files.openai.config.OpenAIFilesImplConfig",
description="OpenAI Files API provider for managing files through OpenAI's native file storage service.",
),
]