Plumb prompt into extraction

This commit is contained in:
Cyber MacGeddon 2024-08-13 17:23:40 +01:00
parent 428a869a93
commit 1818e3c72b
17 changed files with 331 additions and 107 deletions

View file

@ -56,10 +56,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -132,6 +132,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -60,10 +60,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -136,6 +136,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -56,10 +56,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -132,6 +132,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -60,10 +60,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -136,6 +136,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -60,10 +60,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -136,6 +136,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -56,10 +56,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -132,6 +132,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -56,10 +56,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -132,6 +132,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -56,10 +56,10 @@
- "graph-rag" - "graph-rag"
- "-p" - "-p"
- "pulsar://pulsar:6650" - "pulsar://pulsar:6650"
- "--text-completion-request-queue" - "--prompt-request-queue"
- "non-persistent://tg/request/text-completion-rag" - "non-persistent://tg/request/prompt-rag"
- "--text-completion-response-queue" - "--prompt-response-queue"
- "non-persistent://tg/response/text-completion-rag-response" - "non-persistent://tg/response/prompt-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0" "image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100" "restart": "on-failure:100"
"init-pulsar": "init-pulsar":
@ -132,6 +132,32 @@
"volumes": "volumes":
- "./prometheus:/etc/prometheus" - "./prometheus:/etc/prometheus"
- "prometheus-data:/prometheus" - "prometheus-data:/prometheus"
"prompt":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"prompt-rag":
"command":
- "prompt-generic"
- "-p"
- "pulsar://pulsar:6650"
- "-i"
- "non-persistent://tg/request/prompt-rag"
- "-o"
- "non-persistent://tg/response/prompt-rag-response"
- "--text-completion-request-queue"
- "non-persistent://tg/request/text-completion-rag"
- "--text-completion-response-queue"
- "non-persistent://tg/response/text-completion-rag-response"
"image": "docker.io/trustgraph/trustgraph-flow:0.6.0"
"restart": "on-failure:100"
"pulsar": "pulsar":
"command": "bin/pulsar standalone" "command": "bin/pulsar standalone"
"image": "docker.io/apachepulsar/pulsar:3.3.0" "image": "docker.io/apachepulsar/pulsar:3.3.0"

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from trustgraph.model.language.prompt.generic import run from trustgraph.model.prompt.generic import run
run() run()

View file

@ -116,6 +116,36 @@ local cassandra_hosts = "cassandra";
"graph-rag", "graph-rag",
"-p", "-p",
url.pulsar, url.pulsar,
"--prompt-request-queue",
"non-persistent://tg/request/prompt-rag",
"--prompt-response-queue",
"non-persistent://tg/response/prompt-rag-response",
],
},
"prompt": base + {
image: images.trustgraph,
command: [
"prompt-generic",
"-p",
url.pulsar,
"--text-completion-request-queue",
"non-persistent://tg/request/text-completion",
"--text-completion-response-queue",
"non-persistent://tg/response/text-completion-response",
],
},
"prompt-rag": base + {
image: images.trustgraph,
command: [
"prompt-generic",
"-p",
url.pulsar,
"-i",
"non-persistent://tg/request/prompt-rag",
"-o",
"non-persistent://tg/response/prompt-rag-response",
"--text-completion-request-queue", "--text-completion-request-queue",
"non-persistent://tg/request/text-completion-rag", "non-persistent://tg/request/text-completion-rag",
"--text-completion-response-queue", "--text-completion-response-queue",
@ -126,3 +156,4 @@ local cassandra_hosts = "cassandra";
}, },
} }

View file

