Skip to content

Commit 4d426d0

Browse files
authoredJun 21, 2024··
fix (ai): split provider and model ids correctly in the provider registry (#2057)
1 parent c70729f commit 4d426d0

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed
 

Diff for: ‎.changeset/hot-starfishes-shake.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'ai': patch
3+
---
4+
5+
fix (ai): split provider and model ids correctly in the provider registry

Diff for: ‎packages/core/core/registry/provider-registry.test.ts

+16-1
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,25 @@ describe('languageModel', () => {
2121
expect(modelRegistry.languageModel('provider:model')).toEqual(model);
2222
});
2323

24+
it('should return language model with additional colon from provider', () => {
25+
const model = new MockLanguageModelV1();
26+
27+
const modelRegistry = experimental_createProviderRegistry({
28+
provider: {
29+
languageModel: id => {
30+
expect(id).toEqual('model:part2');
31+
return model;
32+
},
33+
},
34+
});
35+
36+
expect(modelRegistry.languageModel('provider:model:part2')).toEqual(model);
37+
});
38+
2439
it('should throw NoSuchProviderError if provider does not exist', () => {
2540
const registry = experimental_createProviderRegistry({});
2641

27-
expect(() => registry.languageModel('provider:model')).toThrowError(
42+
expect(() => registry.languageModel('provider:model:part2')).toThrowError(
2843
NoSuchProviderError,
2944
);
3045
});

Diff for: ‎packages/core/core/registry/provider-registry.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,13 @@ class DefaultProviderRegistry implements experimental_ProviderRegistry {
9797
}
9898

9999
private splitId(id: string): [string, string] {
100-
if (!id.includes(':')) {
100+
const index = id.indexOf(':');
101+
102+
if (index === -1) {
101103
throw new InvalidModelIdError({ id });
102104
}
103105

104-
return id.split(':') as [string, string];
106+
return [id.slice(0, index), id.slice(index + 1)];
105107
}
106108

107109
languageModel(id: string): LanguageModel {

0 commit comments

Comments
 (0)
Please sign in to comment.