Skip to main content

A package for sending data to the Reconify platform

Project description

Reconify PIP module

The Reconify module is used for sending data to the Reconify platform at www.reconify.com.

Currently the module supports processing and analyzing Chats, Completions, and Images from:

Support for additional actions and providers will be added.

Get started

The first step is to create an account at app.reconify.com.

Generate API and APP Keys

In the Reconify console, add an Application to your account. This will generate both an API_KEY and an APP_KEY which will be used in the code below to send data to Reconify.

Install the module

pip install reconify

Integrate the module with OpenAI

The following instructions are for OpenAI's Python SDK v1 or later (released in Nov 2023). For earlier versions of OpenAI's SDK, follow the legacy instructions

Import the module

from reconify import reconifyOpenAIHandler

Initialize the module

Prior to initializing the Reconify module, make sure to import the OpenaAI module.

from openai import OpenAI
openai_client = OpenAI(api_key = 'YOUR_OPENAI_KEY')

Configure the instance of Reconify passing the OpenAi instance along with the Reconify API_KEY and APP_KEY created above.

reconifyOpenAIHandler.config(openai_client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key'
)

This is all that is needed for a basic integration. The module takes care of sending the correct data to Reconify when you call openai_client.completions.create, openai_client.chat.completions.create, openai_client.images.generate.

Optional Config Parameters

There are additional optional parameters that can be passed in to the handler.

  • debug: (default False) Enable/Disable console logging
  • trackImages: (default True) Turn on/off tracking of createImage

For example:

reconifyOpenAIHandler.config(openai_client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key',
   debug = True
)

Optional methods

You can optionally pass in a user object or session ID to be used in the analytics reporting. The session ID will be used to group interactions together in the same session transcript.

Set a user

The user JSON should include a unique userId, all the other fields are optional. Without a unique userId, each user will be treated as a new user.

reconifyOpenAIHandler.setUser ({
   "userId": "ABC123",
   "isAuthenticated": 1,
   "firstName": "Francis",
   "lastName": "Smith",
   "email": "",
   "phone": "",
   "gender": "female"
})

Set a Session ID

The Session ID is an alphanumeric string.

reconifyOpenAIHandler.setSession('MySessionId')

Set Session Timeout

Set the session timeout in minutes to override the default

reconifyOpenAIHandler.setSessionTimeout(15)

See Examples with OpenAI

Integrate the module with Amazon Bedrock Runtime

Import the module

from reconify import reconifyBedrockRuntimeHandler

Initialize the module

Prior to initializing the Reconify module, make sure to import the Amazon boto3 module.

import boto3
bedrock = boto3.client('bedrock-runtime')

Configure the instance of Reconify passing the Bedrock Runtime instance along with the Reconify API_KEY and APP_KEY created above.

reconifyBedrockRuntimeHandler.config(bedrock, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key'
)

This is all that is needed for a basic integration. The module takes care of sending the correct data to Reconify when you call bedrock.invoke_model().

Response handling

When using the Reconify module, the response body from invoke_model will be converted from botocore.response.StreamingBody to JSON and saved in the response as parsedBody. See the examples below for more info.

Optional Config Parameters

There are additional optional parameters that can be passed in to the handler.

  • debug: (default False) Enable/Disable console logging
  • trackImages: (default True) Turn on/off tracking of createImage

For example:

reconifyBedrockRuntimeHandler.config(bedrock, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key',
   debug = True
)

Optional methods

You can optionally pass in a user object or session ID to be used in the analytics reporting. The session ID will be used to group interactions together in the same session transcript.

Set a user

The user JSON should include a unique userId, all the other fields are optional. Without a unique userId, each user will be treated as a new user.

reconifyBedrockRuntimeHandler.setUser ({
   "userId": "ABC123",
   "firstName": "Francis",
   "lastName": "Smith"
})

Set a Session ID

The Session ID is an alphanumeric string.

reconifyBedrockRuntimeHandler.setSession('MySessionId')

Set Session Timeout

Set the session timeout in minutes to override the default

reconifyBedrockRuntimeHandler.setSessionTimeout(15)

See Examples with Amazon Bedrock Runtime

Integrate the module with Anthropic

The following instructions are for Anthropic's Python SDK.

Import the module

from reconify import reconifyAnthropicHandler

Initialize the module

Prior to initializing the Reconify module, make sure to import the Anthropic module.

from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT
anthropic = Anthropic(api_key = 'YOUR_ANTHROPIC_KEY')

Configure the instance of Reconify passing the Anthropic instance along with the Reconify API_KEY and APP_KEY created above.

reconifyAnthropicHandler.config(anthropic, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key'
)

This is all that is needed for a basic integration. The module takes care of sending the correct data to Reconify.

Optional Config Parameters

