diff --git a/src/memory/embeddings-gemini.test.ts b/src/memory/embeddings-gemini.test.ts index b91dd9bd29f..451ebd795da 100644 --- a/src/memory/embeddings-gemini.test.ts +++ b/src/memory/embeddings-gemini.test.ts @@ -220,17 +220,18 @@ describe("gemini-embedding-2-preview provider", () => { await provider.embedBatch(["text1", "text2"]); const body = parseFetchBody(fetchMock); - expect(body.outputDimensionality).toBe(3072); expect(body.requests).toEqual([ { model: "models/gemini-embedding-2-preview", content: { parts: [{ text: "text1" }] }, taskType: "RETRIEVAL_DOCUMENT", + outputDimensionality: 3072, }, { model: "models/gemini-embedding-2-preview", content: { parts: [{ text: "text2" }] }, taskType: "RETRIEVAL_DOCUMENT", + outputDimensionality: 3072, }, ]); }); diff --git a/src/memory/embeddings-gemini.ts b/src/memory/embeddings-gemini.ts index ae7da66b7c0..3aa13d798f2 100644 --- a/src/memory/embeddings-gemini.ts +++ b/src/memory/embeddings-gemini.ts @@ -211,12 +211,12 @@ export async function createGeminiEmbeddingProvider( content: { parts: [{ text }] }, taskType: options.taskType ?? "RETRIEVAL_DOCUMENT", }; + if (isV2 && outputDimensionality != null) { + req.outputDimensionality = outputDimensionality; + } return req; }); const batchBody: Record = { requests }; - if (isV2 && outputDimensionality != null) { - batchBody.outputDimensionality = outputDimensionality; - } const payload = await executeWithApiKeyRotation({ provider: "google", apiKeys: client.apiKeys, diff --git a/src/memory/embeddings.ts b/src/memory/embeddings.ts index 9d55e226210..d91807c54c8 100644 --- a/src/memory/embeddings.ts +++ b/src/memory/embeddings.ts @@ -4,7 +4,11 @@ import type { OpenClawConfig } from "../config/config.js"; import type { SecretInput } from "../config/types.secrets.js"; import { formatErrorMessage } from "../infra/errors.js"; import { resolveUserPath } from "../utils.js"; -import { createGeminiEmbeddingProvider, type GeminiEmbeddingClient } from "./embeddings-gemini.js"; +import { + createGeminiEmbeddingProvider, + type GeminiEmbeddingClient, + type GeminiTaskType, +} from "./embeddings-gemini.js"; import { createMistralEmbeddingProvider, type MistralEmbeddingClient, @@ -77,7 +81,7 @@ export type EmbeddingProviderOptions = { /** Gemini embedding-2: output vector dimensions (768, 1536, or 3072). */ outputDimensionality?: number; /** Gemini: override the default task type sent with embedding requests. */ - taskType?: string; + taskType?: GeminiTaskType; }; export const DEFAULT_LOCAL_MODEL =