knowledge service (#367)

* Write knowledge core elements to Cassandra

* Store service works, building management service

* kg-manager
This commit is contained in:
cybermaggedon 2025-05-06 23:44:10 +01:00 committed by GitHub
parent d0da122bed
commit 807c19fd22
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 1196 additions and 243 deletions

View file

@ -0,0 +1,68 @@
import base64
from ... schema import KnowledgeRequest, KnowledgeResponse
from ... schema import knowledge_request_queue
from ... schema import knowledge_response_queue
from . requestor import ServiceRequestor
from . serialize import serialize_graph_embeddings
from . serialize import serialize_triples
from . serialize import to_document_metadata, to_processing_metadata
class KnowledgeRequestor(ServiceRequestor):
def __init__(self, pulsar_client, consumer, subscriber, timeout=120):
super(KnowledgeRequestor, self).__init__(
pulsar_client=pulsar_client,
consumer_name = consumer,
subscription = subscriber,
request_queue=knowledge_request_queue,
response_queue=knowledge_response_queue,
request_schema=KnowledgeRequest,
response_schema=KnowledgeResponse,
timeout=timeout,
)
def to_request(self, body):
return KnowledgeRequest(
operation = body.get("operation", None),
user = body.get("user", None),
id = body.get("id", None),
)
def from_response(self, message):
print("Processing message")
# Response to list,
if message.ids is not None:
print("-> IDS")
return {
"ids": message.ids
}, True
if message.triples:
print("-> triples")
return {
"triples": serialize_triples(message.triples)
}, False
if message.graph_embeddings:
print("-> ge")
return {
"graph-embeddings": serialize_graph_embeddings(
message.graph_embeddings
)
}, False
if message.eos is True:
print("-> eos")
return {
"eos": True
}, True
# Empty case, return from successful delete.
return {}, True

View file

@ -5,6 +5,7 @@ import uuid
from . config import ConfigRequestor
from . flow import FlowRequestor
from . librarian import LibrarianRequestor
from . knowledge import KnowledgeRequestor
from . embeddings import EmbeddingsRequestor
from . agent import AgentRequestor
@ -44,6 +45,7 @@ global_dispatchers = {
"config": ConfigRequestor,
"flow": FlowRequestor,
"librarian": LibrarianRequestor,
"knowledge": KnowledgeRequestor,
}
sender_dispatchers = {

View file

@ -82,7 +82,7 @@ class ServiceRequestor:
resp, fin = self.from_response(resp)
print(resp, fin)
print(resp, fin, flush=True)
if responder:
await responder(resp, fin)