Package: ai-server-sdk
AI Serverai-server-sdkis a python client SDK to connect to the AI ServerUsing this package you can:Inference with Models you have acces to within the serverCreate Pandas DataFrame from Databases connectionsPull Storage objectsRun pixel and get the direct output or full json response.Pull data products from an existing insight using REST API.Installpip install ai-server-sdkUsageTo interract with an ai-server instance, import theai_serverpackage and connect via RESTServer.Note: secret and access keys are requiredSetup>>>importai_server# define access keys>>>loginKeys={"secretKey":"<your_secret_key>","accessKey":"<your_access_key>"}# create connection object by passing in the secret key, access key and base url for the api>>>server_connection=ai_server.RESTServer(...access_key=loginKeys['accessKey'],...secret_key=loginKeys['secretKey'],...base='<Your deployed server Monolith URL>'...)Inference with different Model Engines# define a question and grab the engine id from the server>>>question='What is the capital of France?'>>>engine_id="2c6de0ff-62e0-4dd0-8380-782ac4d40245"### Option 1 - Use ModelEngine directly>>>model=ai_server.ModelEngine(engine_id=engine_id,insight_id=server_connection.cur_insight)>>>model.ask(question=question)[{'response':'The capital of France is Paris.','messageId':'0a80c2ce-76f9-4466-b2a2-8455e4cab34a','roomId':'28261853-0e41-49b0-8a50-df34e8c62a19'}]### Option 2 - Use the Driver class>>>driver=ai_server.Driver(insight_id=server_connection.cur_insight)>>>driver.run_model(question=question,engine_id=engine_id)['The capital of France is Paris.']Interact with a Vector Database by adding document(s), querying, and removing document(s)# grab the engine id from the server>>>engine_id="221a50a4-060c-4aa8-8b7c-e2bc97ee3396"# initialize the connection to the vector database>>>vectorEngine=ai_server.VectorEngine(...engine_id=engine_id,...insight_id=server_connection.cur_insight...)# Add document(s) that have been uploaded to the insight>>>vectorEngine.addDocument(file_paths=['fileName1.pdf','fileName2.pdf',...,'fileNameX.pdf'])# Perform a nearest neighbor search on the embedded documents>>>vectorEngine.nearestNeighbor(search_statement='Sample Search Statement',limit=5)# List all the documents the vector database currently comprises of>>>vectorEngine.listDocuments()# Remove document(s) from the vector database>>>vectorEngine.removeDocument(file_names=['fileName1.pdf','fileName2.pdf',...,'fileNameX.pdf'])Connect to Databases and execute create, read, and delete operationsRun the passed string query against the engine.  The query passed must be in the structure that the specific engine implementation.# Create an relation to database based on the engine identifier>>>engine_id="4a1f9466-4e6d-49cd-894d-7d22182344cd">>>database=ai_server.DatabaseEngine(engine_id=engine_id,insight_id=a.cur_insight)>>>database.execQuery(query='SELECT PATIENT, HEIGHT, WEIGHT FROM diab LIMIT 4')PATIENTHEIGHTWEIGHT0203376411413750641612407856718731277872145execQuery commands can also be run through the Driver class### Use the Driver class>>>driver=ai_server.Driver(insight_id=server_connection.cur_insight)>>>driver.run_database(query='SELECT PATIENT, HEIGHT, WEIGHT FROM diab LIMIT 4',engine_id=engine_id)PATIENTHEIGHTWEIGHT0203376411413750641612407856718731277872145Run the passed string query against the engine as an insert query. Query must be in the structure that the specific engine implementation>>>database.insertData(query='INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...)')Run a delete query on the database>>>database.removeData(query='DELETE FROM diab WHERE age=19;')Using REST API to pull data product from an Insight# define the Project ID>>>projectId='30991037-1e73-49f5-99d3-f28210e6b95c'# define the Insight ID>>>inishgtId='26b373b3-cd52-452c-a987-0adb8817bf73'# define the SQL for the data product you want to query within the insight>>>sql='select * FROM DATA_PRODUCT_123'# if you dont provide one of the following, it will ask you to provide it via prompt>>>diabetes_df=server_connection.import_data_product(project_id=projectId,insight_id=inishgtId,sql=sql)>>>diabetes_df.head()AGEPATIENTWEIGHT019482311911917790135220104115932027632744203750161Get the output or JSON response of any pixel# run the pixel and get the output>>>server_connection.run_pixel('1+1')2# run the pixel and get the entire json response>>>server_connection.run_pixel('1+1',full_response=True){'insightID':'8b419eaf-df7d-4a7f-869e-8d7d59bbfde8','sessionTimeRemaining':'7196','pixelReturn':[{'pixelId':'3','pixelExpression':'1 + 1 ;','isMeta':False,'output':2,'operationType':['OPERATION']}]}