Skip to content

Commit 92f12de

Browse files
feat: Add LangSmith integration metadata to createAgent and initChatModel (#10433)
2 parents 54d6208 + 7af0b65 commit 92f12de

File tree

4 files changed

+30
-4
lines changed

4 files changed

+30
-4
lines changed

.changeset/swift-rice-hug.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@langchain/core": patch
3+
"langchain": patch
4+
---
5+
6+
feat: Add LangSmith integration metadata to createAgent and initChatModel

libs/langchain-core/src/language_models/chat_models.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ export type LangSmithParams = {
197197
ls_temperature?: number;
198198
ls_max_tokens?: number;
199199
ls_stop?: Array<string>;
200+
ls_integration?: string;
200201
};
201202

202203
export type BindToolsInput =
@@ -321,7 +322,7 @@ export abstract class BaseChatModel<
321322

322323
const inheritableMetadata = {
323324
...runnableConfig.metadata,
324-
...this.getLsParams(callOptions),
325+
...this.getLsParamsWithDefaults(callOptions),
325326
};
326327
const invocationParams = this?.invocationParams(callOptions);
327328
const metadataInvocationParams =
@@ -431,6 +432,18 @@ export abstract class BaseChatModel<
431432
};
432433
}
433434

435+
/**
436+
* Wraps getLsParams() and always appends ls_integration.
437+
* This ensures the integration tag is present even when
438+
* partner packages fully override getLsParams().
439+
*/
440+
getLsParamsWithDefaults(options: this["ParsedCallOptions"]): LangSmithParams {
441+
return {
442+
...this.getLsParams(options),
443+
ls_integration: "langchain_chat_model",
444+
};
445+
}
446+
434447
/** @ignore */
435448
async _generateUncached(
436449
messages: BaseMessageLike[][],
@@ -451,7 +464,7 @@ export abstract class BaseChatModel<
451464
} else {
452465
const inheritableMetadata = {
453466
...handledOptions.metadata,
454-
...this.getLsParams(parsedOptions),
467+
...this.getLsParamsWithDefaults(parsedOptions),
455468
};
456469
const invocationParams = this?.invocationParams(parsedOptions);
457470
const metadataInvocationParams =
@@ -660,7 +673,7 @@ export abstract class BaseChatModel<
660673

661674
const inheritableMetadata = {
662675
...handledOptions.metadata,
663-
...this.getLsParams(parsedOptions),
676+
...this.getLsParamsWithDefaults(parsedOptions),
664677
};
665678
const invocationParams = this?.invocationParams(parsedOptions);
666679
const metadataInvocationParams =

libs/langchain/src/agents/ReactAgent.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,9 @@ export class ReactAgent<
187187
>,
188188
defaultConfig?: RunnableConfig
189189
) {
190-
this.#defaultConfig = defaultConfig ?? {};
190+
this.#defaultConfig = mergeConfigs(defaultConfig ?? {}, {
191+
metadata: { ls_integration: "langchain_create_agent" },
192+
});
191193
if (options.name) {
192194
this.#defaultConfig = mergeConfigs(this.#defaultConfig, {
193195
metadata: { lc_agent_name: options.name },

libs/langchain/src/chat_models/universal.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,11 @@ export class ConfigurableModel<
363363
fields.queuedMethodOperations ?? this._queuedMethodOperations;
364364

365365
this._profile = fields.profile ?? undefined;
366+
367+
this.metadata = {
368+
...this.metadata,
369+
ls_integration: "langchain_init_chat_model",
370+
};
366371
}
367372

368373
async _getModelInstance(

0 commit comments

Comments
 (0)