@mcp-abap-adt/llm-agent 2.0.0 → 2.2.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/agents/anthropic-agent.d.ts +5 -1
- package/dist/agents/anthropic-agent.d.ts.map +1 -1
- package/dist/agents/anthropic-agent.js +33 -4
- package/dist/agents/anthropic-agent.js.map +1 -1
- package/dist/agents/base.d.ts.map +1 -1
- package/dist/agents/base.js +11 -8
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +1 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/sap-core-ai-agent.d.ts +28 -8
- package/dist/agents/sap-core-ai-agent.d.ts.map +1 -1
- package/dist/agents/sap-core-ai-agent.js +135 -7
- package/dist/agents/sap-core-ai-agent.js.map +1 -1
- package/dist/cli.js +26 -3
- package/dist/cli.js.map +1 -1
- package/dist/llm-providers/sap-core-ai.d.ts +26 -49
- package/dist/llm-providers/sap-core-ai.d.ts.map +1 -1
- package/dist/llm-providers/sap-core-ai.js +127 -93
- package/dist/llm-providers/sap-core-ai.js.map +1 -1
- package/dist/smart-agent/llm/token-counting-llm.d.ts.map +1 -1
- package/dist/smart-agent/llm/token-counting-llm.js +5 -2
- package/dist/smart-agent/llm/token-counting-llm.js.map +1 -1
- package/dist/smart-agent/pipeline.d.ts +3 -1
- package/dist/smart-agent/pipeline.d.ts.map +1 -1
- package/dist/smart-agent/pipeline.js +15 -0
- package/dist/smart-agent/pipeline.js.map +1 -1
- package/package.json +2 -2
|
@@ -28,6 +28,10 @@ export declare class AnthropicAgent extends BaseAgent {
|
|
|
28
28
|
* Format messages for Anthropic API
|
|
29
29
|
*/
|
|
30
30
|
private formatMessagesForAnthropic;
|
|
31
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Stream by falling back to a non-streaming call and yielding the result
|
|
33
|
+
* as text + usage + done chunks. Native SSE streaming can be added later.
|
|
34
|
+
*/
|
|
35
|
+
protected streamLLMWithTools(messages: Message[], tools: unknown[], _options?: AgentCallOptions): AsyncGenerator<AgentStreamChunk, void, unknown>;
|
|
32
36
|
}
|
|
33
37
|
//# sourceMappingURL=anthropic-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-agent.d.ts","sourceRoot":"","sources":["../../src/agents/anthropic-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,WAAW,CAAoB;gBAE3B,MAAM,EAAE,oBAAoB;IAKxC;;OAEG;cACa,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAgE9C;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoBpC;;OAEG;IACH,OAAO,CAAC,0BAA0B;
|
|
1
|
+
{"version":3,"file":"anthropic-agent.d.ts","sourceRoot":"","sources":["../../src/agents/anthropic-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,WAAW,CAAoB;gBAE3B,MAAM,EAAE,oBAAoB;IAKxC;;OAEG;cACa,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAgE9C;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoBpC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;;OAGG;cACc,kBAAkB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;CA2CnD"}
|
|
@@ -79,11 +79,40 @@ export class AnthropicAgent extends BaseAgent {
|
|
|
79
79
|
};
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Stream by falling back to a non-streaming call and yielding the result
|
|
84
|
+
* as text + usage + done chunks. Native SSE streaming can be added later.
|
|
85
|
+
*/
|
|
86
|
+
async *streamLLMWithTools(messages, tools, _options) {
|
|
87
|
+
const result = await this.callLLMWithTools(messages, tools);
|
|
88
|
+
if (result.content) {
|
|
89
|
+
yield { type: 'text', delta: result.content };
|
|
90
|
+
}
|
|
91
|
+
// Anthropic returns usage as { input_tokens, output_tokens }
|
|
92
|
+
// biome-ignore lint/suspicious/noExplicitAny: raw provider payload has no stable type
|
|
93
|
+
const raw = result.raw;
|
|
94
|
+
if (raw?.usage) {
|
|
95
|
+
yield {
|
|
96
|
+
type: 'usage',
|
|
97
|
+
promptTokens: raw.usage.input_tokens ?? 0,
|
|
98
|
+
completionTokens: raw.usage.output_tokens ?? 0,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Detect tool_calls finish reason
|
|
102
|
+
const hasToolUse = Array.isArray(raw?.content) &&
|
|
103
|
+
raw.content.some((b) => b.type === 'tool_use');
|
|
104
|
+
const finishReason = hasToolUse ? 'tool_calls' : 'stop';
|
|
105
|
+
if (hasToolUse) {
|
|
106
|
+
const toolCalls = raw.content
|
|
107
|
+
.filter((b) => b.type === 'tool_use')
|
|
108
|
+
.map((b) => ({
|
|
109
|
+
id: b.id,
|
|
110
|
+
name: b.name,
|
|
111
|
+
arguments: b.input ?? {},
|
|
112
|
+
}));
|
|
113
|
+
yield { type: 'tool_calls', toolCalls };
|
|
85
114
|
}
|
|
86
|
-
|
|
115
|
+
yield { type: 'done', finishReason };
|
|
87
116
|
}
|
|
88
117
|
}
|
|
89
118
|
//# sourceMappingURL=anthropic-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-agent.js","sourceRoot":"","sources":["../../src/agents/anthropic-agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"anthropic-agent.js","sourceRoot":"","sources":["../../src/agents/anthropic-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/C,eAAe,CACb,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,8BAAsB,SAAU,YAAW,kBAAkB;IAC3D,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACtC,SAAS,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAM;IAC9C,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,CAAM;gBAEpB,MAAM,EAAE,eAAe;IAanC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B;;;;OAIG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiC1D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;IAElD;;;OAGG;IACG,aAAa,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9C;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;IAIlD;;;OAGG;cACc,sBAAsB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/base.js
CHANGED
|
@@ -135,15 +135,18 @@ export class BaseAgent {
|
|
|
135
135
|
catch {
|
|
136
136
|
continue;
|
|
137
137
|
}
|
|
138
|
+
// Extract usage from any chunk that carries it (OpenAI sends it
|
|
139
|
+
// in a separate empty-choices chunk, DeepSeek may include it
|
|
140
|
+
// alongside the last choice).
|
|
141
|
+
const chunkUsage = chunk.usage;
|
|
142
|
+
if (chunkUsage) {
|
|
143
|
+
yield {
|
|
144
|
+
type: 'usage',
|
|
145
|
+
promptTokens: chunkUsage.prompt_tokens ?? 0,
|
|
146
|
+
completionTokens: chunkUsage.completion_tokens ?? 0,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
138
149
|
if (Array.isArray(chunk.choices) && chunk.choices.length === 0) {
|
|
139
|
-
const usage = chunk.usage;
|
|
140
|
-
if (usage) {
|
|
141
|
-
yield {
|
|
142
|
-
type: 'usage',
|
|
143
|
-
promptTokens: usage.prompt_tokens ?? 0,
|
|
144
|
-
completionTokens: usage.completion_tokens ?? 0,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
150
|
continue;
|
|
148
151
|
}
|
|
149
152
|
const choice = chunk.choices?.[0];
|
package/dist/agents/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export { BaseAgent, type BaseAgentConfig } from './base.js';
|
|
|
6
6
|
export { DeepSeekAgent, type DeepSeekAgentConfig } from './deepseek-agent.js';
|
|
7
7
|
export { OpenAIAgent, type OpenAIAgentConfig } from './openai-agent.js';
|
|
8
8
|
export { PromptBasedAgent, type PromptBasedAgentConfig, } from './prompt-based-agent.js';
|
|
9
|
+
export { SapCoreAIAgent, type SapCoreAIAgentConfig, } from './sap-core-ai-agent.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC"}
|
package/dist/agents/index.js
CHANGED
|
@@ -6,4 +6,5 @@ export { BaseAgent } from './base.js';
|
|
|
6
6
|
export { DeepSeekAgent } from './deepseek-agent.js';
|
|
7
7
|
export { OpenAIAgent } from './openai-agent.js';
|
|
8
8
|
export { PromptBasedAgent, } from './prompt-based-agent.js';
|
|
9
|
+
export { SapCoreAIAgent, } from './sap-core-ai-agent.js';
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/agents/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAwB,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAA4B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAwB,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAA4B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,GAEf,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,21 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SAP Core AI Agent
|
|
2
|
+
* SAP Core AI Agent — extends BaseAgent with native function calling
|
|
3
3
|
*
|
|
4
|
-
* Uses
|
|
5
|
-
*
|
|
4
|
+
* Uses @sap-ai-sdk/orchestration via SapCoreAIProvider for LLM access.
|
|
5
|
+
* Supports native tool calling (OpenAI function format) and streaming.
|
|
6
6
|
*
|
|
7
7
|
* All LLM providers are accessed through SAP AI Core:
|
|
8
8
|
* - OpenAI models → SAP AI Core → OpenAI
|
|
9
9
|
* - Anthropic models → SAP AI Core → Anthropic
|
|
10
10
|
* - DeepSeek models → SAP AI Core → DeepSeek
|
|
11
|
-
*
|
|
12
|
-
* The model name in SapCoreAIProvider determines which underlying provider to use.
|
|
13
11
|
*/
|
|
14
12
|
import type { SapCoreAIProvider } from '../llm-providers/sap-core-ai.js';
|
|
15
|
-
import {
|
|
16
|
-
|
|
13
|
+
import type { AgentStreamChunk, Message } from '../types.js';
|
|
14
|
+
import { type AgentCallOptions, BaseAgent, type BaseAgentConfig } from './base.js';
|
|
15
|
+
export interface SapCoreAIAgentConfig extends BaseAgentConfig {
|
|
17
16
|
llmProvider: SapCoreAIProvider;
|
|
18
17
|
}
|
|
19
|
-
export declare class SapCoreAIAgent extends
|
|
18
|
+
export declare class SapCoreAIAgent extends BaseAgent {
|
|
19
|
+
private llmProvider;
|
|
20
|
+
constructor(config: SapCoreAIAgentConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Call SAP AI SDK with tools using native function calling.
|
|
23
|
+
*/
|
|
24
|
+
protected callLLMWithTools(messages: Message[], tools: unknown[], _options?: AgentCallOptions): Promise<{
|
|
25
|
+
content: string;
|
|
26
|
+
raw?: unknown;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Stream SAP AI SDK response with tool calling support.
|
|
30
|
+
*/
|
|
31
|
+
protected streamLLMWithTools(messages: Message[], tools: unknown[], _options?: AgentCallOptions): AsyncGenerator<AgentStreamChunk, void, unknown>;
|
|
32
|
+
/**
|
|
33
|
+
* Convert MCP tools to OpenAI function format.
|
|
34
|
+
*/
|
|
35
|
+
private convertToolsToFunctions;
|
|
36
|
+
/**
|
|
37
|
+
* Format messages for the SAP AI SDK (OpenAI-compatible format).
|
|
38
|
+
*/
|
|
39
|
+
private formatMessages;
|
|
20
40
|
}
|
|
21
41
|
//# sourceMappingURL=sap-core-ai-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sap-core-ai-agent.d.ts","sourceRoot":"","sources":["../../src/agents/sap-core-ai-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sap-core-ai-agent.d.ts","sourceRoot":"","sources":["../../src/agents/sap-core-ai-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,WAAW,CAAoB;gBAE3B,MAAM,EAAE,oBAAoB;IAKxC;;OAEG;cACa,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAe9C;;OAEG;cACc,kBAAkB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;IA6FlD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;OAEG;IACH,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -1,17 +1,145 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SAP Core AI Agent
|
|
2
|
+
* SAP Core AI Agent — extends BaseAgent with native function calling
|
|
3
3
|
*
|
|
4
|
-
* Uses
|
|
5
|
-
*
|
|
4
|
+
* Uses @sap-ai-sdk/orchestration via SapCoreAIProvider for LLM access.
|
|
5
|
+
* Supports native tool calling (OpenAI function format) and streaming.
|
|
6
6
|
*
|
|
7
7
|
* All LLM providers are accessed through SAP AI Core:
|
|
8
8
|
* - OpenAI models → SAP AI Core → OpenAI
|
|
9
9
|
* - Anthropic models → SAP AI Core → Anthropic
|
|
10
10
|
* - DeepSeek models → SAP AI Core → DeepSeek
|
|
11
|
-
*
|
|
12
|
-
* The model name in SapCoreAIProvider determines which underlying provider to use.
|
|
13
11
|
*/
|
|
14
|
-
import {
|
|
15
|
-
export class SapCoreAIAgent extends
|
|
12
|
+
import { BaseAgent, } from './base.js';
|
|
13
|
+
export class SapCoreAIAgent extends BaseAgent {
|
|
14
|
+
llmProvider;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
super(config);
|
|
17
|
+
this.llmProvider = config.llmProvider;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Call SAP AI SDK with tools using native function calling.
|
|
21
|
+
*/
|
|
22
|
+
async callLLMWithTools(messages, tools, _options) {
|
|
23
|
+
const functions = this.convertToolsToFunctions(tools);
|
|
24
|
+
const formattedMessages = this.formatMessages(messages);
|
|
25
|
+
const response = await this.llmProvider.chat(formattedMessages, functions.length > 0 ? functions : undefined);
|
|
26
|
+
return {
|
|
27
|
+
content: response.content,
|
|
28
|
+
raw: response.raw,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Stream SAP AI SDK response with tool calling support.
|
|
33
|
+
*/
|
|
34
|
+
async *streamLLMWithTools(messages, tools, _options) {
|
|
35
|
+
const functions = this.convertToolsToFunctions(tools);
|
|
36
|
+
const formattedMessages = this.formatMessages(messages);
|
|
37
|
+
const toolCallMap = new Map();
|
|
38
|
+
let finishReason = 'stop';
|
|
39
|
+
for await (const chunk of this.llmProvider.streamChat(formattedMessages, functions.length > 0 ? functions : undefined)) {
|
|
40
|
+
// Yield text deltas
|
|
41
|
+
if (chunk.content) {
|
|
42
|
+
yield { type: 'text', delta: chunk.content };
|
|
43
|
+
}
|
|
44
|
+
// Accumulate tool call deltas from the raw SDK chunk
|
|
45
|
+
if (chunk.raw && typeof chunk.raw === 'object') {
|
|
46
|
+
// biome-ignore lint/suspicious/noExplicitAny: raw SDK chunk type varies
|
|
47
|
+
const sdkChunk = chunk.raw;
|
|
48
|
+
if (typeof sdkChunk.getDeltaToolCalls === 'function') {
|
|
49
|
+
const toolDeltas = sdkChunk.getDeltaToolCalls();
|
|
50
|
+
if (Array.isArray(toolDeltas)) {
|
|
51
|
+
for (const tc of toolDeltas) {
|
|
52
|
+
const index = tc.index;
|
|
53
|
+
if (!toolCallMap.has(index)) {
|
|
54
|
+
toolCallMap.set(index, {
|
|
55
|
+
id: tc.id ?? '',
|
|
56
|
+
name: tc.function?.name ?? '',
|
|
57
|
+
arguments: '',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (tc.function?.arguments) {
|
|
61
|
+
const accumulated = toolCallMap.get(index);
|
|
62
|
+
if (accumulated) {
|
|
63
|
+
accumulated.arguments += tc.function.arguments;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Extract usage from chunk
|
|
70
|
+
if (typeof sdkChunk.getTokenUsage === 'function') {
|
|
71
|
+
const usage = sdkChunk.getTokenUsage();
|
|
72
|
+
if (usage) {
|
|
73
|
+
yield {
|
|
74
|
+
type: 'usage',
|
|
75
|
+
promptTokens: usage.prompt_tokens ?? 0,
|
|
76
|
+
completionTokens: usage.completion_tokens ?? 0,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Track finish reason
|
|
82
|
+
if (chunk.finishReason) {
|
|
83
|
+
finishReason =
|
|
84
|
+
chunk.finishReason === 'tool_calls'
|
|
85
|
+
? 'tool_calls'
|
|
86
|
+
: chunk.finishReason === 'length'
|
|
87
|
+
? 'length'
|
|
88
|
+
: chunk.finishReason === 'error'
|
|
89
|
+
? 'error'
|
|
90
|
+
: 'stop';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Emit accumulated tool calls
|
|
94
|
+
if (toolCallMap.size > 0) {
|
|
95
|
+
const toolCalls = [...toolCallMap.entries()]
|
|
96
|
+
.sort(([a], [b]) => a - b)
|
|
97
|
+
.map(([, tc]) => ({
|
|
98
|
+
id: tc.id,
|
|
99
|
+
name: tc.name,
|
|
100
|
+
arguments: (() => {
|
|
101
|
+
try {
|
|
102
|
+
return JSON.parse(tc.arguments);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return {};
|
|
106
|
+
}
|
|
107
|
+
})(),
|
|
108
|
+
}));
|
|
109
|
+
yield { type: 'tool_calls', toolCalls };
|
|
110
|
+
finishReason = 'tool_calls';
|
|
111
|
+
}
|
|
112
|
+
yield { type: 'done', finishReason };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Convert MCP tools to OpenAI function format.
|
|
116
|
+
*/
|
|
117
|
+
convertToolsToFunctions(tools) {
|
|
118
|
+
return tools.map((rawTool) => {
|
|
119
|
+
const tool = rawTool;
|
|
120
|
+
return {
|
|
121
|
+
type: 'function',
|
|
122
|
+
function: {
|
|
123
|
+
name: tool.name ?? '',
|
|
124
|
+
description: tool.description || '',
|
|
125
|
+
parameters: tool.inputSchema || {
|
|
126
|
+
type: 'object',
|
|
127
|
+
properties: {},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Format messages for the SAP AI SDK (OpenAI-compatible format).
|
|
135
|
+
*/
|
|
136
|
+
formatMessages(messages) {
|
|
137
|
+
return messages.map((msg) => ({
|
|
138
|
+
role: msg.role,
|
|
139
|
+
content: msg.tool_calls?.length ? null : (msg.content ?? null),
|
|
140
|
+
...(msg.tool_calls ? { tool_calls: msg.tool_calls } : {}),
|
|
141
|
+
...(msg.tool_call_id ? { tool_call_id: msg.tool_call_id } : {}),
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
16
144
|
}
|
|
17
145
|
//# sourceMappingURL=sap-core-ai-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sap-core-ai-agent.js","sourceRoot":"","sources":["../../src/agents/sap-core-ai-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sap-core-ai-agent.js","sourceRoot":"","sources":["../../src/agents/sap-core-ai-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -53,7 +53,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
53
53
|
import { dirname, join } from 'node:path';
|
|
54
54
|
import { fileURLToPath } from 'node:url';
|
|
55
55
|
import { config } from 'dotenv';
|
|
56
|
-
import { AnthropicAgent, AnthropicProvider, DeepSeekAgent, DeepSeekProvider, MCPClientWrapper, OpenAIAgent, OpenAIProvider, PromptBasedAgent, } from './index.js';
|
|
56
|
+
import { AnthropicAgent, AnthropicProvider, DeepSeekAgent, DeepSeekProvider, MCPClientWrapper, OpenAIAgent, OpenAIProvider, PromptBasedAgent, SapCoreAIAgent, SapCoreAIProvider, } from './index.js';
|
|
57
57
|
const __filename = fileURLToPath(import.meta.url);
|
|
58
58
|
const __dirname = dirname(__filename);
|
|
59
59
|
// Load .env file if it exists
|
|
@@ -191,12 +191,29 @@ async function main() {
|
|
|
191
191
|
console.log('✅ Created DeepSeek provider');
|
|
192
192
|
break;
|
|
193
193
|
}
|
|
194
|
+
case 'sap-ai-sdk':
|
|
195
|
+
case 'sap': {
|
|
196
|
+
const aicoreKey = process.env.AICORE_SERVICE_KEY;
|
|
197
|
+
if (aicoreKey) {
|
|
198
|
+
console.log(' AICORE_SERVICE_KEY: ✅ SET');
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.log(' AICORE_SERVICE_KEY: ❌ NOT SET');
|
|
202
|
+
}
|
|
203
|
+
llmProviderInstance = new SapCoreAIProvider({
|
|
204
|
+
apiKey: 'sap-ai-sdk-managed',
|
|
205
|
+
model: process.env.SAP_AI_MODEL || 'gpt-4o',
|
|
206
|
+
resourceGroup: process.env.SAP_AI_RESOURCE_GROUP,
|
|
207
|
+
});
|
|
208
|
+
console.log('✅ Created SAP AI SDK provider');
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
194
211
|
case 'ollama': {
|
|
195
212
|
// Ollama provider not yet implemented, but mentioned in .env.template
|
|
196
|
-
throw new Error('Ollama provider is not yet implemented. Use: openai, anthropic, or
|
|
213
|
+
throw new Error('Ollama provider is not yet implemented. Use: openai, anthropic, deepseek, or sap-ai-sdk');
|
|
197
214
|
}
|
|
198
215
|
default:
|
|
199
|
-
throw new Error(`Unsupported LLM provider: ${llmProvider}. Use: openai, anthropic, or
|
|
216
|
+
throw new Error(`Unsupported LLM provider: ${llmProvider}. Use: openai, anthropic, deepseek, or sap-ai-sdk`);
|
|
200
217
|
}
|
|
201
218
|
// Create agent based on provider
|
|
202
219
|
let agent;
|
|
@@ -250,6 +267,12 @@ async function main() {
|
|
|
250
267
|
mcpClient,
|
|
251
268
|
});
|
|
252
269
|
}
|
|
270
|
+
else if (llmProviderInstance instanceof SapCoreAIProvider) {
|
|
271
|
+
agent = new SapCoreAIAgent({
|
|
272
|
+
llmProvider: llmProviderInstance,
|
|
273
|
+
mcpClient,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
253
276
|
else {
|
|
254
277
|
agent = new PromptBasedAgent({
|
|
255
278
|
llmProvider: llmProviderInstance,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,75 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SAP
|
|
2
|
+
* SAP AI SDK LLM Provider
|
|
3
3
|
*
|
|
4
|
-
* Implementation of LLMProvider interface
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* All LLM providers (OpenAI, Anthropic, DeepSeek, etc.) are accessed through SAP AI Core.
|
|
8
|
-
* SAP AI Core acts as a proxy/gateway to different LLM providers.
|
|
4
|
+
* Implementation of LLMProvider interface using @sap-ai-sdk/orchestration.
|
|
5
|
+
* Authentication is handled automatically via AICORE_SERVICE_KEY environment variable.
|
|
9
6
|
*
|
|
10
7
|
* Architecture:
|
|
11
|
-
* - Agent →
|
|
12
|
-
* - SAP AI Core handles authentication, routing, and provider selection
|
|
8
|
+
* - Agent → SapCoreAIProvider → OrchestrationClient → SAP AI Core → External LLM
|
|
13
9
|
*/
|
|
14
10
|
import type { LLMProviderConfig, LLMResponse, Message } from '../types.js';
|
|
15
11
|
import { BaseLLMProvider } from './base.js';
|
|
16
12
|
export interface SapCoreAIConfig extends LLMProviderConfig {
|
|
17
|
-
/**
|
|
18
|
-
* SAP Destination name for Core AI service
|
|
19
|
-
*/
|
|
20
|
-
destinationName: string;
|
|
21
|
-
/**
|
|
22
|
-
* Model name (optional, defaults to service default)
|
|
23
|
-
* Model selection determines which underlying LLM provider to use
|
|
24
|
-
* Examples: 'gpt-4o-mini', 'claude-3-5-sonnet', 'deepseek-chat'
|
|
25
|
-
*/
|
|
13
|
+
/** Model name (e.g. 'gpt-4o', 'claude-3-5-sonnet'). Default: 'gpt-4o' */
|
|
26
14
|
model?: string;
|
|
27
|
-
/**
|
|
28
|
-
* Temperature (optional)
|
|
29
|
-
*/
|
|
15
|
+
/** Temperature for generation. Default: 0.7 */
|
|
30
16
|
temperature?: number;
|
|
31
|
-
/**
|
|
32
|
-
* Max tokens (optional)
|
|
33
|
-
*/
|
|
17
|
+
/** Max tokens for generation. Default: 2000 */
|
|
34
18
|
maxTokens?: number;
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* If provided, should use SAP Cloud SDK executeHttpRequest
|
|
39
|
-
*/
|
|
40
|
-
httpClient?: (config: {
|
|
41
|
-
destinationName: string;
|
|
42
|
-
method: string;
|
|
43
|
-
url: string;
|
|
44
|
-
headers?: Record<string, string>;
|
|
45
|
-
data?: unknown;
|
|
46
|
-
}) => Promise<{
|
|
47
|
-
data: Record<string, unknown>;
|
|
48
|
-
}>;
|
|
49
|
-
/**
|
|
50
|
-
* Optional logger instance
|
|
51
|
-
*/
|
|
19
|
+
/** SAP AI Core resource group */
|
|
20
|
+
resourceGroup?: string;
|
|
21
|
+
/** Optional logger */
|
|
52
22
|
log?: {
|
|
53
23
|
debug(message: string, meta?: Record<string, unknown>): void;
|
|
54
24
|
error(message: string, meta?: Record<string, unknown>): void;
|
|
55
25
|
};
|
|
56
26
|
}
|
|
57
27
|
/**
|
|
58
|
-
* SAP
|
|
28
|
+
* SAP AI SDK Provider implementation
|
|
59
29
|
*
|
|
60
|
-
* Uses
|
|
61
|
-
*
|
|
30
|
+
* Uses @sap-ai-sdk/orchestration for authentication and LLM access.
|
|
31
|
+
* A new OrchestrationClient is created per call because tools may change between calls.
|
|
62
32
|
*/
|
|
63
33
|
export declare class SapCoreAIProvider extends BaseLLMProvider {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
private httpClient;
|
|
34
|
+
readonly model: string;
|
|
35
|
+
readonly resourceGroup?: string;
|
|
67
36
|
private log?;
|
|
68
37
|
constructor(config: SapCoreAIConfig);
|
|
69
|
-
chat(messages: Message[]): Promise<LLMResponse>;
|
|
70
|
-
streamChat(
|
|
38
|
+
chat(messages: Message[], tools?: unknown[]): Promise<LLMResponse>;
|
|
39
|
+
streamChat(messages: Message[], tools?: unknown[]): AsyncIterable<LLMResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Create an OrchestrationClient with the given tools configuration.
|
|
42
|
+
*/
|
|
43
|
+
private createClient;
|
|
44
|
+
/**
|
|
45
|
+
* Convert MCP tools to OpenAI function calling format expected by the SDK.
|
|
46
|
+
*/
|
|
47
|
+
private convertToOrchestrationTools;
|
|
71
48
|
/**
|
|
72
|
-
* Format messages for SAP
|
|
49
|
+
* Format messages for the SAP AI SDK (OpenAI-compatible format).
|
|
73
50
|
*/
|
|
74
51
|
private formatMessages;
|
|
75
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sap-core-ai.d.ts","sourceRoot":"","sources":["../../src/llm-providers/sap-core-ai.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sap-core-ai.d.ts","sourceRoot":"","sources":["../../src/llm-providers/sap-core-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,GAAG,CAAC,EAAE;QACJ,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC9D,CAAC;CACH;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,CAAyB;gBAEzB,MAAM,EAAE,eAAe;IAQ7B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA2CjE,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,GAChB,aAAa,CAAC,WAAW,CAAC;IAqB7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAuBnC;;OAEG;IACH,OAAO,CAAC,cAAc;CA+BvB"}
|
|
@@ -1,125 +1,159 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SAP
|
|
2
|
+
* SAP AI SDK LLM Provider
|
|
3
3
|
*
|
|
4
|
-
* Implementation of LLMProvider interface
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* All LLM providers (OpenAI, Anthropic, DeepSeek, etc.) are accessed through SAP AI Core.
|
|
8
|
-
* SAP AI Core acts as a proxy/gateway to different LLM providers.
|
|
4
|
+
* Implementation of LLMProvider interface using @sap-ai-sdk/orchestration.
|
|
5
|
+
* Authentication is handled automatically via AICORE_SERVICE_KEY environment variable.
|
|
9
6
|
*
|
|
10
7
|
* Architecture:
|
|
11
|
-
* - Agent →
|
|
12
|
-
* - SAP AI Core handles authentication, routing, and provider selection
|
|
8
|
+
* - Agent → SapCoreAIProvider → OrchestrationClient → SAP AI Core → External LLM
|
|
13
9
|
*/
|
|
10
|
+
import { OrchestrationClient, } from '@sap-ai-sdk/orchestration';
|
|
14
11
|
import { BaseLLMProvider } from './base.js';
|
|
15
12
|
/**
|
|
16
|
-
* SAP
|
|
13
|
+
* SAP AI SDK Provider implementation
|
|
17
14
|
*
|
|
18
|
-
* Uses
|
|
19
|
-
*
|
|
15
|
+
* Uses @sap-ai-sdk/orchestration for authentication and LLM access.
|
|
16
|
+
* A new OrchestrationClient is created per call because tools may change between calls.
|
|
20
17
|
*/
|
|
21
18
|
export class SapCoreAIProvider extends BaseLLMProvider {
|
|
22
|
-
destinationName;
|
|
23
19
|
model;
|
|
24
|
-
|
|
25
|
-
log;
|
|
20
|
+
resourceGroup;
|
|
21
|
+
log;
|
|
26
22
|
constructor(config) {
|
|
27
23
|
super(config);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.destinationName = config.destinationName;
|
|
32
|
-
this.model = config.model || 'gpt-4o-mini'; // Default model
|
|
33
|
-
this.httpClient = config.httpClient;
|
|
24
|
+
// Skip validateConfig() — SAP SDK handles auth via AICORE_SERVICE_KEY env var
|
|
25
|
+
this.model = config.model || 'gpt-4o';
|
|
26
|
+
this.resourceGroup = config.resourceGroup;
|
|
34
27
|
this.log = config.log;
|
|
35
28
|
}
|
|
36
|
-
async chat(messages) {
|
|
29
|
+
async chat(messages, tools) {
|
|
37
30
|
try {
|
|
38
|
-
|
|
39
|
-
this.log.debug('Sending chat request to SAP Core AI', {
|
|
40
|
-
destination: this.destinationName,
|
|
41
|
-
model: this.model,
|
|
42
|
-
messageCount: messages.length,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
// Format messages for SAP Core AI API
|
|
46
|
-
const requestBody = {
|
|
31
|
+
this.log?.debug('Sending chat request via SAP AI SDK', {
|
|
47
32
|
model: this.model,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
method: 'POST',
|
|
60
|
-
url: url,
|
|
61
|
-
headers: {
|
|
62
|
-
'Content-Type': 'application/json',
|
|
63
|
-
},
|
|
64
|
-
data: requestBody,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
// Fallback: use axios (requires direct URL configuration)
|
|
69
|
-
// This is for standalone testing without SAP SDK
|
|
70
|
-
const axios = await import('axios');
|
|
71
|
-
const baseURL = process.env.SAP_CORE_AI_URL || 'https://api.ai.core.sap';
|
|
72
|
-
response = await axios.default.post(`${baseURL}/v1/chat/completions`, requestBody, {
|
|
73
|
-
headers: {
|
|
74
|
-
'Content-Type': 'application/json',
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
const choice = response.data.choices?.[0];
|
|
79
|
-
if (!choice) {
|
|
80
|
-
throw new Error('No response from SAP Core AI');
|
|
81
|
-
}
|
|
82
|
-
if (this.log) {
|
|
83
|
-
this.log.debug('Received response from SAP Core AI', {
|
|
84
|
-
finishReason: choice.finish_reason,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
33
|
+
messageCount: messages.length,
|
|
34
|
+
toolCount: tools?.length || 0,
|
|
35
|
+
});
|
|
36
|
+
const client = this.createClient(tools);
|
|
37
|
+
const response = await client.chatCompletion({
|
|
38
|
+
messagesHistory: this.formatMessages(messages),
|
|
39
|
+
});
|
|
40
|
+
const toolCalls = response.getToolCalls();
|
|
41
|
+
const content = response.getContent() || '';
|
|
42
|
+
const finishReason = response.getFinishReason();
|
|
43
|
+
this.log?.debug('Received response from SAP AI SDK', { finishReason });
|
|
87
44
|
return {
|
|
88
|
-
content
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
45
|
+
content,
|
|
46
|
+
finishReason,
|
|
47
|
+
raw: {
|
|
48
|
+
choices: [
|
|
49
|
+
{
|
|
50
|
+
message: {
|
|
51
|
+
role: 'assistant',
|
|
52
|
+
content,
|
|
53
|
+
...(toolCalls ? { tool_calls: toolCalls } : {}),
|
|
54
|
+
},
|
|
55
|
+
finish_reason: finishReason,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
usage: response.getTokenUsage(),
|
|
59
|
+
},
|
|
92
60
|
};
|
|
93
61
|
}
|
|
94
62
|
catch (error) {
|
|
95
63
|
const message = error instanceof Error ? error.message : String(error);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
: undefined;
|
|
99
|
-
if (this.log) {
|
|
100
|
-
this.log.error('SAP Core AI API error', {
|
|
101
|
-
destination: this.destinationName,
|
|
102
|
-
error: message,
|
|
103
|
-
response: responseData,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
throw new Error(`SAP Core AI API error: ${message}`);
|
|
64
|
+
this.log?.error('SAP AI SDK API error', { error: message });
|
|
65
|
+
throw new Error(`SAP AI SDK API error: ${message}`);
|
|
107
66
|
}
|
|
108
67
|
}
|
|
109
|
-
async *streamChat(
|
|
110
|
-
|
|
111
|
-
|
|
68
|
+
async *streamChat(messages, tools) {
|
|
69
|
+
try {
|
|
70
|
+
const client = this.createClient(tools);
|
|
71
|
+
const streamResponse = await client.stream({
|
|
72
|
+
messagesHistory: this.formatMessages(messages),
|
|
73
|
+
});
|
|
74
|
+
for await (const chunk of streamResponse.stream) {
|
|
75
|
+
yield {
|
|
76
|
+
content: chunk.getDeltaContent() || '',
|
|
77
|
+
finishReason: chunk.getFinishReason(),
|
|
78
|
+
raw: chunk,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
84
|
+
this.log?.error('SAP AI SDK streaming error', { error: message });
|
|
85
|
+
throw new Error(`SAP AI SDK streaming error: ${message}`);
|
|
112
86
|
}
|
|
113
|
-
throw new Error('Streaming is not implemented for SapCoreAIProvider');
|
|
114
87
|
}
|
|
115
88
|
/**
|
|
116
|
-
*
|
|
89
|
+
* Create an OrchestrationClient with the given tools configuration.
|
|
90
|
+
*/
|
|
91
|
+
createClient(tools) {
|
|
92
|
+
const orchTools = tools?.length
|
|
93
|
+
? this.convertToOrchestrationTools(tools)
|
|
94
|
+
: undefined;
|
|
95
|
+
// biome-ignore lint/suspicious/noExplicitAny: SDK model type is a string literal union but the API accepts any model name
|
|
96
|
+
const orchConfig = {
|
|
97
|
+
promptTemplating: {
|
|
98
|
+
model: {
|
|
99
|
+
name: this.model,
|
|
100
|
+
params: {
|
|
101
|
+
max_tokens: this.config.maxTokens || 2000,
|
|
102
|
+
temperature: this.config.temperature || 0.7,
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
...(orchTools ? { prompt: { tools: orchTools } } : {}),
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
return new OrchestrationClient(orchConfig, this.resourceGroup ? { resourceGroup: this.resourceGroup } : undefined);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Convert MCP tools to OpenAI function calling format expected by the SDK.
|
|
112
|
+
*/
|
|
113
|
+
convertToOrchestrationTools(tools) {
|
|
114
|
+
return tools.map((rawTool) => {
|
|
115
|
+
const tool = rawTool;
|
|
116
|
+
return {
|
|
117
|
+
type: 'function',
|
|
118
|
+
function: {
|
|
119
|
+
name: tool.name ?? '',
|
|
120
|
+
description: tool.description || '',
|
|
121
|
+
parameters: tool.inputSchema || {
|
|
122
|
+
type: 'object',
|
|
123
|
+
properties: {},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Format messages for the SAP AI SDK (OpenAI-compatible format).
|
|
117
131
|
*/
|
|
118
132
|
formatMessages(messages) {
|
|
119
|
-
return messages.map((msg) =>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
133
|
+
return messages.map((msg) => {
|
|
134
|
+
if (msg.role === 'assistant' &&
|
|
135
|
+
msg.tool_calls &&
|
|
136
|
+
msg.tool_calls.length > 0) {
|
|
137
|
+
return {
|
|
138
|
+
role: 'assistant',
|
|
139
|
+
content: msg.content || undefined,
|
|
140
|
+
tool_calls: msg.tool_calls,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
if (msg.role === 'tool' && msg.tool_call_id) {
|
|
144
|
+
return {
|
|
145
|
+
role: 'tool',
|
|
146
|
+
content: typeof msg.content === 'string'
|
|
147
|
+
? msg.content
|
|
148
|
+
: JSON.stringify(msg.content ?? ''),
|
|
149
|
+
tool_call_id: msg.tool_call_id,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
role: msg.role,
|
|
154
|
+
content: msg.content ?? '',
|
|
155
|
+
};
|
|
156
|
+
});
|
|
123
157
|
}
|
|
124
158
|
}
|
|
125
159
|
//# sourceMappingURL=sap-core-ai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sap-core-ai.js","sourceRoot":"","sources":["../../src/llm-providers/sap-core-ai.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sap-core-ai.js","sourceRoot":"","sources":["../../src/llm-providers/sap-core-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-counting-llm.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/llm/token-counting-llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,MAAM,EACP,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,IAAI;IAQ/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPlC,OAAO,CAAC,KAAK,CAKX;gBAE2B,KAAK,EAAE,IAAI;IAElC,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAyBlC,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"token-counting-llm.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/llm/token-counting-llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,MAAM,EACP,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,IAAI;IAQ/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPlC,OAAO,CAAC,KAAK,CAKX;gBAE2B,KAAK,EAAE,IAAI;IAElC,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAyBlC,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAalD,+CAA+C;IAC/C,QAAQ,IAAI,UAAU;IAItB,mCAAmC;IACnC,UAAU,IAAI,IAAI;CAQnB"}
|
|
@@ -42,8 +42,11 @@ export class TokenCountingLlm {
|
|
|
42
42
|
async *streamChat(messages, tools, options) {
|
|
43
43
|
const stream = this.inner.streamChat(messages, tools, options);
|
|
44
44
|
for await (const chunk of stream) {
|
|
45
|
-
if (chunk.ok) {
|
|
46
|
-
|
|
45
|
+
if (chunk.ok && chunk.value.usage) {
|
|
46
|
+
this.usage.requests++;
|
|
47
|
+
this.usage.prompt_tokens += chunk.value.usage.promptTokens;
|
|
48
|
+
this.usage.completion_tokens += chunk.value.usage.completionTokens;
|
|
49
|
+
this.usage.total_tokens += chunk.value.usage.totalTokens;
|
|
47
50
|
}
|
|
48
51
|
yield chunk;
|
|
49
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-counting-llm.js","sourceRoot":"","sources":["../../../src/smart-agent/llm/token-counting-llm.ts"],"names":[],"mappings":"AAsBA,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAQE;IAPrB,KAAK,GAAe;QAC1B,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,YAA6B,KAAW;QAAX,UAAK,GAAL,KAAK,CAAM;IAAG,CAAC;IAE5C,KAAK,CAAC,IAAI,CACR,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,sFAAsF;YACtF,MAAM,CAAC,GAAI,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,KAAK,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,aAAa;oBACrB,CAAC,CAAC,aAAoC;wBACtC,CAAC,CAAC,YAAmC;wBACtC,CAAC,CAAC;gBACJ,IAAI,CAAC,KAAK,CAAC,iBAAiB;oBACzB,CAAC,CAAC,iBAAwC;wBAC1C,CAAC,CAAC,aAAoC;wBACvC,CAAC,CAAC;gBACJ,IAAI,CAAC,KAAK,CAAC,YAAY;oBACpB,CAAC,CAAC,YAAmC;wBACtC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CACf,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"token-counting-llm.js","sourceRoot":"","sources":["../../../src/smart-agent/llm/token-counting-llm.ts"],"names":[],"mappings":"AAsBA,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAQE;IAPrB,KAAK,GAAe;QAC1B,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,YAA6B,KAAW;QAAX,UAAK,GAAL,KAAK,CAAM;IAAG,CAAC;IAE5C,KAAK,CAAC,IAAI,CACR,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,sFAAsF;YACtF,MAAM,CAAC,GAAI,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,KAAK,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,aAAa;oBACrB,CAAC,CAAC,aAAoC;wBACtC,CAAC,CAAC,YAAmC;wBACtC,CAAC,CAAC;gBACJ,IAAI,CAAC,KAAK,CAAC,iBAAiB;oBACzB,CAAC,CAAC,iBAAwC;wBAC1C,CAAC,CAAC,aAAoC;wBACvC,CAAC,CAAC;gBACJ,IAAI,CAAC,KAAK,CAAC,YAAY;oBACpB,CAAC,CAAC,YAAmC;wBACtC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CACf,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YAC3D,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,mCAAmC;IACnC,UAAU;QACR,IAAI,CAAC,KAAK,GAAG;YACX,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
import type { IRag } from './interfaces/rag.js';
|
|
5
5
|
import { TokenCountingLlm } from './llm/token-counting-llm.js';
|
|
6
6
|
export interface PipelineLlmProviderConfig {
|
|
7
|
-
provider: 'deepseek' | 'openai' | 'anthropic';
|
|
7
|
+
provider: 'deepseek' | 'openai' | 'anthropic' | 'sap-ai-sdk';
|
|
8
8
|
apiKey: string;
|
|
9
9
|
model?: string;
|
|
10
10
|
temperature?: number;
|
|
11
|
+
/** SAP AI Core resource group (used when provider is 'sap-ai-sdk') */
|
|
12
|
+
resourceGroup?: string;
|
|
11
13
|
}
|
|
12
14
|
export interface PipelineRagStoreConfig {
|
|
13
15
|
/** 'ollama' | 'openai' | 'in-memory'. Default: 'ollama' */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/smart-agent/pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/smart-agent/pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAU/D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACzC,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE;QACJ,0CAA0C;QAC1C,IAAI,EAAE,yBAAyB,CAAC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,EAAE,yBAAyB,CAAC;QACnC,uFAAuF;QACvF,UAAU,CAAC,EAAE,yBAAyB,CAAC;KACxC,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,wDAAwD;QACxD,KAAK,CAAC,EAAE,sBAAsB,CAAC;QAC/B,kDAAkD;QAClD,QAAQ,CAAC,EAAE,sBAAsB,CAAC;QAClC,mCAAmC;QACnC,KAAK,CAAC,EAAE,sBAAsB,CAAC;KAChC,CAAC;IACF,4DAA4D;IAC5D,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;CACJ;AAMD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,yBAAyB,EAC9B,WAAW,EAAE,MAAM,GAClB,gBAAgB,CA6DlB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CA8BxE"}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
import { AnthropicAgent } from '../agents/anthropic-agent.js';
|
|
5
5
|
import { DeepSeekAgent } from '../agents/deepseek-agent.js';
|
|
6
6
|
import { OpenAIAgent } from '../agents/openai-agent.js';
|
|
7
|
+
import { SapCoreAIAgent } from '../agents/sap-core-ai-agent.js';
|
|
7
8
|
import { AnthropicProvider } from '../llm-providers/anthropic.js';
|
|
8
9
|
import { DeepSeekProvider } from '../llm-providers/deepseek.js';
|
|
9
10
|
import { OpenAIProvider } from '../llm-providers/openai.js';
|
|
11
|
+
import { SapCoreAIProvider } from '../llm-providers/sap-core-ai.js';
|
|
10
12
|
import { MCPClientWrapper } from '../mcp/client.js';
|
|
11
13
|
import { LlmAdapter } from './adapters/llm-adapter.js';
|
|
12
14
|
import { TokenCountingLlm } from './llm/token-counting-llm.js';
|
|
@@ -59,6 +61,19 @@ export function makeLlmFromProvider(cfg, temperature) {
|
|
|
59
61
|
});
|
|
60
62
|
return new TokenCountingLlm(new LlmAdapter(agent));
|
|
61
63
|
}
|
|
64
|
+
case 'sap-ai-sdk': {
|
|
65
|
+
const provider = new SapCoreAIProvider({
|
|
66
|
+
apiKey: cfg.apiKey || 'sap-ai-sdk-managed',
|
|
67
|
+
model: cfg.model,
|
|
68
|
+
temperature,
|
|
69
|
+
resourceGroup: cfg.resourceGroup,
|
|
70
|
+
});
|
|
71
|
+
const agent = new SapCoreAIAgent({
|
|
72
|
+
llmProvider: provider,
|
|
73
|
+
mcpClient: dummyMcp,
|
|
74
|
+
});
|
|
75
|
+
return new TokenCountingLlm(new LlmAdapter(agent));
|
|
76
|
+
}
|
|
62
77
|
default: {
|
|
63
78
|
const _exhaustive = cfg.provider;
|
|
64
79
|
throw new Error(`Unknown LLM provider: ${_exhaustive}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/smart-agent/pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/smart-agent/pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0DhD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CACjC,GAA8B,EAC9B,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;QACpC,SAAS,EAAE,UAAU;QACrB,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;KACjC,CAAC,CAAC;IAEH,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;gBACpC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;gBAC9B,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;gBAClC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;gBAC5B,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;gBACrC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC;gBAC/B,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;gBACrC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,oBAAoB;gBAC1C,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW;gBACX,aAAa,EAAE,GAAG,CAAC,aAAa;aACjC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC;gBAC/B,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,GAAG,CAAC,QAAQ,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAA2B;IAChE,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;YAClC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,GAAG;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;YAC7B,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;QAClC,SAAS,EAAE,GAAG,CAAC,GAAG;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC;IACH,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;QAC7B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;KACjC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-abap-adt/llm-agent",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Core components for building Smart LLM agents, plus a default MCP-orchestrated OpenAI-compatible server implementation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
57
|
+
"@sap-ai-sdk/orchestration": "^2.7.0",
|
|
57
58
|
"axios": "^1.13.5",
|
|
58
59
|
"dotenv": "^17.3.1",
|
|
59
60
|
"yaml": "^2.8.2"
|
|
@@ -69,7 +70,6 @@
|
|
|
69
70
|
},
|
|
70
71
|
"license": "MIT",
|
|
71
72
|
"author": "Oleksii Kyslytsia <oleksij.kyslytsja@gmail.com>",
|
|
72
|
-
"private": false,
|
|
73
73
|
"publishConfig": {
|
|
74
74
|
"access": "public"
|
|
75
75
|
},
|