Python SDK

Our Python SDK makes it straightforward to integrate with Context.ai.

Installation

Install the Context.ai Python SDK with Pip:

pip install --upgrade context-python

Usage

The Python SDK needs to be authenticated with your Context.ai API Key. You can generate this key from the onboarding page (if you have not yet sent any transcripts to Context.ai), or from the settings page if you are already integrated.

Once you have your API key, you can start sending requests immediately using one of the example code snippets below. We provide integrations for working with our API in both a synchronous and asynchronous way.

Synchronous Example

import getcontext
from getcontext.generated.models import Conversation, Message, MessageRole, Rating
from getcontext.token import Credential
import os

token = os.environ.get("GETCONTEXT_TOKEN")

c = getcontext.ContextAPI(credential=Credential(token))

c.log.conversation(
    body={
        "conversation": Conversation(
            messages=[
                Message(
                    message="You are a helpful assistant!",
                    role=MessageRole.SYSTEM,
                ),
                Message(
                    message="Hello, world!",
                    role=MessageRole.USER,
                ),
                Message(
                    message="Hi, how can I help?",
                    role=MessageRole.ASSISTANT,
                    rating=Rating.POSITIVE,
                ),
            ],
            metadata={
                "model": "gpt-3.5-turbo",
                "user_id": "1234",
                "environment": "test",
            }
        )
    }
)

c.log.conversation_upsert(
    body={
        "conversation": Conversation(
            messages=[
                Message(
                    message="You are a helpful assistant!",
                    role=MessageRole.SYSTEM,
                ),
                Message(
                    message="Hello, world!",
                    role=MessageRole.USER,
                ),
                Message(
                    message="Hi, how can I help?",
                    role=MessageRole.ASSISTANT,
                    rating=Rating.POSITIVE,
                ),
                Message(
                    message="It's been a great day today!",
                    role=MessageRole.USER,
                    rating=Rating.POSITIVE,
                ),
            ],
            metadata={
                "model": "gpt-3.5-turbo",
                "user_id": "1234",
                "environment": "test",
            }
        )
    }
)

Asynchronous Example

import asyncio

import getcontext.generated.aio as getcontext
from getcontext.generated.models import Conversation, Message, MessageRole, Rating
from getcontext.token import AsyncCredential
import os

token = os.environ.get("GETCONTEXT_TOKEN")

async def log():
    async with getcontext.ContextAPI(credential=AsyncCredential(token)) as client:
        await client.log.conversation(
            body={
                "conversation": Conversation(
                    messages=[
                        Message(
                            message="You are a helpful assistant!",
                            role=MessageRole.SYSTEM,
                        ),
                        Message(
                            message="Hello, world!",
                            role=MessageRole.USER,
                        ),
                        Message(
                            message="Hi, how can I help?",
                            role=MessageRole.ASSISTANT,
                            rating=Rating.POSITIVE,
                        ),
                    ],
                    metadata={
                        "model": "gpt-3.5-turbo",
                        "user_id": "1234",
                        "environment": "test",
                    }
                )
            }
        )


loop = asyncio.get_event_loop()
loop.run_until_complete(log())
loop.close()

Test Set Example

import getcontext
from getcontext.generated.models import TestSet, TestCase, TestCaseMessage, TestCaseMessageRole, TestCaseFrom, Evaluator
from getcontext.token import Credential
import os

token = os.environ.get("GETCONTEXT_TOKEN")

# Create a new test set version with evaluator
test_set_details = c.log.test_sets(
    copy_test_cases_from=TestCaseFrom.PRIOR_VERSION,
    body=TestSet(
        name="Helpful Assistant Test Set",
        test_cases=[
            TestCase(
                name="greeting test case",
                model="gpt-4",
                messages=[
                    TestCaseMessage(
                        message="You are a helpful assistant!",
                        role=TestCaseMessageRole.SYSTEM
                    ),
                    TestCaseMessage(
                        message="Hello, world!",
                        role=TestCaseMessageRole.USER
                    ),
                ],
                evaluators=[
                    Evaluator(
                        evaluator="context_contains_phrase",
                        options={"phrase": "hello!!!", "context": "model_response_only"}
                    )
                ]
            )
        ]
    )
)

# Run the version
run_details = c.evaluations.run(body={
  "test_set_name": test_set_details.name, 
  "version": test_set_details.version, 
  "iterations": 3
})

# Poll run job for version results
result = c.evaluations.result(id = run_details.data.run_id)

Last updated