@ -9,11 +9,10 @@ import json
from ... schema import ChunkEmbeddings, Triple, Source, Value from ... schema import ChunkEmbeddings, Triple, Source, Value
from ... schema import chunk_embeddings_ingest_queue, triples_store_queue from ... schema import chunk_embeddings_ingest_queue, triples_store_queue
from ... schema import text_completion_request_queue from ... schema import prompt_request_queue
from ... schema import text_completion_response_queue from ... schema import prompt_response_queue
from ... log_level import LogLevel from ... log_level import LogLevel
from ... llm_client import LlmClient from ... prompt_client import PromptClient
from ... prompts import to_definitions
from ... rdf import TRUSTGRAPH_ENTITIES, DEFINITION from ... rdf import TRUSTGRAPH_ENTITIES, DEFINITION
from ... base import ConsumerProducer from ... base import ConsumerProducer
@ -32,11 +31,11 @@ class Processor(ConsumerProducer):
input_queue = params.get("input_queue", default_input_queue) input_queue = params.get("input_queue", default_input_queue)
output_queue = params.get("output_queue", default_output_queue) output_queue = params.get("output_queue", default_output_queue)
subscriber = params.get("subscriber", default_subscriber) subscriber = params.get("subscriber", default_subscriber)
tc_request_queue = params.get( pr_request_queue = params.get(
"text_completion_request_queue", text_completion_request_queue "prompt_request_queue", prompt_request_queue
) )
tc_response_queue = params.get( pr_response_queue = params.get(
"text_completion_response_queue", text_completion_response_queue "prompt_response_queue", prompt_response_queue
) )
super(Processor, self).__init__( super(Processor, self).__init__(
@ -46,16 +45,16 @@ class Processor(ConsumerProducer):
"subscriber": subscriber, "subscriber": subscriber,
"input_schema": ChunkEmbeddings, "input_schema": ChunkEmbeddings,
"output_schema": Triple, "output_schema": Triple,
"text_completion_request_queue": tc_request_queue, "prompt_request_queue": pr_request_queue,
"text_completion_response_queue": tc_response_queue, "prompt_response_queue": pr_response_queue,
} }
) )
self.llm = LlmClient( self.prompt = PromptClient(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
input_queue=tc_request_queue, input_queue=pr_request_queue,
output_queue=tc_response_queue, output_queue=pr_response_queue,
subscriber = module + "-llm", subscriber = module + "-prompt",
) )
def to_uri(self, text): def to_uri(self, text):
@ -68,12 +67,7 @@ class Processor(ConsumerProducer):
def get_definitions(self, chunk): def get_definitions(self, chunk):
prompt = to_definitions(chunk) return self.prompt.request_definitions(chunk)
resp = self.llm.request(prompt)
defs = json.loads(resp)
return defs
def emit_edge(self, s, p, o): def emit_edge(self, s, p, o):
@ -90,14 +84,13 @@ class Processor(ConsumerProducer):
try: try:
defs = self.get_definitions(chunk) defs = self.get_definitions(chunk)
print(json.dumps(defs, indent=4), flush=True)
for defn in defs: for defn in defs:
s = defn["entity"] s = defn.name
s_uri = self.to_uri(s) s_uri = self.to_uri(s)
o = defn["definition"] o = defn.definition
if s == "": continue if s == "": continue
if o == "": continue if o == "": continue
@ -121,15 +114,15 @@ class Processor(ConsumerProducer):
) )
parser.add_argument( parser.add_argument(
'--text-completion-request-queue', '--prompt-request-queue',
default=text_completion_request_queue, default=prompt_request_queue,
help=f'Text completion request queue (default: {text_completion_request_queue})', help=f'Prompt request queue (default: {prompt_request_queue})',
) )
parser.add_argument( parser.add_argument(
'--text-completion-response-queue', '--prompt-completion-response-queue',
default=text_completion_response_queue, default=prompt_response_queue,
help=f'Text completion response queue (default: {text_completion_response_queue})', help=f'Prompt response queue (default: {prompt_response_queue})',
) )
def run(): def run():

View file

