|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | import argparse | 
					
						
						|  | import os | 
					
						
						|  | from functools import partial | 
					
						
						|  | from agent.canvas import Canvas | 
					
						
						|  | from agent.settings import DEBUG | 
					
						
						|  |  | 
					
						
						|  | if __name__ == '__main__': | 
					
						
						|  | parser = argparse.ArgumentParser() | 
					
						
						|  | dsl_default_path = os.path.join( | 
					
						
						|  | os.path.dirname(os.path.realpath(__file__)), | 
					
						
						|  | "dsl_examples", | 
					
						
						|  | "retrieval_and_generate.json", | 
					
						
						|  | ) | 
					
						
						|  | parser.add_argument('-s', '--dsl', default=dsl_default_path, help="input dsl", action='store', required=True) | 
					
						
						|  | parser.add_argument('-t', '--tenant_id', default=False, help="Tenant ID", action='store', required=True) | 
					
						
						|  | parser.add_argument('-m', '--stream', default=False, help="Stream output", action='store_true', required=False) | 
					
						
						|  | args = parser.parse_args() | 
					
						
						|  |  | 
					
						
						|  | canvas = Canvas(open(args.dsl, "r").read(), args.tenant_id) | 
					
						
						|  | while True: | 
					
						
						|  | ans = canvas.run(stream=args.stream) | 
					
						
						|  | print("==================== Bot =====================\n>    ", end='') | 
					
						
						|  | if args.stream and isinstance(ans, partial): | 
					
						
						|  | cont = "" | 
					
						
						|  | for an in ans(): | 
					
						
						|  | print(an["content"][len(cont):], end='', flush=True) | 
					
						
						|  | cont = an["content"] | 
					
						
						|  | else: | 
					
						
						|  | print(ans["content"]) | 
					
						
						|  |  | 
					
						
						|  | if DEBUG: | 
					
						
						|  | print(canvas.path) | 
					
						
						|  | question = input("\n==================== User =====================\n> ") | 
					
						
						|  | canvas.add_user_input(question) | 
					
						
						|  |  |