Add pulsar API token check

This commit is contained in:
Tyler O 2025-02-10 16:30:53 +00:00 committed by Cyber MacGeddon
parent f7df2df266
commit 0464423b04
42 changed files with 199 additions and 24 deletions

View file

@ -12,6 +12,7 @@ from .. log_level import LogLevel
class BaseProcessor: class BaseProcessor:
default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://pulsar:6650') default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://pulsar:6650')
default_pulsar_api_key = os.getenv("PULSAR_API_KEY", None)
def __init__(self, **params): def __init__(self, **params):
@ -30,15 +31,23 @@ class BaseProcessor:
pulsar_host = params.get("pulsar_host", self.default_pulsar_host) pulsar_host = params.get("pulsar_host", self.default_pulsar_host)
pulsar_listener = params.get("pulsar_listener", None) pulsar_listener = params.get("pulsar_listener", None)
pulsar_api_key = params.get("pulsar_api_key", None)
log_level = params.get("log_level", LogLevel.INFO) log_level = params.get("log_level", LogLevel.INFO)
self.pulsar_host = pulsar_host self.pulsar_host = pulsar_host
if pulsar_api_key:
self.client = pulsar.Client( auth = pulsar.AuthenticationToken(pulsar_api_key)
self.client = pulsar.Client(
pulsar_host,
authentication=auth,
logger=pulsar.ConsoleLogger(log_level.to_pulsar())
)
else:
self.client = pulsar.Client(
pulsar_host, pulsar_host,
listener_name=pulsar_listener, listener_name=pulsar_listener,
logger=pulsar.ConsoleLogger(log_level.to_pulsar()) logger=pulsar.ConsoleLogger(log_level.to_pulsar())
) )
self.pulsar_listener = pulsar_listener self.pulsar_listener = pulsar_listener
@ -56,6 +65,12 @@ class BaseProcessor:
default=__class__.default_pulsar_host, default=__class__.default_pulsar_host,
help=f'Pulsar host (default: {__class__.default_pulsar_host})', help=f'Pulsar host (default: {__class__.default_pulsar_host})',
) )
parser.add_argument(
'--pulsar-api-key',
default=__class__.default_pulsar_api_key,
help=f'Pulsar API key',
)
parser.add_argument( parser.add_argument(
'--pulsar-listener', '--pulsar-listener',

View file

@ -31,8 +31,6 @@ class Publisher:
while self.running: while self.running:
try: try:
print(self.chunking_enabled)
producer = self.client.create_producer( producer = self.client.create_producer(
topic=self.topic, topic=self.topic,
schema=self.schema, schema=self.schema,

View file

@ -20,6 +20,7 @@ class AgentClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue is None: input_queue = agent_request_queue if input_queue is None: input_queue = agent_request_queue
@ -33,6 +34,7 @@ class AgentClient(BaseClient):
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
input_schema=AgentRequest, input_schema=AgentRequest,
output_schema=AgentResponse, output_schema=AgentResponse,
pulsar_api_key=pulsar_api_key
) )
def request( def request(

View file

@ -27,6 +27,7 @@ class BaseClient:
input_schema=None, input_schema=None,
output_schema=None, output_schema=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: raise RuntimeError("Need input_queue") if input_queue == None: raise RuntimeError("Need input_queue")
@ -37,10 +38,18 @@ class BaseClient:
if subscriber == None: if subscriber == None:
subscriber = str(uuid.uuid4()) subscriber = str(uuid.uuid4())
self.client = pulsar.Client( if pulsar_api_key:
auth = pulsar.AuthenticationToken(pulsar_api_key)
self.client = pulsar.Client(
pulsar_host, pulsar_host,
logger=pulsar.ConsoleLogger(log_level), authentication=auth,
) logger=pulsar.ConsoleLogger(log_level.to_pulsar())
)
else:
self.client = pulsar.Client(
pulsar_host,
logger=pulsar.ConsoleLogger(log_level.to_pulsar())
)
self.producer = self.client.create_producer( self.producer = self.client.create_producer(
topic=input_queue, topic=input_queue,

View file

@ -20,6 +20,7 @@ class DocumentEmbeddingsClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -34,6 +35,7 @@ class DocumentEmbeddingsClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=DocumentEmbeddingsRequest, input_schema=DocumentEmbeddingsRequest,
output_schema=DocumentEmbeddingsResponse, output_schema=DocumentEmbeddingsResponse,
) )

View file

@ -20,6 +20,7 @@ class DocumentRagClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -34,6 +35,7 @@ class DocumentRagClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=DocumentRagQuery, input_schema=DocumentRagQuery,
output_schema=DocumentRagResponse, output_schema=DocumentRagResponse,
) )

View file

@ -20,6 +20,7 @@ class EmbeddingsClient(BaseClient):
output_queue=None, output_queue=None,
subscriber=None, subscriber=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -34,6 +35,7 @@ class EmbeddingsClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=EmbeddingsRequest, input_schema=EmbeddingsRequest,
output_schema=EmbeddingsResponse, output_schema=EmbeddingsResponse,
) )

