#!/usr/bin/env python3 """ Uses the GraphRAG service to answer a query """ import argparse import os import json from trustgraph.clients.prompt_client import PromptClient default_pulsar_host = os.getenv("PULSAR_HOST", 'pulsar://localhost:6650') def query(pulsar_host, id, terms): cli = PromptClient(pulsar_host=pulsar_host) resp = cli.request(id=id, terms=terms) if isinstance(resp, str): print(resp) else: print(json.dumps(resp, indent=4)) def main(): parser = argparse.ArgumentParser( prog='tg-graph-query-rag', description=__doc__, ) parser.add_argument( '-p', '--pulsar-host', default=default_pulsar_host, help=f'Pulsar host (default: {default_pulsar_host})', ) parser.add_argument( 'id', nargs=1, help=f'Prompt identifier', ) parser.add_argument( 'term', nargs='*', help=f'Prompt terms', ) args = parser.parse_args() terms = {} for term in args.term: toks = term.split("=", 1) if len(toks) != 2: raise RuntimeError(f"Malformed term: {term}") terms[toks[0]] = toks[1] try: query( pulsar_host=args.pulsar_host, id=args.id[0], terms=terms, ) except Exception as e: print("Exception:", e, flush=True) main()