Skip to main content

langchaint

langchaint provides typed generation and embeddings with raw provider responses and per-attempt billing. Alpha: the API is unstable and may change without notice.

Purpose

langchaint provides BoundLLM and EmbeddingModel as provider-neutral async interfaces.
langchaint provides no agent class or agent loop. langchaint uses pyrefly with the strict all preset. Applications should use langchaint with a strict type checker. langchaint relies on static checking for argument types. langchaint does not repeat every argument type check at runtime.

Install and authenticate

langchaint requires Python 3.13 or newer. Applications install and pin each provider SDK directly. langchaint declares no dependency extras. Top-level import langchaint requires no provider SDK or numpy. Backend imports report missing dependencies through ModuleNotFoundError.

Provider Class Creates Depends Default credentials
Anthropic Anthropic LLM anthropic ANTHROPIC_API_KEY
Amazon Bedrock AnthropicBedrock LLM anthropic[bedrock] AWS credential provider chain
Amazon Bedrock CohereBedrock EmbeddingModel boto3 and numpy AWS credential provider chain
DeepSeek DeepSeek LLM openai DEEPSEEK_API_KEY
Gemini Gemini LLM google-genai GOOGLE_API_KEY or GEMINI_API_KEY
OpenAI OpenAI LLM, EmbeddingModel openai (numpy and tiktoken for embeddings) OPENAI_API_KEY
Amazon Bedrock OpenAIBedrock LLM openai[bedrock] AWS credential provider chain

Every listed class accepts client= for SDK client configuration. The Amazon Bedrock classes use the AWS credential provider chain. This includes environment credentials, profiles, SSO, containers, and instance roles. Pass aws_region= to select a Bedrock region explicitly.

Generation quickstart

import asyncio

from langchaint.openai import OpenAI


async def main() -> None:
    openai = OpenAI()
    bound_llm = openai.model("gpt-5.6-terra").bind(system_prompt="Answer clearly and concisely.")
    response = await bound_llm.generate_one("Why is the sky blue?")
    print(response.output, response.usage.cost_in_usd)


asyncio.run(main())

response.output is assistant text. regional_processing=False uses the standard 1.0 token-price multiplier. Set it to True when the configured endpoint uses regional processing. Pass a Pydantic model to LLM.bind(response_format=...) for validated structured output.

Embedding quickstart

import asyncio

from langchaint.openai import OpenAI


async def main() -> None:
    openai = OpenAI()
    embedding_model = openai.embedding_model(
        "text-embedding-3-small",
        dimension=1024,
    )
    documents = await embedding_model.embed(
        ["The Moon orbits Earth.", "Mars has two small moons."],
        task="retrieval_document",
    )
    query = await embedding_model.embed(
        ["Which object circles Earth?"],
        task="retrieval_query",
    )
    print(documents.shape, query.shape)


asyncio.run(main())

EmbeddingModel.embed() requires task for every adapter. The OpenAI adapter sends no corresponding request field. EmbeddingModel.embed() returns normalized Float2D values with numpy.float32 elements. Each input produces one row.

Use CohereBedrock for Cohere embeddings through Amazon Bedrock.

Share one rate-limit quota

Create one OpenAI per rate-limit quota.

openai = OpenAI(
    max_concurrent_requests=8,
    max_request_starts_per_second=50.0,
)
terra = openai.model("gpt-5.6-terra")
sol = openai.model("gpt-5.6-sol")

Both terra and sol use openai.client and one SharedBackoff. max_concurrent_requests applies across both LLM values. max_request_starts_per_second applies across both LLM values. An EmbeddingModel from openai.embedding_model() uses the same client and SharedBackoff.

Pass an SDK client to close it directly.

from openai import AsyncOpenAI

client = AsyncOpenAI()
openai = OpenAI(client=client)
terra = openai.model("gpt-5.6-terra")

# Use terra.

await client.close()

Binding and results

Call LLM.bind() before generating. BoundLLM provides generate_one, generate_many, and stream_one. BoundLLM.rebind() replaces selected binding fields. Pass tools=[tool] to LLM.bind(), then dispatch through BoundLLM.tool_manager. LLM.bind(max_attempts=...) limits requests for one GenerationInput, including the first. An embedding batch contains inputs sent together during each attempt. embedding_model(max_attempts=...) limits requests for one embedding batch, including the first. LLM.bind() uses Adapter.automatic_cache_breakpoints_default. Pass automatic_cache_breakpoints to override Adapter.automatic_cache_breakpoints_default. cache_breakpoint=True requests an explicit breakpoint at that ContentPart. GenerateResult and GenerationError include paid Usage across attempts.

More examples

examples/README.md indexes focused examples and migration guidance. The examples cover structured output, batches, streaming, tools, tracing, pricing, and failures. They also cover prompt caching, reasoning, embeddings, and complete application structure.

Development

Run scripts/CI.sh before committing. The tests are offline and require no API keys.

License

langchaint uses the MIT License.

Release files for langchaint 0.17.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchaint 0.17.0
File Size Uploaded
langchaint-0.17.0.tar.gz 219.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langchaint 0.17.0
File Interpreter ABI Platform
langchaint-0.17.0-py3-none-any.whl Python 3 none any Details

Total release size: 456.8 kB

Release files / langchaint-0.17.0.tar.gz

Download URL langchaint-0.17.0.tar.gz
Size 219.5 kB
Tags Source
SHA-256 checksum
How to use checksums
91fa8ce253b0afc81f63267bbcd0d5ff61ecc5734fd57864f076ac9e2bbe1b38
BLAKE2b-256 checksum
How to use checksums
a6d361269b1b2502cdbb638c33522a02f0ad127a175a70867f6d6ee056fd446e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / langchaint-0.17.0-py3-none-any.whl

Download URL langchaint-0.17.0-py3-none-any.whl
Size 237.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6f468d8628f0619157735616212d136751b16774ad7340060b38a1a7567fbf2
BLAKE2b-256 checksum
How to use checksums
57a1c8854e71220d0ebca645a53e1d4efbb07e7871eba53c22a0b0be01a36d8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.23.3

2 release files

0.23.2

2 release files

0.23.1

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.2

2 release files

0.19.4

2 release files

0.19.3

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.1

2 release files

This release

0.17.0 This release

2 release files

0.16.0

2 release files

0.15.3

2 release files

0.15.2

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release 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