Observed since 20 Oct, 15:38 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
3tears-models
LangChain-native AI model factories with capability metadata, circuit breakers, and usage tracking for the 3tears platform
LangChain-native AI model factories for the 3tears framework. Build chat and embedding models from a single call, with capability metadata, circuit breakers, error translation, and usage tracking wired in.
pip install 3tears-models
create_chat_model() and create_embedding_model() return standard LangChain BaseChatModel / Embeddings instances. No custom runtime protocols to learn.ComfyUIClient, SwarmUIClient: your own graph or parameters, reads retried, work never sent twice).get_capabilities(), register_capabilities(), and per-model overrides describe context windows, vision support, tool support, and tier.CircuitBreaker and CircuitBreakerRegistry trip on repeated provider failures and recover on a timer. The factory's default breaker is per provider and per API key, so one caller's failing key never fast-fails another key on the same provider.UsageTracker.record() emits an OpenTelemetry span plus Prometheus instruments, with optional per-application audit and counter sinks.preprocess_messages(), enforce_alternating_roles(), filter_invalid_tool_calls(), and streaming chunk helpers (parse_chunk, merge_chunks).from threetears.models import create_chat_model, create_embedding_model
chat = create_chat_model("claude-sonnet-4-6")
reply = await chat.ainvoke("Summarize three-tier caching in one sentence.")
embedder = create_embedding_model("voyage-3")
vectors = await embedder.aembed_documents(["first doc", "second doc"])
Capabilities, circuit breakers, and usage tracking attach automatically. Reach for the registry and tracker APIs directly when you need to inspect or override them.
MIT. See LICENSE.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
3tears-media-contractsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | 3tears-media-contracts<0.73.0,>=0.72.0 | runtime |
3tears-observeEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | 3tears-observe<0.73.0,>=0.72.0 | runtime |
3tears-tool-schemaEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | 3tears-tool-schema<0.73.0,>=0.72.0 | runtime |
anthropicEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | anthropic>=0.116 | runtime |
jsonschemaEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | jsonschema>=4.26 | runtime |
langchain-anthropicEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | langchain-anthropic>=1.4 | runtime |
langchain-coreEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | langchain-core>=0.3 | runtime |
langchain-openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | langchain-openai>=1.1 | runtime |
langchain-openrouterEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | langchain-openrouter>=0.2.9 | runtime |
openrouterEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | openrouter<1.0,>=0.9.2 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0 | runtime |
uuid-utilsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | uuid-utils | runtime |
3tears-langgraphEnvironment{
"extras": "",
"marker": "extra == \"claude-cli\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | 3tears-langgraph<0.73.0,>=0.72.0; extra == "claude-cli" | runtime |
claude-agent-sdkEnvironment{
"extras": "",
"marker": "extra == \"claude-cli\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | claude-agent-sdk<0.3,>=0.2.163; extra == "claude-cli" | runtime |
langchain-claude-codeEnvironment{
"extras": "",
"marker": "extra == \"claude-cli\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | langchain-claude-code>=0.1.0; extra == "claude-cli" | runtime |
httpxEnvironment{
"extras": "",
"marker": "extra == \"image\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27; extra == "image" | runtime |
prometheus-clientEnvironment{
"extras": "",
"marker": "extra == \"prometheus\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | prometheus-client>=0.20; extra == "prometheus" | runtime |
langchain-voyageaiEnvironment{
"extras": "",
"marker": "extra == \"voyageai\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | langchain-voyageai>=0.3; extra == "voyageai" | runtime |
httpxEnvironment{
"extras": "",
"marker": "extra == \"whisper\"",
"requires_python": ">=3.14",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27; extra == "whisper" | runtime |
bdist_wheel · 213.66 KB · Python py3
sdist · 386.05 KB · Python source
Shared repository data · GitHub
Public sponsor counts have not been collected. These signals belong to the repository owner.
github · 1 observations shown. Missing days are unknown.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 | 0 | 2026-10-20T17:18:19.8928356Z |
Observed since 20 Oct, 15:38 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:38607b43dae2eacab072ae697f28a57a150dff951ba467bd9987fd88ffbfc357