Spaces:
Running
Running
"""Manifest as an app service.""" | |
from typing import Any, Dict, cast | |
from fastapi import APIRouter, FastAPI, HTTPException | |
from manifest import Manifest | |
from manifest.response import Response as ManifestResponse | |
from web_app import schemas | |
app = FastAPI() | |
api_router = APIRouter() | |
async def root() -> Dict: | |
"""Root endpoint.""" | |
return {"message": "Hello to the Manifest App"} | |
def prompt_manifest(*, manifest_in: schemas.ManifestCreate) -> Dict: | |
"""Prompt a manifest session and query.""" | |
manifest = Manifest( | |
client_name=manifest_in.client_name, | |
client_connection=manifest_in.client_connection, | |
engine=manifest_in.engine, | |
cache_name=manifest_in.cache_name, | |
cache_connection=manifest_in.cache_connection, | |
) | |
manifest_prompt_args: Dict[str, Any] = { | |
"n": manifest_in.n, | |
"max_tokens": manifest_in.max_tokens, | |
} | |
if manifest_in.temperature: | |
manifest_prompt_args["temperature"] = manifest_in.temperature | |
if manifest_in.top_k: | |
manifest_prompt_args["top_k"] = manifest_in.top_k | |
if manifest_in.top_p: | |
manifest_prompt_args["top_p"] = manifest_in.top_p | |
try: | |
response = manifest.run( | |
prompt=manifest_in.prompt, return_response=True, **manifest_prompt_args | |
) | |
response = cast(ManifestResponse, response) | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
return { | |
"response": response.get_response(), | |
"cached": response.is_cached(), | |
"request_params": response.get_request_obj(), | |
} | |
app.include_router(api_router) | |