There are additional optional parameters that can be passed in to the handler.

  • debug: (default False) Enable/Disable console logging
  • trackImages: (default True) Turn on/off tracking of createImage

For example:

reconifyAnthropicHandler.config(anthropic, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key',
   debug = True
)

Optional methods

You can optionally pass in a user object or session ID to be used in the analytics reporting. The session ID will be used to group interactions together in the same session transcript.

Set a user

The user JSON should include a unique userId, all the other fields are optional. Without a unique userId, each user will be treated as a new user.

reconifyAnthropicHandler.setUser ({
   "userId": "ABC123",
   "firstName": "Francis",
   "lastName": "Smith"
})

Set a Session ID

The Session ID is an alphanumeric string.

reconifyAnthropicHandler.setSession('MySessionId')

Set Session Timeout

Set the session timeout in minutes to override the default

reconifyAnthropicHandler.setSessionTimeout(15)

See Examples with Anthropic

Integrate the module with Cohere

The following instructions are for Cohere's Python SDK.

Import the module

from reconify import reconifyCohereHandler

Initialize the module

Prior to initializing the Reconify module, make sure to import the Cohere module.

from cohere import Client
cohere_client = Client('YOUR_COHERE_KEY')

Configure the instance of Reconify passing the Cohere instance along with the Reconify API_KEY and APP_KEY created above.

reconifyCohereHandler.config(cohere_client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key'
)

This is all that is needed for a basic integration. The module takes care of sending the correct data to Reconify.

Optional Config Parameters

There are additional optional parameters that can be passed in to the handler.

  • debug: (default False) Enable/Disable console logging
  • trackImages: (default True) Turn on/off tracking of createImage

For example:

reconifyCohereHandler.config(cohere_client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key',
   debug = True
)

Optional methods

You can optionally pass in a user object or session ID to be used in the analytics reporting. The session ID will be used to group interactions together in the same session transcript.

Set a user

The user JSON should include a unique userId, all the other fields are optional. Without a unique userId, each user will be treated as a new user.

reconifyCohereHandler.setUser ({
   "userId": "ABC123",
   "firstName": "Francis",
   "lastName": "Smith"
})

Set a Session ID

The Session ID is an alphanumeric string.

reconifyCohereHandler.setSession('MySessionId')

Set Session Timeout

Set the session timeout in minutes to override the default

reconifyCohereHandler.setSessionTimeout(15)

See Examples with Cohere

Integrate the module with Mistral

The following instructions are for Mistral's Python SDK.

Import the module

from reconify import reconifyMistralHandler

Initialize the module

Prior to initializing the Reconify module, make sure to import the Mistral module.

from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
client = MistralClient(api_key = 'YOUR_MISTRAL_KEY')

Configure the instance of Reconify passing the Mistral instance along with the Reconify API_KEY and APP_KEY created above.

reconifyMistralHandler.config(client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key'
)

This is all that is needed for a basic integration. The module takes care of sending the correct data to Reconify.

Optional Config Parameters

There are additional optional parameters that can be passed in to the handler.

  • debug: (default False) Enable/Disable console logging
  • trackImages: (default True) Turn on/off tracking of createImage

For example:

reconifyMistralHandler.config(client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key',
   debug = True
)

Optional methods

You can optionally pass in a user object or session ID to be used in the analytics reporting. The session ID will be used to group interactions together in the same session transcript.

Set a user

The user JSON should include a unique userId, all the other fields are optional. Without a unique userId, each user will be treated as a new user.

reconifyMistralHandler.setUser ({
   "userId": "ABC123",
   "firstName": "Francis",
   "lastName": "Smith"
})

Set a Session ID

The Session ID is an alphanumeric string.

reconifyMistralHandler.setSession('MySessionId')

Set Session Timeout

Set the session timeout in minutes to override the default

reconifyMistralHandler.setSessionTimeout(15)

See Examples with Mistral

Integrate the module with Perplexity

The following instructions are for Perplexity.

Import the module

from reconify import reconifyUniversalHandler

Initialize the module

Configure the instance of Reconify passing the Reconify API_KEY and APP_KEY created above.

reconifyUniversalHandler.config( 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key'
)

After making a call to the Perplexity, send the input parameters and response data to Reconify, along with the start and end time stamps.

input = {
    "model":"pplx-7b-chat",
    "messages":[
        {"role": "system", "content": "You are a comic"},
        {"role": "user", "content": "Tell a cat joke"},
    ]
}

start = reconifyUniversalHandler.getTimestamp()
response = requests.post("https://api.perplexity.ai/chat/completions", json=input, headers = {
    "accept":"application/json",
    "content-type":"application/json",
    "authorization": "Bearer YOUR_PERPLEXITY_KEY"
})
end = reconifyUniversalHandler.getTimestamp()

