MCPcopy Create free account
hub / github.com/abetlen/llama-cpp-python / create_app

Function create_app

llama_cpp/server/app.py:100–155  ·  view source on GitHub ↗
(
    settings: Settings | None = None,
    server_settings: ServerSettings | None = None,
    model_settings: List[ModelSettings] | None = None,
)

Source from the content-addressed store, hash-verified

98
99
100def create_app(
101 settings: Settings | None = None,
102 server_settings: ServerSettings | None = None,
103 model_settings: List[ModelSettings] | None = None,
104):
105 config_file = os.environ.get("CONFIG_FILE", None)
106 if config_file is not None:
107 if not os.path.exists(config_file):
108 raise ValueError(f"Config file {config_file} not found!")
109 with open(config_file, "rb") as f:
110 # Check if yaml file
111 if config_file.endswith(".yaml") or config_file.endswith(".yml"):
112 import yaml
113
114 config_file_settings = ConfigFileSettings.model_validate_json(
115 json.dumps(yaml.safe_load(f))
116 )
117 else:
118 config_file_settings = ConfigFileSettings.model_validate_json(f.read())
119 server_settings = ServerSettings.model_validate(config_file_settings)
120 model_settings = config_file_settings.models
121
122 if server_settings is None and model_settings is None:
123 if settings is None:
124 settings = Settings()
125 server_settings = ServerSettings.model_validate(settings)
126 model_settings = [ModelSettings.model_validate(settings)]
127
128 assert server_settings is not None and model_settings is not None, (
129 "server_settings and model_settings must be provided together"
130 )
131
132 set_server_settings(server_settings)
133 middleware = [Middleware(RawContextMiddleware, plugins=(RequestIdPlugin(),))]
134 app = FastAPI(
135 middleware=middleware,
136 title="🦙 llama.cpp Python API",
137 version=llama_cpp.__version__,
138 root_path=server_settings.root_path,
139 )
140 app.add_middleware(
141 CORSMiddleware,
142 allow_origins=["*"],
143 allow_credentials=True,
144 allow_methods=["*"],
145 allow_headers=["*"],
146 )
147 app.include_router(router)
148
149 assert model_settings is not None
150 set_llama_proxy(model_settings=model_settings)
151
152 if server_settings.disable_ping_events:
153 set_ping_message_factory(lambda: bytes())
154
155 return app
156
157

Callers 2

mainFunction · 0.90
fastapi_server.pyFile · 0.90

Calls 4

SettingsClass · 0.90
set_server_settingsFunction · 0.85
set_llama_proxyFunction · 0.85
set_ping_message_factoryFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…