Skip to main content

cognitivess — Python SDK

Official Python SDK for the CognitivessAI API. The platform is OpenAI- and Anthropic-compatible, so this SDK gives you both ergonomics in one package, talking to model Cognitivess-1.

pip install cognitivess
  • Sync and async clients (Cognitivess / AsyncCognitivess)
  • Streaming (SSE) for chat, messages and responses, plus an iter_text() helper that yields just the content strings
  • Structured Outputs (response_format) pass-through
  • Typed exceptions, retries with backoff (honors Retry-After), per-request timeout override
  • Reads .env automatically — COGNITIVESS_API_KEY and COGNITIVESS_BASE_URL (no python-dotenv dependency)
  • models.list() and models.retrieve(id)
  • Zero heavy deps — only httpx · ships py.typed

See CHANGELOG.md for what's new per version.

Setup

Generate an API key in your CognitivessAI dashboard (looks like ssh-ed25519 AAAA...). It's shown only once. Then either pass it explicitly, export it, or put it in a .env file — the SDK reads .env automatically (no python-dotenv / load_dotenv() needed):

export COGNITIVESS_API_KEY="ssh-ed25519 AAAA..."
# .env  (in your project root / cwd)
COGNITIVESS_API_KEY=ssh-ed25519 AAAA...
# COGNITIVESS_BASE_URL=https://api.cognitivess.com/v1   # optional, for self-hosted/dev

The .env fallback only fills in variables that aren't already set in the environment, so explicit env vars or api_key= always win. Disable it with Cognitivess(env_file=None), or point elsewhere with Cognitivess(env_file="config/.env").

Quickstart

OpenAI style — chat completions

from cognitivess import Cognitivess

cog = Cognitivess()  # reads COGNITIVESS_API_KEY

resp = cog.chat.completions.create(
    model="Cognitivess-1",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello, how are you?"},
    ],
    max_tokens=128,
    temperature=0.7,
)
print(resp.choices[0].message.content)

Anthropic style — messages

msg = cog.messages.create(
    model="Cognitivess-1",
    max_tokens=128,
    system="You are a helpful assistant.",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(msg.content[0].text)

Streaming

# sync — raw chunks
for chunk in cog.chat.completions.create(
    model="Cognitivess-1",
    messages=[{"role": "user", "content": "Count to 5."}],
    max_tokens=64,
    stream=True,
):
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

iter_text() — convenience that streams under the hood (it sets stream=True for you) and yields just the content strings, skipping metadata / empty chunks. Sync (for) and async (async for). Don't pass stream=True to it — it streams already.

for text in cog.chat.completions.iter_text(
    model="Cognitivess-1",
    messages=[{"role": "user", "content": "Count to 5."}],
    max_tokens=64,
):
    print(text, end="", flush=True)
# 1 2 3 4 5
# async
import asyncio
from cognitivess import AsyncCognitivess

async def main():
    async with AsyncCognitivess() as cog:
        async for chunk in cog.chat.completions.create(
            model="Cognitivess-1",
            messages=[{"role": "user", "content": "Count to 5."}],
            max_tokens=64,
            stream=True,
        ):
            delta = chunk.choices[0].delta.content
            if delta:
                print(delta, end="", flush=True)

asyncio.run(main())

Structured Outputs

resp = cog.chat.completions.create(
    model="Cognitivess-1",
    messages=[{"role": "user", "content": "I spent $120 on dinner and $45 on supplies."}],
    max_tokens=512,
    temperature=0.1,
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "expenses",
            "strict": True,
            "schema": {
                "type": "object",
                "properties": {
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "description": {"type": "string"},
                                "amount": {"type": "number"},
                            },
                            "required": ["description", "amount"],
                            "additionalProperties": False,
                        },
                    },
                    "total": {"type": "number"},
                },
                "required": ["items", "total"],
                "additionalProperties": False,
            },
        },
    },
)
print(resp.choices[0].message.content)  # JSON string

Responses API

r = cog.responses.create(
    model="Cognitivess-1",
    input="Say hi in one word.",
    max_output_tokens=16,
)
print(r.output_text)

List models

print(cog.models.list().data[0].id)

# single model
print(cog.models.retrieve("Cognitivess-1").id)

Configuration

cog = Cognitivess(
    api_key="...",            # optional, defaults to COGNITIVESS_API_KEY
    base_url="...",           # optional, defaults to COGNITIVESS_BASE_URL then the API
    timeout=60.0,             # seconds
    max_retries=2,            # retries on 429/5xx/conn errors, with backoff
    default_headers={"X-Tag": "prod"},  # merged into every request
    env_file=".env",          # auto-load .env (default); None to disable
)

# Per-request timeout override (not sent in the JSON body):
cog.chat.completions.create(..., timeout=120)

Error handling

from cognitivess import AuthenticationError, RateLimitError, APIStatusError, APITimeoutError

try:
    cog.chat.completions.create(model="Cognitivess-1", messages=[...], max_tokens=64)
except AuthenticationError as e:    # 401 — bad/revoked key
    print("auth:", e.message, e.status_code)
except RateLimitError as e:         # 429 — rate limit / credits
    print("rate:", e.message)
except APITimeoutError:             # timeout
    ...
except APIStatusError as e:         # any other non-2xx
    print("status:", e.status_code, e.message)

Notes

  • This package is the SDK library. The cognitivess CLI (installed via curl | sh) is a separate tool; installing this SDK does not register a cognitivess console command, so the two coexist without conflict.
  • base_url already includes /v1. The SDK calls /chat/completions, /messages, /models, /responses relative to it. It defaults to COGNITIVESS_BASE_URL (env / .env) then https://api.cognitivess.com/v1. For self-hosted/dev, point it at e.g. http://localhost:8000/v1.
  • Responses objects are attribute-accessible (resp.choices[0].message.content) via a light wrapper — no Pydantic dependency. A py.typed marker is shipped.

License

MIT

Download files

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

Source Distribution

cognitivess-0.1.5.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

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

cognitivess-0.1.5-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file cognitivess-0.1.5.tar.gz.

File metadata

  • Download URL: cognitivess-0.1.5.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cognitivess-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0c2b9d2b192bf88acd30a37671d7647e8d230624eb5bdaa55f095d6a32cbc264
MD5 ecfd043102e9b080b2c39aeb5200697b
BLAKE2b-256 7a7107c026bf7a40d0250eb33eb2af8663834126bbe98cfa60e532e50be7beb1

See more details on using hashes here.

File details

Details for the file cognitivess-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: cognitivess-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cognitivess-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 62bc6abaa80dce0498cd66b79aa2b0bc242fdb54d60d8e8397d377fb95b6df83
MD5 4519f3c4747a99580e0e02dea6ba87f8
BLAKE2b-256 9d7b21bcad698eee125fc0bc8300199dad49775bd97050cf1e1b9704e4d5cca3

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.7

2 files

0.1.6

2 files

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page