reconifyUniversalHandler.logChat(input, response.text, start, end)

Optional Config Parameters

There are additional optional parameters that can be passed in to the handler.

  • debug: (default False) Enable/Disable console logging
  • trackImages: (default True) Turn on/off tracking of createImage

For example:

reconifyUniversalHandler.config(client, 
   appKey = 'Your_App_Key', 
   apiKey = 'Your_Api_Key',
   debug = True
)

Optional methods

You can optionally pass in a user object or session ID to be used in the analytics reporting. The session ID will be used to group interactions together in the same session transcript.

Set a user

The user JSON should include a unique userId, all the other fields are optional. Without a unique userId, each user will be treated as a new user.

reconifyUniversalHandler.setUser ({
   "userId": "ABC123",
   "firstName": "Francis",
   "lastName": "Smith"
})

Set a Session ID

The Session ID is an alphanumeric string.

reconifyUniversalHandler.setSession('MySessionId')

Set Session Timeout

Set the session timeout in minutes to override the default

reconifyUniversalHandler.setSessionTimeout(15)

See Examples with Perplexity

Examples with OpenAI

Chat Example

from openai import OpenAI
from reconify import reconifyOpenAIHandler

openai_client = OpenAI(api_key = 'YOUR_OPENAI_KEY')

reconifyOpenAIHandler.config(openai_client, 'Your_App_Key', 'Your_Api_Key')

reconifyOpenAIHandler.setUser({
   "userId": "12345",
   "isAuthenticated": 1,
   "firstName": "Jim",
   "lastName": "Stand",
   "gender": "male"
})

response = openai_client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are an expert on commedians."},
        {"role": "user", "content": "Tell a joke about cats"},
    ],
    temperature=0,
)

Completion Example

from openai import OpenAI
from reconify import reconifyOpenAIHandler

openai_client = OpenAI(api_key = 'YOUR_OPENAI_KEY')

reconifyOpenAIHandler.config(openai_client, 'Your_App_Key', 'Your_Api_Key')

reconifyOpenAIHandler.setUser({
   "userId": "12345",
   "isAuthenticated": 1,
   "firstName": "Jim",
   "lastName": "Stand",
   "gender": "male"
})

response = openai_client.completions.create(
   model = "text-davinci-003",
   prompt = "write a haiku about cats",
   max_tokens = 100,
   temperature = 0,
)

Image Example

from openai import OpenAI
from reconify import reconifyOpenAIHandler

openai_client = OpenAI(api_key = 'YOUR_OPENAI_KEY')

reconifyOpenAIHandler.config(openai_client, 'Your_App_Key', 'Your_Api_Key')

reconifyOpenAIHandler.setUser({
   "userId": "12345",
   "isAuthenticated": 1,
   "firstName": "Jim",
   "lastName": "Stand",
   "gender": "male"
})

response = openai_client.images.generate(
   model = "dall-e-3",
   prompt = "a cat on the moon",
   n = 1,
   size = "1024x1024",
   quality="standard",
   response_format = "url"
)

Examples with Amazon Bedrock Runtime

Anthropic Claude example

import boto3
from reconify import reconifyBedrockRuntimeHandler

bedrock = boto3.client('bedrock-runtime')

reconifyBedrockRuntimeHandler.config(bedrock, 'Your_App_Key', 'Your_Api_Key')

reconifyOpenAIHandler.setUser({
   "userId": "12345",
   "firstName": "Jane",
   "lastName": "Smith"
})

response = bedrock.invoke_model(
    modelId = "anthropic.claude-instant-v1",
    contentType = "application/json",
    accept = "application/json",
    body = "{\"prompt\":\"\\n\\nHuman: Tell a cat joke.\\n\\nAssistant:\",\"max_tokens_to_sample\":300,\"temperature\":1,\"top_k\":250,\"top_p\":0.999,\"stop_sequences\":[\"\\n\\nHuman:\"],\"anthropic_version\":\"bedrock-2023-05-31\"}"
)

#The botocore.response.StreamingBody object will be converted to JSON and saved in parsedBody
print(response.get("parsedBody"))

Stable Diffusion image example

import boto3
from reconify import reconifyBedrockRuntimeHandler

bedrock = boto3.client('bedrock-runtime')

reconifyBedrockRuntimeHandler.config(bedrock, 'Your_App_Key', 'Your_Api_Key')

reconifyOpenAIHandler.setUser({
   "userId": "12345",
   "firstName": "Jane",
   "lastName": "Smith"
})

response = bedrock.invoke_model(
    modelId = "stability.stable-diffusion-xl-v0",
    contentType = "application/json",
    accept = "application/json",
    body = "{\"text_prompts\":[{\"text\":\"a cat drinking boba tea\"}],\"cfg_scale\":10,\"seed\":0,\"steps\":50}"
)
#The botocore.response.StreamingBody object will be converted to JSON and saved in parsedBody
#The following will print out the image result in JSON base64
print(response.get("parsedBody"))

