-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
71 lines (62 loc) · 1.86 KB
/
Copy pathindex.ts
File metadata and controls
71 lines (62 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import type { CompletionAdapter } from "adminforth";
import type { AdapterOptions } from "./types.js";
import {
GeminiService,
type CompletionRequestInput,
type CompletionResult,
} from "./gemini.js";
import {
createLangChainAgentSpec,
type AgentModelPurpose,
} from "./langchain.js";
export type { AdapterOptions } from "./types.js";
class CompletionAdapterGoogleGemini implements CompletionAdapter {
options: AdapterOptions;
private gemini: GeminiService;
constructor(options: AdapterOptions) {
this.options = options;
this.gemini = new GeminiService(options);
}
validate() {
this.gemini.validate();
}
measureTokensCount(content: string): Promise<number> {
return this.gemini.measureTokensCount(content);
}
getLangChainAgentSpec(params: {
maxTokens: number;
purpose: AgentModelPurpose;
}) {
return createLangChainAgentSpec({
options: this.options,
maxTokens: params.maxTokens,
purpose: params.purpose,
});
}
complete = async (
requestOrContent: CompletionRequestInput | string,
stopOrMaxTokens: string[] | number = 50,
maxTokensOrOutputSchema: number | any = 50,
outputSchema?: any,
): Promise<CompletionResult> => {
const request =
typeof requestOrContent === "string"
? {
content: requestOrContent,
maxTokens:
typeof stopOrMaxTokens === "number"
? stopOrMaxTokens
: typeof maxTokensOrOutputSchema === "number"
? maxTokensOrOutputSchema
: 50,
outputSchema:
typeof stopOrMaxTokens === "number"
? maxTokensOrOutputSchema
: outputSchema,
}
: requestOrContent;
return this.gemini.complete(request);
};
}
export { CompletionAdapterGoogleGemini };
export default CompletionAdapterGoogleGemini;