62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
import os
|
|
from fastapi import FastAPI
|
|
from naliiabot.bot.agent.agent import AgentConfig
|
|
from naliiabot.bot.factories.llm_factory import LLMFactory
|
|
from naliiabot.bot.prompts.load_prompt import get_prompt_template
|
|
from naliiabot.bot.tools.naliia_tools import NaliiaTools
|
|
from naliiabotapi.api.v1.endpoints.chat import router as chat_router
|
|
from naliiabotapi.api.v1.webhooks.chat_hook import router as chat_hook_router
|
|
import naliiabotapi.api.dependencies as deps
|
|
from contextlib import asynccontextmanager
|
|
from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
deps.db_pool = deps.get_async_connection_pool()
|
|
await deps.db_pool.open()
|
|
|
|
async with deps.db_pool.connection() as conn:
|
|
checkpointer = AsyncPostgresSaver(conn)
|
|
await checkpointer.setup()
|
|
|
|
model_name = os.getenv("LLM_MODEL", "anthropic")
|
|
model = LLMFactory(model_name).get_model()
|
|
naliia_prompt = get_prompt_template("NALIIA_PROMPT")
|
|
naliia_tools = NaliiaTools().get_tools()
|
|
config = AgentConfig(system_prompt=naliia_prompt)
|
|
|
|
deps.agent_instance = deps.Agent(
|
|
model=model,
|
|
config=config,
|
|
checkpointer=checkpointer,
|
|
tools=naliia_tools
|
|
)
|
|
|
|
yield
|
|
|
|
await deps.db_pool.close()
|
|
|
|
|
|
app = FastAPI(
|
|
title="NaliiaBot API",
|
|
description=(
|
|
"API for NaliiaBot, a chatbot that provides "
|
|
"customer service and related topics."),
|
|
version="1.0.0",
|
|
lifespan=lifespan
|
|
)
|
|
|
|
app.include_router(chat_router)
|
|
app.include_router(chat_hook_router)
|
|
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {"Hello": "World"}
|
|
|
|
|
|
@app.get("/health")
|
|
def health_check():
|
|
return {"status": "ok"}
|