@luanpoppe/ai 1.0.0 → 1.0.2

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 (37) hide show
  1. package/dist/@types/model-names.d.ts.map +1 -0
  2. package/dist/{src/@types → @types}/model-names.js.map +1 -1
  3. package/dist/index.d.ts +11 -3
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +11 -25
  6. package/dist/index.js.map +1 -1
  7. package/dist/langchain/messages.d.ts.map +1 -0
  8. package/dist/langchain/messages.js.map +1 -0
  9. package/dist/langchain/models.d.ts.map +1 -0
  10. package/dist/{src/langchain → langchain}/models.js +4 -5
  11. package/dist/langchain/models.js.map +1 -0
  12. package/dist/langchain/tools.d.ts.map +1 -0
  13. package/dist/langchain/tools.js.map +1 -0
  14. package/package.json +3 -4
  15. package/{index.ts → src/index.ts} +28 -37
  16. package/src/langchain/models.ts +8 -5
  17. package/tsconfig.json +7 -4
  18. package/.env.example +0 -2
  19. package/dist/src/@types/model-names.d.ts.map +0 -1
  20. package/dist/src/core/env.d.ts +0 -6
  21. package/dist/src/core/env.d.ts.map +0 -1
  22. package/dist/src/core/env.js +0 -17
  23. package/dist/src/core/env.js.map +0 -1
  24. package/dist/src/langchain/messages.d.ts.map +0 -1
  25. package/dist/src/langchain/messages.js.map +0 -1
  26. package/dist/src/langchain/models.d.ts.map +0 -1
  27. package/dist/src/langchain/models.js.map +0 -1
  28. package/dist/src/langchain/tools.d.ts.map +0 -1
  29. package/dist/src/langchain/tools.js.map +0 -1
  30. package/src/core/env.ts +0 -13
  31. /package/dist/{src/@types → @types}/model-names.d.ts +0 -0
  32. /package/dist/{src/@types → @types}/model-names.js +0 -0
  33. /package/dist/{src/langchain → langchain}/messages.d.ts +0 -0
  34. /package/dist/{src/langchain → langchain}/messages.js +0 -0
  35. /package/dist/{src/langchain → langchain}/models.d.ts +0 -0
  36. /package/dist/{src/langchain → langchain}/tools.d.ts +0 -0
  37. /package/dist/{src/langchain → langchain}/tools.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-names.d.ts","sourceRoot":"","sources":["../../src/@types/model-names.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GACd,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,KAAK,YAAY,GACb,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-names.js","sourceRoot":"","sources":["../../../src/@types/model-names.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"model-names.js","sourceRoot":"","sources":["../../src/@types/model-names.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
- import { AIModelNames } from "./src/@types/model-names";
1
+ import { LangchainModels } from "./langchain/models";
2
+ import { AIModelNames } from "./@types/model-names";
2
3
  import z from "zod";
3
- import { MessageInput } from "./src/langchain/messages";
4
+ import { MessageInput } from "./langchain/messages";
4
5
  import { AgentMiddleware, BaseMessage } from "langchain";
5
6
  import { ClientTool, ServerTool } from "@langchain/core/tools";
7
+ import { LangchainMessages } from "./langchain/messages";
8
+ type LangchainConstructor = {
9
+ googleGeminiToken?: string;
10
+ openAIApiKey?: string;
11
+ };
6
12
  export type CallParams = {
7
13
  aiModel: AIModelNames;
8
14
  messages: MessageInput[];
@@ -22,11 +28,13 @@ export type CallStructuredOutputReturn<T> = Promise<{
22
28
  response: z.infer<T>;
23
29
  }>;
24
30
  export declare class Langchain {
25
- constructor();
31
+ private tokens;
32
+ constructor(tokens: LangchainConstructor);
26
33
  call(params: CallParams): CallReturn;
27
34
  callStructuredOutput<T extends z.ZodSchema>(params: CallStructuredOutputParams<T>): CallStructuredOutputReturn<typeof params.outputSchema>;
28
35
  private getModel;
29
36
  private standardAgent;
30
37
  private standardMiddlewares;
31
38
  }
39
+ export { LangchainModels, LangchainMessages };
32
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAqB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,WAAW,EAIZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IAAI,UAAU,GAAG;IAC3E,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,OAAO,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC;AAEH,qBAAa,SAAS;;IAGd,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAepC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAC9C,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,0BAA0B,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC;IAiBzD,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,mBAAmB;CAU5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,eAAe,EACf,WAAW,EAIZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IAAI,UAAU,GAAG;IAC3E,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,OAAO,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC;AAEH,qBAAa,SAAS;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAE1C,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAepC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAC9C,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,0BAA0B,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC;IAiBzD,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,mBAAmB;CAU5B;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Langchain = void 0;
7
- const models_1 = require("./src/langchain/models");
8
- const zod_1 = __importDefault(require("zod"));
9
- const messages_1 = require("./src/langchain/messages");
3
+ exports.LangchainMessages = exports.LangchainModels = exports.Langchain = void 0;
4
+ const models_1 = require("./langchain/models");
5
+ Object.defineProperty(exports, "LangchainModels", { enumerable: true, get: function () { return models_1.LangchainModels; } });
10
6
  const langchain_1 = require("langchain");
7
+ const messages_1 = require("./langchain/messages");
8
+ Object.defineProperty(exports, "LangchainMessages", { enumerable: true, get: function () { return messages_1.LangchainMessages; } });
11
9
  class Langchain {
12
- constructor() { }
10
+ tokens;
11
+ constructor(tokens) {
12
+ this.tokens = tokens;
13
+ }
13
14
  async call(params) {
14
15
  const { messages } = params;
15
16
  const agent = (0, langchain_1.createAgent)({
@@ -37,11 +38,13 @@ class Langchain {
37
38
  if (aiModel.startsWith("gpt")) {
38
39
  return models_1.LangchainModels.gpt({
39
40
  modelName: aiModel,
41
+ apiKey: this.tokens.openAIApiKey,
40
42
  });
41
43
  }
42
44
  if (aiModel.startsWith("gemini")) {
43
45
  return models_1.LangchainModels.gemini({
44
46
  model: aiModel,
47
+ apiKey: this.tokens.googleGeminiToken ?? "",
45
48
  });
46
49
  }
47
50
  throw new Error("Model not supported");
@@ -72,21 +75,4 @@ class Langchain {
72
75
  }
73
76
  }
74
77
  exports.Langchain = Langchain;
75
- const example = async () => {
76
- const langchain = new Langchain();
77
- const outputSchema = zod_1.default.object({
78
- answer: zod_1.default.string(),
79
- });
80
- const messages = [
81
- messages_1.LangchainMessages.system("You are a helpful assistant."),
82
- messages_1.LangchainMessages.human("What is the capital of France?"),
83
- ];
84
- const { response } = await langchain.callStructuredOutput({
85
- aiModel: "gemini-2.5-flash",
86
- outputSchema,
87
- messages,
88
- });
89
- console.log({ response });
90
- };
91
- example();
92
78
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqD;AA4H5C,gGA5HA,wBAAe,OA4HA;AAxHxB,yCAMmB;AAEnB,mDAAyD;AAgH/B,kGAhHjB,4BAAiB,OAgHiB;AAnF3C,MAAa,SAAS;IACA;IAApB,YAAoB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAEpD,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAE5B,MAAM,KAAK,GAAG,IAAA,uBAAW,EAAC;YACxB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SAC9B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAElD,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,+BAA+B;YACnE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,MAAqC;QAErC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAE1C,MAAM,KAAK,GAAG,IAAA,uBAAW,EAAC;YACxB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC7B,cAAc,EAAE,YAAmB;SACpC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAClC,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAExE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IACtC,CAAC;IAEO,QAAQ,CAAC,OAAqB;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,wBAAe,CAAC,GAAG,CAAC;gBACzB,SAAS,EAAE,OAAO;gBAClB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;aACjC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,wBAAe,CAAC,MAAM,CAAC;gBAC5B,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,MAAkB;QACtC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO;YACL,KAAK;YACL,YAAY,EAAE,YAAY,IAAI,EAAE;YAChC,UAAU,EAAE;gBACV,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;gBACvC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;aACtB;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAClB,cAAc,EAAE,SAAgB;SACjC,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,UAAkB;QAC5C,OAAO;YACL,IAAA,gCAAoB,EAAC;gBACnB,UAAU;gBACV,aAAa,EAAE,GAAG;gBAClB,cAAc,EAAE,IAAI;aACrB,CAAC;YACF,IAAA,mCAAuB,EAAC,kBAAkB,EAAE,aAAa,CAAC;SAC3D,CAAC;IACJ,CAAC;CACF;AAjFD,8BAiFC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/langchain/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAG7C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAG3C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;CAGtC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/langchain/messages.ts"],"names":[],"mappings":";;;AAAA,yCAAmE;AAInE,MAAa,iBAAiB;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,OAAO,IAAI,yBAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,IAAI,wBAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,EAAE,CAAC,OAAe;QACvB,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAVD,8CAUC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/langchain/models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qBAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB;IAUnC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B;CAWlD"}
@@ -3,21 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LangchainModels = void 0;
4
4
  const google_genai_1 = require("@langchain/google-genai");
5
5
  const openai_1 = require("@langchain/openai");
6
- const env_1 = require("../core/env");
7
6
  class LangchainModels {
8
7
  static gpt(params) {
9
- console.log({ env: env_1.env });
8
+ if (!params.apiKey)
9
+ throw new Error("OpenAI API key is not passed in the model parameters");
10
10
  return new openai_1.ChatOpenAI({
11
- temperature: 0,
12
11
  maxTokens: 2048,
13
- apiKey: env_1.env.OPENAI_API_KEY,
14
12
  ...params,
15
13
  });
16
14
  }
17
15
  static gemini(params) {
16
+ if (!params.apiKey)
17
+ throw new Error("Google Gemini API key is not passed in the model parameters");
18
18
  return new google_genai_1.ChatGoogleGenerativeAI({
19
19
  maxOutputTokens: 2048,
20
- apiKey: env_1.env.GOOGLE_GENAI_API_KEY,
21
20
  ...params,
22
21
  });
23
22
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/langchain/models.ts"],"names":[],"mappings":";;;AAAA,0DAGiC;AACjC,8CAAiE;AAEjE,MAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,MAAwB;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM;YAChB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAE1E,OAAO,IAAI,mBAAU,CAAC;YACpB,SAAS,EAAE,IAAI;YACf,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAmC;QAC/C,IAAI,CAAC,MAAM,CAAC,MAAM;YAChB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QAEJ,OAAO,IAAI,qCAAsB,CAAC;YAChC,eAAe,EAAE,IAAI;YACrB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;CACF;AAtBD,0CAsBC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/langchain/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;CACrB,CAAC;AAEF,qBAAa,cAAc;IACzB,UAAU,CAAC,MAAM,EAAE,gBAAgB;CAUpC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/langchain/tools.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAUjC,MAAa,cAAc;IACzB,UAAU,CAAC,MAAwB;QACjC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAE7C,OAAO,IAAA,gBAAI,EAAC,YAAY,EAAE;YACxB,IAAI;YACJ,WAAW;YACX,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;AAXD,wCAWC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luanpoppe/ai",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [],
@@ -10,14 +10,13 @@
10
10
  "@langchain/core": "^1.1.8",
11
11
  "@langchain/google-genai": "^2.1.3",
12
12
  "@langchain/openai": "^1.2.0",
13
- "dotenv": "^17.2.3",
14
13
  "langchain": "^1.2.3",
15
- "typescript": "^5.9.3",
16
14
  "zod": "^4.2.1"
17
15
  },
18
16
  "devDependencies": {
19
17
  "@types/node": "^25.0.3",
20
- "tsx": "^4.21.0"
18
+ "tsx": "^4.21.0",
19
+ "typescript": "^5.9.3"
21
20
  },
22
21
  "scripts": {
23
22
  "build": "tsc"
@@ -1,7 +1,7 @@
1
- import { LangchainModels } from "./src/langchain/models";
2
- import { AIModelNames } from "./src/@types/model-names";
1
+ import { LangchainModels } from "./langchain/models";
2
+ import { AIModelNames } from "./@types/model-names";
3
3
  import z from "zod";
4
- import { LangchainMessages, MessageInput } from "./src/langchain/messages";
4
+ import { MessageInput } from "./langchain/messages";
5
5
  import {
6
6
  AgentMiddleware,
7
7
  BaseMessage,
@@ -10,8 +10,15 @@ import {
10
10
  modelRetryMiddleware,
11
11
  } from "langchain";
12
12
  import { ClientTool, ServerTool } from "@langchain/core/tools";
13
+ import { LangchainMessages } from "./langchain/messages";
14
+ import { LangchainTools } from "./langchain/tools";
13
15
 
14
- export type CallParams = {
16
+ type LangchainConstructor = {
17
+ googleGeminiToken?: string;
18
+ openAIApiKey?: string;
19
+ };
20
+
21
+ export type LangchainCallParams = {
15
22
  aiModel: AIModelNames;
16
23
  messages: MessageInput[];
17
24
  systemPrompt?: string;
@@ -20,23 +27,24 @@ export type CallParams = {
20
27
  tools?: (ServerTool | ClientTool)[];
21
28
  };
22
29
 
23
- export type CallReturn = Promise<{
30
+ export type LangchainCallReturn = Promise<{
24
31
  text: string;
25
32
  messages: BaseMessage[];
26
33
  }>;
27
34
 
28
- export type CallStructuredOutputParams<T extends z.ZodSchema> = CallParams & {
29
- outputSchema: T;
30
- };
35
+ export type LangchainCallStructuredOutputParams<T extends z.ZodSchema> =
36
+ LangchainCallParams & {
37
+ outputSchema: T;
38
+ };
31
39
 
32
- export type CallStructuredOutputReturn<T> = Promise<{
40
+ export type LangchainCallStructuredOutputReturn<T> = Promise<{
33
41
  response: z.infer<T>;
34
42
  }>;
35
43
 
36
44
  export class Langchain {
37
- constructor() {}
45
+ constructor(private tokens: LangchainConstructor) {}
38
46
 
39
- async call(params: CallParams): CallReturn {
47
+ async call(params: LangchainCallParams): LangchainCallReturn {
40
48
  const { messages } = params;
41
49
 
42
50
  const agent = createAgent({
@@ -46,14 +54,14 @@ export class Langchain {
46
54
  const response = await agent.invoke({ messages });
47
55
 
48
56
  return {
49
- text: response.messages[0]?.text ?? "Empty response from the model",
57
+ text: response.messages.at(-1)?.text ?? "Empty response from the model",
50
58
  messages: response.messages,
51
59
  };
52
60
  }
53
61
 
54
62
  async callStructuredOutput<T extends z.ZodSchema>(
55
- params: CallStructuredOutputParams<T>
56
- ): CallStructuredOutputReturn<typeof params.outputSchema> {
63
+ params: LangchainCallStructuredOutputParams<T>
64
+ ): LangchainCallStructuredOutputReturn<typeof params.outputSchema> {
57
65
  const { outputSchema, messages } = params;
58
66
 
59
67
  const agent = createAgent({
@@ -74,19 +82,23 @@ export class Langchain {
74
82
  if (aiModel.startsWith("gpt")) {
75
83
  return LangchainModels.gpt({
76
84
  modelName: aiModel,
85
+ apiKey: this.tokens.openAIApiKey,
77
86
  });
78
87
  }
79
88
 
80
89
  if (aiModel.startsWith("gemini")) {
81
90
  return LangchainModels.gemini({
82
91
  model: aiModel,
92
+ apiKey: this.tokens.googleGeminiToken ?? "",
83
93
  });
84
94
  }
85
95
 
86
96
  throw new Error("Model not supported");
87
97
  }
88
98
 
89
- private standardAgent(params: CallParams): Parameters<typeof createAgent>[0] {
99
+ private standardAgent(
100
+ params: LangchainCallParams
101
+ ): Parameters<typeof createAgent>[0] {
90
102
  const { aiModel, systemPrompt, maxRetries = 3, middleware, tools } = params;
91
103
 
92
104
  const model = this.getModel(aiModel);
@@ -114,25 +126,4 @@ export class Langchain {
114
126
  }
115
127
  }
116
128
 
117
- const example = async () => {
118
- const langchain = new Langchain();
119
-
120
- const outputSchema = z.object({
121
- answer: z.string(),
122
- });
123
-
124
- const messages = [
125
- LangchainMessages.system("You are a helpful assistant."),
126
- LangchainMessages.human("What is the capital of France?"),
127
- ];
128
-
129
- const { response } = await langchain.callStructuredOutput({
130
- aiModel: "gemini-2.5-flash",
131
- outputSchema,
132
- messages,
133
- });
134
-
135
- console.log({ response });
136
- };
137
-
138
- example();
129
+ export { LangchainModels, LangchainMessages, LangchainTools };
@@ -3,23 +3,26 @@ import {
3
3
  GoogleGenerativeAIChatInput,
4
4
  } from "@langchain/google-genai";
5
5
  import { ChatOpenAI, ChatOpenAIFields } from "@langchain/openai";
6
- import { env } from "../core/env";
7
6
 
8
7
  export class LangchainModels {
9
8
  static gpt(params: ChatOpenAIFields) {
10
- console.log({ env });
9
+ if (!params.apiKey)
10
+ throw new Error("OpenAI API key is not passed in the model parameters");
11
+
11
12
  return new ChatOpenAI({
12
- temperature: 0,
13
13
  maxTokens: 2048,
14
- apiKey: env.OPENAI_API_KEY,
15
14
  ...params,
16
15
  });
17
16
  }
18
17
 
19
18
  static gemini(params: GoogleGenerativeAIChatInput) {
19
+ if (!params.apiKey)
20
+ throw new Error(
21
+ "Google Gemini API key is not passed in the model parameters"
22
+ );
23
+
20
24
  return new ChatGoogleGenerativeAI({
21
25
  maxOutputTokens: 2048,
22
- apiKey: env.GOOGLE_GENAI_API_KEY,
23
26
  ...params,
24
27
  });
25
28
  }
package/tsconfig.json CHANGED
@@ -2,14 +2,14 @@
2
2
  // Visit https://aka.ms/tsconfig to read more about this file
3
3
  "compilerOptions": {
4
4
  // File Layout
5
- // "rootDir": "./src",
6
- // "outDir": "./dist",
5
+ "rootDir": "./src",
6
+ "outDir": "./dist",
7
7
 
8
8
  // Environment Settings
9
9
  // See also https://aka.ms/tsconfig/module
10
10
  "module": "nodenext",
11
11
  "target": "esnext",
12
- "types": ["@types/node"],
12
+ "types": ["node"],
13
13
  // For nodejs:
14
14
  // "lib": ["esnext"],
15
15
  // "types": ["node"],
@@ -39,5 +39,8 @@
39
39
  "noUncheckedSideEffectImports": true,
40
40
  "moduleDetection": "force",
41
41
  "skipLibCheck": true
42
- }
42
+ },
43
+
44
+ "include": ["src"],
45
+ "exclude": ["node_modules", "dist"]
43
46
  }
package/.env.example DELETED
@@ -1,2 +0,0 @@
1
- OPENAI_API_KEY="..."
2
- GOOGLE_GENAI_API_KEY="..."
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-names.d.ts","sourceRoot":"","sources":["../../../src/@types/model-names.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GACd,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,KAAK,YAAY,GACb,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC"}
@@ -1,6 +0,0 @@
1
- import "dotenv/config";
2
- export declare const env: {
3
- OPENAI_API_KEY: string;
4
- GOOGLE_GENAI_API_KEY: string;
5
- };
6
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/core/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAYvB,eAAO,MAAM,GAAG;;;CAAO,CAAC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.env = void 0;
7
- require("dotenv/config");
8
- const zod_1 = __importDefault(require("zod"));
9
- const envSchema = zod_1.default.object({
10
- OPENAI_API_KEY: zod_1.default.string().optional().default(""),
11
- GOOGLE_GENAI_API_KEY: zod_1.default.string().optional().default(""),
12
- });
13
- const { error, data } = envSchema.safeParse(process.env);
14
- if (error)
15
- throw new Error(`Invalid environment variables:\n${error.message}`);
16
- exports.env = data;
17
- //# sourceMappingURL=env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/core/env.ts"],"names":[],"mappings":";;;;;;AAAA,yBAAuB;AACvB,8CAAoB;AAEpB,MAAM,SAAS,GAAG,aAAC,CAAC,MAAM,CAAC;IACzB,cAAc,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,oBAAoB,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACxD,CAAC,CAAC;AAEH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzD,IAAI,KAAK;IAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAElE,QAAA,GAAG,GAAG,IAAI,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/langchain/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAG7C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAG3C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;CAGtC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/langchain/messages.ts"],"names":[],"mappings":";;;AAAA,yCAAmE;AAInE,MAAa,iBAAiB;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,OAAO,IAAI,yBAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,IAAI,wBAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,EAAE,CAAC,OAAe;QACvB,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAVD,8CAUC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/langchain/models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,qBAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB;IAUnC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B;CAOlD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/langchain/models.ts"],"names":[],"mappings":";;;AAAA,0DAGiC;AACjC,8CAAiE;AACjE,qCAAkC;AAElC,MAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,MAAwB;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAH,SAAG,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,mBAAU,CAAC;YACpB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,SAAG,CAAC,cAAc;YAC1B,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAmC;QAC/C,OAAO,IAAI,qCAAsB,CAAC;YAChC,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,SAAG,CAAC,oBAAoB;YAChC,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;CACF;AAlBD,0CAkBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/langchain/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;CACrB,CAAC;AAEF,qBAAa,cAAc;IACzB,UAAU,CAAC,MAAM,EAAE,gBAAgB;CAUpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/langchain/tools.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAUjC,MAAa,cAAc;IACzB,UAAU,CAAC,MAAwB;QACjC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAE7C,OAAO,IAAA,gBAAI,EAAC,YAAY,EAAE;YACxB,IAAI;YACJ,WAAW;YACX,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;AAXD,wCAWC"}
package/src/core/env.ts DELETED
@@ -1,13 +0,0 @@
1
- import "dotenv/config";
2
- import z from "zod";
3
-
4
- const envSchema = z.object({
5
- OPENAI_API_KEY: z.string().optional().default(""),
6
- GOOGLE_GENAI_API_KEY: z.string().optional().default(""),
7
- });
8
-
9
- const { error, data } = envSchema.safeParse(process.env);
10
-
11
- if (error) throw new Error(`Invalid environment variables:\n${error.message}`);
12
-
13
- export const env = data;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes