@mzhub/promptc 0.1.2 → 0.1.4

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.
Files changed (307) hide show
  1. package/README.md +6 -5
  2. package/dist/cli.d.ts +0 -0
  3. package/dist/cli.d.ts.map +0 -0
  4. package/dist/cli.js +0 -0
  5. package/dist/cli.js.map +0 -0
  6. package/dist/compiler/BootstrapFewShot.d.ts +0 -0
  7. package/dist/compiler/BootstrapFewShot.d.ts.map +0 -0
  8. package/dist/compiler/BootstrapFewShot.js +0 -0
  9. package/dist/compiler/BootstrapFewShot.js.map +0 -0
  10. package/dist/compiler/CandidatePool.d.ts +0 -0
  11. package/dist/compiler/CandidatePool.d.ts.map +0 -0
  12. package/dist/compiler/CandidatePool.js +0 -0
  13. package/dist/compiler/CandidatePool.js.map +0 -0
  14. package/dist/compiler/CompiledProgram.d.ts +0 -0
  15. package/dist/compiler/CompiledProgram.d.ts.map +0 -0
  16. package/dist/compiler/CompiledProgram.js +0 -0
  17. package/dist/compiler/CompiledProgram.js.map +0 -0
  18. package/dist/compiler/InstructionRewrite.d.ts +0 -0
  19. package/dist/compiler/InstructionRewrite.d.ts.map +0 -0
  20. package/dist/compiler/InstructionRewrite.js +0 -0
  21. package/dist/compiler/InstructionRewrite.js.map +0 -0
  22. package/dist/compiler/index.d.ts +0 -0
  23. package/dist/compiler/index.d.ts.map +0 -0
  24. package/dist/compiler/index.js +0 -0
  25. package/dist/compiler/index.js.map +0 -0
  26. package/dist/compiler/types.d.ts +0 -0
  27. package/dist/compiler/types.d.ts.map +0 -0
  28. package/dist/compiler/types.js +0 -0
  29. package/dist/compiler/types.js.map +0 -0
  30. package/dist/eval/exactMatch.d.ts +0 -0
  31. package/dist/eval/exactMatch.d.ts.map +0 -0
  32. package/dist/eval/exactMatch.js +0 -0
  33. package/dist/eval/exactMatch.js.map +0 -0
  34. package/dist/eval/index.d.ts +0 -0
  35. package/dist/eval/index.d.ts.map +0 -0
  36. package/dist/eval/index.js +0 -0
  37. package/dist/eval/index.js.map +0 -0
  38. package/dist/eval/llmJudge.d.ts +0 -0
  39. package/dist/eval/llmJudge.d.ts.map +0 -0
  40. package/dist/eval/llmJudge.js +0 -0
  41. package/dist/eval/llmJudge.js.map +0 -0
  42. package/dist/eval/types.d.ts +0 -0
  43. package/dist/eval/types.d.ts.map +0 -0
  44. package/dist/eval/types.js +0 -0
  45. package/dist/eval/types.js.map +0 -0
  46. package/dist/examples/load-compiled.d.ts +0 -0
  47. package/dist/examples/load-compiled.d.ts.map +0 -0
  48. package/dist/examples/load-compiled.js +0 -0
  49. package/dist/examples/load-compiled.js.map +0 -0
  50. package/dist/examples/multi-provider.d.ts +0 -0
  51. package/dist/examples/multi-provider.d.ts.map +0 -0
  52. package/dist/examples/multi-provider.js +0 -0
  53. package/dist/examples/multi-provider.js.map +0 -0
  54. package/dist/examples/name-extractor.d.ts +0 -0
  55. package/dist/examples/name-extractor.d.ts.map +0 -0
  56. package/dist/examples/name-extractor.js +0 -0
  57. package/dist/examples/name-extractor.js.map +0 -0
  58. package/dist/examples/qa-system.d.ts +0 -0
  59. package/dist/examples/qa-system.d.ts.map +0 -0
  60. package/dist/examples/qa-system.js +0 -0
  61. package/dist/examples/qa-system.js.map +0 -0
  62. package/dist/index.d.ts +0 -0
  63. package/dist/index.d.ts.map +0 -0
  64. package/dist/index.js +0 -0
  65. package/dist/index.js.map +0 -0
  66. package/dist/program/ChainOfThought.d.ts +0 -0
  67. package/dist/program/ChainOfThought.d.ts.map +0 -0
  68. package/dist/program/ChainOfThought.js +0 -0
  69. package/dist/program/ChainOfThought.js.map +0 -0
  70. package/dist/program/Predict.d.ts +0 -0
  71. package/dist/program/Predict.d.ts.map +0 -0
  72. package/dist/program/Predict.js +0 -0
  73. package/dist/program/Predict.js.map +0 -0
  74. package/dist/program/Program.d.ts +0 -0
  75. package/dist/program/Program.d.ts.map +0 -0
  76. package/dist/program/Program.js +0 -0
  77. package/dist/program/Program.js.map +0 -0
  78. package/dist/program/index.d.ts +0 -0
  79. package/dist/program/index.d.ts.map +0 -0
  80. package/dist/program/index.js +0 -0
  81. package/dist/program/index.js.map +0 -0
  82. package/dist/providers/anthropic.d.ts +0 -0
  83. package/dist/providers/anthropic.d.ts.map +0 -0
  84. package/dist/providers/anthropic.js +0 -0
  85. package/dist/providers/anthropic.js.map +0 -0
  86. package/dist/providers/cerebras.d.ts +0 -0
  87. package/dist/providers/cerebras.d.ts.map +0 -0
  88. package/dist/providers/cerebras.js +0 -0
  89. package/dist/providers/cerebras.js.map +0 -0
  90. package/dist/providers/google.d.ts +0 -0
  91. package/dist/providers/google.d.ts.map +0 -0
  92. package/dist/providers/google.js +0 -0
  93. package/dist/providers/google.js.map +0 -0
  94. package/dist/providers/groq.d.ts +0 -0
  95. package/dist/providers/groq.d.ts.map +0 -0
  96. package/dist/providers/groq.js +0 -0
  97. package/dist/providers/groq.js.map +0 -0
  98. package/dist/providers/index.d.ts +0 -0
  99. package/dist/providers/index.d.ts.map +0 -0
  100. package/dist/providers/index.js +0 -0
  101. package/dist/providers/index.js.map +0 -0
  102. package/dist/providers/ollama.d.ts +0 -0
  103. package/dist/providers/ollama.d.ts.map +0 -0
  104. package/dist/providers/ollama.js +0 -0
  105. package/dist/providers/ollama.js.map +0 -0
  106. package/dist/providers/openai.d.ts +0 -0
  107. package/dist/providers/openai.d.ts.map +0 -0
  108. package/dist/providers/openai.js +0 -0
  109. package/dist/providers/openai.js.map +0 -0
  110. package/dist/providers/types.d.ts +0 -0
  111. package/dist/providers/types.d.ts.map +0 -0
  112. package/dist/providers/types.js +0 -0
  113. package/dist/providers/types.js.map +0 -0
  114. package/dist/runtime/cache.d.ts +0 -0
  115. package/dist/runtime/cache.d.ts.map +0 -0
  116. package/dist/runtime/cache.js +0 -0
  117. package/dist/runtime/cache.js.map +0 -0
  118. package/dist/runtime/concurrency.d.ts +0 -0
  119. package/dist/runtime/concurrency.d.ts.map +0 -0
  120. package/dist/runtime/concurrency.js +0 -0
  121. package/dist/runtime/concurrency.js.map +0 -0
  122. package/dist/runtime/costTracker.d.ts +0 -0
  123. package/dist/runtime/costTracker.d.ts.map +0 -0
  124. package/dist/runtime/costTracker.js +0 -0
  125. package/dist/runtime/costTracker.js.map +0 -0
  126. package/dist/runtime/index.d.ts +0 -0
  127. package/dist/runtime/index.d.ts.map +0 -0
  128. package/dist/runtime/index.js +0 -0
  129. package/dist/runtime/index.js.map +0 -0
  130. package/dist/runtime/retry.d.ts +0 -0
  131. package/dist/runtime/retry.d.ts.map +0 -0
  132. package/dist/runtime/retry.js +0 -0
  133. package/dist/runtime/retry.js.map +0 -0
  134. package/dist/schema/defineSchema.d.ts +0 -0
  135. package/dist/schema/defineSchema.d.ts.map +0 -0
  136. package/dist/schema/defineSchema.js +0 -0
  137. package/dist/schema/defineSchema.js.map +0 -0
  138. package/dist/schema/index.d.ts +0 -0
  139. package/dist/schema/index.d.ts.map +0 -0
  140. package/dist/schema/index.js +0 -0
  141. package/dist/schema/index.js.map +0 -0
  142. package/dist/src/cli.d.ts +0 -0
  143. package/dist/src/cli.d.ts.map +0 -0
  144. package/dist/src/cli.js +0 -0
  145. package/dist/src/cli.js.map +0 -0
  146. package/dist/src/compiler/BootstrapFewShot.d.ts +0 -0
  147. package/dist/src/compiler/BootstrapFewShot.d.ts.map +0 -0
  148. package/dist/src/compiler/BootstrapFewShot.js +0 -0
  149. package/dist/src/compiler/BootstrapFewShot.js.map +0 -0
  150. package/dist/src/compiler/CandidatePool.d.ts +0 -0
  151. package/dist/src/compiler/CandidatePool.d.ts.map +0 -0
  152. package/dist/src/compiler/CandidatePool.js +0 -0
  153. package/dist/src/compiler/CandidatePool.js.map +0 -0
  154. package/dist/src/compiler/CompiledProgram.d.ts +0 -0
  155. package/dist/src/compiler/CompiledProgram.d.ts.map +0 -0
  156. package/dist/src/compiler/CompiledProgram.js +0 -0
  157. package/dist/src/compiler/CompiledProgram.js.map +0 -0
  158. package/dist/src/compiler/InstructionRewrite.d.ts +0 -0
  159. package/dist/src/compiler/InstructionRewrite.d.ts.map +0 -0
  160. package/dist/src/compiler/InstructionRewrite.js +0 -0
  161. package/dist/src/compiler/InstructionRewrite.js.map +0 -0
  162. package/dist/src/compiler/index.d.ts +0 -0
  163. package/dist/src/compiler/index.d.ts.map +0 -0
  164. package/dist/src/compiler/index.js +0 -0
  165. package/dist/src/compiler/index.js.map +0 -0
  166. package/dist/src/compiler/types.d.ts +0 -0
  167. package/dist/src/compiler/types.d.ts.map +0 -0
  168. package/dist/src/compiler/types.js +0 -0
  169. package/dist/src/compiler/types.js.map +0 -0
  170. package/dist/src/eval/exactMatch.d.ts +0 -0
  171. package/dist/src/eval/exactMatch.d.ts.map +0 -0
  172. package/dist/src/eval/exactMatch.js +0 -0
  173. package/dist/src/eval/exactMatch.js.map +0 -0
  174. package/dist/src/eval/index.d.ts +0 -0
  175. package/dist/src/eval/index.d.ts.map +0 -0
  176. package/dist/src/eval/index.js +0 -0
  177. package/dist/src/eval/index.js.map +0 -0
  178. package/dist/src/eval/llmJudge.d.ts +0 -0
  179. package/dist/src/eval/llmJudge.d.ts.map +0 -0
  180. package/dist/src/eval/llmJudge.js +0 -0
  181. package/dist/src/eval/llmJudge.js.map +0 -0
  182. package/dist/src/eval/types.d.ts +0 -0
  183. package/dist/src/eval/types.d.ts.map +0 -0
  184. package/dist/src/eval/types.js +0 -0
  185. package/dist/src/eval/types.js.map +0 -0
  186. package/dist/src/index.d.ts +0 -0
  187. package/dist/src/index.d.ts.map +0 -0
  188. package/dist/src/index.js +0 -0
  189. package/dist/src/index.js.map +0 -0
  190. package/dist/src/program/ChainOfThought.d.ts +0 -0
  191. package/dist/src/program/ChainOfThought.d.ts.map +0 -0
  192. package/dist/src/program/ChainOfThought.js +0 -0
  193. package/dist/src/program/ChainOfThought.js.map +0 -0
  194. package/dist/src/program/Predict.d.ts +0 -0
  195. package/dist/src/program/Predict.d.ts.map +0 -0
  196. package/dist/src/program/Predict.js +0 -0
  197. package/dist/src/program/Predict.js.map +0 -0
  198. package/dist/src/program/Program.d.ts +0 -0
  199. package/dist/src/program/Program.d.ts.map +0 -0
  200. package/dist/src/program/Program.js +0 -0
  201. package/dist/src/program/Program.js.map +0 -0
  202. package/dist/src/program/index.d.ts +0 -0
  203. package/dist/src/program/index.d.ts.map +0 -0
  204. package/dist/src/program/index.js +0 -0
  205. package/dist/src/program/index.js.map +0 -0
  206. package/dist/src/providers/anthropic.d.ts +0 -0
  207. package/dist/src/providers/anthropic.d.ts.map +0 -0
  208. package/dist/src/providers/anthropic.js +0 -0
  209. package/dist/src/providers/anthropic.js.map +0 -0
  210. package/dist/src/providers/cerebras.d.ts +2 -1
  211. package/dist/src/providers/cerebras.d.ts.map +1 -1
  212. package/dist/src/providers/cerebras.js +23 -22
  213. package/dist/src/providers/cerebras.js.map +1 -1
  214. package/dist/src/providers/google.d.ts +0 -0
  215. package/dist/src/providers/google.d.ts.map +0 -0
  216. package/dist/src/providers/google.js +0 -0
  217. package/dist/src/providers/google.js.map +0 -0
  218. package/dist/src/providers/groq.d.ts +3 -2
  219. package/dist/src/providers/groq.d.ts.map +1 -1
  220. package/dist/src/providers/groq.js +38 -27
  221. package/dist/src/providers/groq.js.map +1 -1
  222. package/dist/src/providers/index.d.ts +0 -0
  223. package/dist/src/providers/index.d.ts.map +0 -0
  224. package/dist/src/providers/index.js +0 -0
  225. package/dist/src/providers/index.js.map +0 -0
  226. package/dist/src/providers/ollama.d.ts +0 -0
  227. package/dist/src/providers/ollama.d.ts.map +0 -0
  228. package/dist/src/providers/ollama.js +0 -0
  229. package/dist/src/providers/ollama.js.map +0 -0
  230. package/dist/src/providers/openai.d.ts +0 -0
  231. package/dist/src/providers/openai.d.ts.map +0 -0
  232. package/dist/src/providers/openai.js +0 -0
  233. package/dist/src/providers/openai.js.map +0 -0
  234. package/dist/src/providers/types.d.ts +0 -0
  235. package/dist/src/providers/types.d.ts.map +0 -0
  236. package/dist/src/providers/types.js +0 -0
  237. package/dist/src/providers/types.js.map +0 -0
  238. package/dist/src/runtime/cache.d.ts +0 -0
  239. package/dist/src/runtime/cache.d.ts.map +0 -0
  240. package/dist/src/runtime/cache.js +0 -0
  241. package/dist/src/runtime/cache.js.map +0 -0
  242. package/dist/src/runtime/concurrency.d.ts +0 -0
  243. package/dist/src/runtime/concurrency.d.ts.map +0 -0
  244. package/dist/src/runtime/concurrency.js +0 -0
  245. package/dist/src/runtime/concurrency.js.map +0 -0
  246. package/dist/src/runtime/costTracker.d.ts +0 -0
  247. package/dist/src/runtime/costTracker.d.ts.map +0 -0
  248. package/dist/src/runtime/costTracker.js +0 -0
  249. package/dist/src/runtime/costTracker.js.map +0 -0
  250. package/dist/src/runtime/index.d.ts +0 -0
  251. package/dist/src/runtime/index.d.ts.map +0 -0
  252. package/dist/src/runtime/index.js +0 -0
  253. package/dist/src/runtime/index.js.map +0 -0
  254. package/dist/src/runtime/retry.d.ts +0 -0
  255. package/dist/src/runtime/retry.d.ts.map +0 -0
  256. package/dist/src/runtime/retry.js +0 -0
  257. package/dist/src/runtime/retry.js.map +0 -0
  258. package/dist/src/schema/defineSchema.d.ts +0 -0
  259. package/dist/src/schema/defineSchema.d.ts.map +0 -0
  260. package/dist/src/schema/defineSchema.js +0 -0
  261. package/dist/src/schema/defineSchema.js.map +0 -0
  262. package/dist/src/schema/index.d.ts +0 -0
  263. package/dist/src/schema/index.d.ts.map +0 -0
  264. package/dist/src/schema/index.js +0 -0
  265. package/dist/src/schema/index.js.map +0 -0
  266. package/examples/README.md +0 -0
  267. package/examples/load-compiled.ts +0 -0
  268. package/examples/multi-provider.ts +0 -0
  269. package/examples/name-extractor.ts +0 -0
  270. package/examples/qa-system.ts +0 -0
  271. package/package.json +24 -11
  272. package/src/cli.ts +0 -0
  273. package/src/compiler/BootstrapFewShot.ts +0 -0
  274. package/src/compiler/CandidatePool.ts +0 -0
  275. package/src/compiler/CompiledProgram.ts +0 -0
  276. package/src/compiler/InstructionRewrite.ts +0 -0
  277. package/src/compiler/index.ts +0 -0
  278. package/src/compiler/types.ts +0 -0
  279. package/src/eval/exactMatch.ts +0 -0
  280. package/src/eval/index.ts +0 -0
  281. package/src/eval/llmJudge.ts +0 -0
  282. package/src/eval/types.ts +0 -0
  283. package/src/index.ts +0 -0
  284. package/src/program/ChainOfThought.ts +0 -0
  285. package/src/program/Predict.ts +0 -0
  286. package/src/program/Program.ts +0 -0
  287. package/src/program/index.ts +0 -0
  288. package/src/providers/anthropic.ts +0 -0
  289. package/src/providers/cerebras.ts +26 -27
  290. package/src/providers/google.ts +0 -0
  291. package/src/providers/groq.ts +42 -32
  292. package/src/providers/index.ts +0 -0
  293. package/src/providers/ollama.ts +0 -0
  294. package/src/providers/openai.ts +0 -0
  295. package/src/providers/types.ts +0 -0
  296. package/src/runtime/cache.ts +0 -0
  297. package/src/runtime/concurrency.ts +0 -0
  298. package/src/runtime/costTracker.ts +0 -0
  299. package/src/runtime/index.ts +0 -0
  300. package/src/runtime/retry.ts +0 -0
  301. package/src/schema/defineSchema.ts +0 -0
  302. package/src/schema/index.ts +0 -0
  303. package/tests/candidatePool.test.ts +0 -0
  304. package/tests/evaluators.test.ts +0 -0
  305. package/tests/runtime.test.ts +0 -0
  306. package/tests/schema.test.ts +0 -0
  307. package/tsconfig.json +0 -0
