@saltcorn/large-language-model 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/generate.js CHANGED
@@ -423,17 +423,20 @@ const getCompletion = async (config, opts) => {
423
423
  }
424
424
  };
425
425
 
426
- const getAiSdkModel = ({
427
- provider,
428
- api_key,
429
- model_name,
430
- anthropic_api_key,
431
- }) => {
426
+ const getAiSdkModel = (
427
+ { provider, api_key, model_name, anthropic_api_key },
428
+ isEmbedding,
429
+ ) => {
432
430
  switch (provider) {
433
431
  case "OpenAI":
434
432
  const openai = createOpenAI({ apiKey: api_key });
435
- return openai(model_name);
433
+ return isEmbedding
434
+ ? openai.textEmbeddingModel(model_name)
435
+ : openai(model_name);
436
+
436
437
  case "Anthropic":
438
+ if (isEmbedding)
439
+ throw new Error("Anthropic does not provide embedding models");
437
440
  const anthropic = createAnthropic({
438
441
  apiKey: anthropic_api_key,
439
442
  });
@@ -949,19 +952,17 @@ const getEmbeddingOpenAICompatible = async (
949
952
 
950
953
  const getEmbeddingAISDK = async (config, { prompt, model, debugResult }) => {
951
954
  const { provider, apiKey, embed_model } = config;
952
- let model_obj,
953
- providerOptions = {};
954
- const model_name = model || embed_model;
955
-
956
- switch (provider) {
957
- case "OpenAI":
958
- const openai = createOpenAI({ apiKey: apiKey });
959
- model_obj = openai.textEmbeddingModel(
960
- model_name || "text-embedding-3-small",
961
- );
962
- //providerOptions.openai = {};
963
- break;
964
- }
955
+ let providerOptions = {};
956
+ const model_name = model || embed_model || "text-embedding-3-small";
957
+ let model_obj = getAiSdkModel(
958
+ {
959
+ ...config,
960
+ model_name,
961
+ api_key: apiKey,
962
+ provider,
963
+ },
964
+ true,
965
+ );
965
966
  const body = {
966
967
  model: model_obj,
967
968
  providerOptions,
package/index.js CHANGED
@@ -126,7 +126,7 @@ ${domReady(`
126
126
  label: "Embedding model", //gpt-3.5-turbo
127
127
  type: "String",
128
128
  required: true,
129
- showIf: { backend: "AI SDK" },
129
+ showIf: { backend: "AI SDK", ai_sdk_provider: ["OpenAI"] },
130
130
  attributes: {
131
131
  calcOptions: [
132
132
  "ai_sdk_provider",
@@ -136,14 +136,6 @@ ${domReady(`
136
136
  "text-embedding-3-large",
137
137
  "text-embedding-ada-002",
138
138
  ],
139
- Anthropic: [
140
- "voyage-3-large",
141
- "voyage-3",
142
- "voyage-3-lite",
143
- "voyage-code-3",
144
- "voyage-finance-2",
145
- "voyage-law-2",
146
- ],
147
139
  },
148
140
  ],
149
141
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saltcorn/large-language-model",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Large language models and functionality for Saltcorn",
5
5
  "main": "index.js",
6
6
  "dependencies": {
package/tests/configs.js CHANGED
@@ -36,7 +36,6 @@ module.exports = [
36
36
  model: "claude-sonnet-4-6",
37
37
  api_key: process.env.ANTHROPIC_API_KEY,
38
38
  backend: "AI SDK",
39
- embed_model: "text-embedding-3-small",
40
39
  image_model: "gpt-image-1",
41
40
  temperature: 0.7,
42
41
  ai_sdk_provider: "Anthropic",
package/tests/llm.test.js CHANGED
@@ -165,6 +165,15 @@ for (const nameconfig of require("./configs")) {
165
165
 
166
166
  expect(cities1.length).toBe(12);
167
167
  });
168
+ if (name !== "AI SDK Anthropic")
169
+ it("gets embedding", async () => {
170
+ const v = await getState().functions.llm_embedding.run(
171
+ "The quick brown fox jumps over the lazy dog",
172
+ );
173
+ expect(Array.isArray(v)).toBe(true);
174
+ expect(v.length).toBeGreaterThan(50);
175
+ expect(typeof v[0]).toBe("number");
176
+ });
168
177
  });
169
178
  }
170
179