-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
78 lines (69 loc) · 1.97 KB
/
index.ts
File metadata and controls
78 lines (69 loc) · 1.97 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
72
73
74
75
76
77
78
import type { AdapterOptions } from "./types.js";
import type {
CompletionAdapter,
CompletionTool,
} from "adminforth";
import {
AnthropicMessagesService,
type CompletionRequestInput,
type CompletionResult,
type ReasoningEffort,
type StreamChunkCallback,
} from "./anthropic.js";
import {
createLangChainAgentSpec,
type AgentModelPurpose,
} from "./langchain.js";
export type { AdapterOptions } from "./types.js";
class CompletionAdapterAnthropicMessages
implements CompletionAdapter
{
options: AdapterOptions;
private anthropic: AnthropicMessagesService;
constructor(options: AdapterOptions) {
this.options = options;
this.anthropic = new AnthropicMessagesService(options);
}
validate() {
this.anthropic.validate();
}
measureTokensCount(content: string): Promise<number> {
return this.anthropic.measureTokensCount(content);
}
getLangChainAgentSpec(params: {
maxTokens: number;
purpose: AgentModelPurpose;
}) {
return createLangChainAgentSpec({
options: this.options,
maxTokens: params.maxTokens,
purpose: params.purpose,
});
}
complete = async (
requestOrContent: CompletionRequestInput | string,
maxTokens = 50,
outputSchema?: any,
reasoningEffort: ReasoningEffort = "low",
toolsOrOnChunk?: CompletionTool[] | StreamChunkCallback,
onChunk?: StreamChunkCallback,
): Promise<CompletionResult> => {
const request =
typeof requestOrContent === "string"
? {
content: requestOrContent,
maxTokens,
outputSchema,
reasoningEffort,
tools: Array.isArray(toolsOrOnChunk) ? toolsOrOnChunk : undefined,
onChunk:
typeof toolsOrOnChunk === "function"
? toolsOrOnChunk
: onChunk,
}
: requestOrContent;
return this.anthropic.complete(request);
};
}
export { CompletionAdapterAnthropicMessages };
export default CompletionAdapterAnthropicMessages;