feat: Add support for yaml based configs

This commit is contained in:
Andrei Betlen 2024-04-10 02:47:01 -04:00
parent 1347e1d050
commit 060bfa64d5
4 changed files with 50 additions and 2 deletions

View file

@ -0,0 +1,30 @@
"""llama-cpp-python server from scratch in a single file.
"""
# import llama_cpp
# path = b"../../models/Qwen1.5-0.5B-Chat-GGUF/qwen1_5-0_5b-chat-q8_0.gguf"
# model_params = llama_cpp.llama_model_default_params()
# model = llama_cpp.llama_load_model_from_file(path, model_params)
# if model is None:
# raise RuntimeError(f"Failed to load model from file: {path}")
# ctx_params = llama_cpp.llama_context_default_params()
# ctx = llama_cpp.llama_new_context_with_model(model, ctx_params)
# if ctx is None:
# raise RuntimeError("Failed to create context")
from fastapi import FastAPI
app = FastAPI()
import openai.types.chat as types
@app.post("/v1/chat/completions")
def create_chat_completions():
return {"message": "Hello World"}

View file

@ -59,6 +59,15 @@ def main():
if not os.path.exists(config_file): if not os.path.exists(config_file):
raise ValueError(f"Config file {config_file} not found!") raise ValueError(f"Config file {config_file} not found!")
with open(config_file, "rb") as f: with open(config_file, "rb") as f:
# Check if yaml file
if config_file.endswith(".yaml") or config_file.endswith(".yml"):
import yaml
import json
config_file_settings = ConfigFileSettings.model_validate_json(
json.dumps(yaml.safe_load(f))
)
else:
config_file_settings = ConfigFileSettings.model_validate_json(f.read()) config_file_settings = ConfigFileSettings.model_validate_json(f.read())
server_settings = ServerSettings.model_validate(config_file_settings) server_settings = ServerSettings.model_validate(config_file_settings)
model_settings = config_file_settings.models model_settings = config_file_settings.models

View file

@ -97,6 +97,14 @@ def create_app(
if not os.path.exists(config_file): if not os.path.exists(config_file):
raise ValueError(f"Config file {config_file} not found!") raise ValueError(f"Config file {config_file} not found!")
with open(config_file, "rb") as f: with open(config_file, "rb") as f:
# Check if yaml file
if config_file.endswith(".yaml") or config_file.endswith(".yml"):
import yaml
config_file_settings = ConfigFileSettings.model_validate_json(
json.dumps(yaml.safe_load(f))
)
else:
config_file_settings = ConfigFileSettings.model_validate_json(f.read()) config_file_settings = ConfigFileSettings.model_validate_json(f.read())
server_settings = ServerSettings.model_validate(config_file_settings) server_settings = ServerSettings.model_validate(config_file_settings)
model_settings = config_file_settings.models model_settings = config_file_settings.models

View file

@ -35,6 +35,7 @@ server = [
"pydantic-settings>=2.0.1", "pydantic-settings>=2.0.1",
"sse-starlette>=1.6.1", "sse-starlette>=1.6.1",
"starlette-context>=0.3.6,<0.4", "starlette-context>=0.3.6,<0.4",
"PyYAML>=5.1",
] ]
test = [ test = [
"pytest>=7.4.0", "pytest>=7.4.0",