agentfootprint 9.12.0 → 9.13.0
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/dist/adapters/llm/GeminiProvider.js +519 -0
- package/dist/adapters/llm/GeminiProvider.js.map +1 -0
- package/dist/adapters/llm/contextWindow.js +20 -0
- package/dist/adapters/llm/contextWindow.js.map +1 -1
- package/dist/adapters/llm/createProvider.js +3 -0
- package/dist/adapters/llm/createProvider.js.map +1 -1
- package/dist/adapters/llm/googleGenAI.js +109 -0
- package/dist/adapters/llm/googleGenAI.js.map +1 -0
- package/dist/embedders/index.js +233 -1
- package/dist/embedders/index.js.map +1 -1
- package/dist/esm/adapters/llm/GeminiProvider.d.ts +204 -0
- package/dist/esm/adapters/llm/GeminiProvider.js +514 -0
- package/dist/esm/adapters/llm/GeminiProvider.js.map +1 -0
- package/dist/esm/adapters/llm/contextWindow.js +20 -0
- package/dist/esm/adapters/llm/contextWindow.js.map +1 -1
- package/dist/esm/adapters/llm/createProvider.d.ts +4 -1
- package/dist/esm/adapters/llm/createProvider.js +3 -0
- package/dist/esm/adapters/llm/createProvider.js.map +1 -1
- package/dist/esm/adapters/llm/googleGenAI.d.ts +67 -0
- package/dist/esm/adapters/llm/googleGenAI.js +105 -0
- package/dist/esm/adapters/llm/googleGenAI.js.map +1 -0
- package/dist/esm/embedders/index.d.ts +188 -1
- package/dist/esm/embedders/index.js +231 -0
- package/dist/esm/embedders/index.js.map +1 -1
- package/dist/esm/providers.d.ts +3 -0
- package/dist/esm/providers.js +2 -0
- package/dist/esm/providers.js.map +1 -1
- package/dist/providers.js +5 -1
- package/dist/providers.js.map +1 -1
- package/dist/types/adapters/llm/GeminiProvider.d.ts +205 -0
- package/dist/types/adapters/llm/GeminiProvider.d.ts.map +1 -0
- package/dist/types/adapters/llm/contextWindow.d.ts.map +1 -1
- package/dist/types/adapters/llm/createProvider.d.ts +4 -1
- package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/googleGenAI.d.ts +68 -0
- package/dist/types/adapters/llm/googleGenAI.d.ts.map +1 -0
- package/dist/types/embedders/index.d.ts +188 -1
- package/dist/types/embedders/index.d.ts.map +1 -1
- package/dist/types/providers.d.ts +3 -0
- package/dist/types/providers.d.ts.map +1 -1
- package/package.json +7 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* googleGenAI — the one place a `GoogleGenAI` client gets built (9.13.0).
|
|
4
|
+
*
|
|
5
|
+
* Two adapters reach for the same SDK client — `gemini()` (the LLM provider)
|
|
6
|
+
* and `geminiEmbedder()` — and they need the SAME two doors, the SAME refusals
|
|
7
|
+
* and the SAME `_client` seam. Duplicating that is how the two drift: one grows
|
|
8
|
+
* a fix, the other keeps the bug, and the difference is invisible until a
|
|
9
|
+
* consumer hits the door that was not fixed.
|
|
10
|
+
*
|
|
11
|
+
* So the connection lives here and the adapters own only their own calls.
|
|
12
|
+
* Nothing in this file knows what a model, a message or a vector is.
|
|
13
|
+
*
|
|
14
|
+
* ─── The two doors ──────────────────────────────────────────────────
|
|
15
|
+
*
|
|
16
|
+
* • **Vertex** — `{ project, location }` → `new GoogleGenAI({ vertexai: true,
|
|
17
|
+
* project, location, googleAuthOptions })`. Credentials come from
|
|
18
|
+
* Application Default Credentials: `GOOGLE_APPLICATION_CREDENTIALS`, the
|
|
19
|
+
* gcloud user credentials, or the metadata server on GCE / Cloud Run. There
|
|
20
|
+
* is no API key on this path.
|
|
21
|
+
* • **Gemini API (AI Studio)** — `{ apiKey }` → `new GoogleGenAI({ apiKey })`.
|
|
22
|
+
* One key, no cloud project.
|
|
23
|
+
*
|
|
24
|
+
* ─── The API version, which is not what you would guess ─────────────
|
|
25
|
+
*
|
|
26
|
+
* The SDK's DEFAULT API version is `v1beta1` on Vertex and `v1beta` on the
|
|
27
|
+
* Gemini API — verified against @google/genai 2.16.0 and pinned by
|
|
28
|
+
* `test/adapters/google/google-surface-pin.test.ts`. It is not `v1`. Callers
|
|
29
|
+
* who need a specific version pass `apiVersion`; callers who do not at least
|
|
30
|
+
* find the truth stated instead of assuming a GA path.
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.resolveGoogleGenAIClient = void 0;
|
|
34
|
+
const lazyRequire_js_1 = require("../../lib/lazyRequire.js");
|
|
35
|
+
/**
|
|
36
|
+
* Build (or accept) a `GoogleGenAI` client.
|
|
37
|
+
*
|
|
38
|
+
* `injected` is the `_client` test seam: a structural double exposing only the
|
|
39
|
+
* namespace members the calling adapter uses. When it is present the SDK is
|
|
40
|
+
* never required, no environment is read and no refusal fires — a test drives
|
|
41
|
+
* the adapter's translation with no Google anywhere near it.
|
|
42
|
+
*
|
|
43
|
+
* @param factory the public name to put in refusals — `'gemini'`,
|
|
44
|
+
* `'geminiEmbedder'`. A message that names the wrong factory
|
|
45
|
+
* sends the reader to the wrong line of their own code.
|
|
46
|
+
* @throws when neither a project nor an API key is resolvable; when
|
|
47
|
+
* `vertexai: true` is asked for without a project; and when
|
|
48
|
+
* `@google/genai` is not installed.
|
|
49
|
+
*/
|
|
50
|
+
function resolveGoogleGenAIClient(options, factory, injected) {
|
|
51
|
+
if (injected)
|
|
52
|
+
return injected;
|
|
53
|
+
const env = (typeof process !== 'undefined' ? process.env : {});
|
|
54
|
+
// Read HERE only to decide whether there is enough configuration to build
|
|
55
|
+
// anything at all. The values are never copied into the constructor, so the
|
|
56
|
+
// SDK stays the single resolver of its own environment variables — one place
|
|
57
|
+
// that answers "where did my project come from", not two that can disagree.
|
|
58
|
+
// An EMPTY variable is not a setting. `GOOGLE_CLOUD_PROJECT=` in a shell or a
|
|
59
|
+
// CI matrix is how a project comes to be "present" and unusable — the guards
|
|
60
|
+
// below would pass and the SDK would fail on the first call instead.
|
|
61
|
+
const set = (value) => value !== undefined && value.trim().length > 0 ? value : undefined;
|
|
62
|
+
const project = set(options.project) ?? set(env.GOOGLE_CLOUD_PROJECT);
|
|
63
|
+
const apiKey = set(options.apiKey) ?? set(env.GEMINI_API_KEY) ?? set(env.GOOGLE_API_KEY);
|
|
64
|
+
const vertexai = options.vertexai ?? (project !== undefined ? true : undefined);
|
|
65
|
+
if (vertexai !== false && project === undefined && apiKey === undefined) {
|
|
66
|
+
throw new Error(`${factory}: no Google project and no API key — this factory cannot tell which service ` +
|
|
67
|
+
'you meant, and the SDK would warn on stderr, construct anyway, and fail on the first ' +
|
|
68
|
+
'call with something that reads like a network problem.\n' +
|
|
69
|
+
` Vertex: ${factory}({ project: "my-project", location: "us-central1" }) — or set ` +
|
|
70
|
+
'GOOGLE_CLOUD_PROJECT; credentials come from Application Default Credentials.\n' +
|
|
71
|
+
` Gemini API: ${factory}({ apiKey: process.env.GEMINI_API_KEY }) — or set ` +
|
|
72
|
+
'GEMINI_API_KEY.\n' +
|
|
73
|
+
` Tests: ${factory}({ _client }) with a { models: { … } } double — no SDK, no ` +
|
|
74
|
+
'network, no credentials.');
|
|
75
|
+
}
|
|
76
|
+
if (vertexai === true && project === undefined) {
|
|
77
|
+
throw new Error(`${factory}: \`vertexai: true\` selects Vertex, which is addressed by PROJECT and not by ` +
|
|
78
|
+
'key. Pass `{ project }` (or set GOOGLE_CLOUD_PROJECT), or drop `vertexai` and pass ' +
|
|
79
|
+
'`{ apiKey }` to use the Gemini API instead.');
|
|
80
|
+
}
|
|
81
|
+
let GoogleGenAI;
|
|
82
|
+
try {
|
|
83
|
+
const mod = (0, lazyRequire_js_1.lazyRequire)('@google/genai');
|
|
84
|
+
GoogleGenAI = (mod.GoogleGenAI ?? mod.default?.GoogleGenAI);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
throw new Error(`${factory} requires the \`@google/genai\` package.\n` +
|
|
88
|
+
' Install: npm install @google/genai\n' +
|
|
89
|
+
' Or pass `_client` for test injection.');
|
|
90
|
+
}
|
|
91
|
+
if (!GoogleGenAI) {
|
|
92
|
+
throw new Error(`${factory}: \`@google/genai\` is installed but exports no \`GoogleGenAI\`. These adapters ` +
|
|
93
|
+
'are built against @google/genai 2.x — update the package.');
|
|
94
|
+
}
|
|
95
|
+
// Only what was ASKED for goes on the wire; everything omitted is left to the
|
|
96
|
+
// SDK's own environment resolution.
|
|
97
|
+
return new GoogleGenAI({
|
|
98
|
+
...(vertexai !== undefined && { vertexai }),
|
|
99
|
+
...(options.project !== undefined && { project: options.project }),
|
|
100
|
+
...(options.location !== undefined && { location: options.location }),
|
|
101
|
+
...(options.apiKey !== undefined && { apiKey: options.apiKey }),
|
|
102
|
+
...(options.apiVersion !== undefined && { apiVersion: options.apiVersion }),
|
|
103
|
+
...(options.googleAuthOptions !== undefined && {
|
|
104
|
+
googleAuthOptions: options.googleAuthOptions,
|
|
105
|
+
}),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
exports.resolveGoogleGenAIClient = resolveGoogleGenAIClient;
|
|
109
|
+
//# sourceMappingURL=googleGenAI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"googleGenAI.js","sourceRoot":"","sources":["../../../src/adapters/llm/googleGenAI.ts"],"names":[],"mappings":"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"}
|
package/dist/embedders/index.js
CHANGED
|
@@ -23,8 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.staticEmbedder = exports.localEmbedder = exports.bedrockEmbedder = exports.openaiEmbedder = void 0;
|
|
26
|
+
exports.staticEmbedder = exports.localEmbedder = exports.geminiEmbedder = exports.bedrockEmbedder = exports.openaiEmbedder = void 0;
|
|
27
27
|
const lazyRequire_js_1 = require("../lib/lazyRequire.js");
|
|
28
|
+
const googleGenAI_js_1 = require("../adapters/llm/googleGenAI.js");
|
|
28
29
|
/**
|
|
29
30
|
* Native output size of every OpenAI embedding model, so `.dimensions` reports
|
|
30
31
|
* the truth instead of one hard-coded guess.
|
|
@@ -571,6 +572,237 @@ function describeShape(value) {
|
|
|
571
572
|
}
|
|
572
573
|
return typeof value;
|
|
573
574
|
}
|
|
575
|
+
/**
|
|
576
|
+
* The Gemini embedding models this library knows by name.
|
|
577
|
+
*
|
|
578
|
+
* **`gemini-embedding-001`** — text only, 3072 dimensions, a **2,048-token**
|
|
579
|
+
* input window, and the full `task_type` vocabulary. It is the default because
|
|
580
|
+
* this library's two call sites are a query and a passage, and the query /
|
|
581
|
+
* document task types are exactly that distinction.
|
|
582
|
+
*
|
|
583
|
+
* **`gemini-embedding-2`** — natively multimodal, 3072 dimensions, an
|
|
584
|
+
* **8,192-token** text window, and **no `task_type` parameter at all**: Google
|
|
585
|
+
* replaced it with task instructions written into the prompt. That difference
|
|
586
|
+
* is why the field is a per-model fact here rather than a constant — asked for
|
|
587
|
+
* on the model that does not take it, `task_type` is a request field the
|
|
588
|
+
* service will reject, and this adapter refuses first with the reason.
|
|
589
|
+
*
|
|
590
|
+
* A model outside this table has a length this library cannot know and must
|
|
591
|
+
* state its own — the same rule `openaiEmbedder` and `bedrockEmbedder` apply,
|
|
592
|
+
* for the same reason.
|
|
593
|
+
*/
|
|
594
|
+
const GEMINI_EMBEDDING_MODELS = {
|
|
595
|
+
'gemini-embedding-001': { dimensions: 3072, maxInputTokens: 2048, supportsTaskType: true },
|
|
596
|
+
'gemini-embedding-2': { dimensions: 3072, maxInputTokens: 8192, supportsTaskType: false },
|
|
597
|
+
};
|
|
598
|
+
/**
|
|
599
|
+
* How many texts Gemini embeds in ONE `embedContent` call: **one**.
|
|
600
|
+
*
|
|
601
|
+
* Not a conservative choice — the documented limit. `gemini-embedding-001`
|
|
602
|
+
* accepts exactly one input text per request, and libraries that assumed
|
|
603
|
+
* otherwise (batching 96 or 250 instances the way an OpenAI or Titan client
|
|
604
|
+
* would) send an oversized request that the service rejects on every batch
|
|
605
|
+
* bigger than a single text. `embedBatch` is therefore N sequential calls, and
|
|
606
|
+
* says so rather than looking like a batch that is secretly a loop.
|
|
607
|
+
*/
|
|
608
|
+
const GEMINI_MAX_TEXTS_PER_CALL = 1;
|
|
609
|
+
/**
|
|
610
|
+
* Google's hosted embeddings, through `models.embedContent` — on Vertex or on
|
|
611
|
+
* the Gemini API.
|
|
612
|
+
*
|
|
613
|
+
* The door is chosen exactly as `gemini()` chooses it: `{ project, location }`
|
|
614
|
+
* is Vertex with Application Default Credentials, `{ apiKey }` is the Gemini
|
|
615
|
+
* API, and neither is guessed. One `GoogleGenAI` client serves both this and
|
|
616
|
+
* the LLM provider, so an app that talks to both can build the client once and
|
|
617
|
+
* pass it as `_client`.
|
|
618
|
+
*
|
|
619
|
+
* ── Why the id carries the DIMENSION COUNT ───────────────────────────────
|
|
620
|
+
* `'gemini:<model>:<dims>'`, for the reason `bedrockEmbedder` gives at length:
|
|
621
|
+
* `MemoryEntry.embeddingModel` stores the id ALONE and it is the only thing
|
|
622
|
+
* `SearchOptions.embedderId` filters on. One model id at 768 and the same model
|
|
623
|
+
* id at 3072 are different embedding spaces, so an id without the size cannot
|
|
624
|
+
* tell them apart — and neither can the size alone, since both known models are
|
|
625
|
+
* 3072 natively.
|
|
626
|
+
*
|
|
627
|
+
* The `taskType` is deliberately NOT in the id, matching `bedrockEmbedder`'s
|
|
628
|
+
* treatment of Cohere's `input_type`: the default query/document pair is ONE
|
|
629
|
+
* space by construction (the two projections exist to be compared with each
|
|
630
|
+
* other), and a pinned value pins both call sites at once, so the store stays
|
|
631
|
+
* self-consistent either way.
|
|
632
|
+
*
|
|
633
|
+
* ── The input ceiling, and the service telling on itself (9.1.0) ─────────
|
|
634
|
+
* `.maxInputChars` is per MODEL, from its documented token window at the stated
|
|
635
|
+
* {@link CHARS_PER_TOKEN} assumption: **8,000** for `gemini-embedding-001`
|
|
636
|
+
* (2,048 tokens) and **32,000** for `gemini-embedding-2` (8,192). A quarter of
|
|
637
|
+
* the newer model's window is not a rounding difference — it is the whole
|
|
638
|
+
* reason the ceiling is per-model. Past the ceiling Gemini CLIPS rather than
|
|
639
|
+
* refuses, so `onTruncation` decides what happens when the response admits it.
|
|
640
|
+
*
|
|
641
|
+
* @throws if `model` is unknown and `dimensions` was not supplied; if
|
|
642
|
+
* `dimensions` exceeds what the model can produce; if `taskType` is set
|
|
643
|
+
* on a model that takes none; if neither a project nor an API key is
|
|
644
|
+
* resolvable; or if `@google/genai` is not installed and no `_client`
|
|
645
|
+
* was passed.
|
|
646
|
+
*
|
|
647
|
+
* @example
|
|
648
|
+
* ```ts
|
|
649
|
+
* import { geminiEmbedder } from 'agentfootprint/providers';
|
|
650
|
+
* import { sqliteVectorStore } from 'agentfootprint/memory';
|
|
651
|
+
* import { indexFolder } from 'agentfootprint/rag';
|
|
652
|
+
*
|
|
653
|
+
* const embedder = geminiEmbedder({ project: 'my-project', dimensions: 768 });
|
|
654
|
+
* await indexFolder('./docs', { to: sqliteVectorStore({ file: './corpus.db' }), embedder });
|
|
655
|
+
* ```
|
|
656
|
+
*
|
|
657
|
+
* @example The Gemini API door, and a store that must never hold a clipped vector
|
|
658
|
+
* ```ts
|
|
659
|
+
* const embedder = geminiEmbedder({
|
|
660
|
+
* apiKey: process.env.GEMINI_API_KEY,
|
|
661
|
+
* onTruncation: 'refuse', // the default — stated here because it is the point
|
|
662
|
+
* });
|
|
663
|
+
* ```
|
|
664
|
+
*/
|
|
665
|
+
function geminiEmbedder(options = {}) {
|
|
666
|
+
const model = options.model ?? 'gemini-embedding-001';
|
|
667
|
+
const facts = GEMINI_EMBEDDING_MODELS[model];
|
|
668
|
+
const requested = options.dimensions;
|
|
669
|
+
const dimensions = requested ?? facts?.dimensions;
|
|
670
|
+
if (dimensions === undefined) {
|
|
671
|
+
throw new Error(`geminiEmbedder: unknown model '${model}' — its vector length is not something this ` +
|
|
672
|
+
`library can know, and reporting a wrong .dimensions silently corrupts a vector store. ` +
|
|
673
|
+
`Pass { dimensions } with the length that model returns.`);
|
|
674
|
+
}
|
|
675
|
+
if (requested !== undefined && (!Number.isInteger(requested) || requested < 1)) {
|
|
676
|
+
throw new Error(`geminiEmbedder: \`dimensions\` must be a positive whole number — received ` +
|
|
677
|
+
`${String(requested)}.`);
|
|
678
|
+
}
|
|
679
|
+
if (requested !== undefined && facts !== undefined && requested > facts.dimensions) {
|
|
680
|
+
throw new Error(`geminiEmbedder: '${model}' produces at most ${facts.dimensions} dimensions — received ` +
|
|
681
|
+
`${String(requested)}. Asking for more would be reported as .dimensions and never be ` +
|
|
682
|
+
`the length that comes back.`);
|
|
683
|
+
}
|
|
684
|
+
if (options.taskType !== undefined && facts !== undefined && !facts.supportsTaskType) {
|
|
685
|
+
throw new Error(`geminiEmbedder: '${model}' takes no \`task_type\` — Google replaced the parameter with ` +
|
|
686
|
+
`task instructions written into the text itself on this model. Drop \`taskType\` and ` +
|
|
687
|
+
`prefix your input (for example "task: search result | query: …"), or use ` +
|
|
688
|
+
`'gemini-embedding-001', which does take it.`);
|
|
689
|
+
}
|
|
690
|
+
const sendTaskType = facts?.supportsTaskType ?? true;
|
|
691
|
+
const maxInputChars = options.maxInputChars ?? charsFor(facts?.maxInputTokens);
|
|
692
|
+
const onTruncation = options.onTruncation ?? 'refuse';
|
|
693
|
+
let client;
|
|
694
|
+
const connect = () => {
|
|
695
|
+
client ??= (0, googleGenAI_js_1.resolveGoogleGenAIClient)(options, 'geminiEmbedder', options._client);
|
|
696
|
+
return client;
|
|
697
|
+
};
|
|
698
|
+
/**
|
|
699
|
+
* ONE `embedContent` round-trip, carrying however many texts the model takes
|
|
700
|
+
* ({@link GEMINI_MAX_TEXTS_PER_CALL}) — one, today. Written as a slice rather
|
|
701
|
+
* than a single string so that the day Google raises the limit is a
|
|
702
|
+
* one-number change here and nowhere else.
|
|
703
|
+
*/
|
|
704
|
+
async function embedChunk(texts, taskType, signal) {
|
|
705
|
+
const config = {
|
|
706
|
+
...(sendTaskType && { taskType: options.taskType ?? taskType }),
|
|
707
|
+
...(requested !== undefined && { outputDimensionality: requested }),
|
|
708
|
+
...(signal && { abortSignal: signal }),
|
|
709
|
+
};
|
|
710
|
+
const response = await connect().models.embedContent({
|
|
711
|
+
model,
|
|
712
|
+
contents: [...texts],
|
|
713
|
+
...(Object.keys(config).length > 0 && { config }),
|
|
714
|
+
});
|
|
715
|
+
return readGeminiEmbeddings(response, model, dimensions, texts, onTruncation);
|
|
716
|
+
}
|
|
717
|
+
/** The calls one batch becomes, in order, one chunk at a time. */
|
|
718
|
+
async function embedAll(texts, taskType, signal) {
|
|
719
|
+
const out = [];
|
|
720
|
+
for (let i = 0; i < texts.length; i += GEMINI_MAX_TEXTS_PER_CALL) {
|
|
721
|
+
signal?.throwIfAborted();
|
|
722
|
+
out.push(...(await embedChunk(texts.slice(i, i + GEMINI_MAX_TEXTS_PER_CALL), taskType, signal)));
|
|
723
|
+
}
|
|
724
|
+
return out;
|
|
725
|
+
}
|
|
726
|
+
return {
|
|
727
|
+
dimensions,
|
|
728
|
+
// The embedding SPACE, size included — see the note above.
|
|
729
|
+
id: `gemini:${model}:${dimensions}`,
|
|
730
|
+
// Spread, so a model this factory does not know declares NO ceiling rather
|
|
731
|
+
// than one it cannot stand behind.
|
|
732
|
+
...(maxInputChars !== undefined && { maxInputChars }),
|
|
733
|
+
async embed({ text, signal }) {
|
|
734
|
+
// ONE text is this library's query shape (`loadRelevant` embeds the
|
|
735
|
+
// question).
|
|
736
|
+
return (await embedChunk([text], 'RETRIEVAL_QUERY', signal))[0];
|
|
737
|
+
},
|
|
738
|
+
async embedBatch({ texts, signal }) {
|
|
739
|
+
// MANY texts is this library's document shape, and Gemini embeds a
|
|
740
|
+
// document into a different place from a query on purpose.
|
|
741
|
+
//
|
|
742
|
+
// Sequential rather than parallel: callers of this path are usually
|
|
743
|
+
// indexing a whole corpus, and `indexCorpus` already fans out over
|
|
744
|
+
// batches with its own bounded parallelism and retry. Racing N more
|
|
745
|
+
// requests inside one of those branches is how a corpus index meets a
|
|
746
|
+
// throttling error. The abort is checked between calls as well as passed
|
|
747
|
+
// into each one.
|
|
748
|
+
return embedAll(texts, 'RETRIEVAL_DOCUMENT', signal);
|
|
749
|
+
},
|
|
750
|
+
};
|
|
751
|
+
}
|
|
752
|
+
exports.geminiEmbedder = geminiEmbedder;
|
|
753
|
+
/**
|
|
754
|
+
* Read the vectors out of an `embedContent` response — and refuse everything
|
|
755
|
+
* else by name.
|
|
756
|
+
*
|
|
757
|
+
* Four refusals, each for a failure that would otherwise be silent:
|
|
758
|
+
* • a count that disagrees with the texts sent — vectors are paired with
|
|
759
|
+
* texts by POSITION, so a short answer does not lose one passage, it
|
|
760
|
+
* re-labels every later one;
|
|
761
|
+
* • no readable `values` — an embedder that returns `[]` writes a row a store
|
|
762
|
+
* will never rank, which is indistinguishable from "the corpus does not
|
|
763
|
+
* mention that";
|
|
764
|
+
* • a length that disagrees with the declared `.dimensions` — the number a
|
|
765
|
+
* vector store fingerprints on;
|
|
766
|
+
* • `statistics.truncated` under `onTruncation: 'refuse'` — the service
|
|
767
|
+
* saying it indexed the opening of the passage and threw the rest away.
|
|
768
|
+
*/
|
|
769
|
+
function readGeminiEmbeddings(response, model, dimensions, texts, onTruncation) {
|
|
770
|
+
const rows = response.embeddings;
|
|
771
|
+
if (!Array.isArray(rows) || rows.length !== texts.length) {
|
|
772
|
+
throw new Error(`geminiEmbedder: '${model}' was sent ${texts.length} text(s) and answered with ` +
|
|
773
|
+
`${Array.isArray(rows) ? rows.length : describeShape(response)} — vectors are paired ` +
|
|
774
|
+
`with texts by POSITION, so a mismatched answer would attach every later vector to the ` +
|
|
775
|
+
`wrong passage, and the corpus would rank confidently and wrongly forever.`);
|
|
776
|
+
}
|
|
777
|
+
return rows.map((row, index) => {
|
|
778
|
+
const values = row?.values;
|
|
779
|
+
if (!Array.isArray(values) || !values.every((n) => typeof n === 'number')) {
|
|
780
|
+
throw new Error(`geminiEmbedder: '${model}' returned no \`embeddings[${index}].values\` array. The ` +
|
|
781
|
+
`service answered with ${describeShape(response)}, which this adapter cannot read — ` +
|
|
782
|
+
`check that the model id names an EMBEDDING model.`);
|
|
783
|
+
}
|
|
784
|
+
if (values.length !== dimensions) {
|
|
785
|
+
throw new Error(`geminiEmbedder: '${model}' answered with a ${values.length}-number vector while this ` +
|
|
786
|
+
`embedder reports .dimensions ${dimensions}. A store fingerprints on the reported ` +
|
|
787
|
+
`number, so writing this vector would make the store's own record of its shape a lie. ` +
|
|
788
|
+
`Pass { dimensions: ${values.length} } if that is the size you meant.`);
|
|
789
|
+
}
|
|
790
|
+
if (row?.statistics?.truncated === true && onTruncation === 'refuse') {
|
|
791
|
+
const chars = (texts[index] ?? '').length;
|
|
792
|
+
throw new Error(`geminiEmbedder: '${model}' CLIPPED this input — it reported ` +
|
|
793
|
+
`\`statistics.truncated\`, so the vector represents only the opening of the ` +
|
|
794
|
+
`${chars.toLocaleString('en-US')}-character text it was given. Storing it would ` +
|
|
795
|
+
`index a passage by a prefix of itself, and retrieval would then fail to find words ` +
|
|
796
|
+
`the passage visibly contains.\n` +
|
|
797
|
+
` Fix 1 — cut smaller: pass \`maxChunkChars\` to the indexer (it wins over this ` +
|
|
798
|
+
`embedder's declared .maxInputChars, which is a characters-per-token ASSUMPTION and ` +
|
|
799
|
+
`is optimistic for code, tables and CJK).\n` +
|
|
800
|
+
` Fix 2 — \`onTruncation: 'allow'\` if a prefix embedding is genuinely what you ` +
|
|
801
|
+
`want. The vector is returned unchanged; only this refusal goes away.`);
|
|
802
|
+
}
|
|
803
|
+
return [...values];
|
|
804
|
+
});
|
|
805
|
+
}
|
|
574
806
|
/**
|
|
575
807
|
* The MEASURED cliff of the default model, and the origin of the whole
|
|
576
808
|
* mechanism: `Xenova/all-MiniLM-L6-v2` silently truncates at 512 wordpiece
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedders/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GeminiProvider — wraps `@google/genai` as an `LLMProvider` (9.13.0).
|
|
3
|
+
*
|
|
4
|
+
* Pattern: Adapter (GoF) + Ports-and-Adapters (Cockburn 2005).
|
|
5
|
+
* Role: Outer ring — translates `LLMRequest`/`LLMResponse` to/from Google's
|
|
6
|
+
* `generateContent` API. Knows nothing about agents, recorders, or
|
|
7
|
+
* compositions.
|
|
8
|
+
* Emits: N/A — providers don't emit; recorders observe via Agent.
|
|
9
|
+
*
|
|
10
|
+
* ─── Two doors, one adapter ─────────────────────────────────────────
|
|
11
|
+
*
|
|
12
|
+
* The same SDK reaches two different services, and which one you get is a
|
|
13
|
+
* property of the OPTIONS, not of a separate factory:
|
|
14
|
+
*
|
|
15
|
+
* • **Vertex** — `gemini({ project, location })` builds
|
|
16
|
+
* `new GoogleGenAI({ vertexai: true, project, location, googleAuthOptions })`.
|
|
17
|
+
* Auth is Application Default Credentials (env key file, gcloud user
|
|
18
|
+
* credentials, or the metadata server on GCE / Cloud Run / Agent Runtime).
|
|
19
|
+
* No API key exists on this path.
|
|
20
|
+
* • **Gemini API (AI Studio)** — `gemini({ apiKey })` builds
|
|
21
|
+
* `new GoogleGenAI({ apiKey })`. One key, no cloud project.
|
|
22
|
+
*
|
|
23
|
+
* Neither is guessed. The factory refuses at construction when it can resolve
|
|
24
|
+
* neither a project nor a key, naming both doors — because the SDK's own
|
|
25
|
+
* behaviour in that case is to WARN on stderr, construct anyway, and fail on
|
|
26
|
+
* the first call, which reads like a network problem rather than a missing
|
|
27
|
+
* setting.
|
|
28
|
+
*
|
|
29
|
+
* ─── Why native, and not `openai({ baseURL })` ──────────────────────
|
|
30
|
+
*
|
|
31
|
+
* Google publishes an OpenAI-compatible endpoint, and it does work — for about
|
|
32
|
+
* an hour. It authenticates with an OAuth access token that expires and has no
|
|
33
|
+
* refresh home in `OpenAIProviderOptions`; its `tools.function.parameters` is
|
|
34
|
+
* **OpenAPI**, not JSON Schema, so `$ref` / `oneOf` / `additionalProperties`
|
|
35
|
+
* diverge silently; unsupported parameters are ignored rather than refused; and
|
|
36
|
+
* its documented response carries no cached- or reasoning-token counts. This
|
|
37
|
+
* adapter exists because every one of those is answerable on the native SDK:
|
|
38
|
+
* ADC refreshes itself, tools go over as JSON Schema untranslated
|
|
39
|
+
* (`parametersJsonSchema`), a forced single tool is expressible, and
|
|
40
|
+
* `usageMetadata` reports cached and thinking tokens as separate numbers.
|
|
41
|
+
*
|
|
42
|
+
* ─── Limitations (stated, not discovered) ───────────────────────────
|
|
43
|
+
*
|
|
44
|
+
* • Multi-modal input/output NOT supported — `LLMMessage.content` is `string`,
|
|
45
|
+
* so this adapter sends and reads text parts only. Inline data, files and
|
|
46
|
+
* generated images are out of scope for the port as it stands.
|
|
47
|
+
* • **Thought summaries are not requested.** `usage.thinking` is reported
|
|
48
|
+
* honestly from `thoughtsTokenCount`, and `req.thinking.budget` is threaded
|
|
49
|
+
* to `thinkingConfig.thinkingBudget` — but `includeThoughts` is deliberately
|
|
50
|
+
* left unset, so no `rawThinking` is produced. Gemini's thought parts carry a
|
|
51
|
+
* `thoughtSignature` that has to be echoed byte-exact on the next turn, and
|
|
52
|
+
* there is no Gemini `ThinkingHandler` in this release to normalize and
|
|
53
|
+
* round-trip them. Asking for content nothing can carry would be a leak, not
|
|
54
|
+
* a feature. `thinkingConfig.thinkingLevel` has no field on `LLMRequest` and
|
|
55
|
+
* is likewise not sent.
|
|
56
|
+
* • `responseJsonSchema` (native structured output) is NOT exposed; use
|
|
57
|
+
* `.outputSchema(...)`, which goes over as a forced tool — a shape this
|
|
58
|
+
* adapter DOES carry.
|
|
59
|
+
* • Grounding tools (Google Search, code execution, URL context, MCP servers)
|
|
60
|
+
* are not exposed. `tools` carries function declarations only.
|
|
61
|
+
*/
|
|
62
|
+
import type { LLMCallHooks, LLMChunk, LLMProvider, LLMRequest, LLMResponse, WireRole } from '../types.js';
|
|
63
|
+
import { type GoogleGenAIConnectionOptions } from './googleGenAI.js';
|
|
64
|
+
/** One `parts[]` entry. Only the members this adapter reads or writes. */
|
|
65
|
+
export interface GeminiPart {
|
|
66
|
+
readonly text?: string;
|
|
67
|
+
/** `true` on a thought-summary part. Never joined into visible content. */
|
|
68
|
+
readonly thought?: boolean;
|
|
69
|
+
readonly functionCall?: {
|
|
70
|
+
readonly id?: string;
|
|
71
|
+
readonly name?: string;
|
|
72
|
+
readonly args?: Record<string, unknown>;
|
|
73
|
+
};
|
|
74
|
+
readonly functionResponse?: {
|
|
75
|
+
readonly id?: string;
|
|
76
|
+
readonly name?: string;
|
|
77
|
+
readonly response?: Record<string, unknown>;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** One conversation turn. Gemini's assistant role is spelled `'model'`. */
|
|
81
|
+
export interface GeminiContent {
|
|
82
|
+
readonly role: 'user' | 'model';
|
|
83
|
+
readonly parts: readonly GeminiPart[];
|
|
84
|
+
}
|
|
85
|
+
/** A `FunctionDeclaration`, JSON-Schema flavour. */
|
|
86
|
+
export interface GeminiFunctionDeclaration {
|
|
87
|
+
readonly name: string;
|
|
88
|
+
readonly description: string;
|
|
89
|
+
/**
|
|
90
|
+
* JSON Schema, passed through UNCHANGED. The sibling `parameters` field
|
|
91
|
+
* takes OpenAPI instead and is never set here — sending both is what makes
|
|
92
|
+
* an adapter's tool schemas quietly disagree with the ones it was given.
|
|
93
|
+
*/
|
|
94
|
+
readonly parametersJsonSchema: Record<string, unknown>;
|
|
95
|
+
}
|
|
96
|
+
export interface GeminiGenerateConfig {
|
|
97
|
+
systemInstruction?: string;
|
|
98
|
+
temperature?: number;
|
|
99
|
+
maxOutputTokens?: number;
|
|
100
|
+
stopSequences?: string[];
|
|
101
|
+
abortSignal?: AbortSignal;
|
|
102
|
+
tools?: {
|
|
103
|
+
functionDeclarations: GeminiFunctionDeclaration[];
|
|
104
|
+
}[];
|
|
105
|
+
toolConfig?: {
|
|
106
|
+
functionCallingConfig: {
|
|
107
|
+
mode: 'AUTO' | 'ANY' | 'NONE';
|
|
108
|
+
allowedFunctionNames?: string[];
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
thinkingConfig?: {
|
|
112
|
+
thinkingBudget: number;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export interface GeminiGenerateParams {
|
|
116
|
+
readonly model: string;
|
|
117
|
+
readonly contents: readonly GeminiContent[];
|
|
118
|
+
readonly config?: GeminiGenerateConfig;
|
|
119
|
+
}
|
|
120
|
+
export interface GeminiUsageMetadata {
|
|
121
|
+
readonly promptTokenCount?: number;
|
|
122
|
+
readonly candidatesTokenCount?: number;
|
|
123
|
+
readonly cachedContentTokenCount?: number;
|
|
124
|
+
readonly thoughtsTokenCount?: number;
|
|
125
|
+
readonly totalTokenCount?: number;
|
|
126
|
+
}
|
|
127
|
+
export interface GeminiCandidate {
|
|
128
|
+
readonly content?: {
|
|
129
|
+
readonly parts?: readonly GeminiPart[];
|
|
130
|
+
};
|
|
131
|
+
readonly finishReason?: string;
|
|
132
|
+
}
|
|
133
|
+
export interface GeminiGenerateResponse {
|
|
134
|
+
readonly candidates?: readonly GeminiCandidate[];
|
|
135
|
+
readonly usageMetadata?: GeminiUsageMetadata;
|
|
136
|
+
readonly responseId?: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The `models` namespace, narrowed to the two operations this adapter
|
|
140
|
+
* dispatches.
|
|
141
|
+
*
|
|
142
|
+
* `countTokens` is deliberately ABSENT. It exists on the real namespace and it
|
|
143
|
+
* would be an easy way to fill in a usage number the wire did not report —
|
|
144
|
+
* which is precisely why it is not here. A count we asked for separately is not
|
|
145
|
+
* what the call was billed for; see the streaming note on `stream()`.
|
|
146
|
+
*/
|
|
147
|
+
export interface GeminiModelsLike {
|
|
148
|
+
generateContent(params: GeminiGenerateParams): Promise<GeminiGenerateResponse>;
|
|
149
|
+
/** Note the double await: the SDK returns a PROMISE of an async generator. */
|
|
150
|
+
generateContentStream(params: GeminiGenerateParams): Promise<AsyncIterable<GeminiGenerateResponse>>;
|
|
151
|
+
}
|
|
152
|
+
/** What `new GoogleGenAI(...)` gives us, narrowed to what we use. */
|
|
153
|
+
export interface GeminiClientLike {
|
|
154
|
+
readonly models: GeminiModelsLike;
|
|
155
|
+
}
|
|
156
|
+
export interface GeminiProviderOptions extends GoogleGenAIConnectionOptions {
|
|
157
|
+
/**
|
|
158
|
+
* Default model used when `LLMRequest.model` is `'gemini'` (the shorthand).
|
|
159
|
+
* A request naming a full model id wins.
|
|
160
|
+
*/
|
|
161
|
+
readonly defaultModel?: string;
|
|
162
|
+
/** Default `maxOutputTokens` when the request doesn't set it. Optional. */
|
|
163
|
+
readonly defaultMaxTokens?: number;
|
|
164
|
+
/** @internal Pre-built client for testing. Skips the SDK import entirely. */
|
|
165
|
+
readonly _client?: GeminiClientLike;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Build an `LLMProvider` backed by Gemini — on Vertex or on the Gemini API.
|
|
169
|
+
*
|
|
170
|
+
* @example Vertex (Application Default Credentials)
|
|
171
|
+
* ```ts
|
|
172
|
+
* import { Agent } from 'agentfootprint';
|
|
173
|
+
* import { gemini } from 'agentfootprint/providers';
|
|
174
|
+
*
|
|
175
|
+
* const agent = Agent.create({
|
|
176
|
+
* provider: gemini({ project: 'my-project', location: 'us-central1' }),
|
|
177
|
+
* model: 'gemini',
|
|
178
|
+
* })
|
|
179
|
+
* .tool(weatherTool)
|
|
180
|
+
* .build();
|
|
181
|
+
* ```
|
|
182
|
+
*
|
|
183
|
+
* @example Gemini API (one key, no cloud project)
|
|
184
|
+
* ```ts
|
|
185
|
+
* const provider = gemini({ apiKey: process.env.GEMINI_API_KEY });
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* @throws at construction when neither a project nor an API key is resolvable,
|
|
189
|
+
* and when `@google/genai` is not installed.
|
|
190
|
+
*/
|
|
191
|
+
export declare function gemini(options?: GeminiProviderOptions): LLMProvider;
|
|
192
|
+
/**
|
|
193
|
+
* Class form for consumers who prefer `new GeminiProvider(...)` over the
|
|
194
|
+
* `gemini(...)` factory. Identical behavior; trivial wrapper.
|
|
195
|
+
*/
|
|
196
|
+
export declare class GeminiProvider implements LLMProvider {
|
|
197
|
+
readonly name = "gemini";
|
|
198
|
+
readonly carriesInMessages: readonly WireRole[];
|
|
199
|
+
readonly carriesForcedToolChoice = true;
|
|
200
|
+
private readonly inner;
|
|
201
|
+
constructor(options?: GeminiProviderOptions);
|
|
202
|
+
complete(req: LLMRequest, hooks?: LLMCallHooks): Promise<LLMResponse>;
|
|
203
|
+
stream(req: LLMRequest, hooks?: LLMCallHooks): AsyncIterable<LLMChunk>;
|
|
204
|
+
}
|