app.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from fastapi import FastAPI, responses
  2. from pydantic import BaseModel
  3. from embedchain import Pipeline
  4. from dotenv import load_dotenv
  5. load_dotenv(".env")
  6. app = FastAPI(title="Embedchain FastAPI App")
  7. embedchain_app = Pipeline()
  8. class SourceModel(BaseModel):
  9. source: str
  10. class QuestionModel(BaseModel):
  11. question: str
  12. @app.post("/add")
  13. async def add_source(source_model: SourceModel):
  14. """
  15. Adds a new source to the EmbedChain app.
  16. Expects a JSON with a "source" key.
  17. """
  18. source = source_model.source
  19. embedchain_app.add(source)
  20. return {"message": f"Source '{source}' added successfully."}
  21. @app.post("/query")
  22. async def handle_query(question_model: QuestionModel):
  23. """
  24. Handles a query to the EmbedChain app.
  25. Expects a JSON with a "question" key.
  26. """
  27. question = question_model.question
  28. answer = embedchain_app.query(question)
  29. return {"answer": answer}
  30. @app.post("/chat")
  31. async def handle_chat(question_model: QuestionModel):
  32. """
  33. Handles a chat request to the EmbedChain app.
  34. Expects a JSON with a "question" key.
  35. """
  36. question = question_model.question
  37. response = embedchain_app.chat(question)
  38. return {"response": response}
  39. @app.get("/")
  40. async def root():
  41. return responses.RedirectResponse(url="/docs")