@ -6,18 +6,16 @@ graph edges.
""" """
import urllib.parse import urllib.parse
import json
import os import os
from pulsar.schema import JsonSchema from pulsar.schema import JsonSchema
from ... schema import ChunkEmbeddings, Triple, GraphEmbeddings, Source, Value from ... schema import ChunkEmbeddings, Triple, GraphEmbeddings, Source, Value
from ... schema import chunk_embeddings_ingest_queue, triples_store_queue from ... schema import chunk_embeddings_ingest_queue, triples_store_queue
from ... schema import graph_embeddings_store_queue from ... schema import graph_embeddings_store_queue
from ... schema import text_completion_request_queue from ... schema import prompt_request_queue
from ... schema import text_completion_response_queue from ... schema import prompt_response_queue
from ... log_level import LogLevel from ... log_level import LogLevel
from ... llm_client import LlmClient from ... prompt_client import PromptClient
from ... prompts import to_relationships
from ... rdf import RDF_LABEL, TRUSTGRAPH_ENTITIES from ... rdf import RDF_LABEL, TRUSTGRAPH_ENTITIES
from ... base import ConsumerProducer from ... base import ConsumerProducer
@ -38,11 +36,11 @@ class Processor(ConsumerProducer):
output_queue = params.get("output_queue", default_output_queue) output_queue = params.get("output_queue", default_output_queue)
vector_queue = params.get("vector_queue", default_vector_queue) vector_queue = params.get("vector_queue", default_vector_queue)
subscriber = params.get("subscriber", default_subscriber) subscriber = params.get("subscriber", default_subscriber)
tc_request_queue = params.get( pr_request_queue = params.get(
"text_completion_request_queue", text_completion_request_queue "prompt_request_queue", prompt_request_queue
) )
tc_response_queue = params.get( pr_response_queue = params.get(
"text_completion_response_queue", text_completion_response_queue "prompt_response_queue", prompt_response_queue
) )
super(Processor, self).__init__( super(Processor, self).__init__(
@ -52,8 +50,8 @@ class Processor(ConsumerProducer):
"subscriber": subscriber, "subscriber": subscriber,
"input_schema": ChunkEmbeddings, "input_schema": ChunkEmbeddings,
"output_schema": Triple, "output_schema": Triple,
"text_completion_request_queue": tc_request_queue, "prompt_request_queue": pr_request_queue,
"text_completion_response_queue": tc_response_queue, "prompt_response_queue": pr_response_queue,
} }
) )
@ -66,19 +64,19 @@ class Processor(ConsumerProducer):
"input_queue": input_queue, "input_queue": input_queue,
"output_queue": output_queue, "output_queue": output_queue,
"vector_queue": vector_queue, "vector_queue": vector_queue,
"text_completion_request_queue": tc_request_queue, "prompt_request_queue": pr_request_queue,
"text_completion_response_queue": tc_response_queue, "prompt_response_queue": pr_response_queue,
"subscriber": subscriber, "subscriber": subscriber,
"input_schema": ChunkEmbeddings.__name__, "input_schema": ChunkEmbeddings.__name__,
"output_schema": Triple.__name__, "output_schema": Triple.__name__,
"vector_schema": GraphEmbeddings.__name__, "vector_schema": GraphEmbeddings.__name__,
}) })
self.llm = LlmClient( self.prompt = PromptClient(
pulsar_host = self.pulsar_host, pulsar_host=self.pulsar_host,
input_queue=tc_request_queue, input_queue=pr_request_queue,
output_queue=tc_response_queue, output_queue=pr_response_queue,
subscriber = module + "-llm", subscriber = module + "-prompt",
) )
def to_uri(self, text): def to_uri(self, text):
@ -91,12 +89,7 @@ class Processor(ConsumerProducer):
def get_relationships(self, chunk): def get_relationships(self, chunk):
prompt = to_relationships(chunk) return self.prompt.request_relationships(chunk)
resp = self.llm.request(prompt)
rels = json.loads(resp)
return rels
def emit_edge(self, s, p, o): def emit_edge(self, s, p, o):
@ -118,13 +111,12 @@ class Processor(ConsumerProducer):
try: try:
rels = self.get_relationships(chunk) rels = self.get_relationships(chunk)
print(json.dumps(rels, indent=4), flush=True)
for rel in rels: for rel in rels:
s = rel["subject"] s = rel.s
p = rel["predicate"] p = rel.p
o = rel["object"] o = rel.o
if s == "": continue if s == "": continue
if p == "": continue if p == "": continue
@ -136,7 +128,7 @@ class Processor(ConsumerProducer):
p_uri = self.to_uri(p) p_uri = self.to_uri(p)
p_value = Value(value=str(p_uri), is_uri=True) p_value = Value(value=str(p_uri), is_uri=True)
if rel["object-entity"]: if rel.o_entity:
o_uri = self.to_uri(o) o_uri = self.to_uri(o)
o_value = Value(value=str(o_uri), is_uri=True) o_value = Value(value=str(o_uri), is_uri=True)
else: else:
@ -162,7 +154,7 @@ class Processor(ConsumerProducer):
Value(value=str(p), is_uri=False) Value(value=str(p), is_uri=False)
) )
if rel["object-entity"]: if rel.o_entity:
# Label for o # Label for o
self.emit_edge( self.emit_edge(
o_value, o_value,
@ -172,7 +164,7 @@ class Processor(ConsumerProducer):
self.emit_vec(s_value, v.vectors) self.emit_vec(s_value, v.vectors)
self.emit_vec(p_value, v.vectors) self.emit_vec(p_value, v.vectors)
if rel["object-entity"]: if rel.o_entity:
self.emit_vec(o_value, v.vectors) self.emit_vec(o_value, v.vectors)
except Exception as e: except Exception as e:
@ -195,15 +187,15 @@ class Processor(ConsumerProducer):
) )
parser.add_argument( parser.add_argument(
'--text-completion-request-queue', '--prompt-request-queue',
default=text_completion_request_queue, default=prompt_request_queue,
help=f'Text completion request queue (default: {text_completion_request_queue})', help=f'Prompt request queue (default: {prompt_request_queue})',
) )
parser.add_argument( parser.add_argument(
'--text-completion-response-queue', '--prompt-response-queue',
default=text_completion_response_queue, default=prompt_response_queue,
help=f'Text completion response queue (default: {text_completion_response_queue})', help=f'Prompt response queue (default: {prompt_response_queue})',
) )
def run(): def run():

View file

@ -5,14 +5,14 @@ Language service abstracts prompt engineering from LLM.
import json import json
from ..... schema import Definition, Relationship, Triple from .... schema import Definition, Relationship, Triple
from ..... schema import PromptRequest, PromptResponse from .... schema import PromptRequest, PromptResponse
from ..... schema import TextCompletionRequest, TextCompletionResponse from .... schema import TextCompletionRequest, TextCompletionResponse
from ..... schema import text_completion_request_queue from .... schema import text_completion_request_queue
from ..... schema import text_completion_response_queue from .... schema import text_completion_response_queue
from ..... schema import prompt_request_queue, prompt_response_queue from .... schema import prompt_request_queue, prompt_response_queue
from ..... base import ConsumerProducer from .... base import ConsumerProducer
from ..... llm_client import LlmClient from .... llm_client import LlmClient
from . prompts import to_definitions, to_relationships, to_kg_query from . prompts import to_definitions, to_relationships, to_kg_query