mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
Add first-class `session_id` and `trace` constructor fields on `ChatOpenRouter`, plumbed into the request payload alongside the existing `route` / `plugins` / `openrouter_provider` knobs. Both correspond to the OpenRouter [broadcast](https://openrouter.ai/docs/guides/features/broadcast/overview) feature for grouping requests under one logical workflow and attaching per-request observability metadata. Previously these were only reachable by stuffing them through `model_kwargs` or `.bind()`, neither of which is discoverable. [Docs](https://github.com/langchain-ai/docs/pull/3840) ## Changes - New `session_id: str | None` field with a `from_env("OPENROUTER_SESSION_ID", default=None)` factory, so a process can group all requests via env var without threading the value through application code. Truthy-guarded in `_default_params` so an explicit or env-sourced empty string is treated as unset. - New `trace: dict[str, Any] | None` field for per-request trace metadata (`trace_id`, `trace_name`, `span_name`, `generation_name`, `parent_span_id`, plus arbitrary extras forwarded as custom metadata). No env fallback — set per-call or on the constructor. - Per-call override (`model.invoke(..., session_id=..., trace=...)`) works through the existing `**kwargs` flow into `_generate` / `_stream`, with the constructor value preserved across calls. - Updated the "Key init args — client params" docstring table on `ChatOpenRouter` to surface both fields.