memory: fix Gemini batch dimension requests

This commit is contained in:
Gustavo Madeira Santana
2026-03-10 20:46:04 -04:00
parent bc70d85474
commit d9d44965f3
3 changed files with 11 additions and 6 deletions

View File

@@ -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,
},
]);
});

View File

@@ -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<string, unknown> = { requests };
if (isV2 && outputDimensionality != null) {
batchBody.outputDimensionality = outputDimensionality;
}
const payload = await executeWithApiKeyRotation({
provider: "google",
apiKeys: client.apiKeys,

View File

@@ -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 =