-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.py
More file actions
56 lines (36 loc) · 1.29 KB
/
main.py
File metadata and controls
56 lines (36 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Any
from logic import generate_build_suggestion, generate_chat_response
from dotenv import load_dotenv
import uvicorn
import os
# Load environment variables from .env file
load_dotenv()
app = FastAPI(title="AI Service", description="Service for AI features like Builder Bot and Chat", version="1.0.0")
class ChatRequest(BaseModel):
message: str
class ChatResponse(BaseModel):
response: str
class BuilderBotRequest(BaseModel):
query: str
class BuildSuggestion(BaseModel):
components: List[Any]
totalPrice: float
class BuilderBotResponse(BaseModel):
message: str
buildSuggestion: BuildSuggestion
@app.get("/health")
def health_check():
return {"status": "healthy"}
@app.post("/chat", response_model=ChatResponse)
def chat(request: ChatRequest):
response_text = generate_chat_response(request.message)
return ChatResponse(response=response_text)
@app.post("/builder-bot", response_model=BuilderBotResponse)
def builder_bot(request: BuilderBotRequest):
result = generate_build_suggestion(request.query)
return BuilderBotResponse(**result)
if __name__ == "__main__":
port = int(os.getenv("PORT", "8089"))
uvicorn.run("main:app", host="0.0.0.0", port=port, reload=True)