View file

@ -20,6 +20,7 @@ class GraphEmbeddingsClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -34,6 +35,7 @@ class GraphEmbeddingsClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=GraphEmbeddingsRequest, input_schema=GraphEmbeddingsRequest,
output_schema=GraphEmbeddingsResponse, output_schema=GraphEmbeddingsResponse,
) )

View file

@ -20,6 +20,7 @@ class GraphRagClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -34,6 +35,7 @@ class GraphRagClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=GraphRagQuery, input_schema=GraphRagQuery,
output_schema=GraphRagResponse, output_schema=GraphRagResponse,
) )

View file

@ -20,6 +20,7 @@ class LlmClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue is None: input_queue = text_completion_request_queue if input_queue is None: input_queue = text_completion_request_queue
@ -31,6 +32,7 @@ class LlmClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=TextCompletionRequest, input_schema=TextCompletionRequest,
output_schema=TextCompletionResponse, output_schema=TextCompletionResponse,
) )

View file

@ -39,6 +39,7 @@ class PromptClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -53,6 +54,7 @@ class PromptClient(BaseClient):
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
input_schema=PromptRequest, input_schema=PromptRequest,
output_schema=PromptResponse, output_schema=PromptResponse,
) )

View file

@ -21,6 +21,7 @@ class TriplesQueryClient(BaseClient):
input_queue=None, input_queue=None,
output_queue=None, output_queue=None,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
): ):
if input_queue == None: if input_queue == None:
@ -34,6 +35,7 @@ class TriplesQueryClient(BaseClient):
subscriber=subscriber, subscriber=subscriber,
input_queue=input_queue, input_queue=input_queue,
output_queue=output_queue, output_queue=output_queue,
pulsar_api_key=pulsar_api_key,
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
input_schema=TriplesQueryRequest, input_schema=TriplesQueryRequest,
output_schema=TriplesQueryResponse, output_schema=TriplesQueryResponse,

View file

@ -48,7 +48,13 @@ def main():
default=default_collection, default=default_collection,
help=f'Collection ID (default: {default_collection})' help=f'Collection ID (default: {default_collection})'
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
args = parser.parse_args() args = parser.parse_args()
try: try:
@ -57,6 +63,7 @@ def main():
url=args.api_url, url=args.api_url,
user=args.user, user=args.user,
collection=args.collection, collection=args.collection,
pulsar_api_key=args.pulsar_api_key,
) )
except Exception as e: except Exception as e:

View file

@ -80,7 +80,13 @@ def main():
default=default_collection, default=default_collection,
help=f'Collection ID (default: {default_collection})' help=f'Collection ID (default: {default_collection})'
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
args = parser.parse_args() args = parser.parse_args()
try: try:

View file

@ -137,6 +137,12 @@ def main():
action="store_true", action="store_true",
help=f'Output thinking/observations' help=f'Output thinking/observations'
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
args = parser.parse_args() args = parser.parse_args()

