Skip to main content

A Python SDK for interacting with the BotBrigade LLM API.

Project description

BotBrigade LLM Python SDK

Overview

The BotBrigade LLM Python SDK provides an easy way to interact with the BotBrigade LLM API for text generation, model listing, and streaming responses. This SDK supports both synchronous and asynchronous operations using httpx.

Installation

Ensure you have Python 3.7+ installed.

pip install botbrigade_llm

Initialization

Import the LLMClient and create an instance with your API key:

from botbrigade_llm import LLMClient

client = LLMClient(api_key="your_api_key")

Alternatively, you can set the API key as an environment variable:

export BBS_API_KEY="your_api_key"

And initialize the client without explicitly passing the key:

client = LLMClient()

Listing Available Models

The SDK allows you to retrieve a list of available LLM models.

Synchronous

models = client.list_models()
print(models)

Asynchronous

import asyncio

async def get_models():
    models = await client.alist_models()
    print(models)

asyncio.run(get_models())

Generating Responses

The SDK supports both synchronous and asynchronous text generation.

Message Structure

The API supports different message roles:

  • user: The user's input message.
  • system: A system-level instruction to guide the model's behavior.
  • assistant: Previous responses from the assistant, used to provide conversation history.

Example:

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "How do I check if a string contains a substring in Python?"},
    {"role": "assistant", "content": "You can use the 'in' keyword in Python."}
]

Synchronous Response Generation

response = client.responses.create(
    model="claudia-1",
    messages=[{"role": "user", "content": "Tell me a joke"}],
    max_tokens=100,
    temperature=0.7,
)
print(response)

Asynchronous Response Generation

async def generate():
    response = await client.responses.acreate(
        model="claudia-1",
        messages=[{"role": "user", "content": "Tell me a joke"}],
        max_tokens=100,
        temperature=0.7,
    )
    print(response)

asyncio.run(generate())

Non-Stream Response Format

All responses follow a standardized structure:

{
  "id": "chatcmpl-1234567890",
  "object": "chat.completion",
  "created": 1710823456,
  "model": "claudia-1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I assist you today?",
        "refusal": null,
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ]
}

Streaming Responses

If stream=True, the response is streamed instead of returning a single object. The API returns data as Server-Sent Events (SSE).

Synchronous Streaming

for chunk in client.responses.create(
    model="claudia-1",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
):
    print(chunk)

Asynchronous Streaming

async def stream_response():
    async for chunk in await client.responses.acreate(
        model="claudia-1",
        messages=[{"role": "user", "content": "Tell me a story"}],
        stream=True
    ):
        print(chunk)

asyncio.run(stream_response())

Optional Payload Parameters

The SDK allows the following optional parameters for create() and acreate():

Parameter Type Description
temperature float Sampling temperature (higher values make output more random). Default: 1.0
max_tokens int Maximum number of tokens in the response. Default: None (unlimited)
top_p float Nucleus sampling probability. Default: 1.0
frequency_penalty float Penalizes repeated tokens. Default: 0.0
presence_penalty float Encourages new tokens. Default: 0.0
stream bool Whether to stream responses. Default: False

Example:

response = client.responses.create(
    model="claudia-1",
    messages=[{"role": "user", "content": "Give me a summary of AI history."}],
    max_tokens=200,
    temperature=0.8,
    top_p=0.9,
    frequency_penalty=0.2,
    presence_penalty=0.1
)
print(response)

Closing the Client

To properly close the HTTP connection, use:

Synchronous

client.close()

Asynchronous

asyncio.run(client.aclose())

License

This SDK is licensed under MIT License.

Support

For issues and contributions, please submit a GitHub issue or contact BotBrigade Support.

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

botbrigade_llm-0.1.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

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

botbrigade_llm-0.1.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file botbrigade_llm-0.1.0.tar.gz.

File metadata

  • Download URL: botbrigade_llm-0.1.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for botbrigade_llm-0.1.0.tar.gz
Algorithm Hash digest
SHA256 56f54ef9167f1f79ba1fe1e7f036c717ab430464b85faa207ebff18e3613cb4b
MD5 75fd202801a1e20c35fe8b594bb45a6c
BLAKE2b-256 15f23f00a0d92d00d11757303e2a71d50aa26b48ceee629fbd9052b3519b5aa1

See more details on using hashes here.

File details

Details for the file botbrigade_llm-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: botbrigade_llm-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for botbrigade_llm-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 55e96608eff52c6d5d6a2c8beffcc761a2cfb75e776d1ceab2949490a40652c2
MD5 84dfbe78d718b00acbe08ad408e062d0
BLAKE2b-256 159055a4c1874b8fadd555963f07e0fd1c69754910c977d1225c0b88f7e192cd

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