mirror of
https://github.com/imartinez/privateGPT.git
synced 2025-04-28 03:32:18 +00:00
Add basic CORS (#1198)
This commit is contained in:
parent
a666fd5b73
commit
8487440a6f
@ -129,7 +129,6 @@ you want to give a hand:
|
||||
### Features
|
||||
- Implement concurrency lock to avoid errors when there are several calls to the local LlamaCPP model
|
||||
- API key-based request control to the API
|
||||
- CORS support
|
||||
- Support for Sagemaker
|
||||
- Support Function calling
|
||||
- Add md5 to check files already ingested
|
||||
|
@ -4,6 +4,7 @@ from typing import Any
|
||||
|
||||
import llama_index
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.openapi.utils import get_openapi
|
||||
|
||||
from private_gpt.paths import docs_path
|
||||
@ -104,6 +105,17 @@ app.include_router(ingest_router)
|
||||
app.include_router(embeddings_router)
|
||||
app.include_router(health_router)
|
||||
|
||||
if settings.server.cors.enabled:
|
||||
logger.debug("Setting up CORS middleware")
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_credentials=settings.server.cors.allow_credentials,
|
||||
allow_origins=settings.server.cors.allow_origins,
|
||||
allow_origin_regex=settings.server.cors.allow_origin_regex,
|
||||
allow_methods=settings.server.cors.allow_methods,
|
||||
allow_headers=settings.server.cors.allow_headers,
|
||||
)
|
||||
|
||||
|
||||
if settings.ui.enabled:
|
||||
logger.debug("Importing the UI module")
|
||||
|
@ -3,11 +3,50 @@ from pydantic import BaseModel, Field
|
||||
from private_gpt.settings.settings_loader import load_active_profiles
|
||||
|
||||
|
||||
class CorsSettings(BaseModel):
|
||||
"""CORS configuration.
|
||||
|
||||
For more details on the CORS configuration, see:
|
||||
# * https://fastapi.tiangolo.com/tutorial/cors/
|
||||
# * https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
||||
"""
|
||||
|
||||
enabled: bool = Field(
|
||||
description="Flag indicating if CORS headers are set or not."
|
||||
"If set to True, the CORS headers will be set to allow all origins, methods and headers."
|
||||
)
|
||||
allow_credentials: bool = Field(
|
||||
description="Indicate that cookies should be supported for cross-origin requests",
|
||||
default=False,
|
||||
)
|
||||
allow_origins: list[str] = Field(
|
||||
description="A list of origins that should be permitted to make cross-origin requests.",
|
||||
default=[],
|
||||
)
|
||||
allow_origin_regex: list[str] = Field(
|
||||
description="A regex string to match against origins that should be permitted to make cross-origin requests.",
|
||||
default=None,
|
||||
)
|
||||
allow_methods: list[str] = Field(
|
||||
description="A list of HTTP methods that should be allowed for cross-origin requests.",
|
||||
default=[
|
||||
"GET",
|
||||
],
|
||||
)
|
||||
allow_headers: list[str] = Field(
|
||||
description="A list of HTTP request headers that should be supported for cross-origin requests.",
|
||||
default=[],
|
||||
)
|
||||
|
||||
|
||||
class ServerSettings(BaseModel):
|
||||
env_name: str = Field(
|
||||
description="Name of the environment (prod, staging, local...)"
|
||||
)
|
||||
port: int = Field("Port of PrivateGPT FastAPI server, defaults to 8001")
|
||||
port: int = Field(description="Port of PrivateGPT FastAPI server, defaults to 8001")
|
||||
cors: CorsSettings = Field(
|
||||
description="CORS configuration", default=CorsSettings(enabled=False)
|
||||
)
|
||||
|
||||
|
||||
class DataSettings(BaseModel):
|
||||
|
@ -1,6 +1,11 @@
|
||||
server:
|
||||
env_name: ${APP_ENV:prod}
|
||||
port: ${PORT:8001}
|
||||
cors:
|
||||
enabled: false
|
||||
allow_origins: ["*"]
|
||||
allow_methods: ["*"]
|
||||
allow_headers: ["*"]
|
||||
|
||||
data:
|
||||
local_data_folder: local_data/private_gpt
|
||||
|
Loading…
Reference in New Issue
Block a user