View file

@ -34,8 +34,14 @@ def main():
help=f'API URL (default: {default_url})', help=f'API URL (default: {default_url})',
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
parser.add_argument( parser.add_argument(
'-q', '--question', '-q', '--query',
required=True, required=True,
help=f'Question to answer', help=f'Question to answer',
) )

View file

@ -33,6 +33,12 @@ def main():
default=default_url, default=default_url,
help=f'API URL (default: {default_url})', help=f'API URL (default: {default_url})',
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
parser.add_argument( parser.add_argument(
'-q', '--question', '-q', '--question',

View file

@ -32,7 +32,7 @@ def main():
default=default_url, default=default_url,
help=f'API URL (default: {default_url})', help=f'API URL (default: {default_url})',
) )
parser.add_argument( parser.add_argument(
'system', 'system',
nargs=1, nargs=1,
@ -44,6 +44,12 @@ def main():
nargs=1, nargs=1,
help='LLM prompt e.g. What is 2 + 2?', help='LLM prompt e.g. What is 2 + 2?',
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
args = parser.parse_args() args = parser.parse_args()

View file

@ -54,6 +54,12 @@ def main():
help='''Prompt template terms of the form variable=value, can be help='''Prompt template terms of the form variable=value, can be
specified multiple times''', specified multiple times''',
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
args = parser.parse_args() args = parser.parse_args()

View file

@ -30,6 +30,7 @@ class Loader:
user, user,
collection, collection,
metadata, metadata,
pulsar_api_key=None,
): ):
self.api = Api(url) self.api = Api(url)
@ -80,6 +81,12 @@ def main():
default=default_url, default=default_url,
help=f'API URL (default: {default_url})', help=f'API URL (default: {default_url})',
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
parser.add_argument( parser.add_argument(
'-U', '--user', '-U', '--user',

View file

@ -30,6 +30,7 @@ class Loader:
user, user,
collection, collection,
metadata, metadata,
pulsar_api_key=None,
): ):
self.api = Api(url) self.api = Api(url)
@ -80,6 +81,12 @@ def main():
default=default_url, default=default_url,
help=f'API URL (default: {default_url})', help=f'API URL (default: {default_url})',
) )
# parser.add_argument(
# '--pulsar-api-key',
# default=default_pulsar_api_key,
# help=f'Pulsar API key',
# )
parser.add_argument( parser.add_argument(
'-U', '--user', '-U', '--user',

View file

@ -19,6 +19,8 @@ from trustgraph.log_level import LogLevel
default_user = 'trustgraph' default_user = 'trustgraph'
default_collection = 'default' default_collection = 'default'
default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://localhost:6650') default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://localhost:6650')
default_pulsar_api_key = os.getenv("PULSAR_API_KEY", None)
default_output_queue = triples_store_queue default_output_queue = triples_store_queue
class Loader: class Loader:
@ -31,12 +33,21 @@ class Loader:
files, files,
user, user,
collection, collection,
pulsar_api_key=None,
): ):
self.client = pulsar.Client( if pulsar_api_key:
pulsar_host, auth = pulsar.AuthenticationToken(pulsar_api_key)
logger=pulsar.ConsoleLogger(log_level.to_pulsar()) self.client = pulsar.Client(
) pulsar_host,
authentication=auth,
logger=pulsar.ConsoleLogger(log_level.to_pulsar())
)
else:
self.client = pulsar.Client(
pulsar_host,
logger=pulsar.ConsoleLogger(log_level.to_pulsar())
)
self.producer = self.client.create_producer( self.producer = self.client.create_producer(
topic=output_queue, topic=output_queue,
@ -98,6 +109,12 @@ def main():
default=default_pulsar_host, default=default_pulsar_host,
help=f'Pulsar host (default: {default_pulsar_host})', help=f'Pulsar host (default: {default_pulsar_host})',
) )
parser.add_argument(
'--pulsar-api-key',
default=default_pulsar_api_key,
help=f'Pulsar API key',
)
parser.add_argument( parser.add_argument(
'-o', '--output-queue', '-o', '--output-queue',
@ -137,6 +154,7 @@ def main():
try: try:
p = Loader( p = Loader(
pulsar_host=args.pulsar_host, pulsar_host=args.pulsar_host,
pulsar_api_key=args.pulsar_api_key,
output_queue=args.output_queue, output_queue=args.output_queue,
log_level=args.log_level, log_level=args.log_level,
files=args.files, files=args.files,

View file

@ -156,14 +156,16 @@ class Processor(ConsumerProducer):
subscriber=subscriber, subscriber=subscriber,
input_queue=prompt_request_queue, input_queue=prompt_request_queue,
output_queue=prompt_response_queue, output_queue=prompt_response_queue,
pulsar_host = self.pulsar_host pulsar_host = self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
) )
self.graph_rag = GraphRagClient( self.graph_rag = GraphRagClient(
subscriber=subscriber, subscriber=subscriber,
input_queue=graph_rag_request_queue, input_queue=graph_rag_request_queue,
output_queue=graph_rag_response_queue, output_queue=graph_rag_response_queue,
pulsar_host = self.pulsar_host pulsar_host = self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
) )
# Need to be able to feed requests to myself # Need to be able to feed requests to myself

View file

@ -59,6 +59,7 @@ class DocumentRag:
def __init__( def __init__(
self, self,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
pr_request_queue=None, pr_request_queue=None,
pr_response_queue=None, pr_response_queue=None,
emb_request_queue=None, emb_request_queue=None,
@ -100,6 +101,7 @@ class DocumentRag:
subscriber=module + "-de", subscriber=module + "-de",
input_queue=de_request_queue, input_queue=de_request_queue,
output_queue=de_response_queue, output_queue=de_response_queue,
pulsar_api_key=pulsar_api_key,
) )
self.embeddings = EmbeddingsClient( self.embeddings = EmbeddingsClient(
@ -107,6 +109,7 @@ class DocumentRag:
input_queue=emb_request_queue, input_queue=emb_request_queue,
output_queue=emb_response_queue, output_queue=emb_response_queue,
subscriber=module + "-emb", subscriber=module + "-emb",
pulsar_api_key=pulsar_api_key,
) )
self.lang = PromptClient( self.lang = PromptClient(
@ -114,6 +117,7 @@ class DocumentRag:
input_queue=pr_request_queue, input_queue=pr_request_queue,
output_queue=pr_response_queue, output_queue=pr_response_queue,
subscriber=module + "-de-prompt", subscriber=module + "-de-prompt",
pulsar_api_key=pulsar_api_key,
) )
if self.verbose: if self.verbose:

View file

@ -47,6 +47,7 @@ class Processor(ConsumerProducer):
self.embeddings = EmbeddingsClient( self.embeddings = EmbeddingsClient(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
input_queue=emb_request_queue, input_queue=emb_request_queue,
output_queue=emb_response_queue, output_queue=emb_response_queue,
subscriber=module + "-emb", subscriber=module + "-emb",

View file

@ -79,6 +79,7 @@ class Processor(ConsumerProducer):
self.prompt = PromptClient( self.prompt = PromptClient(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
input_queue=pr_request_queue, input_queue=pr_request_queue,
output_queue=pr_response_queue, output_queue=pr_response_queue,
subscriber = module + "-prompt", subscriber = module + "-prompt",

View file

@ -54,6 +54,7 @@ class Processor(ConsumerProducer):
self.prompt = PromptClient( self.prompt = PromptClient(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
input_queue=pr_request_queue, input_queue=pr_request_queue,
output_queue=pr_response_queue, output_queue=pr_response_queue,
subscriber = module + "-prompt", subscriber = module + "-prompt",

View file

@ -52,6 +52,7 @@ class Processor(ConsumerProducer):
self.prompt = PromptClient( self.prompt = PromptClient(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
input_queue=pr_request_queue, input_queue=pr_request_queue,
output_queue=pr_response_queue, output_queue=pr_response_queue,
subscriber = module + "-prompt", subscriber = module + "-prompt",

View file

@ -112,6 +112,7 @@ class Processor(ConsumerProducer):
self.prompt = PromptClient( self.prompt = PromptClient(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
input_queue=pr_request_queue, input_queue=pr_request_queue,
output_queue=pr_response_queue, output_queue=pr_response_queue,
subscriber = module + "-prompt", subscriber = module + "-prompt",

View file

@ -7,10 +7,18 @@ from . endpoint import ServiceEndpoint
from . requestor import ServiceRequestor from . requestor import ServiceRequestor
class AgentRequestor(ServiceRequestor): class AgentRequestor(ServiceRequestor):
<<<<<<< HEAD
def __init__(self, pulsar_client, timeout, auth): def __init__(self, pulsar_client, timeout, auth):
super(AgentRequestor, self).__init__( super(AgentRequestor, self).__init__(
pulsar_client=pulsar_client, pulsar_client=pulsar_client,
=======
def __init__(self, pulsar_host, timeout, auth, pulsar_api_key=None):
super(AgentRequestor, self).__init__(
pulsar_host=pulsar_host,
pulsar_api_key=pulsar_api_key,
>>>>>>> a5d5b4c (Add pulsar API token check)
request_queue=agent_request_queue, request_queue=agent_request_queue,
response_queue=agent_response_queue, response_queue=agent_response_queue,
request_schema=AgentRequest, request_schema=AgentRequest,

View file

@ -26,6 +26,7 @@ class GraphEmbeddingsStreamEndpoint(SocketEndpoint):
self.subscriber = Subscriber( self.subscriber = Subscriber(
self.pulsar_client, graph_embeddings_store_queue, self.pulsar_client, graph_embeddings_store_queue,
"api-gateway", "api-gateway", "api-gateway", "api-gateway",
pulsar_api_key=self.pulsar_api_key,
schema=JsonSchema(GraphEmbeddings) schema=JsonSchema(GraphEmbeddings)
) )

View file

@ -21,6 +21,7 @@ class MuxEndpoint(SocketEndpoint):
self, pulsar_client, auth, self, pulsar_client, auth,
services, services,
path="/api/v1/socket", path="/api/v1/socket",
pulsar_api_key=None
): ):
super(MuxEndpoint, self).__init__( super(MuxEndpoint, self).__init__(

View file

@ -19,6 +19,7 @@ class ServiceRequestor:
response_queue, response_schema, response_queue, response_schema,
subscription="api-gateway", consumer_name="api-gateway", subscription="api-gateway", consumer_name="api-gateway",
timeout=600, timeout=600,
pulsar_api_key=None,
): ):
self.pub = Publisher( self.pub = Publisher(
@ -29,6 +30,7 @@ class ServiceRequestor:
self.sub = Subscriber( self.sub = Subscriber(
pulsar_client, response_queue, pulsar_client, response_queue,
subscription, consumer_name, subscription, consumer_name,
pulsar_api_key,
JsonSchema(response_schema) JsonSchema(response_schema)
) )

View file

@ -17,6 +17,7 @@ class ServiceSender:
self, self,
pulsar_client, pulsar_client,
request_queue, request_schema, request_queue, request_schema,
pulsar_api_key=None,
): ):
self.pub = Publisher( self.pub = Publisher(

View file

@ -57,6 +57,7 @@ logger.setLevel(logging.INFO)
default_pulsar_host = os.getenv("PULSAR_HOST", "pulsar://pulsar:6650") default_pulsar_host = os.getenv("PULSAR_HOST", "pulsar://pulsar:6650")
default_prometheus_url = os.getenv("PROMETHEUS_URL", "http://prometheus:9090") default_prometheus_url = os.getenv("PROMETHEUS_URL", "http://prometheus:9090")
default_pulsar_api_key = os.getenv("PULSAR_API_KEY", None)
default_timeout = 600 default_timeout = 600
default_port = 8088 default_port = 8088
default_api_token = os.getenv("GATEWAY_SECRET", "") default_api_token = os.getenv("GATEWAY_SECRET", "")
@ -73,11 +74,20 @@ class Api:
self.port = int(config.get("port", default_port)) self.port = int(config.get("port", default_port))
self.timeout = int(config.get("timeout", default_timeout)) self.timeout = int(config.get("timeout", default_timeout))
self.pulsar_host = config.get("pulsar_host", default_pulsar_host) self.pulsar_host = config.get("pulsar_host", default_pulsar_host)
self.pulsar_api_key = config.get(
"pulsar_api_key", default_pulsar_api_key
)
self.pulsar_listener = config.get("pulsar_listener", None) self.pulsar_listener = config.get("pulsar_listener", None)
self.pulsar_client = pulsar.Client( if self.pulsar_api_key:
self.pulsar_host, listener_name=self.pulsar_listener self.pulsar_client = pulsar.Client(
) self.pulsar_host, listener_name=self.pulsar_listener,
authentication=pulsar.AuthenticationToken(self.pulsar_api_key)
)
else:
self.pulsar_client = pulsar.Client(
self.pulsar_host, listener_name=self.pulsar_listener,
)
self.prometheus_url = config.get( self.prometheus_url = config.get(
"prometheus_url", default_prometheus_url, "prometheus_url", default_prometheus_url,
@ -224,6 +234,7 @@ class Api:
TriplesLoadEndpoint( TriplesLoadEndpoint(
pulsar_client=self.pulsar_client, pulsar_client=self.pulsar_client,
auth = self.auth, auth = self.auth,
pulsar_api_key=self.pulsar_api_key,
), ),
GraphEmbeddingsLoadEndpoint( GraphEmbeddingsLoadEndpoint(
pulsar_client=self.pulsar_client, pulsar_client=self.pulsar_client,
@ -237,6 +248,7 @@ class Api:
pulsar_client=self.pulsar_client, pulsar_client=self.pulsar_client,
auth = self.auth, auth = self.auth,
services = self.services, services = self.services,
pulsar_api_key=self.pulsar_api_key,
), ),
MetricsEndpoint( MetricsEndpoint(
endpoint_path = "/api/v1/metrics", endpoint_path = "/api/v1/metrics",
@ -270,6 +282,12 @@ def run():
default=default_pulsar_host, default=default_pulsar_host,
help=f'Pulsar host (default: {default_pulsar_host})', help=f'Pulsar host (default: {default_pulsar_host})',
) )
parser.add_argument(
'--pulsar-api-key',
default=default_pulsar_api_key,
help=f'Pulsar API key',
)
parser.add_argument( parser.add_argument(
'--pulsar-listener', '--pulsar-listener',

View file

@ -24,6 +24,7 @@ class TriplesStreamEndpoint(SocketEndpoint):
self.subscriber = Subscriber( self.subscriber = Subscriber(
self.pulsar_client, triples_store_queue, self.pulsar_client, triples_store_queue,
"api-gateway", "api-gateway", "api-gateway", "api-gateway",
pulsar_api_key=self.pulsar_api_key,
schema=JsonSchema(Triples) schema=JsonSchema(Triples)
) )

View file

@ -161,6 +161,7 @@ class GraphRag:
def __init__( def __init__(
self, self,
pulsar_host="pulsar://pulsar:6650", pulsar_host="pulsar://pulsar:6650",
pulsar_api_key=None,
pr_request_queue=None, pr_request_queue=None,
pr_response_queue=None, pr_response_queue=None,
emb_request_queue=None, emb_request_queue=None,
@ -207,6 +208,7 @@ class GraphRag:
self.ge_client = GraphEmbeddingsClient( self.ge_client = GraphEmbeddingsClient(
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=-pulsar_api_key,
subscriber=module + "-ge", subscriber=module + "-ge",
input_queue=ge_request_queue, input_queue=ge_request_queue,
output_queue=ge_response_queue, output_queue=ge_response_queue,
@ -214,6 +216,7 @@ class GraphRag:
self.triples_client = TriplesQueryClient( self.triples_client = TriplesQueryClient(
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=-pulsar_api_key,
subscriber=module + "-tpl", subscriber=module + "-tpl",
input_queue=tpl_request_queue, input_queue=tpl_request_queue,
output_queue=tpl_response_queue output_queue=tpl_response_queue
@ -221,6 +224,7 @@ class GraphRag:
self.embeddings = EmbeddingsClient( self.embeddings = EmbeddingsClient(
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=-pulsar_api_key,
input_queue=emb_request_queue, input_queue=emb_request_queue,
output_queue=emb_response_queue, output_queue=emb_response_queue,
subscriber=module + "-emb", subscriber=module + "-emb",
@ -234,6 +238,7 @@ class GraphRag:
self.prompt = PromptClient( self.prompt = PromptClient(
pulsar_host=pulsar_host, pulsar_host=pulsar_host,
pulsar_api_key=-pulsar_api_key,
input_queue=pr_request_queue, input_queue=pr_request_queue,
output_queue=pr_response_queue, output_queue=pr_response_queue,
subscriber=module + "-prompt", subscriber=module + "-prompt",

View file

@ -63,7 +63,8 @@ class Processor(ConsumerProducer):
subscriber=subscriber, subscriber=subscriber,
input_queue=tc_request_queue, input_queue=tc_request_queue,
output_queue=tc_response_queue, output_queue=tc_response_queue,
pulsar_host = self.pulsar_host pulsar_host = self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
) )
def parse_json(self, text): def parse_json(self, text):

View file

@ -136,7 +136,8 @@ class Processor(ConsumerProducer):
subscriber=subscriber, subscriber=subscriber,
input_queue=tc_request_queue, input_queue=tc_request_queue,
output_queue=tc_response_queue, output_queue=tc_response_queue,
pulsar_host = self.pulsar_host pulsar_host = self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
) )
# System prompt hack # System prompt hack

View file

@ -49,11 +49,12 @@ class Processing:
pulsar_host, pulsar_host,
log_level, log_level,
file, file,
pulsar_api_key=None,
): ):
self.pulsar_host = pulsar_host self.pulsar_host = pulsar_host
self.log_level = log_level self.log_level = log_level
self.file = file self.file = file
self.pulsar_api_key = pulsar_api_key
self.defs = load(open(file, "r"), Loader=Loader) self.defs = load(open(file, "r"), Loader=Loader)
def run(self): def run(self):
@ -125,12 +126,19 @@ def run():
) )
default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://pulsar:6650') default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://pulsar:6650')
default_pulsar_api_key = os.getenv("PULSAR_API_KEY", None)
parser.add_argument( parser.add_argument(
'-p', '--pulsar-host', '-p', '--pulsar-host',
default=default_pulsar_host, default=default_pulsar_host,
help=f'Pulsar host (default: {default_pulsar_host})', help=f'Pulsar host (default: {default_pulsar_host})',
) )
parser.add_argument(
'--pulsar-api-key',
default=default_pulsar_api_key,
help=f'Pulsar API key',
)
parser.add_argument( parser.add_argument(
'-l', '--log-level', '-l', '--log-level',

View file

@ -68,6 +68,7 @@ class Processor(ConsumerProducer):
self.rag = DocumentRag( self.rag = DocumentRag(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
pr_request_queue=pr_request_queue, pr_request_queue=pr_request_queue,
pr_response_queue=pr_response_queue, pr_response_queue=pr_response_queue,
emb_request_queue=emb_request_queue, emb_request_queue=emb_request_queue,

View file

@ -82,6 +82,7 @@ class Processor(ConsumerProducer):
self.rag = GraphRag( self.rag = GraphRag(
pulsar_host=self.pulsar_host, pulsar_host=self.pulsar_host,
pulsar_api_key=self.pulsar_api_key,
pr_request_queue=pr_request_queue, pr_request_queue=pr_request_queue,
pr_response_queue=pr_response_queue, pr_response_queue=pr_response_queue,
emb_request_queue=emb_request_queue, emb_request_queue=emb_request_queue,