From 5a1d2ab2045a9ff993f132c7fcc21c452541435a Mon Sep 17 00:00:00 2001 From: slience1213 <2503404258gl@gmail.com> Date: Tue, 21 Oct 2025 12:53:57 +0800 Subject: [PATCH 1/2] fix(chat): enhance model name parsing to preserve full model name with multiple colons --- .../src/chat_models/tests/universal.int.test.ts | 16 ++++++++++++++++ libs/langchain/src/chat_models/universal.ts | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libs/langchain/src/chat_models/tests/universal.int.test.ts b/libs/langchain/src/chat_models/tests/universal.int.test.ts index 944b9994c725..37912e001f53 100644 --- a/libs/langchain/src/chat_models/tests/universal.int.test.ts +++ b/libs/langchain/src/chat_models/tests/universal.int.test.ts @@ -807,3 +807,19 @@ describe("Can be initialized without `modelProvider`", () => { expect(modelResult.content.length).toBeGreaterThan(0); }); }); + +describe.skip("Model name parsing with multiple colons preserves full model name", () => { + test.each([ + "ollama:qwen2.5:14b", + "ollama:llama3:8b", + "ollama:deepseek-r1:1.5b", + ])("for %s", async (modelName) => { + const model = await initChatModel(modelName, { + temperature: 0, + }); + + const modelResult = await model.invoke("what's your name"); + expect(modelResult).toBeDefined(); + expect(modelResult.content.length).toBeGreaterThan(0); + }); +}); diff --git a/libs/langchain/src/chat_models/universal.ts b/libs/langchain/src/chat_models/universal.ts index c80fc286113e..e3679e9301cc 100644 --- a/libs/langchain/src/chat_models/universal.ts +++ b/libs/langchain/src/chat_models/universal.ts @@ -855,7 +855,11 @@ export async function initChatModel< ...(fields ?? {}), }; if (modelProvider === undefined && model?.includes(":")) { - const modelComponents = model.split(":", 2); + const [provider, ...remainingParts] = model.split(":"); + const modelComponents = + remainingParts.length === 0 + ? [provider] + : [provider, remainingParts.join(":")]; if (SUPPORTED_PROVIDERS.includes(modelComponents[0] as ChatModelProvider)) { // eslint-disable-next-line no-param-reassign [modelProvider, model] = modelComponents; From 272119c5f5437ed15375d5b9aa727bfe15ffa998 Mon Sep 17 00:00:00 2001 From: Hunter Lovell <40191806+hntrl@users.noreply.github.com> Date: Tue, 21 Oct 2025 09:04:20 -0700 Subject: [PATCH 2/2] Create wicked-teachers-brake.md --- .changeset/wicked-teachers-brake.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/wicked-teachers-brake.md diff --git a/.changeset/wicked-teachers-brake.md b/.changeset/wicked-teachers-brake.md new file mode 100644 index 000000000000..14db019c6767 --- /dev/null +++ b/.changeset/wicked-teachers-brake.md @@ -0,0 +1,5 @@ +--- +"langchain": patch +--- + +preserve full model name when deciding model provider