Examples with Anthropic

Chat Example

from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT
from reconify import reconifyAnthropicHandler

anthropic = Anthropic(api_key = 'YOUR_ANTHROPIC_KEY')

reconifyAnthropicHandler.config(anthropic, 'Your_App_Key', 'Your_Api_Key')

reconifyAnthropicHandler.setUser({
   "userId": "12345",
   "firstName": "Jim",
   "lastName": "Smith",
})

response = anthropic.messages.create(
    model="claude-2.1",
    max_tokens=300,
    messages = [
      {"role": "user", "content" : "Tell me a cat joke"}
    ]
)

Completions Example

from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT
from reconify import reconifyAnthropicHandler

anthropic = Anthropic(api_key = 'YOUR_ANTHROPIC_KEY')

reconifyAnthropicHandler.config(anthropic, 'Your_App_Key', 'Your_Api_Key')

reconifyAnthropicHandler.setUser({
   "userId": "12345",
   "firstName": "Jim",
   "lastName": "Smith",
})

response = anthropic.completions.create(
    model="claude-2",
    max_tokens_to_sample=300,
    prompt=f"{HUMAN_PROMPT} Tell me a good cat joke{AI_PROMPT}",
)

Examples with Cohere

Chat Example

from cohere import Client
from reconify import reconifyCohereHandler

cohere_client = Client('YOUR_COHERE_KEY')

reconifyCohereHandler.config(cohere_client, 'Your_App_Key', 'Your_Api_Key')

reconifyCohereHandler.setUser({
   "userId": "12345",
   "firstName": "Jim",
   "lastName": "Smith"
})

response = cohere_client.chat(
    model="command",
    message="tell me a good cat joke"
)

Generate Example

from cohere import Client
from reconify import reconifyCohereHandler

cohere_client = Client('YOUR_COHERE_KEY')

reconifyCohereHandler.config(cohere_client, 'Your_App_Key', 'Your_Api_Key')

reconifyCohereHandler.setUser({
   "userId": "12345",
   "firstName": "Jim",
   "lastName": "Smith"
})

response = cohere_client.generate(
    model="command",
    prompt="write a cat haiku",
    max_tokens=300
)

Examples with Mistral

Chat Example

from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
from reconify import reconifyMistralHandler

client = MistralClient(api_key = 'YOUR_MISTRAL_KEY')

reconifyMistralHandler.config(client, 'Your_App_Key', 'Your_Api_Key')

reconifyMistralHandler.setUser({
   "userId": "12345",
   "firstName": "Jim",
   "lastName": "Smith"
})

response = client.chat(
    model="mistral-tiny",
    messages=[
      ChatMessage(role="user", content="Tell me a cat joke")
    ]
)

Examples with Perplexity

Chat Example

import requests
from reconify import reconifyUniversalHandler

reconifyUniversalHandler.config('Your_App_Key', 'Your_Api_Key')

reconifyUniversalHandler.setUser({
   "userId": "12345",
   "firstName": "Jim",
   "lastName": "Smith"
})

input = {
    "model":"pplx-7b-chat",
    "messages":[
        {"role": "system", "content": "You are a comic"},
        {"role": "user", "content": "Tell a cat joke"},
    ]
}

start = reconifyUniversalHandler.getTimestamp()

response = requests.post("https://api.perplexity.ai/chat/completions", json=input, headers = {
    "accept":"application/json",
    "content-type":"application/json",
    "authorization": "Bearer YOUR_PERPLEXITY_KEY"
})

end = reconifyUniversalHandler.getTimestamp()

reconifyUniversalHandler.logChat(input, response.text, start, end)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reconify-3.0.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reconify-3.0.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file reconify-3.0.0.tar.gz.

File metadata

  • Download URL: reconify-3.0.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for reconify-3.0.0.tar.gz
Algorithm Hash digest
SHA256 ac8ce9a47df8336bbb39ec57af71818864286c96aefa2baee26e229d455e1227
MD5 b8a6a39b3bbb3d4af76afef4edaa451d
BLAKE2b-256 c941abd2c08b492d92fc41e862b40c5ef00402751dbdf30c4fb853e3a9bbf406

See more details on using hashes here.

File details

Details for the file reconify-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: reconify-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for reconify-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86935cdfba345d7dc07dd84b07c9e67c153529bb7cd3d268d1c75d542c7250d9
MD5 d8b2927bb9b39e99aa509a538b4ade3f
BLAKE2b-256 16d3fe93210030df9445aef02ad1ebe5c6a0d1750e4ebc09226734679ad0e432

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page