Skip to content

cheshire-cat-ai/api-client-py

Repository files navigation

Cheshire Cat API client

API to develop Python clients to interact with the Cheshire Cat.

The package allows instantiating a WebSocket client and provides the API to interact with all the endpoints.

A part of this Python package is automatically generated by the OpenAPI Generator project.

For deeper documentation about the available endpoints, please refer to the API ReDoc. The official Cheshire Cat documentation is available here.

Requirements.

Python 3.10

Installation & Usage

pip install

You can install the API with pip:

pip install cheshire-cat-api

Then import the package:

import cheshire_cat_api as ccat

Interact with the HTTP Endpoints

Available APIs

The CatClient has the following attributes to easily interface with the related APis:

  • memory
  • plugins
  • rabbit_hole
  • status
  • embedder
  • settings
  • llm

Instantiate connection

import cheshire_cat_api as ccat

# A config is necessary to set up base parameters like
# URL, port, user_id, etc.
config = ccat.Config(user_id="my_user_42")

# Connect to the API
cat_client = ccat.CatClient(
    config=config
)

Plugin API - Retrieve plugins

# Now retrieve a list of the available plugins
plugins = cat_client.plugins.get_available_plugins()

RabbitHole API - Upload a URL

from cheshire_cat_api.models.body_upload_url import BodyUploadUrl

# Please note that interacting with the RabbitHole to upload
# a URL requires structuring the body like this

body_upload_url = BodyUploadUrl(
    url="https://cheshire-cat-ai.github.io/docs/conceptual/cheshire_cat/rabbit_hole/"
)

# then you can make the request as follows
response = cat_client.rabbit_hole.upload_url(body_upload_url)

Send a WebSocket message

import time
import cheshire_cat_api as ccat

# A config is necessary to set up base parameters like
# URL, port, user_id, etc.
config = ccat.Config(user_id="my_user_42")
cat_client = ccat.CatClient(config=config)

# Connect to the WebSocket API
cat_client.connect_ws()

while not cat_client.is_ws_connected: 
# A better handling is strongly advised to avoid an infinite loop 
    time.sleep(1)
    
# Send the message
cat_client.send(message="Hello Cat!")

# Close connection
cat_client.close()

Documentation for Config

Both the classes are available with:

from cheshire_cat_api import Config
Class Name Default Description
Config base_url "localhost" base URL where the Cat is hosted
Config port 1865 port for the connection
Config user_id "user" id of the client
Config auth_key "" authentication key for the http endpoints
Config secure_connection False if to use secure protocol

Low-level API

For a more advanced usage, you can directly interact with the auto-generated client. For documentation see here