From 57ae93b3cd0c6061a5192dfaa5dee35eb48b0520 Mon Sep 17 00:00:00 2001 From: Vasilije <8619304+Vasilije1990@users.noreply.github.com> Date: Tue, 17 Dec 2024 18:53:28 +0100 Subject: [PATCH 1/3] Update get_cognify_router.py --- .../v1/cognify/routers/get_cognify_router.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/cognee/api/v1/cognify/routers/get_cognify_router.py b/cognee/api/v1/cognify/routers/get_cognify_router.py index a56dbd7a5..1a53a7338 100644 --- a/cognee/api/v1/cognify/routers/get_cognify_router.py +++ b/cognee/api/v1/cognify/routers/get_cognify_router.py @@ -1,6 +1,6 @@ from fastapi import APIRouter -from typing import List, Optional -from pydantic import BaseModel +from typing import List, Optional, Any +from pydantic import BaseModel, create_model from cognee.modules.users.models import User from fastapi.responses import JSONResponse from cognee.modules.users.methods import get_authenticated_user @@ -9,7 +9,14 @@ class CognifyPayloadDTO(BaseModel): datasets: List[str] - graph_model: Optional[BaseModel] = None + graph_model: Optional[Any] = None + + +def json_to_pydantic_model(name: str, json_schema: dict) -> BaseModel: + """ + Create a Pydantic model on the fly from JSON. + """ + return create_model(name, **{k: (type(v), ...) for k, v in json_schema.items()}) def get_cognify_router() -> APIRouter: router = APIRouter() @@ -18,6 +25,15 @@ def get_cognify_router() -> APIRouter: async def cognify(payload: CognifyPayloadDTO, user: User = Depends(get_authenticated_user)): """ This endpoint is responsible for the cognitive processing of the content.""" from cognee.api.v1.cognify.cognify_v2 import cognify as cognee_cognify + try: + # Dynamic conversion of `graph_model` to Pydantic + if payload.graph_model: + graph_model_schema = payload.graph_model + GraphModelDynamic = json_to_pydantic_model("GraphModelDynamic", graph_model_schema) + graph_model_instance = GraphModelDynamic(**graph_model_schema) + print(graph_model_instance) + else: + graph_model_instance = None try: await cognee_cognify(payload.datasets, user, payload.graph_model) except Exception as error: From a42ab3e215f898c83ded7f546a96d7dce1127713 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Wed, 18 Dec 2024 10:58:48 +0100 Subject: [PATCH 2/3] fix: Resolve syntax issue with cognify router Resolve syntax issue with cognify router Fix --- cognee/api/v1/cognify/routers/get_cognify_router.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cognee/api/v1/cognify/routers/get_cognify_router.py b/cognee/api/v1/cognify/routers/get_cognify_router.py index 1a53a7338..739bd1657 100644 --- a/cognee/api/v1/cognify/routers/get_cognify_router.py +++ b/cognee/api/v1/cognify/routers/get_cognify_router.py @@ -6,6 +6,8 @@ from cognee.modules.users.methods import get_authenticated_user from fastapi import Depends +from cognee.shared.data_models import KnowledgeGraph + class CognifyPayloadDTO(BaseModel): datasets: List[str] @@ -32,10 +34,10 @@ async def cognify(payload: CognifyPayloadDTO, user: User = Depends(get_authentic GraphModelDynamic = json_to_pydantic_model("GraphModelDynamic", graph_model_schema) graph_model_instance = GraphModelDynamic(**graph_model_schema) print(graph_model_instance) - else: - graph_model_instance = None - try: - await cognee_cognify(payload.datasets, user, payload.graph_model) + else: + graph_model_instance = KnowledgeGraph + + await cognee_cognify(payload.datasets, user, graph_model_instance) except Exception as error: return JSONResponse( status_code=409, From a34d0102a0b3ee2a2cbabce78cf7f299d4224404 Mon Sep 17 00:00:00 2001 From: Boris Date: Fri, 20 Dec 2024 11:34:31 +0100 Subject: [PATCH 3/3] fix: instantiate KnowledgeGraph Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- cognee/api/v1/cognify/routers/get_cognify_router.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cognee/api/v1/cognify/routers/get_cognify_router.py b/cognee/api/v1/cognify/routers/get_cognify_router.py index 739bd1657..9e89793bd 100644 --- a/cognee/api/v1/cognify/routers/get_cognify_router.py +++ b/cognee/api/v1/cognify/routers/get_cognify_router.py @@ -35,7 +35,7 @@ async def cognify(payload: CognifyPayloadDTO, user: User = Depends(get_authentic graph_model_instance = GraphModelDynamic(**graph_model_schema) print(graph_model_instance) else: - graph_model_instance = KnowledgeGraph + graph_model_instance = KnowledgeGraph() await cognee_cognify(payload.datasets, user, graph_model_instance) except Exception as error: