@umituz/react-native-ai-groq-provider 1.0.3 → 1.0.5
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/domain/entities/error.types.d.ts +34 -0
- package/dist/domain/entities/error.types.d.ts.map +1 -0
- package/dist/domain/entities/error.types.js +57 -0
- package/dist/domain/entities/error.types.js.map +1 -0
- package/dist/domain/entities/groq.types.d.ts +222 -0
- package/dist/domain/entities/groq.types.d.ts.map +1 -0
- package/dist/domain/entities/groq.types.js +37 -0
- package/dist/domain/entities/groq.types.js.map +1 -0
- package/dist/domain/entities/index.d.ts +7 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +23 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/entities/models.d.ts +50 -0
- package/dist/domain/entities/models.d.ts.map +1 -0
- package/dist/domain/entities/models.js +178 -0
- package/dist/domain/entities/models.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/services/ChatSession.d.ts +95 -0
- package/dist/infrastructure/services/ChatSession.d.ts.map +1 -0
- package/dist/infrastructure/services/ChatSession.js +177 -0
- package/dist/infrastructure/services/ChatSession.js.map +1 -0
- package/dist/infrastructure/services/GroqClient.d.ts +52 -0
- package/dist/infrastructure/services/GroqClient.d.ts.map +1 -0
- package/dist/infrastructure/services/GroqClient.js +258 -0
- package/dist/infrastructure/services/GroqClient.js.map +1 -0
- package/dist/infrastructure/services/Streaming.d.ts +27 -0
- package/dist/infrastructure/services/Streaming.d.ts.map +1 -0
- package/dist/infrastructure/services/Streaming.js +84 -0
- package/dist/infrastructure/services/Streaming.js.map +1 -0
- package/dist/infrastructure/services/StructuredText.d.ts +20 -0
- package/dist/infrastructure/services/StructuredText.d.ts.map +1 -0
- package/dist/infrastructure/services/StructuredText.js +204 -0
- package/dist/infrastructure/services/StructuredText.js.map +1 -0
- package/dist/infrastructure/services/TextGeneration.d.ts +18 -0
- package/dist/infrastructure/services/TextGeneration.d.ts.map +1 -0
- package/dist/infrastructure/services/TextGeneration.js +127 -0
- package/dist/infrastructure/services/TextGeneration.js.map +1 -0
- package/dist/infrastructure/services/index.d.ts +9 -0
- package/dist/infrastructure/services/index.d.ts.map +1 -0
- package/dist/infrastructure/services/index.js +24 -0
- package/dist/infrastructure/services/index.js.map +1 -0
- package/dist/infrastructure/telemetry/TelemetryHooks.d.ts +48 -0
- package/dist/infrastructure/telemetry/TelemetryHooks.d.ts.map +1 -0
- package/dist/infrastructure/telemetry/TelemetryHooks.js +70 -0
- package/dist/infrastructure/telemetry/TelemetryHooks.js.map +1 -0
- package/dist/infrastructure/telemetry/index.d.ts +5 -0
- package/dist/infrastructure/telemetry/index.d.ts.map +1 -0
- package/dist/infrastructure/telemetry/index.js +10 -0
- package/dist/infrastructure/telemetry/index.js.map +1 -0
- package/dist/infrastructure/utils/async/execute-state.util.d.ts +27 -0
- package/dist/infrastructure/utils/async/execute-state.util.d.ts.map +1 -0
- package/dist/infrastructure/utils/async/execute-state.util.js +50 -0
- package/dist/infrastructure/utils/async/execute-state.util.js.map +1 -0
- package/dist/infrastructure/utils/async/index.d.ts +6 -0
- package/dist/infrastructure/utils/async/index.d.ts.map +1 -0
- package/dist/infrastructure/utils/async/index.js +10 -0
- package/dist/infrastructure/utils/async/index.js.map +1 -0
- package/dist/infrastructure/utils/content-mapper.util.d.ts +34 -0
- package/dist/infrastructure/utils/content-mapper.util.d.ts.map +1 -0
- package/dist/infrastructure/utils/content-mapper.util.js +84 -0
- package/dist/infrastructure/utils/content-mapper.util.js.map +1 -0
- package/dist/infrastructure/utils/error-mapper.util.d.ts +21 -0
- package/dist/infrastructure/utils/error-mapper.util.d.ts.map +1 -0
- package/dist/infrastructure/utils/error-mapper.util.js +73 -0
- package/dist/infrastructure/utils/error-mapper.util.js.map +1 -0
- package/dist/infrastructure/utils/index.d.ts +7 -0
- package/dist/infrastructure/utils/index.d.ts.map +1 -0
- package/dist/infrastructure/utils/index.js +23 -0
- package/dist/infrastructure/utils/index.js.map +1 -0
- package/dist/presentation/hooks/useGroq.d.ts +42 -0
- package/dist/presentation/hooks/useGroq.d.ts.map +1 -0
- package/dist/presentation/hooks/useGroq.js +153 -0
- package/dist/presentation/hooks/useGroq.js.map +1 -0
- package/dist/presentation/hooks/useOperationManager.d.ts +34 -0
- package/dist/presentation/hooks/useOperationManager.d.ts.map +1 -0
- package/dist/presentation/hooks/useOperationManager.js +76 -0
- package/dist/presentation/hooks/useOperationManager.js.map +1 -0
- package/dist/providers/ConfigBuilder.d.ts +86 -0
- package/dist/providers/ConfigBuilder.d.ts.map +1 -0
- package/dist/providers/ConfigBuilder.js +147 -0
- package/dist/providers/ConfigBuilder.js.map +1 -0
- package/dist/providers/ProviderFactory.d.ts +56 -0
- package/dist/providers/ProviderFactory.d.ts.map +1 -0
- package/dist/providers/ProviderFactory.js +75 -0
- package/dist/providers/ProviderFactory.js.map +1 -0
- package/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +15 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +1 -1
- package/src/infrastructure/services/GroqClient.ts +61 -1
- package/src/infrastructure/services/StructuredText.ts +94 -1
- package/src/infrastructure/services/TextGeneration.ts +70 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Groq HTTP Client
|
|
4
|
+
* Handles all HTTP communication with Groq API
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.groqHttpClient = void 0;
|
|
8
|
+
const error_types_1 = require("../../domain/entities/error.types");
|
|
9
|
+
const DEFAULT_BASE_URL = "https://api.groq.com/openai/v1";
|
|
10
|
+
const DEFAULT_TIMEOUT = 60000; // 60 seconds
|
|
11
|
+
const CHAT_COMPLETIONS_ENDPOINT = "/chat/completions";
|
|
12
|
+
class GroqHttpClient {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.config = null;
|
|
15
|
+
this.initialized = false;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Initialize the client with configuration
|
|
19
|
+
*/
|
|
20
|
+
initialize(config) {
|
|
21
|
+
const apiKey = config.apiKey?.trim();
|
|
22
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
23
|
+
console.log("[GroqClient] Initializing:", {
|
|
24
|
+
hasApiKey: !!apiKey,
|
|
25
|
+
keyLength: apiKey?.length,
|
|
26
|
+
keyPrefix: apiKey ? apiKey.substring(0, 10) + "..." : "",
|
|
27
|
+
baseUrl: config.baseUrl || DEFAULT_BASE_URL,
|
|
28
|
+
timeoutMs: config.timeoutMs || DEFAULT_TIMEOUT,
|
|
29
|
+
textModel: config.textModel,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (!apiKey || apiKey.length < 10) {
|
|
33
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.INVALID_API_KEY, "API key is required and must be at least 10 characters");
|
|
34
|
+
}
|
|
35
|
+
this.config = {
|
|
36
|
+
apiKey,
|
|
37
|
+
baseUrl: config.baseUrl || DEFAULT_BASE_URL,
|
|
38
|
+
timeoutMs: config.timeoutMs || DEFAULT_TIMEOUT,
|
|
39
|
+
textModel: config.textModel,
|
|
40
|
+
};
|
|
41
|
+
this.initialized = true;
|
|
42
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
43
|
+
console.log("[GroqClient] Initialization complete:", {
|
|
44
|
+
initialized: this.initialized,
|
|
45
|
+
baseUrl: this.config.baseUrl,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if client is initialized
|
|
51
|
+
*/
|
|
52
|
+
isInitialized() {
|
|
53
|
+
return this.initialized && this.config !== null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get current configuration
|
|
57
|
+
*/
|
|
58
|
+
getConfig() {
|
|
59
|
+
if (!this.config || !this.initialized) {
|
|
60
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.MISSING_CONFIG, "Client not initialized. Call initialize() first.");
|
|
61
|
+
}
|
|
62
|
+
return this.config;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Make an HTTP request to Groq API
|
|
66
|
+
*/
|
|
67
|
+
async request(endpoint, body, signal) {
|
|
68
|
+
if (!this.config || !this.initialized) {
|
|
69
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.MISSING_CONFIG, "Client not initialized. Call initialize() first.");
|
|
70
|
+
}
|
|
71
|
+
const url = `${this.config.baseUrl}${endpoint}`;
|
|
72
|
+
const timeout = this.config.timeoutMs || DEFAULT_TIMEOUT;
|
|
73
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
74
|
+
console.log("[GroqClient] API Request:", {
|
|
75
|
+
url,
|
|
76
|
+
endpoint,
|
|
77
|
+
method: "POST",
|
|
78
|
+
timeout: `${timeout}ms`,
|
|
79
|
+
hasBody: !!body,
|
|
80
|
+
bodyKeys: body ? Object.keys(body) : [],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
// Create AbortController for timeout
|
|
85
|
+
const controller = new AbortController();
|
|
86
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
87
|
+
// Use provided signal if available
|
|
88
|
+
if (signal) {
|
|
89
|
+
signal.addEventListener("abort", () => controller.abort());
|
|
90
|
+
}
|
|
91
|
+
const fetchStartTime = Date.now();
|
|
92
|
+
const response = await fetch(url, {
|
|
93
|
+
method: "POST",
|
|
94
|
+
headers: {
|
|
95
|
+
"Content-Type": "application/json",
|
|
96
|
+
"Authorization": `Bearer ${this.config.apiKey}`,
|
|
97
|
+
},
|
|
98
|
+
body: JSON.stringify(body),
|
|
99
|
+
signal: controller.signal,
|
|
100
|
+
});
|
|
101
|
+
const fetchDuration = Date.now() - fetchStartTime;
|
|
102
|
+
clearTimeout(timeoutId);
|
|
103
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
104
|
+
console.log("[GroqClient] API Response:", {
|
|
105
|
+
status: response.status,
|
|
106
|
+
ok: response.ok,
|
|
107
|
+
fetchDuration: `${fetchDuration}ms`,
|
|
108
|
+
contentType: response.headers.get("content-type"),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
if (!response.ok) {
|
|
112
|
+
await this.handleErrorResponse(response);
|
|
113
|
+
}
|
|
114
|
+
const jsonStart = Date.now();
|
|
115
|
+
const jsonData = (await response.json());
|
|
116
|
+
const parseDuration = Date.now() - jsonStart;
|
|
117
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
118
|
+
console.log("[GroqClient] JSON parsed:", {
|
|
119
|
+
parseDuration: `${parseDuration}ms`,
|
|
120
|
+
hasData: !!jsonData,
|
|
121
|
+
dataKeys: jsonData ? Object.keys(jsonData) : [],
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return jsonData;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
128
|
+
console.error("[GroqClient] Request error:", {
|
|
129
|
+
error,
|
|
130
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
131
|
+
errorName: error instanceof Error ? error.name : undefined,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
throw this.handleRequestError(error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handle HTTP error responses
|
|
139
|
+
*/
|
|
140
|
+
async handleErrorResponse(response) {
|
|
141
|
+
let errorMessage = `HTTP ${response.status}`;
|
|
142
|
+
let errorType = (0, error_types_1.mapHttpStatusToErrorType)(response.status);
|
|
143
|
+
try {
|
|
144
|
+
const errorData = (await response.json());
|
|
145
|
+
if (errorData.error?.message) {
|
|
146
|
+
errorMessage = errorData.error.message;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// If parsing fails, use default message
|
|
151
|
+
}
|
|
152
|
+
throw new error_types_1.GroqError(errorType, errorMessage, {
|
|
153
|
+
status: response.status,
|
|
154
|
+
url: response.url,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Handle request errors (network, timeout, abort)
|
|
159
|
+
*/
|
|
160
|
+
handleRequestError(error) {
|
|
161
|
+
if (error instanceof error_types_1.GroqError) {
|
|
162
|
+
return error;
|
|
163
|
+
}
|
|
164
|
+
if (error instanceof Error) {
|
|
165
|
+
if (error.name === "AbortError") {
|
|
166
|
+
return new error_types_1.GroqError(error_types_1.GroqErrorType.ABORT_ERROR, "Request was aborted by the client", error);
|
|
167
|
+
}
|
|
168
|
+
if (error.name === "TypeError" && error.message.includes("network")) {
|
|
169
|
+
return new error_types_1.GroqError(error_types_1.GroqErrorType.NETWORK_ERROR, "Network error: Unable to connect to Groq API", error);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, error instanceof Error ? error.message : "Unknown error occurred", error);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Send chat completion request (non-streaming)
|
|
176
|
+
*/
|
|
177
|
+
async chatCompletion(request, signal) {
|
|
178
|
+
return this.request(CHAT_COMPLETIONS_ENDPOINT, { ...request, stream: false }, signal);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Send chat completion request (streaming)
|
|
182
|
+
* Returns an async generator of chunks
|
|
183
|
+
*/
|
|
184
|
+
async *chatCompletionStream(request, signal) {
|
|
185
|
+
if (!this.config || !this.initialized) {
|
|
186
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.MISSING_CONFIG, "Client not initialized. Call initialize() first.");
|
|
187
|
+
}
|
|
188
|
+
const url = `${this.config.baseUrl}${CHAT_COMPLETIONS_ENDPOINT}`;
|
|
189
|
+
const timeout = this.config.timeoutMs || DEFAULT_TIMEOUT;
|
|
190
|
+
// Create AbortController for timeout
|
|
191
|
+
const controller = new AbortController();
|
|
192
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
193
|
+
// Use provided signal if available
|
|
194
|
+
if (signal) {
|
|
195
|
+
signal.addEventListener("abort", () => controller.abort());
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const response = await fetch(url, {
|
|
199
|
+
method: "POST",
|
|
200
|
+
headers: {
|
|
201
|
+
"Content-Type": "application/json",
|
|
202
|
+
"Authorization": `Bearer ${this.config.apiKey}`,
|
|
203
|
+
},
|
|
204
|
+
body: JSON.stringify({ ...request, stream: true }),
|
|
205
|
+
signal: controller.signal,
|
|
206
|
+
});
|
|
207
|
+
clearTimeout(timeoutId);
|
|
208
|
+
if (!response.ok) {
|
|
209
|
+
await this.handleErrorResponse(response);
|
|
210
|
+
}
|
|
211
|
+
if (!response.body) {
|
|
212
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.NETWORK_ERROR, "Response body is null");
|
|
213
|
+
}
|
|
214
|
+
// Read and parse Server-Sent Events
|
|
215
|
+
const reader = response.body.getReader();
|
|
216
|
+
const decoder = new TextDecoder();
|
|
217
|
+
let buffer = "";
|
|
218
|
+
while (true) {
|
|
219
|
+
const { done, value } = await reader.read();
|
|
220
|
+
if (done)
|
|
221
|
+
break;
|
|
222
|
+
buffer += decoder.decode(value, { stream: true });
|
|
223
|
+
const lines = buffer.split("\n");
|
|
224
|
+
buffer = lines.pop() || "";
|
|
225
|
+
for (const line of lines) {
|
|
226
|
+
const trimmed = line.trim();
|
|
227
|
+
if (!trimmed || trimmed === "data: [DONE]")
|
|
228
|
+
continue;
|
|
229
|
+
if (trimmed.startsWith("data: ")) {
|
|
230
|
+
const jsonStr = trimmed.slice(6);
|
|
231
|
+
try {
|
|
232
|
+
const chunk = JSON.parse(jsonStr);
|
|
233
|
+
yield chunk;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
console.error("Failed to parse SSE chunk:", error);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
throw this.handleRequestError(error);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Reset the client
|
|
248
|
+
*/
|
|
249
|
+
reset() {
|
|
250
|
+
this.config = null;
|
|
251
|
+
this.initialized = false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Singleton instance
|
|
256
|
+
*/
|
|
257
|
+
exports.groqHttpClient = new GroqHttpClient();
|
|
258
|
+
//# sourceMappingURL=GroqClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroqClient.js","sourceRoot":"","sources":["../../../src/infrastructure/services/GroqClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming Service
|
|
3
|
+
* Handles streaming responses from Groq API
|
|
4
|
+
*/
|
|
5
|
+
import type { GroqMessage, GroqGenerationConfig } from "../../domain/entities";
|
|
6
|
+
export interface StreamingCallbacks {
|
|
7
|
+
/** Called when new content chunk is received */
|
|
8
|
+
onChunk?: (chunk: string) => void;
|
|
9
|
+
/** Called when streaming completes */
|
|
10
|
+
onComplete?: (fullContent: string) => void;
|
|
11
|
+
/** Called when an error occurs */
|
|
12
|
+
onError?: (error: Error) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface StreamingOptions {
|
|
15
|
+
model?: string;
|
|
16
|
+
generationConfig?: GroqGenerationConfig;
|
|
17
|
+
callbacks?: StreamingCallbacks;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Stream text generation from a prompt
|
|
21
|
+
*/
|
|
22
|
+
export declare function streaming(prompt: string, options?: StreamingOptions): AsyncGenerator<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Stream chat generation from messages
|
|
25
|
+
*/
|
|
26
|
+
export declare function streamingChat(messages: GroqMessage[], options?: StreamingOptions): AsyncGenerator<string>;
|
|
27
|
+
//# sourceMappingURL=Streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/Streaming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,sCAAsC;IACtC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAuB,SAAS,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC,MAAM,CAAC,CA+BxB;AAED;;GAEG;AACH,wBAAuB,aAAa,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC,MAAM,CAAC,CAwBxB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Streaming Service
|
|
4
|
+
* Handles streaming responses from Groq API
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.streaming = streaming;
|
|
8
|
+
exports.streamingChat = streamingChat;
|
|
9
|
+
const GroqClient_1 = require("./GroqClient");
|
|
10
|
+
const entities_1 = require("../../domain/entities");
|
|
11
|
+
/**
|
|
12
|
+
* Stream text generation from a prompt
|
|
13
|
+
*/
|
|
14
|
+
async function* streaming(prompt, options = {}) {
|
|
15
|
+
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
16
|
+
const messages = [
|
|
17
|
+
{
|
|
18
|
+
role: "user",
|
|
19
|
+
content: prompt,
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
const request = {
|
|
23
|
+
model,
|
|
24
|
+
messages,
|
|
25
|
+
temperature: options.generationConfig?.temperature || 0.7,
|
|
26
|
+
max_tokens: options.generationConfig?.maxTokens || 1024,
|
|
27
|
+
top_p: options.generationConfig?.topP,
|
|
28
|
+
};
|
|
29
|
+
try {
|
|
30
|
+
for await (const chunk of GroqClient_1.groqHttpClient.chatCompletionStream(request)) {
|
|
31
|
+
const content = chunk.choices[0]?.delta?.content;
|
|
32
|
+
if (content) {
|
|
33
|
+
options.callbacks?.onChunk?.(content);
|
|
34
|
+
yield content;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
options.callbacks?.onComplete?.(await collectStreamContent(request));
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
options.callbacks?.onError?.(error);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Stream chat generation from messages
|
|
46
|
+
*/
|
|
47
|
+
async function* streamingChat(messages, options = {}) {
|
|
48
|
+
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
49
|
+
const request = {
|
|
50
|
+
model,
|
|
51
|
+
messages,
|
|
52
|
+
temperature: options.generationConfig?.temperature || 0.7,
|
|
53
|
+
max_tokens: options.generationConfig?.maxTokens || 1024,
|
|
54
|
+
top_p: options.generationConfig?.topP,
|
|
55
|
+
};
|
|
56
|
+
try {
|
|
57
|
+
for await (const chunk of GroqClient_1.groqHttpClient.chatCompletionStream(request)) {
|
|
58
|
+
const content = chunk.choices[0]?.delta?.content;
|
|
59
|
+
if (content) {
|
|
60
|
+
options.callbacks?.onChunk?.(content);
|
|
61
|
+
yield content;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
options.callbacks?.onComplete?.(await collectStreamContent(request));
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
options.callbacks?.onError?.(error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Collect full content from streaming (for onComplete callback)
|
|
73
|
+
*/
|
|
74
|
+
async function collectStreamContent(request) {
|
|
75
|
+
let fullContent = "";
|
|
76
|
+
for await (const chunk of GroqClient_1.groqHttpClient.chatCompletionStream(request)) {
|
|
77
|
+
const content = chunk.choices[0]?.delta?.content;
|
|
78
|
+
if (content) {
|
|
79
|
+
fullContent += content;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return fullContent;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=Streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Streaming.js","sourceRoot":"","sources":["../../../src/infrastructure/services/Streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Text Generation Service
|
|
3
|
+
* Generates structured JSON output from Groq API
|
|
4
|
+
*/
|
|
5
|
+
import type { GroqMessage, GroqGenerationConfig } from "../../domain/entities";
|
|
6
|
+
export interface StructuredTextOptions<T> {
|
|
7
|
+
model?: string;
|
|
8
|
+
generationConfig?: GroqGenerationConfig;
|
|
9
|
+
schema?: Record<string, unknown>;
|
|
10
|
+
example?: T;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate structured JSON output from a prompt
|
|
14
|
+
*/
|
|
15
|
+
export declare function structuredText<T = Record<string, unknown>>(prompt: string, options?: StructuredTextOptions<T>): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Generate structured JSON output from messages
|
|
18
|
+
*/
|
|
19
|
+
export declare function structuredChat<T = Record<string, unknown>>(messages: GroqMessage[], options?: StructuredTextOptions<T>): Promise<T>;
|
|
20
|
+
//# sourceMappingURL=StructuredText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StructuredText.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/StructuredText.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,CAAC,CAAC,CAmIZ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,CAAC,CAAC,CAiGZ"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Structured Text Generation Service
|
|
4
|
+
* Generates structured JSON output from Groq API
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.structuredText = structuredText;
|
|
8
|
+
exports.structuredChat = structuredChat;
|
|
9
|
+
const GroqClient_1 = require("./GroqClient");
|
|
10
|
+
const entities_1 = require("../../domain/entities");
|
|
11
|
+
const error_types_1 = require("../../domain/entities/error.types");
|
|
12
|
+
/**
|
|
13
|
+
* Generate structured JSON output from a prompt
|
|
14
|
+
*/
|
|
15
|
+
async function structuredText(prompt, options = {}) {
|
|
16
|
+
const startTime = Date.now();
|
|
17
|
+
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
18
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
19
|
+
console.log("[Groq] structuredText called:", {
|
|
20
|
+
model,
|
|
21
|
+
promptLength: prompt.length,
|
|
22
|
+
promptPreview: prompt.substring(0, 150) + "...",
|
|
23
|
+
hasSchema: !!options.schema,
|
|
24
|
+
hasExample: !!options.example,
|
|
25
|
+
generationConfig: options.generationConfig,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
let systemPrompt = "You are a helpful assistant that generates valid JSON output.";
|
|
29
|
+
if (options.schema) {
|
|
30
|
+
systemPrompt += `\n\nResponse must conform to this JSON schema:\n${JSON.stringify(options.schema, null, 2)}`;
|
|
31
|
+
}
|
|
32
|
+
if (options.example) {
|
|
33
|
+
systemPrompt += `\n\nExample response format:\n${JSON.stringify(options.example, null, 2)}`;
|
|
34
|
+
}
|
|
35
|
+
systemPrompt += "\n\nIMPORTANT: Respond ONLY with valid JSON. No markdown, no code blocks, no explanations.";
|
|
36
|
+
const messages = [
|
|
37
|
+
{
|
|
38
|
+
role: "system",
|
|
39
|
+
content: systemPrompt,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
role: "user",
|
|
43
|
+
content: prompt,
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
const request = {
|
|
47
|
+
model,
|
|
48
|
+
messages,
|
|
49
|
+
temperature: options.generationConfig?.temperature || 0.3,
|
|
50
|
+
max_tokens: options.generationConfig?.maxTokens || 2048,
|
|
51
|
+
top_p: options.generationConfig?.topP || 0.9,
|
|
52
|
+
};
|
|
53
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
54
|
+
console.log("[Groq] Sending structured request:", {
|
|
55
|
+
endpoint: "/v1/chat/completions",
|
|
56
|
+
requestBody: {
|
|
57
|
+
model: request.model,
|
|
58
|
+
temperature: request.temperature,
|
|
59
|
+
max_tokens: request.max_tokens,
|
|
60
|
+
top_p: request.top_p,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const apiStartTime = Date.now();
|
|
65
|
+
const response = await GroqClient_1.groqHttpClient.chatCompletion(request);
|
|
66
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
67
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
68
|
+
console.log("[Groq] Structured API response:", {
|
|
69
|
+
apiDuration: `${apiDuration}ms`,
|
|
70
|
+
usage: response.usage,
|
|
71
|
+
finishReason: response.choices?.[0]?.finish_reason,
|
|
72
|
+
hasContent: !!response.choices?.[0]?.message?.content,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
let content = response.choices[0]?.message?.content;
|
|
76
|
+
if (!content) {
|
|
77
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, "No content generated from Groq API");
|
|
78
|
+
}
|
|
79
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
80
|
+
console.log("[Groq] Raw response content:", {
|
|
81
|
+
length: content.length,
|
|
82
|
+
preview: content.substring(0, 300) + "...",
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// Clean up the response: remove markdown code blocks if present
|
|
86
|
+
content = content.trim();
|
|
87
|
+
if (content.startsWith("```json")) {
|
|
88
|
+
content = content.slice(7);
|
|
89
|
+
}
|
|
90
|
+
else if (content.startsWith("```")) {
|
|
91
|
+
content = content.slice(3);
|
|
92
|
+
}
|
|
93
|
+
if (content.endsWith("```")) {
|
|
94
|
+
content = content.slice(0, -3);
|
|
95
|
+
}
|
|
96
|
+
content = content.trim();
|
|
97
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
98
|
+
console.log("[Groq] Attempting JSON parse...");
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const parsed = JSON.parse(content);
|
|
102
|
+
const totalDuration = Date.now() - startTime;
|
|
103
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
104
|
+
console.log("[Groq] structuredText complete:", {
|
|
105
|
+
totalDuration: `${totalDuration}ms`,
|
|
106
|
+
apiDuration: `${apiDuration}ms`,
|
|
107
|
+
parseDuration: `${totalDuration - apiDuration}ms`,
|
|
108
|
+
parsedKeys: Object.keys(parsed),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return parsed;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
115
|
+
console.error("[Groq] JSON parse failed:", {
|
|
116
|
+
error,
|
|
117
|
+
contentLength: content.length,
|
|
118
|
+
contentPreview: content.substring(0, 500) + "...",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, `Failed to parse JSON response: ${content}`, error);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Generate structured JSON output from messages
|
|
126
|
+
*/
|
|
127
|
+
async function structuredChat(messages, options = {}) {
|
|
128
|
+
const startTime = Date.now();
|
|
129
|
+
const model = options.model || entities_1.DEFAULT_MODELS.TEXT;
|
|
130
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
131
|
+
console.log("[Groq] structuredChat called:", {
|
|
132
|
+
model,
|
|
133
|
+
messageCount: messages.length,
|
|
134
|
+
hasSchema: !!options.schema,
|
|
135
|
+
hasExample: !!options.example,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
let systemMessage = null;
|
|
139
|
+
// Check if there's already a system message
|
|
140
|
+
const hasSystemMessage = messages.some((m) => m.role === "system");
|
|
141
|
+
if (!hasSystemMessage) {
|
|
142
|
+
let systemPrompt = "You are a helpful assistant that generates valid JSON output.";
|
|
143
|
+
if (options.schema) {
|
|
144
|
+
systemPrompt += `\n\nResponse must conform to this JSON schema:\n${JSON.stringify(options.schema, null, 2)}`;
|
|
145
|
+
}
|
|
146
|
+
if (options.example) {
|
|
147
|
+
systemPrompt += `\n\nExample response format:\n${JSON.stringify(options.example, null, 2)}`;
|
|
148
|
+
}
|
|
149
|
+
systemPrompt += "\n\nIMPORTANT: Respond ONLY with valid JSON. No markdown, no code blocks, no explanations.";
|
|
150
|
+
systemMessage = {
|
|
151
|
+
role: "system",
|
|
152
|
+
content: systemPrompt,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const requestMessages = systemMessage
|
|
156
|
+
? [systemMessage, ...messages]
|
|
157
|
+
: messages;
|
|
158
|
+
const request = {
|
|
159
|
+
model,
|
|
160
|
+
messages: requestMessages,
|
|
161
|
+
temperature: options.generationConfig?.temperature || 0.3,
|
|
162
|
+
max_tokens: options.generationConfig?.maxTokens || 2048,
|
|
163
|
+
top_p: options.generationConfig?.topP || 0.9,
|
|
164
|
+
};
|
|
165
|
+
const apiStartTime = Date.now();
|
|
166
|
+
const response = await GroqClient_1.groqHttpClient.chatCompletion(request);
|
|
167
|
+
const apiDuration = Date.now() - apiStartTime;
|
|
168
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
169
|
+
console.log("[Groq] structuredChat API response:", {
|
|
170
|
+
apiDuration: `${apiDuration}ms`,
|
|
171
|
+
usage: response.usage,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
let content = response.choices[0]?.message?.content;
|
|
175
|
+
if (!content) {
|
|
176
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, "No content generated from Groq API");
|
|
177
|
+
}
|
|
178
|
+
// Clean up the response: remove markdown code blocks if present
|
|
179
|
+
content = content.trim();
|
|
180
|
+
if (content.startsWith("```json")) {
|
|
181
|
+
content = content.slice(7);
|
|
182
|
+
}
|
|
183
|
+
else if (content.startsWith("```")) {
|
|
184
|
+
content = content.slice(3);
|
|
185
|
+
}
|
|
186
|
+
if (content.endsWith("```")) {
|
|
187
|
+
content = content.slice(0, -3);
|
|
188
|
+
}
|
|
189
|
+
content = content.trim();
|
|
190
|
+
const totalDuration = Date.now() - startTime;
|
|
191
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
192
|
+
console.log("[Groq] structuredChat complete:", {
|
|
193
|
+
totalDuration: `${totalDuration}ms`,
|
|
194
|
+
responseLength: content.length,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
return JSON.parse(content);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
throw new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, `Failed to parse JSON response: ${content}`, error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=StructuredText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StructuredText.js","sourceRoot":"","sources":["../../../src/infrastructure/services/StructuredText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text Generation Service
|
|
3
|
+
* Handles basic text generation using Groq API
|
|
4
|
+
*/
|
|
5
|
+
import type { GroqMessage, GroqGenerationConfig } from "../../domain/entities";
|
|
6
|
+
export interface TextGenerationOptions {
|
|
7
|
+
model?: string;
|
|
8
|
+
generationConfig?: GroqGenerationConfig;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Generate text from a simple prompt
|
|
12
|
+
*/
|
|
13
|
+
export declare function textGeneration(prompt: string, options?: TextGenerationOptions): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Generate text from an array of messages
|
|
16
|
+
*/
|
|
17
|
+
export declare function chatGeneration(messages: GroqMessage[], options?: TextGenerationOptions): Promise<string>;
|
|
18
|
+
//# sourceMappingURL=TextGeneration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/TextGeneration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAGV,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CA4EjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CAqDjB"}
|