app.py 1.2 KB

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