@@ -1,37 +1,38 @@
1
1
  export class CerebrasProvider {
2
2
  name = "cerebras";
3
3
  defaultModel;
4
+ client;
4
5
  apiKey;
5
- baseUrl;
6
6
  constructor(config) {
7
7
  this.apiKey = config.apiKey || process.env.CEREBRAS_API_KEY || "";
8
- this.baseUrl = config.baseUrl || "https://api.cerebras.ai/v1";
9
8
  this.defaultModel = config.defaultModel || "llama3.1-8b";
9
+ this.client = null;
10
+ }
11
+ async ensureClient() {
12
+ if (!this.client) {
13
+ try {
14
+ const Cerebras = (await import("@cerebras/cerebras_cloud_sdk")).default;
15
+ this.client = new Cerebras({ apiKey: this.apiKey });
16
+ }
17
+ catch {
18
+ throw new Error("@cerebras/cerebras_cloud_sdk is not installed. Install it with: npm install @cerebras/cerebras_cloud_sdk");
19
+ }
20
+ }
21
+ return this.client;
10
22
  }
11
23
  async complete(params) {
12
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
13
- method: "POST",
14
- headers: {
15
- "Content-Type": "application/json",
16
- Authorization: `Bearer ${this.apiKey}`,
17
- },
18
- body: JSON.stringify({
19
- model: params.model || this.defaultModel,
20
- messages: [{ role: "user", content: params.prompt }],
21
- temperature: params.temperature ?? 0.7,
22
- max_tokens: params.maxTokens ?? 1024,
23
- }),
24
+ const client = await this.ensureClient();
25
+ const response = await client.chat.completions.create({
26
+ model: params.model || this.defaultModel,
27
+ messages: [{ role: "user", content: params.prompt }],
28
+ temperature: params.temperature ?? 0.7,
29
+ max_completion_tokens: params.maxTokens ?? 1024,
24
30
  });
25
- if (!response.ok) {
26
- const error = await response.text();
27
- throw new Error(`Cerebras API error: ${response.status} - ${error}`);
28
- }
29
- const data = (await response.json());
30
31
  return {
31
- content: data.choices[0].message.content,
32
+ content: response.choices[0].message.content || "",
32
33
  usage: {
33
- inputTokens: data.usage.prompt_tokens,
34
- outputTokens: data.usage.completion_tokens,
34
+ inputTokens: response.usage?.prompt_tokens || 0,
35
+ outputTokens: response.usage?.completion_tokens || 0,
35
36
  },
36
37
  };
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cerebras.js","sourceRoot":"","sources":["../../../src/providers/cerebras.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG,UAAU,CAAC;IAClB,YAAY,CAAS;IACb,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,4BAA4B,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,aAAa,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAwB;QACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;gBACxC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG;gBACtC,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;aACrC,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAGlC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YACxC,KAAK,EAAE;gBACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACrC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;aAC3C;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"cerebras.js","sourceRoot":"","sources":["../../../src/providers/cerebras.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG,UAAU,CAAC;IAClB,YAAY,CAAS;IACb,MAAM,CAAM;IACZ,MAAM,CAAS;IAEvB,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,aAAa,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxE,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAwB;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACpD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;YACxC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG;YACtC,qBAAqB,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;SAChD,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;YAClD,KAAK,EAAE;gBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;gBAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;aACrD;SACF,CAAC;IACJ,CAAC;CACF"}
File without changes
File without changes
File without changes
File without changes
@@ -2,9 +2,10 @@ import type { LLMProvider, CompletionParams, CompletionResult, ProviderConfig }
2
2
  export declare class GroqProvider implements LLMProvider {
3
3
  name: string;
4
4
  defaultModel: string;
5
- private apiKey;
6
- private baseUrl;
5
+ private client;
7
6
  constructor(config: ProviderConfig);
7
+ private initClient;
8
+ private ensureClient;
8
9
  complete(params: CompletionParams): Promise<CompletionResult>;
9
10
  }
10
11
  //# sourceMappingURL=groq.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAa,YAAW,WAAW;IAC9C,IAAI,SAAU;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,cAAc;IAM5B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAqCpE"}
1
+ {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAa,YAAW,WAAW;IAC9C,IAAI,SAAU;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,cAAc;YASpB,UAAU;YASV,YAAY;IAgBpB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAoBpE"}
@@ -1,40 +1,51 @@
1
1
  export class GroqProvider {
2
2
  name = "groq";
3
3
  defaultModel;
4
- apiKey;
5
- baseUrl;
4
+ client;
6
5
  constructor(config) {
7
- this.apiKey = config.apiKey || process.env.GROQ_API_KEY || "";
8
- this.baseUrl = config.baseUrl || "https://api.groq.com/openai/v1";
6
+ const apiKey = config.apiKey || process.env.GROQ_API_KEY || "";
9
7
  this.defaultModel = config.defaultModel || "llama-3.3-70b-versatile";
8
+ // Dynamic import to avoid requiring groq-sdk if not used
9
+ this.client = null;
10
+ this.initClient(apiKey);
11
+ }
12
+ async initClient(apiKey) {
13
+ try {
14
+ const Groq = (await import("groq-sdk")).default;
15
+ this.client = new Groq({ apiKey });
16
+ }
17
+ catch {
18
+ // Will throw on complete() if SDK not installed
19
+ }
20
+ }
21
+ async ensureClient() {
22
+ if (!this.client) {
23
+ try {
24
+ const Groq = (await import("groq-sdk")).default;
25
+ this.client = new Groq({
26
+ apiKey: process.env.GROQ_API_KEY || "",
27
+ });
28
+ }
29
+ catch {
30
+ throw new Error("groq-sdk is not installed. Install it with: npm install groq-sdk");
31
+ }
32
+ }
33
+ return this.client;
10
34
  }
11
35
  async complete(params) {
12
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
13
- method: "POST",
14
- headers: {
15
- "Content-Type": "application/json",
16
- Authorization: `Bearer ${this.apiKey}`,
17
- },
18
- body: JSON.stringify({
19
- model: params.model || this.defaultModel,
20
- messages: [{ role: "user", content: params.prompt }],
21
- temperature: params.temperature ?? 0.7,
22
- max_tokens: params.maxTokens ?? 1024,
23
- response_format: params.responseFormat === "json"
24
- ? { type: "json_object" }
25
- : undefined,
26
- }),
36
+ const client = await this.ensureClient();
37
+ const response = await client.chat.completions.create({
38
+ model: params.model || this.defaultModel,
39
+ messages: [{ role: "user", content: params.prompt }],
40
+ temperature: params.temperature ?? 0.7,
41
+ max_tokens: params.maxTokens ?? 1024,
42
+ response_format: params.responseFormat === "json" ? { type: "json_object" } : undefined,
27
43
  });
28
- if (!response.ok) {
29
- const error = await response.text();
30
- throw new Error(`Groq API error: ${response.status} - ${error}`);
31
- }
32
- const data = (await response.json());
33
44
  return {
34
- content: data.choices[0].message.content,
45
+ content: response.choices[0].message.content || "",
35
46
  usage: {
36
- inputTokens: data.usage.prompt_tokens,
37
- outputTokens: data.usage.completion_tokens,
47
+ inputTokens: response.usage?.prompt_tokens || 0,
48
+ outputTokens: response.usage?.completion_tokens || 0,
38
49
  },
39
50
  };
40
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,YAAY;IACvB,IAAI,GAAG,MAAM,CAAC;IACd,YAAY,CAAS;IACb,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,gCAAgC,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,yBAAyB,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAwB;QACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;gBACxC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG;gBACtC,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;gBACpC,eAAe,EACb,MAAM,CAAC,cAAc,KAAK,MAAM;oBAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;oBACzB,CAAC,CAAC,SAAS;aAChB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAGlC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YACxC,KAAK,EAAE;gBACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACrC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;aAC3C;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,YAAY;IACvB,IAAI,GAAG,MAAM,CAAC;IACd,YAAY,CAAS;IACb,MAAM,CAAM;IAEpB,YAAY,MAAsB;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,yBAAyB,CAAC;QAErE,yDAAyD;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;gBAChD,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC;oBACrB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAwB;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACpD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;YACxC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG;YACtC,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;YACpC,eAAe,EACb,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;YAClD,KAAK,EAAE;gBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;gBAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;aACrD;SACF,CAAC;IACJ,CAAC;CACF"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mzhub/promptc",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Compile and optimize LLM prompts in JavaScript using type-safe schemas and examples.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,9 @@
17
17
  "scripts": {
18
18
  "build": "tsc",
19
19
  "dev": "tsc --watch",
20
- "test": "vitest"
20
+ "test": "vitest",
21
+ "prepublishOnly": "npm run build",
22
+ "release": "npm version patch --no-git-tag-version && npm publish --access public"
21
23
  },
22
24
  "keywords": [
23
25
  "llm",
@@ -31,14 +33,16 @@
31
33
  "author": "MZ Hub",
32
34
  "license": "MIT",
33
35
  "dependencies": {
34
- "zod": "^3.24.0",
35
- "p-limit": "^6.1.0"
36
+ "p-limit": "^6.2.0",
37
+ "zod": "^3.24.1"
36
38
  },
37
39
  "peerDependencies": {
38
- "openai": "^4.0.0",
39
40
  "@anthropic-ai/sdk": "^0.30.0",
41
+ "@cerebras/cerebras_cloud_sdk": "^1.0.0",
40
42
  "@google/generative-ai": "^0.21.0",
41
- "ollama": "^0.5.0"
43
+ "groq-sdk": "^0.8.0",
44
+ "ollama": "^0.5.0",
45
+ "openai": "^4.0.0"
42
46
  },
43
47
  "peerDependenciesMeta": {
44
48
  "openai": {
@@ -52,11 +56,20 @@
52
56
  },
53
57
  "ollama": {
54
58
  "optional": true
59
+ },
60
+ "groq-sdk": {
61
+ "optional": true
62
+ },
63
+ "@cerebras/cerebras_cloud_sdk": {
64
+ "optional": true
55
65
  }
56
66
  },
57
67
  "devDependencies": {
58
- "typescript": "^5.7.0",
59
- "@types/node": "^22.0.0",
60
- "vitest": "^2.0.0"
61
- }
62
- }
68
+ "@cerebras/cerebras_cloud_sdk": "^1.11.0",
69
+ "@types/node": "^22.13.1",
70
+ "groq-sdk": "^0.15.0",
71
+ "typescript": "^5.7.3",
72
+ "vitest": "^3.0.5"
73
+ },
74
+ "homepage": "https://promptc.vercel.app/"
75
+ }
package/src/cli.ts CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/src/eval/index.ts CHANGED
File without changes
File without changes
package/src/eval/types.ts CHANGED
File without changes
package/src/index.ts CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -8,45 +8,44 @@ import type {
8
8
  export class CerebrasProvider implements LLMProvider {
9
9
  name = "cerebras";
10
10
  defaultModel: string;
11
+ private client: any;
11
12
  private apiKey: string;
12
- private baseUrl: string;
13
13
 
14
14
  constructor(config: ProviderConfig) {
15
15
  this.apiKey = config.apiKey || process.env.CEREBRAS_API_KEY || "";
16
- this.baseUrl = config.baseUrl || "https://api.cerebras.ai/v1";
17
16
  this.defaultModel = config.defaultModel || "llama3.1-8b";
17
+ this.client = null;
18
18
  }
19
19
 
20
- async complete(params: CompletionParams): Promise<CompletionResult> {
21
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
22
- method: "POST",
23
- headers: {
24
- "Content-Type": "application/json",
25
- Authorization: `Bearer ${this.apiKey}`,
26
- },
27
- body: JSON.stringify({
28
- model: params.model || this.defaultModel,
29
- messages: [{ role: "user", content: params.prompt }],
30
- temperature: params.temperature ?? 0.7,
31
- max_tokens: params.maxTokens ?? 1024,
32
- }),
33
- });
34
-
35
- if (!response.ok) {
36
- const error = await response.text();
37
- throw new Error(`Cerebras API error: ${response.status} - ${error}`);
20
+ private async ensureClient(): Promise<any> {
21
+ if (!this.client) {
22
+ try {
23
+ const Cerebras = (await import("@cerebras/cerebras_cloud_sdk")).default;
24
+ this.client = new Cerebras({ apiKey: this.apiKey });
25
+ } catch {
26
+ throw new Error(
27
+ "@cerebras/cerebras_cloud_sdk is not installed. Install it with: npm install @cerebras/cerebras_cloud_sdk"
28
+ );
29
+ }
38
30
  }
31
+ return this.client;
32
+ }
39
33
 
40
- const data = (await response.json()) as {
41
- choices: Array<{ message: { content: string } }>;
42
- usage: { prompt_tokens: number; completion_tokens: number };
43
- };
34
+ async complete(params: CompletionParams): Promise<CompletionResult> {
35
+ const client = await this.ensureClient();
36
+
37
+ const response = await client.chat.completions.create({
38
+ model: params.model || this.defaultModel,
39
+ messages: [{ role: "user", content: params.prompt }],
40
+ temperature: params.temperature ?? 0.7,
41
+ max_completion_tokens: params.maxTokens ?? 1024,
42
+ });
44
43
 
45
44
  return {
46
- content: data.choices[0].message.content,
45
+ content: response.choices[0].message.content || "",
47
46
  usage: {
48
- inputTokens: data.usage.prompt_tokens,
49
- outputTokens: data.usage.completion_tokens,
47
+ inputTokens: response.usage?.prompt_tokens || 0,
48
+ outputTokens: response.usage?.completion_tokens || 0,
50
49
  },
51
50
  };
52
51
  }
File without changes
@@ -8,49 +8,59 @@ import type {
8
8
  export class GroqProvider implements LLMProvider {
9
9
  name = "groq";
10
10
  defaultModel: string;
11
- private apiKey: string;
12
- private baseUrl: string;
11
+ private client: any;
13
12
 
14
13
  constructor(config: ProviderConfig) {
15
- this.apiKey = config.apiKey || process.env.GROQ_API_KEY || "";
16
- this.baseUrl = config.baseUrl || "https://api.groq.com/openai/v1";
14
+ const apiKey = config.apiKey || process.env.GROQ_API_KEY || "";
17
15
  this.defaultModel = config.defaultModel || "llama-3.3-70b-versatile";
16
+
17
+ // Dynamic import to avoid requiring groq-sdk if not used
18
+ this.client = null;
19
+ this.initClient(apiKey);
18
20
  }
19
21
 
20
- async complete(params: CompletionParams): Promise<CompletionResult> {
21
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
22
- method: "POST",
23
- headers: {
24
- "Content-Type": "application/json",
25
- Authorization: `Bearer ${this.apiKey}`,
26
- },
27
- body: JSON.stringify({
28
- model: params.model || this.defaultModel,
29
- messages: [{ role: "user", content: params.prompt }],
30
- temperature: params.temperature ?? 0.7,
31
- max_tokens: params.maxTokens ?? 1024,
32
- response_format:
33
- params.responseFormat === "json"
34
- ? { type: "json_object" }
35
- : undefined,
36
- }),
37
- });
22
+ private async initClient(apiKey: string) {
23
+ try {
24
+ const Groq = (await import("groq-sdk")).default;
25
+ this.client = new Groq({ apiKey });
26
+ } catch {
27
+ // Will throw on complete() if SDK not installed
28
+ }
29
+ }
38
30
 
39
- if (!response.ok) {
40
- const error = await response.text();
41
- throw new Error(`Groq API error: ${response.status} - ${error}`);
31
+ private async ensureClient(): Promise<any> {
32
+ if (!this.client) {
33
+ try {
34
+ const Groq = (await import("groq-sdk")).default;
35
+ this.client = new Groq({
36
+ apiKey: process.env.GROQ_API_KEY || "",
37
+ });
38
+ } catch {
39
+ throw new Error(
40
+ "groq-sdk is not installed. Install it with: npm install groq-sdk"
41
+ );
42
+ }
42
43
  }
44
+ return this.client;
45
+ }
43
46
 
44
- const data = (await response.json()) as {
45
- choices: Array<{ message: { content: string } }>;
46
- usage: { prompt_tokens: number; completion_tokens: number };
47
- };
47
+ async complete(params: CompletionParams): Promise<CompletionResult> {
48
+ const client = await this.ensureClient();
49
+
50
+ const response = await client.chat.completions.create({
51
+ model: params.model || this.defaultModel,
52
+ messages: [{ role: "user", content: params.prompt }],
53
+ temperature: params.temperature ?? 0.7,
54
+ max_tokens: params.maxTokens ?? 1024,
55
+ response_format:
56
+ params.responseFormat === "json" ? { type: "json_object" } : undefined,
57
+ });
48
58
 
49
59
  return {
50
- content: data.choices[0].message.content,
60
+ content: response.choices[0].message.content || "",
51
61
  usage: {
52
- inputTokens: data.usage.prompt_tokens,
53
- outputTokens: data.usage.completion_tokens,
62
+ inputTokens: response.usage?.prompt_tokens || 0,
63
+ outputTokens: response.usage?.completion_tokens || 0,
54
64
  },
55
65
  };
56
66
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes