@llm4ts/core 0.1.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/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/AgentSession.d.ts +66 -0
- package/dist/AgentSession.d.ts.map +1 -0
- package/dist/AgentSession.js +53 -0
- package/dist/AgentSession.js.map +1 -0
- package/dist/Capability.d.ts +101 -0
- package/dist/Capability.d.ts.map +1 -0
- package/dist/Capability.js +210 -0
- package/dist/Capability.js.map +1 -0
- package/dist/Connector.d.ts +69 -0
- package/dist/Connector.d.ts.map +1 -0
- package/dist/Connector.js +86 -0
- package/dist/Connector.js.map +1 -0
- package/dist/ConnectorConfig.d.ts +70 -0
- package/dist/ConnectorConfig.d.ts.map +1 -0
- package/dist/ConnectorConfig.js +110 -0
- package/dist/ConnectorConfig.js.map +1 -0
- package/dist/ConnectorRegistry.d.ts +28 -0
- package/dist/ConnectorRegistry.d.ts.map +1 -0
- package/dist/ConnectorRegistry.js +87 -0
- package/dist/ConnectorRegistry.js.map +1 -0
- package/dist/ContextManagement.d.ts +78 -0
- package/dist/ContextManagement.d.ts.map +1 -0
- package/dist/ContextManagement.js +221 -0
- package/dist/ContextManagement.js.map +1 -0
- package/dist/Conversation.d.ts +18 -0
- package/dist/Conversation.d.ts.map +1 -0
- package/dist/Conversation.js +17 -0
- package/dist/Conversation.js.map +1 -0
- package/dist/Errors.d.ts +64 -0
- package/dist/Errors.d.ts.map +1 -0
- package/dist/Errors.js +76 -0
- package/dist/Errors.js.map +1 -0
- package/dist/HttpClient.d.ts +43 -0
- package/dist/HttpClient.d.ts.map +1 -0
- package/dist/HttpClient.js +99 -0
- package/dist/HttpClient.js.map +1 -0
- package/dist/LlmService.d.ts +24 -0
- package/dist/LlmService.d.ts.map +1 -0
- package/dist/LlmService.js +4 -0
- package/dist/LlmService.js.map +1 -0
- package/dist/Models.d.ts +138 -0
- package/dist/Models.d.ts.map +1 -0
- package/dist/Models.js +209 -0
- package/dist/Models.js.map +1 -0
- package/dist/ProcessExecutor.d.ts +57 -0
- package/dist/ProcessExecutor.d.ts.map +1 -0
- package/dist/ProcessExecutor.js +71 -0
- package/dist/ProcessExecutor.js.map +1 -0
- package/dist/RateLimiter.d.ts +44 -0
- package/dist/RateLimiter.d.ts.map +1 -0
- package/dist/RateLimiter.js +155 -0
- package/dist/RateLimiter.js.map +1 -0
- package/dist/Streaming.d.ts +17 -0
- package/dist/Streaming.d.ts.map +1 -0
- package/dist/Streaming.js +65 -0
- package/dist/Streaming.js.map +1 -0
- package/dist/StructuredOutput.d.ts +10 -0
- package/dist/StructuredOutput.d.ts.map +1 -0
- package/dist/StructuredOutput.js +97 -0
- package/dist/StructuredOutput.js.map +1 -0
- package/dist/TemporaryFiles.d.ts +20 -0
- package/dist/TemporaryFiles.d.ts.map +1 -0
- package/dist/TemporaryFiles.js +18 -0
- package/dist/TemporaryFiles.js.map +1 -0
- package/dist/UsageLimits.d.ts +5 -0
- package/dist/UsageLimits.d.ts.map +1 -0
- package/dist/UsageLimits.js +187 -0
- package/dist/UsageLimits.js.map +1 -0
- package/dist/eval/Checks.d.ts +6 -0
- package/dist/eval/Checks.d.ts.map +1 -0
- package/dist/eval/Checks.js +39 -0
- package/dist/eval/Checks.js.map +1 -0
- package/dist/eval/Eval.d.ts +57 -0
- package/dist/eval/Eval.d.ts.map +1 -0
- package/dist/eval/Eval.js +91 -0
- package/dist/eval/Eval.js.map +1 -0
- package/dist/eval/EvalSuite.d.ts +21 -0
- package/dist/eval/EvalSuite.d.ts.map +1 -0
- package/dist/eval/EvalSuite.js +30 -0
- package/dist/eval/EvalSuite.js.map +1 -0
- package/dist/eval/Evaluator.d.ts +10 -0
- package/dist/eval/Evaluator.d.ts.map +1 -0
- package/dist/eval/Evaluator.js +14 -0
- package/dist/eval/Evaluator.js.map +1 -0
- package/dist/eval/Judge.d.ts +15 -0
- package/dist/eval/Judge.d.ts.map +1 -0
- package/dist/eval/Judge.js +73 -0
- package/dist/eval/Judge.js.map +1 -0
- package/dist/observability/MeteredLlmService.d.ts +16 -0
- package/dist/observability/MeteredLlmService.d.ts.map +1 -0
- package/dist/observability/MeteredLlmService.js +66 -0
- package/dist/observability/MeteredLlmService.js.map +1 -0
- package/dist/observability/Metrics.d.ts +71 -0
- package/dist/observability/Metrics.d.ts.map +1 -0
- package/dist/observability/Metrics.js +147 -0
- package/dist/observability/Metrics.js.map +1 -0
- package/dist/observability/Redaction.d.ts +8 -0
- package/dist/observability/Redaction.d.ts.map +1 -0
- package/dist/observability/Redaction.js +38 -0
- package/dist/observability/Redaction.js.map +1 -0
- package/dist/observability/StreamRecorder.d.ts +9 -0
- package/dist/observability/StreamRecorder.d.ts.map +1 -0
- package/dist/observability/StreamRecorder.js +10 -0
- package/dist/observability/StreamRecorder.js.map +1 -0
- package/dist/observability/StructuredLogger.d.ts +31 -0
- package/dist/observability/StructuredLogger.d.ts.map +1 -0
- package/dist/observability/StructuredLogger.js +34 -0
- package/dist/observability/StructuredLogger.js.map +1 -0
- package/dist/observability/Tracing.d.ts +38 -0
- package/dist/observability/Tracing.d.ts.map +1 -0
- package/dist/observability/Tracing.js +75 -0
- package/dist/observability/Tracing.js.map +1 -0
- package/dist/providers/AnthropicModels.d.ts +95 -0
- package/dist/providers/AnthropicModels.d.ts.map +1 -0
- package/dist/providers/AnthropicModels.js +83 -0
- package/dist/providers/AnthropicModels.js.map +1 -0
- package/dist/providers/AnthropicProvider.d.ts +13 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/providers/AnthropicProvider.js +177 -0
- package/dist/providers/AnthropicProvider.js.map +1 -0
- package/dist/providers/AntigravityConnector.d.ts +7 -0
- package/dist/providers/AntigravityConnector.d.ts.map +1 -0
- package/dist/providers/AntigravityConnector.js +52 -0
- package/dist/providers/AntigravityConnector.js.map +1 -0
- package/dist/providers/ClaudeAgentSession.d.ts +11 -0
- package/dist/providers/ClaudeAgentSession.d.ts.map +1 -0
- package/dist/providers/ClaudeAgentSession.js +158 -0
- package/dist/providers/ClaudeAgentSession.js.map +1 -0
- package/dist/providers/ClaudeCliConnector.d.ts +9 -0
- package/dist/providers/ClaudeCliConnector.d.ts.map +1 -0
- package/dist/providers/ClaudeCliConnector.js +123 -0
- package/dist/providers/ClaudeCliConnector.js.map +1 -0
- package/dist/providers/CliSupport.d.ts +21 -0
- package/dist/providers/CliSupport.d.ts.map +1 -0
- package/dist/providers/CliSupport.js +62 -0
- package/dist/providers/CliSupport.js.map +1 -0
- package/dist/providers/CodexConnector.d.ts +12 -0
- package/dist/providers/CodexConnector.d.ts.map +1 -0
- package/dist/providers/CodexConnector.js +175 -0
- package/dist/providers/CodexConnector.js.map +1 -0
- package/dist/providers/ConnectorFactories.d.ts +15 -0
- package/dist/providers/ConnectorFactories.d.ts.map +1 -0
- package/dist/providers/ConnectorFactories.js +74 -0
- package/dist/providers/ConnectorFactories.js.map +1 -0
- package/dist/providers/CopilotConnector.d.ts +6 -0
- package/dist/providers/CopilotConnector.d.ts.map +1 -0
- package/dist/providers/CopilotConnector.js +35 -0
- package/dist/providers/CopilotConnector.js.map +1 -0
- package/dist/providers/CursorConnector.d.ts +8 -0
- package/dist/providers/CursorConnector.d.ts.map +1 -0
- package/dist/providers/CursorConnector.js +82 -0
- package/dist/providers/CursorConnector.js.map +1 -0
- package/dist/providers/GeminiApiProvider.d.ts +9 -0
- package/dist/providers/GeminiApiProvider.d.ts.map +1 -0
- package/dist/providers/GeminiApiProvider.js +181 -0
- package/dist/providers/GeminiApiProvider.js.map +1 -0
- package/dist/providers/GeminiCliProvider.d.ts +106 -0
- package/dist/providers/GeminiCliProvider.d.ts.map +1 -0
- package/dist/providers/GeminiCliProvider.js +596 -0
- package/dist/providers/GeminiCliProvider.js.map +1 -0
- package/dist/providers/GeminiModels.d.ts +92 -0
- package/dist/providers/GeminiModels.d.ts.map +1 -0
- package/dist/providers/GeminiModels.js +80 -0
- package/dist/providers/GeminiModels.js.map +1 -0
- package/dist/providers/GrokCliConnector.d.ts +8 -0
- package/dist/providers/GrokCliConnector.d.ts.map +1 -0
- package/dist/providers/GrokCliConnector.js +82 -0
- package/dist/providers/GrokCliConnector.js.map +1 -0
- package/dist/providers/LmStudioModels.d.ts +114 -0
- package/dist/providers/LmStudioModels.d.ts.map +1 -0
- package/dist/providers/LmStudioModels.js +102 -0
- package/dist/providers/LmStudioModels.js.map +1 -0
- package/dist/providers/LmStudioProvider.d.ts +13 -0
- package/dist/providers/LmStudioProvider.d.ts.map +1 -0
- package/dist/providers/LmStudioProvider.js +158 -0
- package/dist/providers/LmStudioProvider.js.map +1 -0
- package/dist/providers/MockProvider.d.ts +6 -0
- package/dist/providers/MockProvider.d.ts.map +1 -0
- package/dist/providers/MockProvider.js +271 -0
- package/dist/providers/MockProvider.js.map +1 -0
- package/dist/providers/OllamaModels.d.ts +68 -0
- package/dist/providers/OllamaModels.d.ts.map +1 -0
- package/dist/providers/OllamaModels.js +59 -0
- package/dist/providers/OllamaModels.js.map +1 -0
- package/dist/providers/OllamaProvider.d.ts +7 -0
- package/dist/providers/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/OllamaProvider.js +134 -0
- package/dist/providers/OllamaProvider.js.map +1 -0
- package/dist/providers/OpenAIModels.d.ts +139 -0
- package/dist/providers/OpenAIModels.d.ts.map +1 -0
- package/dist/providers/OpenAIModels.js +123 -0
- package/dist/providers/OpenAIModels.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts +9 -0
- package/dist/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/providers/OpenAIProvider.js +185 -0
- package/dist/providers/OpenAIProvider.js.map +1 -0
- package/dist/providers/OpenCodeCliConnector.d.ts +8 -0
- package/dist/providers/OpenCodeCliConnector.d.ts.map +1 -0
- package/dist/providers/OpenCodeCliConnector.js +93 -0
- package/dist/providers/OpenCodeCliConnector.js.map +1 -0
- package/dist/providers/OpenCodeModels.d.ts +61 -0
- package/dist/providers/OpenCodeModels.d.ts.map +1 -0
- package/dist/providers/OpenCodeModels.js +53 -0
- package/dist/providers/OpenCodeModels.js.map +1 -0
- package/dist/providers/OpenCodeProvider.d.ts +10 -0
- package/dist/providers/OpenCodeProvider.d.ts.map +1 -0
- package/dist/providers/OpenCodeProvider.js +154 -0
- package/dist/providers/OpenCodeProvider.js.map +1 -0
- package/dist/providers/PiConnector.d.ts +8 -0
- package/dist/providers/PiConnector.d.ts.map +1 -0
- package/dist/providers/PiConnector.js +99 -0
- package/dist/providers/PiConnector.js.map +1 -0
- package/dist/tools/Tool.d.ts +83 -0
- package/dist/tools/Tool.d.ts.map +1 -0
- package/dist/tools/Tool.js +278 -0
- package/dist/tools/Tool.js.map +1 -0
- package/dist/tools/ToolCallingExecutor.d.ts +18 -0
- package/dist/tools/ToolCallingExecutor.d.ts.map +1 -0
- package/dist/tools/ToolCallingExecutor.js +64 -0
- package/dist/tools/ToolCallingExecutor.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts +45 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -0
- package/dist/tools/ToolRegistry.js +133 -0
- package/dist/tools/ToolRegistry.js.map +1 -0
- package/package.json +105 -0
- package/src/.gitkeep +1 -0
- package/src/AgentSession.ts +69 -0
- package/src/Capability.ts +240 -0
- package/src/Connector.ts +220 -0
- package/src/ConnectorConfig.ts +146 -0
- package/src/ConnectorRegistry.ts +184 -0
- package/src/ContextManagement.ts +372 -0
- package/src/Conversation.ts +21 -0
- package/src/Errors.ts +87 -0
- package/src/HttpClient.ts +202 -0
- package/src/LlmService.ts +45 -0
- package/src/Models.ts +250 -0
- package/src/ProcessExecutor.ts +157 -0
- package/src/RateLimiter.ts +238 -0
- package/src/Streaming.ts +164 -0
- package/src/StructuredOutput.ts +138 -0
- package/src/TemporaryFiles.ts +51 -0
- package/src/UsageLimits.ts +242 -0
- package/src/eval/Checks.ts +68 -0
- package/src/eval/Eval.ts +112 -0
- package/src/eval/EvalSuite.ts +63 -0
- package/src/eval/Evaluator.ts +31 -0
- package/src/eval/Judge.ts +92 -0
- package/src/observability/MeteredLlmService.ts +156 -0
- package/src/observability/Metrics.ts +195 -0
- package/src/observability/Redaction.ts +55 -0
- package/src/observability/StreamRecorder.ts +32 -0
- package/src/observability/StructuredLogger.ts +62 -0
- package/src/observability/Tracing.ts +141 -0
- package/src/providers/AnthropicModels.ts +96 -0
- package/src/providers/AnthropicProvider.ts +320 -0
- package/src/providers/AntigravityConnector.ts +77 -0
- package/src/providers/ClaudeAgentSession.ts +226 -0
- package/src/providers/ClaudeCliConnector.ts +201 -0
- package/src/providers/CliSupport.ts +100 -0
- package/src/providers/CodexConnector.ts +251 -0
- package/src/providers/ConnectorFactories.ts +142 -0
- package/src/providers/CopilotConnector.ts +47 -0
- package/src/providers/CursorConnector.ts +120 -0
- package/src/providers/GeminiApiProvider.ts +337 -0
- package/src/providers/GeminiCliProvider.ts +793 -0
- package/src/providers/GeminiModels.ts +97 -0
- package/src/providers/GrokCliConnector.ts +117 -0
- package/src/providers/LmStudioModels.ts +117 -0
- package/src/providers/LmStudioProvider.ts +260 -0
- package/src/providers/MockProvider.ts +322 -0
- package/src/providers/OllamaModels.ts +64 -0
- package/src/providers/OllamaProvider.ts +236 -0
- package/src/providers/OpenAIModels.ts +152 -0
- package/src/providers/OpenAIProvider.ts +331 -0
- package/src/providers/OpenCodeCliConnector.ts +135 -0
- package/src/providers/OpenCodeModels.ts +60 -0
- package/src/providers/OpenCodeProvider.ts +278 -0
- package/src/providers/PiConnector.ts +142 -0
- package/src/tools/Tool.ts +379 -0
- package/src/tools/ToolCallingExecutor.ts +106 -0
- package/src/tools/ToolRegistry.ts +224 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import * as Stream from "effect/Stream";
|
|
4
|
+
import { makeApiConnector } from "../Connector.js";
|
|
5
|
+
import { ConfigError, InvalidRequestError, ParseError } from "../Errors.js";
|
|
6
|
+
import { ConnectorIds, LlmChunk, TokenUsage } from "../Models.js";
|
|
7
|
+
import { parseFromText } from "../StructuredOutput.js";
|
|
8
|
+
import { OllamaChatRequest, OllamaChatResponse, OllamaGenerateRequest, OllamaGenerateResponse, OllamaMessage, OllamaOptions } from "./OllamaModels.js";
|
|
9
|
+
const noHeaders = Object.freeze({});
|
|
10
|
+
const baseUrlEffect = (config) => config.baseUrl === undefined
|
|
11
|
+
? Effect.fail(ConfigError.make({
|
|
12
|
+
message: "Missing baseUrl for Ollama provider"
|
|
13
|
+
}))
|
|
14
|
+
: Effect.succeed(config.baseUrl.replace(/\/+$/, ""));
|
|
15
|
+
const options = (config) => OllamaOptions.make({
|
|
16
|
+
...(config.temperature === undefined ? {} : { temperature: config.temperature }),
|
|
17
|
+
...(config.maxTokens === undefined ? {} : { num_predict: config.maxTokens })
|
|
18
|
+
});
|
|
19
|
+
export const ollamaHistory = (messages) => messages.map((message) => OllamaMessage.make({
|
|
20
|
+
role: message.role === "System" ? "system" : message.role === "Assistant" ? "assistant" : "user",
|
|
21
|
+
content: message.content
|
|
22
|
+
}));
|
|
23
|
+
const generateUsage = (response) => response.prompt_eval_count === undefined || response.eval_count === undefined
|
|
24
|
+
? undefined
|
|
25
|
+
: TokenUsage.make({
|
|
26
|
+
prompt: response.prompt_eval_count,
|
|
27
|
+
completion: response.eval_count,
|
|
28
|
+
total: response.prompt_eval_count + response.eval_count
|
|
29
|
+
});
|
|
30
|
+
const chatUsage = (response) => response.prompt_eval_count === undefined || response.eval_count === undefined
|
|
31
|
+
? undefined
|
|
32
|
+
: TokenUsage.make({
|
|
33
|
+
prompt: response.prompt_eval_count,
|
|
34
|
+
completion: response.eval_count,
|
|
35
|
+
total: response.prompt_eval_count + response.eval_count
|
|
36
|
+
});
|
|
37
|
+
const decodeGenerate = (raw, stream) => Schema.decodeUnknownEffect(Schema.fromJsonString(OllamaGenerateResponse))(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
38
|
+
message: `${stream ? "Failed to parse Ollama stream chunk" : "Failed to decode Ollama response"}: ` +
|
|
39
|
+
String(error),
|
|
40
|
+
raw
|
|
41
|
+
})));
|
|
42
|
+
const decodeChat = (raw) => Schema.decodeUnknownEffect(Schema.fromJsonString(OllamaChatResponse))(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
43
|
+
message: `Failed to parse Ollama chat stream chunk: ${String(error)}`,
|
|
44
|
+
raw
|
|
45
|
+
})));
|
|
46
|
+
export const makeOllamaProvider = (config, httpClient) => {
|
|
47
|
+
const generateStream = (prompt, format) => Stream.unwrap(Effect.map(baseUrlEffect(config), (baseUrl) => {
|
|
48
|
+
const request = OllamaGenerateRequest.make({
|
|
49
|
+
model: config.model,
|
|
50
|
+
prompt,
|
|
51
|
+
stream: true,
|
|
52
|
+
options: options(config),
|
|
53
|
+
...(format === undefined ? {} : { format })
|
|
54
|
+
});
|
|
55
|
+
return httpClient
|
|
56
|
+
.postJsonStream(`${baseUrl}/api/generate`, JSON.stringify(request), noHeaders, config.timeout)
|
|
57
|
+
.pipe(Stream.filter((line) => line.trim().length > 0), Stream.mapEffect((line) => decodeGenerate(line, true)), Stream.flatMap((response) => {
|
|
58
|
+
const usage = response.done ? generateUsage(response) : undefined;
|
|
59
|
+
return response.response.length > 0 || response.done
|
|
60
|
+
? Stream.succeed(LlmChunk.make({
|
|
61
|
+
delta: response.response,
|
|
62
|
+
metadata: {
|
|
63
|
+
provider: "ollama",
|
|
64
|
+
model: response.model
|
|
65
|
+
},
|
|
66
|
+
...(response.done ? { finishReason: "stop" } : {}),
|
|
67
|
+
...(usage === undefined ? {} : { usage })
|
|
68
|
+
}))
|
|
69
|
+
: Stream.empty;
|
|
70
|
+
}));
|
|
71
|
+
}));
|
|
72
|
+
const chatStream = (messages) => Stream.unwrap(Effect.map(baseUrlEffect(config), (baseUrl) => {
|
|
73
|
+
const request = OllamaChatRequest.make({
|
|
74
|
+
model: config.model,
|
|
75
|
+
messages,
|
|
76
|
+
stream: true,
|
|
77
|
+
options: options(config)
|
|
78
|
+
});
|
|
79
|
+
return httpClient
|
|
80
|
+
.postJsonStream(`${baseUrl}/api/chat`, JSON.stringify(request), noHeaders, config.timeout)
|
|
81
|
+
.pipe(Stream.filter((line) => line.trim().length > 0), Stream.mapEffect(decodeChat), Stream.flatMap((response) => {
|
|
82
|
+
const usage = response.done ? chatUsage(response) : undefined;
|
|
83
|
+
return response.message.content.length > 0 || response.done
|
|
84
|
+
? Stream.succeed(LlmChunk.make({
|
|
85
|
+
delta: response.message.content,
|
|
86
|
+
metadata: {
|
|
87
|
+
provider: "ollama",
|
|
88
|
+
model: response.model
|
|
89
|
+
},
|
|
90
|
+
...(response.done ? { finishReason: "stop" } : {}),
|
|
91
|
+
...(usage === undefined ? {} : { usage })
|
|
92
|
+
}))
|
|
93
|
+
: Stream.empty;
|
|
94
|
+
}));
|
|
95
|
+
}));
|
|
96
|
+
const generate = (prompt, format) => Effect.gen(function* () {
|
|
97
|
+
const baseUrl = yield* baseUrlEffect(config);
|
|
98
|
+
const request = OllamaGenerateRequest.make({
|
|
99
|
+
model: config.model,
|
|
100
|
+
prompt,
|
|
101
|
+
stream: false,
|
|
102
|
+
options: options(config),
|
|
103
|
+
...(format === undefined ? {} : { format })
|
|
104
|
+
});
|
|
105
|
+
const raw = yield* httpClient.postJson(`${baseUrl}/api/generate`, JSON.stringify(request), noHeaders, config.timeout);
|
|
106
|
+
const response = yield* decodeGenerate(raw, false);
|
|
107
|
+
return [response, raw];
|
|
108
|
+
});
|
|
109
|
+
const executeStructuredWithUsage = (prompt, schema, jsonSchema) => Effect.gen(function* () {
|
|
110
|
+
const [response] = yield* generate(`${prompt}\n\nPlease respond with valid JSON matching the provided schema.`, "json");
|
|
111
|
+
const value = yield* parseFromText(response.response, schema, jsonSchema);
|
|
112
|
+
const result = [value, undefined, undefined];
|
|
113
|
+
return result;
|
|
114
|
+
});
|
|
115
|
+
const isAvailable = config.baseUrl === undefined
|
|
116
|
+
? Effect.succeed(false)
|
|
117
|
+
: httpClient
|
|
118
|
+
.get(`${config.baseUrl.replace(/\/+$/, "")}/api/tags`, noHeaders, config.timeout)
|
|
119
|
+
.pipe(Effect.match({
|
|
120
|
+
onFailure: () => false,
|
|
121
|
+
onSuccess: () => true
|
|
122
|
+
}));
|
|
123
|
+
return makeApiConnector({
|
|
124
|
+
id: ConnectorIds.Ollama,
|
|
125
|
+
executeStream: (prompt) => generateStream(prompt),
|
|
126
|
+
executeStreamWithHistory: (messages) => chatStream(ollamaHistory(messages)),
|
|
127
|
+
executeWithTools: () => Effect.fail(InvalidRequestError.make({
|
|
128
|
+
message: "Ollama provider does not support tool calling"
|
|
129
|
+
})),
|
|
130
|
+
executeStructuredWithUsage,
|
|
131
|
+
isAvailable
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=OllamaProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaProvider.js","sourceRoot":"","sources":["../../src/providers/OllamaProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
declare const OpenAIJsonSchemaSpec_base: Schema.Class<OpenAIJsonSchemaSpec, Schema.Struct<{
|
|
3
|
+
readonly name: Schema.String;
|
|
4
|
+
readonly schema: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
|
|
5
|
+
}>, {}>;
|
|
6
|
+
export declare class OpenAIJsonSchemaSpec extends OpenAIJsonSchemaSpec_base {
|
|
7
|
+
}
|
|
8
|
+
declare const OpenAIResponseFormat_base: Schema.Class<OpenAIResponseFormat, Schema.Struct<{
|
|
9
|
+
readonly type: Schema.String;
|
|
10
|
+
readonly json_schema: Schema.optionalKey<typeof OpenAIJsonSchemaSpec>;
|
|
11
|
+
}>, {}>;
|
|
12
|
+
export declare class OpenAIResponseFormat extends OpenAIResponseFormat_base {
|
|
13
|
+
}
|
|
14
|
+
declare const OpenAIChatMessage_base: Schema.Class<OpenAIChatMessage, Schema.Struct<{
|
|
15
|
+
readonly role: Schema.String;
|
|
16
|
+
readonly content: Schema.String;
|
|
17
|
+
}>, {}>;
|
|
18
|
+
export declare class OpenAIChatMessage extends OpenAIChatMessage_base {
|
|
19
|
+
}
|
|
20
|
+
declare const OpenAIChatCompletionRequest_base: Schema.Class<OpenAIChatCompletionRequest, Schema.Struct<{
|
|
21
|
+
readonly model: Schema.String;
|
|
22
|
+
readonly messages: Schema.$Array<typeof OpenAIChatMessage>;
|
|
23
|
+
readonly temperature: Schema.optionalKey<Schema.Number>;
|
|
24
|
+
readonly max_tokens: Schema.optionalKey<Schema.Int>;
|
|
25
|
+
readonly max_completion_tokens: Schema.optionalKey<Schema.Int>;
|
|
26
|
+
readonly stream: Schema.optionalKey<Schema.Boolean>;
|
|
27
|
+
readonly response_format: Schema.optionalKey<typeof OpenAIResponseFormat>;
|
|
28
|
+
}>, {}>;
|
|
29
|
+
export declare class OpenAIChatCompletionRequest extends OpenAIChatCompletionRequest_base {
|
|
30
|
+
}
|
|
31
|
+
declare const OpenAITokenUsage_base: Schema.Class<OpenAITokenUsage, Schema.Struct<{
|
|
32
|
+
readonly prompt_tokens: Schema.optionalKey<Schema.Int>;
|
|
33
|
+
readonly completion_tokens: Schema.optionalKey<Schema.Int>;
|
|
34
|
+
readonly total_tokens: Schema.optionalKey<Schema.Int>;
|
|
35
|
+
}>, {}>;
|
|
36
|
+
export declare class OpenAITokenUsage extends OpenAITokenUsage_base {
|
|
37
|
+
}
|
|
38
|
+
declare const OpenAIChatResponseMessage_base: Schema.Class<OpenAIChatResponseMessage, Schema.Struct<{
|
|
39
|
+
readonly role: Schema.String;
|
|
40
|
+
readonly content: Schema.NullOr<Schema.String>;
|
|
41
|
+
}>, {}>;
|
|
42
|
+
export declare class OpenAIChatResponseMessage extends OpenAIChatResponseMessage_base {
|
|
43
|
+
}
|
|
44
|
+
declare const OpenAIChatChoice_base: Schema.Class<OpenAIChatChoice, Schema.Struct<{
|
|
45
|
+
readonly index: Schema.withConstructorDefault<Schema.Int>;
|
|
46
|
+
readonly message: Schema.optionalKey<typeof OpenAIChatResponseMessage>;
|
|
47
|
+
readonly text: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
48
|
+
readonly finish_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
49
|
+
}>, {}>;
|
|
50
|
+
export declare class OpenAIChatChoice extends OpenAIChatChoice_base {
|
|
51
|
+
}
|
|
52
|
+
declare const OpenAIChatCompletionResponse_base: Schema.Class<OpenAIChatCompletionResponse, Schema.Struct<{
|
|
53
|
+
readonly id: Schema.optionalKey<Schema.String>;
|
|
54
|
+
readonly choices: Schema.$Array<typeof OpenAIChatChoice>;
|
|
55
|
+
readonly usage: Schema.optionalKey<typeof OpenAITokenUsage>;
|
|
56
|
+
readonly model: Schema.optionalKey<Schema.String>;
|
|
57
|
+
}>, {}>;
|
|
58
|
+
export declare class OpenAIChatCompletionResponse extends OpenAIChatCompletionResponse_base {
|
|
59
|
+
}
|
|
60
|
+
declare const OpenAIFunction_base: Schema.Class<OpenAIFunction, Schema.Struct<{
|
|
61
|
+
readonly name: Schema.String;
|
|
62
|
+
readonly description: Schema.String;
|
|
63
|
+
readonly parameters: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
|
|
64
|
+
}>, {}>;
|
|
65
|
+
export declare class OpenAIFunction extends OpenAIFunction_base {
|
|
66
|
+
}
|
|
67
|
+
declare const OpenAITool_base: Schema.Class<OpenAITool, Schema.Struct<{
|
|
68
|
+
readonly type: Schema.withConstructorDefault<Schema.String>;
|
|
69
|
+
readonly function: typeof OpenAIFunction;
|
|
70
|
+
}>, {}>;
|
|
71
|
+
export declare class OpenAITool extends OpenAITool_base {
|
|
72
|
+
}
|
|
73
|
+
declare const OpenAIToolCallFunction_base: Schema.Class<OpenAIToolCallFunction, Schema.Struct<{
|
|
74
|
+
readonly name: Schema.String;
|
|
75
|
+
readonly arguments: Schema.String;
|
|
76
|
+
}>, {}>;
|
|
77
|
+
export declare class OpenAIToolCallFunction extends OpenAIToolCallFunction_base {
|
|
78
|
+
}
|
|
79
|
+
declare const OpenAIToolCall_base: Schema.Class<OpenAIToolCall, Schema.Struct<{
|
|
80
|
+
readonly id: Schema.String;
|
|
81
|
+
readonly type: Schema.String;
|
|
82
|
+
readonly function: typeof OpenAIToolCallFunction;
|
|
83
|
+
}>, {}>;
|
|
84
|
+
export declare class OpenAIToolCall extends OpenAIToolCall_base {
|
|
85
|
+
}
|
|
86
|
+
declare const OpenAIChatMessageWithTools_base: Schema.Class<OpenAIChatMessageWithTools, Schema.Struct<{
|
|
87
|
+
readonly role: Schema.String;
|
|
88
|
+
readonly content: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
89
|
+
readonly tool_calls: Schema.withConstructorDefault<Schema.$Array<typeof OpenAIToolCall>>;
|
|
90
|
+
}>, {}>;
|
|
91
|
+
export declare class OpenAIChatMessageWithTools extends OpenAIChatMessageWithTools_base {
|
|
92
|
+
}
|
|
93
|
+
declare const OpenAIChatChoiceWithTools_base: Schema.Class<OpenAIChatChoiceWithTools, Schema.Struct<{
|
|
94
|
+
readonly index: Schema.withConstructorDefault<Schema.Int>;
|
|
95
|
+
readonly message: Schema.optionalKey<typeof OpenAIChatMessageWithTools>;
|
|
96
|
+
readonly finish_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
97
|
+
}>, {}>;
|
|
98
|
+
export declare class OpenAIChatChoiceWithTools extends OpenAIChatChoiceWithTools_base {
|
|
99
|
+
}
|
|
100
|
+
declare const OpenAIChatCompletionResponseWithTools_base: Schema.Class<OpenAIChatCompletionResponseWithTools, Schema.Struct<{
|
|
101
|
+
readonly id: Schema.optionalKey<Schema.String>;
|
|
102
|
+
readonly choices: Schema.$Array<typeof OpenAIChatChoiceWithTools>;
|
|
103
|
+
readonly usage: Schema.optionalKey<typeof OpenAITokenUsage>;
|
|
104
|
+
readonly model: Schema.optionalKey<Schema.String>;
|
|
105
|
+
}>, {}>;
|
|
106
|
+
export declare class OpenAIChatCompletionResponseWithTools extends OpenAIChatCompletionResponseWithTools_base {
|
|
107
|
+
}
|
|
108
|
+
declare const OpenAIChatCompletionRequestWithTools_base: Schema.Class<OpenAIChatCompletionRequestWithTools, Schema.Struct<{
|
|
109
|
+
readonly model: Schema.String;
|
|
110
|
+
readonly messages: Schema.$Array<typeof OpenAIChatMessage>;
|
|
111
|
+
readonly tools: Schema.$Array<typeof OpenAITool>;
|
|
112
|
+
readonly temperature: Schema.optionalKey<Schema.Number>;
|
|
113
|
+
readonly max_tokens: Schema.optionalKey<Schema.Int>;
|
|
114
|
+
readonly stream: Schema.optionalKey<Schema.Boolean>;
|
|
115
|
+
}>, {}>;
|
|
116
|
+
export declare class OpenAIChatCompletionRequestWithTools extends OpenAIChatCompletionRequestWithTools_base {
|
|
117
|
+
}
|
|
118
|
+
declare const OpenAIChatChunkDelta_base: Schema.Class<OpenAIChatChunkDelta, Schema.Struct<{
|
|
119
|
+
readonly role: Schema.optionalKey<Schema.String>;
|
|
120
|
+
readonly content: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
121
|
+
}>, {}>;
|
|
122
|
+
export declare class OpenAIChatChunkDelta extends OpenAIChatChunkDelta_base {
|
|
123
|
+
}
|
|
124
|
+
declare const OpenAIChatChunkChoice_base: Schema.Class<OpenAIChatChunkChoice, Schema.Struct<{
|
|
125
|
+
readonly index: Schema.withConstructorDefault<Schema.Int>;
|
|
126
|
+
readonly delta: Schema.optionalKey<typeof OpenAIChatChunkDelta>;
|
|
127
|
+
readonly finish_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
128
|
+
}>, {}>;
|
|
129
|
+
export declare class OpenAIChatChunkChoice extends OpenAIChatChunkChoice_base {
|
|
130
|
+
}
|
|
131
|
+
declare const OpenAIChatChunk_base: Schema.Class<OpenAIChatChunk, Schema.Struct<{
|
|
132
|
+
readonly id: Schema.optionalKey<Schema.String>;
|
|
133
|
+
readonly model: Schema.optionalKey<Schema.String>;
|
|
134
|
+
readonly choices: Schema.withConstructorDefault<Schema.$Array<typeof OpenAIChatChunkChoice>>;
|
|
135
|
+
}>, {}>;
|
|
136
|
+
export declare class OpenAIChatChunk extends OpenAIChatChunk_base {
|
|
137
|
+
}
|
|
138
|
+
export {};
|
|
139
|
+
//# sourceMappingURL=OpenAIModels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIModels.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAIModels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;AAGvC,qBAAa,oBAAqB,SAAQ,yBAKxC;CAAG;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAKxC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;;;;;;AAEL,qBAAa,2BAA4B,SAAQ,gCAU/C;CAAG;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAIpC;CAAG;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAK7C;CAAG;;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;;;AAEL,qBAAa,4BAA6B,SAAQ,iCAOhD;CAAG;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;;;;;AAEL,qBAAa,UAAW,SAAQ,eAG9B;CAAG;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAK1C;CAAG;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;;;;;;AAIL,qBAAa,0BAA2B,SAAQ,+BAQ9C;CAAG;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAM7C;CAAG;;;;;;;AAEL,qBAAa,qCAAsC,SAAQ,0CAOzD;CAAG;;;;;;;;;AAEL,qBAAa,oCAAqC,SAAQ,yCASxD;CAAG;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAKxC;CAAG;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAMzC;CAAG;;;;;;AAIL,qBAAa,eAAgB,SAAQ,oBAMnC;CAAG"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import { JsonSchema } from "../Models.js";
|
|
4
|
+
export class OpenAIJsonSchemaSpec extends Schema.Class("OpenAIJsonSchemaSpec")({
|
|
5
|
+
name: Schema.String,
|
|
6
|
+
schema: JsonSchema
|
|
7
|
+
}) {
|
|
8
|
+
}
|
|
9
|
+
export class OpenAIResponseFormat extends Schema.Class("OpenAIResponseFormat")({
|
|
10
|
+
type: Schema.String,
|
|
11
|
+
json_schema: Schema.optionalKey(OpenAIJsonSchemaSpec)
|
|
12
|
+
}) {
|
|
13
|
+
}
|
|
14
|
+
export class OpenAIChatMessage extends Schema.Class("OpenAIChatMessage")({
|
|
15
|
+
role: Schema.String,
|
|
16
|
+
content: Schema.String
|
|
17
|
+
}) {
|
|
18
|
+
}
|
|
19
|
+
export class OpenAIChatCompletionRequest extends Schema.Class("OpenAIChatCompletionRequest")({
|
|
20
|
+
model: Schema.String,
|
|
21
|
+
messages: Schema.Array(OpenAIChatMessage),
|
|
22
|
+
temperature: Schema.optionalKey(Schema.Number),
|
|
23
|
+
max_tokens: Schema.optionalKey(Schema.Int),
|
|
24
|
+
max_completion_tokens: Schema.optionalKey(Schema.Int),
|
|
25
|
+
stream: Schema.optionalKey(Schema.Boolean),
|
|
26
|
+
response_format: Schema.optionalKey(OpenAIResponseFormat)
|
|
27
|
+
}) {
|
|
28
|
+
}
|
|
29
|
+
export class OpenAITokenUsage extends Schema.Class("OpenAITokenUsage")({
|
|
30
|
+
prompt_tokens: Schema.optionalKey(Schema.Int),
|
|
31
|
+
completion_tokens: Schema.optionalKey(Schema.Int),
|
|
32
|
+
total_tokens: Schema.optionalKey(Schema.Int)
|
|
33
|
+
}) {
|
|
34
|
+
}
|
|
35
|
+
export class OpenAIChatResponseMessage extends Schema.Class("OpenAIChatResponseMessage")({
|
|
36
|
+
role: Schema.String,
|
|
37
|
+
content: Schema.NullOr(Schema.String)
|
|
38
|
+
}) {
|
|
39
|
+
}
|
|
40
|
+
export class OpenAIChatChoice extends Schema.Class("OpenAIChatChoice")({
|
|
41
|
+
index: Schema.Int.pipe(Schema.withConstructorDefault(Effect.succeed(0))),
|
|
42
|
+
message: Schema.optionalKey(OpenAIChatResponseMessage),
|
|
43
|
+
text: Schema.optionalKey(Schema.NullOr(Schema.String)),
|
|
44
|
+
finish_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
|
|
45
|
+
}) {
|
|
46
|
+
}
|
|
47
|
+
export class OpenAIChatCompletionResponse extends Schema.Class("OpenAIChatCompletionResponse")({
|
|
48
|
+
id: Schema.optionalKey(Schema.String),
|
|
49
|
+
choices: Schema.Array(OpenAIChatChoice),
|
|
50
|
+
usage: Schema.optionalKey(OpenAITokenUsage),
|
|
51
|
+
model: Schema.optionalKey(Schema.String)
|
|
52
|
+
}) {
|
|
53
|
+
}
|
|
54
|
+
export class OpenAIFunction extends Schema.Class("OpenAIFunction")({
|
|
55
|
+
name: Schema.String,
|
|
56
|
+
description: Schema.String,
|
|
57
|
+
parameters: JsonSchema
|
|
58
|
+
}) {
|
|
59
|
+
}
|
|
60
|
+
export class OpenAITool extends Schema.Class("OpenAITool")({
|
|
61
|
+
type: Schema.String.pipe(Schema.withConstructorDefault(Effect.succeed("function"))),
|
|
62
|
+
function: OpenAIFunction
|
|
63
|
+
}) {
|
|
64
|
+
}
|
|
65
|
+
export class OpenAIToolCallFunction extends Schema.Class("OpenAIToolCallFunction")({
|
|
66
|
+
name: Schema.String,
|
|
67
|
+
arguments: Schema.String
|
|
68
|
+
}) {
|
|
69
|
+
}
|
|
70
|
+
export class OpenAIToolCall extends Schema.Class("OpenAIToolCall")({
|
|
71
|
+
id: Schema.String,
|
|
72
|
+
type: Schema.String,
|
|
73
|
+
function: OpenAIToolCallFunction
|
|
74
|
+
}) {
|
|
75
|
+
}
|
|
76
|
+
const noToolCalls = Object.freeze([]);
|
|
77
|
+
export class OpenAIChatMessageWithTools extends Schema.Class("OpenAIChatMessageWithTools")({
|
|
78
|
+
role: Schema.String,
|
|
79
|
+
content: Schema.optionalKey(Schema.NullOr(Schema.String)),
|
|
80
|
+
tool_calls: Schema.Array(OpenAIToolCall).pipe(Schema.withConstructorDefault(Effect.succeed(noToolCalls)))
|
|
81
|
+
}) {
|
|
82
|
+
}
|
|
83
|
+
export class OpenAIChatChoiceWithTools extends Schema.Class("OpenAIChatChoiceWithTools")({
|
|
84
|
+
index: Schema.Int.pipe(Schema.withConstructorDefault(Effect.succeed(0))),
|
|
85
|
+
message: Schema.optionalKey(OpenAIChatMessageWithTools),
|
|
86
|
+
finish_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
|
|
87
|
+
}) {
|
|
88
|
+
}
|
|
89
|
+
export class OpenAIChatCompletionResponseWithTools extends Schema.Class("OpenAIChatCompletionResponseWithTools")({
|
|
90
|
+
id: Schema.optionalKey(Schema.String),
|
|
91
|
+
choices: Schema.Array(OpenAIChatChoiceWithTools),
|
|
92
|
+
usage: Schema.optionalKey(OpenAITokenUsage),
|
|
93
|
+
model: Schema.optionalKey(Schema.String)
|
|
94
|
+
}) {
|
|
95
|
+
}
|
|
96
|
+
export class OpenAIChatCompletionRequestWithTools extends Schema.Class("OpenAIChatCompletionRequestWithTools")({
|
|
97
|
+
model: Schema.String,
|
|
98
|
+
messages: Schema.Array(OpenAIChatMessage),
|
|
99
|
+
tools: Schema.Array(OpenAITool),
|
|
100
|
+
temperature: Schema.optionalKey(Schema.Number),
|
|
101
|
+
max_tokens: Schema.optionalKey(Schema.Int),
|
|
102
|
+
stream: Schema.optionalKey(Schema.Boolean)
|
|
103
|
+
}) {
|
|
104
|
+
}
|
|
105
|
+
export class OpenAIChatChunkDelta extends Schema.Class("OpenAIChatChunkDelta")({
|
|
106
|
+
role: Schema.optionalKey(Schema.String),
|
|
107
|
+
content: Schema.optionalKey(Schema.NullOr(Schema.String))
|
|
108
|
+
}) {
|
|
109
|
+
}
|
|
110
|
+
export class OpenAIChatChunkChoice extends Schema.Class("OpenAIChatChunkChoice")({
|
|
111
|
+
index: Schema.Int.pipe(Schema.withConstructorDefault(Effect.succeed(0))),
|
|
112
|
+
delta: Schema.optionalKey(OpenAIChatChunkDelta),
|
|
113
|
+
finish_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
|
|
114
|
+
}) {
|
|
115
|
+
}
|
|
116
|
+
const noChunkChoices = Object.freeze([]);
|
|
117
|
+
export class OpenAIChatChunk extends Schema.Class("OpenAIChatChunk")({
|
|
118
|
+
id: Schema.optionalKey(Schema.String),
|
|
119
|
+
model: Schema.optionalKey(Schema.String),
|
|
120
|
+
choices: Schema.Array(OpenAIChatChunkChoice).pipe(Schema.withConstructorDefault(Effect.succeed(noChunkChoices)))
|
|
121
|
+
}) {
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=OpenAIModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIModels.js","sourceRoot":"","sources":["../../src/providers/OpenAIModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ApiConnectorShape } from "../Connector.ts";
|
|
2
|
+
import type { HttpClientShape } from "../HttpClient.ts";
|
|
3
|
+
import { type LlmConfig, type Message, type ToolDefinition } from "../Models.ts";
|
|
4
|
+
import { OpenAIChatCompletionRequest, OpenAIChatCompletionRequestWithTools, OpenAIChatMessage, OpenAIResponseFormat } from "./OpenAIModels.ts";
|
|
5
|
+
export declare const openAIHistoryMessages: (messages: ReadonlyArray<Message>) => ReadonlyArray<OpenAIChatMessage>;
|
|
6
|
+
export declare const buildOpenAIChatRequest: (config: LlmConfig, messages: ReadonlyArray<OpenAIChatMessage>, stream: boolean, responseFormat?: OpenAIResponseFormat) => OpenAIChatCompletionRequest;
|
|
7
|
+
export declare const buildOpenAIToolRequest: (config: LlmConfig, prompt: string, tools: ReadonlyArray<ToolDefinition>) => OpenAIChatCompletionRequestWithTools;
|
|
8
|
+
export declare const makeOpenAIProvider: (config: LlmConfig, httpClient: HttpClientShape) => ApiConnectorShape;
|
|
9
|
+
//# sourceMappingURL=OpenAIProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAML,KAAK,SAAS,EACd,KAAK,OAAO,EAEZ,KAAK,cAAc,EACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAEL,2BAA2B,EAC3B,oCAAoC,EAGpC,iBAAiB,EAGjB,oBAAoB,EAErB,MAAM,mBAAmB,CAAA;AAuB1B,eAAO,MAAM,qBAAqB,GAChC,UAAU,aAAa,CAAC,OAAO,CAAC,KAC/B,aAAa,CAAC,iBAAiB,CAM/B,CAAA;AAEH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,SAAS,EACjB,UAAU,aAAa,CAAC,iBAAiB,CAAC,EAC1C,QAAQ,OAAO,EACf,iBAAiB,oBAAoB,KACpC,2BAQC,CAAA;AAEJ,eAAO,MAAM,sBAAsB,GACjC,QAAQ,SAAS,EACjB,QAAQ,MAAM,EACd,OAAO,aAAa,CAAC,cAAc,CAAC,KACnC,oCAqBC,CAAA;AAyDJ,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EACjB,YAAY,eAAe,KAC1B,iBAsKF,CAAA"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Redacted from "effect/Redacted";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
import * as Stream from "effect/Stream";
|
|
5
|
+
import { makeApiConnector } from "../Connector.js";
|
|
6
|
+
import { AuthenticationError, ConfigError, ParseError } from "../Errors.js";
|
|
7
|
+
import { ConnectorIds, LlmChunk, ToolCall, ToolCallResponse } from "../Models.js";
|
|
8
|
+
import { parseFromText } from "../StructuredOutput.js";
|
|
9
|
+
import { OpenAIChatChunk, OpenAIChatCompletionRequest, OpenAIChatCompletionRequestWithTools, OpenAIChatCompletionResponse, OpenAIChatCompletionResponseWithTools, OpenAIChatMessage, OpenAIFunction, OpenAIJsonSchemaSpec, OpenAIResponseFormat, OpenAITool } from "./OpenAIModels.js";
|
|
10
|
+
const emptyHeaders = Object.freeze({});
|
|
11
|
+
const normalizedBaseUrl = (baseUrl) => baseUrl.replace(/\/+$/, "");
|
|
12
|
+
const roleName = (role) => {
|
|
13
|
+
switch (role) {
|
|
14
|
+
case "System":
|
|
15
|
+
return "system";
|
|
16
|
+
case "User":
|
|
17
|
+
return "user";
|
|
18
|
+
case "Assistant":
|
|
19
|
+
return "assistant";
|
|
20
|
+
case "Tool":
|
|
21
|
+
return "tool";
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const openAIHistoryMessages = (messages) => messages.map((message) => OpenAIChatMessage.make({
|
|
25
|
+
role: roleName(message.role),
|
|
26
|
+
content: message.content
|
|
27
|
+
}));
|
|
28
|
+
export const buildOpenAIChatRequest = (config, messages, stream, responseFormat) => OpenAIChatCompletionRequest.make({
|
|
29
|
+
model: config.model,
|
|
30
|
+
messages,
|
|
31
|
+
temperature: config.temperature ?? 0.7,
|
|
32
|
+
stream,
|
|
33
|
+
...(config.maxTokens === undefined ? {} : { max_tokens: config.maxTokens }),
|
|
34
|
+
...(responseFormat === undefined ? {} : { response_format: responseFormat })
|
|
35
|
+
});
|
|
36
|
+
export const buildOpenAIToolRequest = (config, prompt, tools) => OpenAIChatCompletionRequestWithTools.make({
|
|
37
|
+
model: config.model,
|
|
38
|
+
messages: [
|
|
39
|
+
OpenAIChatMessage.make({
|
|
40
|
+
role: "user",
|
|
41
|
+
content: prompt
|
|
42
|
+
})
|
|
43
|
+
],
|
|
44
|
+
tools: tools.map((tool) => OpenAITool.make({
|
|
45
|
+
function: OpenAIFunction.make({
|
|
46
|
+
name: tool.name,
|
|
47
|
+
description: tool.description,
|
|
48
|
+
parameters: tool.parameters
|
|
49
|
+
})
|
|
50
|
+
})),
|
|
51
|
+
temperature: config.temperature ?? 0.7,
|
|
52
|
+
stream: false,
|
|
53
|
+
...(config.maxTokens === undefined ? {} : { max_tokens: config.maxTokens })
|
|
54
|
+
});
|
|
55
|
+
const decodeCompletionResponse = (raw) => schemaDecode.completion(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
56
|
+
message: `Failed to decode OpenAI response: ${String(error)}`,
|
|
57
|
+
raw
|
|
58
|
+
})));
|
|
59
|
+
const decodeToolResponse = (raw) => schemaDecode.tools(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
60
|
+
message: `Failed to decode OpenAI tool response: ${String(error)}`,
|
|
61
|
+
raw
|
|
62
|
+
})));
|
|
63
|
+
const decodeStreamChunk = (raw) => schemaDecode.chunk(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
64
|
+
message: `Failed to parse OpenAI stream chunk: ${String(error)}`,
|
|
65
|
+
raw
|
|
66
|
+
})));
|
|
67
|
+
const schemaDecode = {
|
|
68
|
+
completion: Schema.decodeUnknownEffect(Schema.fromJsonString(OpenAIChatCompletionResponse)),
|
|
69
|
+
tools: Schema.decodeUnknownEffect(Schema.fromJsonString(OpenAIChatCompletionResponseWithTools)),
|
|
70
|
+
chunk: Schema.decodeUnknownEffect(Schema.fromJsonString(OpenAIChatChunk))
|
|
71
|
+
};
|
|
72
|
+
const extractContent = (response, raw) => {
|
|
73
|
+
const content = response.choices[0]?.message?.content?.trim();
|
|
74
|
+
return content === undefined || content === null || content.length === 0
|
|
75
|
+
? Effect.fail(ParseError.make({
|
|
76
|
+
message: "OpenAI response missing choices[0].message.content",
|
|
77
|
+
raw
|
|
78
|
+
}))
|
|
79
|
+
: Effect.succeed(content);
|
|
80
|
+
};
|
|
81
|
+
export const makeOpenAIProvider = (config, httpClient) => {
|
|
82
|
+
const authHeaders = () => config.apiKey === undefined
|
|
83
|
+
? emptyHeaders
|
|
84
|
+
: { Authorization: `Bearer ${Redacted.value(config.apiKey)}` };
|
|
85
|
+
const requiredConfig = config.baseUrl === undefined
|
|
86
|
+
? Effect.fail(ConfigError.make({
|
|
87
|
+
message: "Missing baseUrl for OpenAI provider"
|
|
88
|
+
}))
|
|
89
|
+
: config.apiKey === undefined
|
|
90
|
+
? Effect.fail(AuthenticationError.make({
|
|
91
|
+
message: "Missing API key for OpenAI provider (set OPENAI_API_KEY or pass apiKey in the connector config)"
|
|
92
|
+
}))
|
|
93
|
+
: Effect.succeed({
|
|
94
|
+
baseUrl: normalizedBaseUrl(config.baseUrl)
|
|
95
|
+
});
|
|
96
|
+
const executeRequest = (messages, responseFormat) => Effect.gen(function* () {
|
|
97
|
+
const { baseUrl } = yield* requiredConfig;
|
|
98
|
+
const request = buildOpenAIChatRequest(config, messages, false, responseFormat);
|
|
99
|
+
const raw = yield* httpClient.postJson(`${baseUrl}/chat/completions`, JSON.stringify(request), authHeaders(), config.timeout);
|
|
100
|
+
const response = yield* decodeCompletionResponse(raw);
|
|
101
|
+
return [response, raw];
|
|
102
|
+
});
|
|
103
|
+
const executeStreamRequest = (messages) => Stream.unwrap(Effect.map(requiredConfig, ({ baseUrl }) => {
|
|
104
|
+
const request = buildOpenAIChatRequest(config, messages, true);
|
|
105
|
+
return httpClient
|
|
106
|
+
.postJsonStreamSSE(`${baseUrl}/chat/completions`, JSON.stringify(request), authHeaders(), config.timeout)
|
|
107
|
+
.pipe(Stream.mapEffect(decodeStreamChunk), Stream.flatMap((chunk) => {
|
|
108
|
+
const choice = chunk.choices[0];
|
|
109
|
+
const delta = choice?.delta?.content ?? "";
|
|
110
|
+
const finishReason = choice?.finish_reason ?? undefined;
|
|
111
|
+
return delta.length > 0 || finishReason !== undefined
|
|
112
|
+
? Stream.succeed(LlmChunk.make({
|
|
113
|
+
delta,
|
|
114
|
+
metadata: {
|
|
115
|
+
provider: "openai",
|
|
116
|
+
model: config.model
|
|
117
|
+
},
|
|
118
|
+
...(finishReason === undefined ? {} : { finishReason })
|
|
119
|
+
}))
|
|
120
|
+
: Stream.empty;
|
|
121
|
+
}));
|
|
122
|
+
}));
|
|
123
|
+
const executeStructuredWithUsage = (prompt, schema, jsonSchema) => Effect.gen(function* () {
|
|
124
|
+
const responseFormat = OpenAIResponseFormat.make({
|
|
125
|
+
type: "json_schema",
|
|
126
|
+
json_schema: OpenAIJsonSchemaSpec.make({
|
|
127
|
+
name: "response",
|
|
128
|
+
schema: jsonSchema
|
|
129
|
+
})
|
|
130
|
+
});
|
|
131
|
+
const [response, raw] = yield* executeRequest([
|
|
132
|
+
OpenAIChatMessage.make({
|
|
133
|
+
role: "user",
|
|
134
|
+
content: prompt
|
|
135
|
+
})
|
|
136
|
+
], responseFormat);
|
|
137
|
+
const content = yield* extractContent(response, raw);
|
|
138
|
+
const value = yield* parseFromText(content, schema, jsonSchema);
|
|
139
|
+
const result = [value, undefined, undefined];
|
|
140
|
+
return result;
|
|
141
|
+
});
|
|
142
|
+
const executeWithTools = (prompt, tools) => Effect.gen(function* () {
|
|
143
|
+
const { baseUrl } = yield* requiredConfig;
|
|
144
|
+
const request = buildOpenAIToolRequest(config, prompt, tools);
|
|
145
|
+
const raw = yield* httpClient.postJson(`${baseUrl}/chat/completions`, JSON.stringify(request), authHeaders(), config.timeout);
|
|
146
|
+
const response = yield* decodeToolResponse(raw);
|
|
147
|
+
const choice = response.choices[0];
|
|
148
|
+
const toolCalls = choice?.message?.tool_calls.map((toolCall) => ToolCall.make({
|
|
149
|
+
id: toolCall.id,
|
|
150
|
+
name: toolCall.function.name,
|
|
151
|
+
arguments: toolCall.function.arguments
|
|
152
|
+
})) ?? [];
|
|
153
|
+
const content = choice?.message?.content ?? undefined;
|
|
154
|
+
const finishReason = choice?.finish_reason ?? "stop";
|
|
155
|
+
return ToolCallResponse.make({
|
|
156
|
+
toolCalls,
|
|
157
|
+
finishReason,
|
|
158
|
+
...(content === undefined || content === null ? {} : { content })
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
// Parity with llm4zio v4.2.0 OpenAIProvider.isAvailable (`catchAll(_ => ZIO.succeed(true))`):
|
|
162
|
+
// a configured baseUrl counts as available even when the /models probe fails.
|
|
163
|
+
const isAvailable = config.baseUrl === undefined
|
|
164
|
+
? Effect.succeed(false)
|
|
165
|
+
: httpClient
|
|
166
|
+
.get(`${normalizedBaseUrl(config.baseUrl)}/models`, authHeaders(), config.timeout)
|
|
167
|
+
.pipe(Effect.match({
|
|
168
|
+
onFailure: () => true,
|
|
169
|
+
onSuccess: () => true
|
|
170
|
+
}));
|
|
171
|
+
return makeApiConnector({
|
|
172
|
+
id: ConnectorIds.OpenAI,
|
|
173
|
+
executeStream: (prompt) => executeStreamRequest([
|
|
174
|
+
OpenAIChatMessage.make({
|
|
175
|
+
role: "user",
|
|
176
|
+
content: prompt
|
|
177
|
+
})
|
|
178
|
+
]),
|
|
179
|
+
executeStreamWithHistory: (messages) => executeStreamRequest(openAIHistoryMessages(messages)),
|
|
180
|
+
executeWithTools,
|
|
181
|
+
executeStructuredWithUsage,
|
|
182
|
+
isAvailable
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=OpenAIProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"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"}
|