@delofarag/ai-utils 1.4.3 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +354 -216
- package/dist/heart/agent.d.ts +1 -1
- package/dist/heart/agent.d.ts.map +1 -1
- package/dist/heart/agent.js +3 -8
- package/dist/heart/agent.js.map +1 -1
- package/dist/heart/chain.d.ts +1 -1
- package/dist/heart/chain.d.ts.map +1 -1
- package/dist/heart/chain.js +4 -4
- package/dist/heart/chain.js.map +1 -1
- package/dist/heart/chatbot.d.ts +1 -1
- package/dist/heart/memorychain.d.ts +2 -2
- package/dist/heart/memorychain.js +6 -6
- package/dist/heart/memorychain.js.map +1 -1
- package/dist/heart/tools/zodios/ZodiosToolRegistry.d.ts +1 -1
- package/dist/heart/tools/zodios/ZodiosToolRegistry.d.ts.map +1 -1
- package/dist/helpers/chatbot.d.ts +33 -0
- package/dist/helpers/chatbot.d.ts.map +1 -0
- package/dist/helpers/chatbot.js +72 -0
- package/dist/helpers/chatbot.js.map +1 -0
- package/dist/helpers/helpers.d.ts +25 -0
- package/dist/helpers/helpers.d.ts.map +1 -0
- package/dist/helpers/helpers.js +43 -0
- package/dist/helpers/helpers.js.map +1 -0
- package/dist/helpers/llms.d.ts +92 -0
- package/dist/helpers/llms.d.ts.map +1 -0
- package/dist/helpers/llms.js +49 -0
- package/dist/helpers/llms.js.map +1 -0
- package/dist/helpers/memory.d.ts +91 -0
- package/dist/helpers/memory.d.ts.map +1 -0
- package/dist/helpers/memory.js +351 -0
- package/dist/helpers/memory.js.map +1 -0
- package/dist/helpers/rag.d.ts +42 -0
- package/dist/helpers/rag.d.ts.map +1 -0
- package/dist/helpers/rag.js +66 -0
- package/dist/helpers/rag.js.map +1 -0
- package/dist/helpers.d.ts +3 -3
- package/dist/index.d.ts +10 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/magic-funcs/answerers/ask.d.ts +18 -2
- package/dist/magic-funcs/answerers/ask.d.ts.map +1 -1
- package/dist/magic-funcs/answerers/ask.js +20 -9
- package/dist/magic-funcs/answerers/ask.js.map +1 -1
- package/dist/magic-funcs/answerers/websearch.d.ts +15 -0
- package/dist/magic-funcs/answerers/websearch.d.ts.map +1 -1
- package/dist/magic-funcs/answerers/websearch.js +15 -0
- package/dist/magic-funcs/answerers/websearch.js.map +1 -1
- package/dist/magic-funcs/evaluators/classify.d.ts +20 -1
- package/dist/magic-funcs/evaluators/classify.d.ts.map +1 -1
- package/dist/magic-funcs/evaluators/classify.js +22 -3
- package/dist/magic-funcs/evaluators/classify.js.map +1 -1
- package/dist/magic-funcs/evaluators/decide.d.ts +18 -0
- package/dist/magic-funcs/evaluators/decide.d.ts.map +1 -1
- package/dist/magic-funcs/evaluators/decide.js +21 -3
- package/dist/magic-funcs/evaluators/decide.js.map +1 -1
- package/dist/magic-funcs/optimizers/promptify.d.ts +18 -0
- package/dist/magic-funcs/optimizers/promptify.d.ts.map +1 -1
- package/dist/magic-funcs/optimizers/promptify.js +21 -3
- package/dist/magic-funcs/optimizers/promptify.js.map +1 -1
- package/dist/magic-funcs/optimizers/ragify.d.ts +16 -0
- package/dist/magic-funcs/optimizers/ragify.d.ts.map +1 -1
- package/dist/magic-funcs/optimizers/ragify.js +19 -3
- package/dist/magic-funcs/optimizers/ragify.js.map +1 -1
- package/dist/magic-funcs/parsers/extract.d.ts +23 -0
- package/dist/magic-funcs/parsers/extract.d.ts.map +1 -1
- package/dist/magic-funcs/parsers/extract.js +26 -3
- package/dist/magic-funcs/parsers/extract.js.map +1 -1
- package/dist/magic-funcs/parsers/rewrite.d.ts +19 -0
- package/dist/magic-funcs/parsers/rewrite.d.ts.map +1 -1
- package/dist/magic-funcs/parsers/rewrite.js +22 -2
- package/dist/magic-funcs/parsers/rewrite.js.map +1 -1
- package/dist/magic-funcs/parsers/structure.d.ts +22 -0
- package/dist/magic-funcs/parsers/structure.d.ts.map +1 -1
- package/dist/magic-funcs/parsers/structure.js +27 -4
- package/dist/magic-funcs/parsers/structure.js.map +1 -1
- package/dist/magic-funcs/parsers/summarize.d.ts +20 -0
- package/dist/magic-funcs/parsers/summarize.d.ts.map +1 -1
- package/dist/magic-funcs/parsers/summarize.js +23 -3
- package/dist/magic-funcs/parsers/summarize.js.map +1 -1
- package/dist/memory.d.ts +1 -1
- package/dist/modalities/image-gen/generateImages.d.ts +56 -0
- package/dist/modalities/image-gen/generateImages.d.ts.map +1 -0
- package/dist/modalities/image-gen/generateImages.js +66 -0
- package/dist/modalities/image-gen/generateImages.js.map +1 -0
- package/dist/modalities/image-gen/helpers.d.ts +15 -0
- package/dist/modalities/image-gen/helpers.d.ts.map +1 -0
- package/dist/modalities/image-gen/helpers.js +17 -0
- package/dist/modalities/image-gen/helpers.js.map +1 -0
- package/dist/modalities/openrouter.d.ts +11 -0
- package/dist/modalities/openrouter.d.ts.map +1 -0
- package/dist/modalities/openrouter.js +39 -0
- package/dist/modalities/openrouter.js.map +1 -0
- package/dist/modalities/speech/VoiceEngine.d.ts +3 -0
- package/dist/modalities/speech/VoiceEngine.d.ts.map +1 -0
- package/dist/modalities/speech/VoiceEngine.js +3 -0
- package/dist/modalities/speech/VoiceEngine.js.map +1 -0
- package/dist/modalities/speech/stt/helpers.d.ts +3 -0
- package/dist/modalities/speech/stt/helpers.d.ts.map +1 -0
- package/dist/modalities/speech/stt/helpers.js +28 -0
- package/dist/modalities/speech/stt/helpers.js.map +1 -0
- package/dist/modalities/speech/stt/stt.d.ts +113 -0
- package/dist/modalities/speech/stt/stt.d.ts.map +1 -0
- package/dist/modalities/speech/stt/stt.js +177 -0
- package/dist/modalities/speech/stt/stt.js.map +1 -0
- package/dist/modalities/speech/tts/helpers.d.ts +12 -0
- package/dist/modalities/speech/tts/helpers.d.ts.map +1 -0
- package/dist/modalities/speech/tts/helpers.js +10 -0
- package/dist/modalities/speech/tts/helpers.js.map +1 -0
- package/dist/modalities/speech/tts/tts.d.ts +115 -0
- package/dist/modalities/speech/tts/tts.d.ts.map +1 -0
- package/dist/modalities/speech/tts/tts.js +142 -0
- package/dist/modalities/speech/tts/tts.js.map +1 -0
- package/dist/modalities/vision/helpers.d.ts +3 -0
- package/dist/modalities/vision/helpers.d.ts.map +1 -0
- package/dist/modalities/vision/helpers.js +7 -0
- package/dist/modalities/vision/helpers.js.map +1 -0
- package/dist/modalities/vision/vision.d.ts +55 -0
- package/dist/modalities/vision/vision.d.ts.map +1 -0
- package/dist/modalities/vision/vision.js +71 -0
- package/dist/modalities/vision/vision.js.map +1 -0
- package/package.json +7 -7
package/dist/helpers.d.ts
CHANGED
|
@@ -14,15 +14,15 @@ export type ChatGroqModel = AutoComplete<"groq/compound" | "groq/compound-mini"
|
|
|
14
14
|
export type OpenRouterModel = AutoComplete<"anthropic/claude-haiku-4.5" | "anthropic/claude-opus-4" | "anthropic/claude-opus-4.1" | "anthropic/claude-opus-4.5" | "anthropic/claude-opus-4.6" | "anthropic/claude-opus-4.6-fast" | "anthropic/claude-opus-4.7" | "anthropic/claude-sonnet-4" | "anthropic/claude-sonnet-4.5" | "anthropic/claude-sonnet-4.6" | "arcee-ai/trinity-large-preview:free" | "arcee-ai/trinity-large-thinking" | "arcee-ai/trinity-mini" | "bytedance-seed/seed-2.0-lite" | "bytedance-seed/seed-2.0-mini" | "deepseek/deepseek-r1" | "deepseek/deepseek-r1-0528" | "deepseek/deepseek-r1-distill-llama-70b" | "deepseek/deepseek-r1-distill-qwen-32b" | "deepseek/deepseek-v3.1-terminus" | "deepseek/deepseek-v3.2" | "deepseek/deepseek-v3.2-exp" | "deepseek/deepseek-v3.2-speciale" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-image" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-lite-preview-09-2025" | "google/gemini-2.5-pro" | "google/gemini-2.5-pro-preview" | "google/gemini-2.5-pro-preview-05-06" | "google/gemini-3-flash-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3.1-flash-image-preview" | "google/gemini-3.1-flash-lite-preview" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-pro-preview-customtools" | "google/gemma-4-26b-a4b-it" | "google/gemma-4-26b-a4b-it:free" | "google/gemma-4-31b-it" | "google/gemma-4-31b-it:free" | "inception/mercury-2" | "liquid/lfm-2-24b-a2b" | "liquid/lfm-2.5-1.2b-instruct:free" | "liquid/lfm-2.5-1.2b-thinking:free" | "meta-llama/llama-3.3-70b-instruct" | "meta-llama/llama-3.3-70b-instruct:free" | "meta-llama/llama-4-maverick" | "meta-llama/llama-4-scout" | "meta-llama/llama-guard-4-12b" | "minimax/minimax-m2" | "minimax/minimax-m2-her" | "minimax/minimax-m2.1" | "minimax/minimax-m2.5" | "minimax/minimax-m2.5:free" | "minimax/minimax-m2.7" | "mistralai/devstral-2512" | "mistralai/devstral-medium" | "mistralai/devstral-small" | "mistralai/mistral-large-2512" | "mistralai/mistral-small-2603" | "moonshotai/kimi-k2" | "moonshotai/kimi-k2-0905" | "moonshotai/kimi-k2-thinking" | "moonshotai/kimi-k2.5" | "nvidia/nemotron-3-nano-30b-a3b" | "nvidia/nemotron-3-nano-30b-a3b:free" | "nvidia/nemotron-3-super-120b-a12b" | "nvidia/nemotron-3-super-120b-a12b:free" | "openai/gpt-4.1" | "openai/gpt-4.1-mini" | "openai/gpt-4.1-nano" | "openai/gpt-5" | "openai/gpt-5-chat" | "openai/gpt-5-codex" | "openai/gpt-5-image" | "openai/gpt-5-image-mini" | "openai/gpt-5-mini" | "openai/gpt-5-nano" | "openai/gpt-5-pro" | "openai/gpt-5.1" | "openai/gpt-5.1-chat" | "openai/gpt-5.1-codex" | "openai/gpt-5.1-codex-max" | "openai/gpt-5.1-codex-mini" | "openai/gpt-5.2" | "openai/gpt-5.2-chat" | "openai/gpt-5.2-codex" | "openai/gpt-5.2-pro" | "openai/gpt-5.3-chat" | "openai/gpt-5.3-codex" | "openai/gpt-5.4" | "openai/gpt-5.4-mini" | "openai/gpt-5.4-nano" | "openai/gpt-5.4-pro" | "openai/gpt-oss-120b" | "openai/gpt-oss-120b:free" | "openai/gpt-oss-20b" | "openai/gpt-oss-20b:free" | "openai/gpt-oss-safeguard-20b" | "qwen/qwen3-coder" | "qwen/qwen3-coder-30b-a3b-instruct" | "qwen/qwen3-coder-flash" | "qwen/qwen3-coder-next" | "qwen/qwen3-coder-plus" | "qwen/qwen3-coder:free" | "qwen/qwen3-max" | "qwen/qwen3-max-thinking" | "qwen/qwen3.5-122b-a10b" | "qwen/qwen3.5-27b" | "qwen/qwen3.5-35b-a3b" | "qwen/qwen3.5-397b-a17b" | "qwen/qwen3.5-9b" | "qwen/qwen3.5-flash-02-23" | "qwen/qwen3.5-plus-02-15" | "qwen/qwen3.6-plus" | "rekaai/reka-edge" | "xiaomi/mimo-v2-flash" | "xiaomi/mimo-v2-omni" | "xiaomi/mimo-v2-pro" | "z-ai/glm-5" | "z-ai/glm-5-turbo" | "z-ai/glm-5.1" | "z-ai/glm-5v-turbo">;
|
|
15
15
|
export type LocalModel = AutoComplete<"llama3.2:3b">;
|
|
16
16
|
export type LLMConfig = {
|
|
17
|
-
|
|
17
|
+
provider: "chatgroq";
|
|
18
18
|
model?: ChatGroqModel;
|
|
19
19
|
apikey?: string;
|
|
20
20
|
} | {
|
|
21
|
-
|
|
21
|
+
provider: "openrouter";
|
|
22
22
|
model?: OpenRouterModel;
|
|
23
23
|
apikey?: string;
|
|
24
24
|
} | {
|
|
25
|
-
|
|
25
|
+
provider: "local";
|
|
26
26
|
model?: string;
|
|
27
27
|
};
|
|
28
28
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from "./helpers";
|
|
2
|
-
export * from "./memory";
|
|
3
|
-
export * from "./rag";
|
|
4
|
-
export { DynamicStructuredTool } from "./imports";
|
|
1
|
+
export * from "./helpers/helpers";
|
|
2
|
+
export * from "./helpers/memory";
|
|
3
|
+
export * from "./helpers/rag";
|
|
4
|
+
export { DynamicStructuredTool, MemorySaver } from "./imports";
|
|
5
5
|
export * from "./heart/agent";
|
|
6
6
|
export * from "./heart/chain";
|
|
7
7
|
export * from "./heart/memorychain";
|
|
@@ -10,16 +10,17 @@ export { tavilySearchTool, TavilySearch } from "./heart/tools/Tavily";
|
|
|
10
10
|
export * from "./heart/tools/RAGTool";
|
|
11
11
|
export * from "./heart/tools/zodios/CombinedRegistry";
|
|
12
12
|
export * from "./heart/tools/zodios/ZodiosToolRegistry";
|
|
13
|
-
export * from "./magic-funcs/answerers/ask";
|
|
14
|
-
export * from "./magic-funcs/answerers/websearch";
|
|
15
13
|
export * from "./magic-funcs/evaluators/classify";
|
|
16
14
|
export * from "./magic-funcs/evaluators/decide";
|
|
17
|
-
export * from "./magic-funcs/optimizers/promptify";
|
|
18
|
-
export * from "./magic-funcs/optimizers/ragify";
|
|
19
15
|
export * from "./magic-funcs/parsers/extract";
|
|
20
16
|
export * from "./magic-funcs/parsers/rewrite";
|
|
21
17
|
export * from "./magic-funcs/parsers/structure";
|
|
22
18
|
export * from "./magic-funcs/parsers/summarize";
|
|
23
19
|
export * from "./heart/tools/Tavily";
|
|
24
|
-
export * from "./chatbot";
|
|
20
|
+
export * from "./helpers/chatbot";
|
|
21
|
+
export * from "./helpers/llms";
|
|
22
|
+
export * from "./modalities/speech/stt/stt";
|
|
23
|
+
export * from "./modalities/speech/tts/tts";
|
|
24
|
+
export * from "./modalities/vision/vision";
|
|
25
|
+
export * from "./modalities/image-gen/generateImages";
|
|
25
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC9D,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACrE,cAAc,uBAAuB,CAAA;AACrC,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from "./helpers";
|
|
2
|
-
export * from "./memory";
|
|
3
|
-
export * from "./rag";
|
|
4
|
-
export { DynamicStructuredTool } from "./imports";
|
|
1
|
+
export * from "./helpers/helpers";
|
|
2
|
+
export * from "./helpers/memory";
|
|
3
|
+
export * from "./helpers/rag";
|
|
4
|
+
export { DynamicStructuredTool, MemorySaver } from "./imports";
|
|
5
5
|
export * from "./heart/agent";
|
|
6
6
|
export * from "./heart/chain";
|
|
7
7
|
export * from "./heart/memorychain";
|
|
@@ -10,16 +10,17 @@ export { tavilySearchTool, TavilySearch } from "./heart/tools/Tavily";
|
|
|
10
10
|
export * from "./heart/tools/RAGTool";
|
|
11
11
|
export * from "./heart/tools/zodios/CombinedRegistry";
|
|
12
12
|
export * from "./heart/tools/zodios/ZodiosToolRegistry";
|
|
13
|
-
export * from "./magic-funcs/answerers/ask";
|
|
14
|
-
export * from "./magic-funcs/answerers/websearch";
|
|
15
13
|
export * from "./magic-funcs/evaluators/classify";
|
|
16
14
|
export * from "./magic-funcs/evaluators/decide";
|
|
17
|
-
export * from "./magic-funcs/optimizers/promptify";
|
|
18
|
-
export * from "./magic-funcs/optimizers/ragify";
|
|
19
15
|
export * from "./magic-funcs/parsers/extract";
|
|
20
16
|
export * from "./magic-funcs/parsers/rewrite";
|
|
21
17
|
export * from "./magic-funcs/parsers/structure";
|
|
22
18
|
export * from "./magic-funcs/parsers/summarize";
|
|
23
19
|
export * from "./heart/tools/Tavily";
|
|
24
|
-
export * from "./chatbot";
|
|
20
|
+
export * from "./helpers/chatbot";
|
|
21
|
+
export * from "./helpers/llms";
|
|
22
|
+
export * from "./modalities/speech/stt/stt";
|
|
23
|
+
export * from "./modalities/speech/tts/tts";
|
|
24
|
+
export * from "./modalities/vision/vision";
|
|
25
|
+
export * from "./modalities/image-gen/generateImages";
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC9D,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACrE,cAAc,uBAAuB,CAAA;AACrC,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { BaseChatModel } from "../../imports";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Stellt eine einfache Frage an ein LLM und gibt eine Textantwort zurueck.
|
|
4
|
+
*
|
|
5
|
+
* Sinnvoll fuer schnelle Q&A-Use-Cases ohne zusaetzliche Struktur oder Tools.
|
|
6
|
+
*
|
|
7
|
+
* @param params.llm Optionales Chat-LLM. Default: `getLLM({ provider: "openrouter" })`.
|
|
8
|
+
* @param params.question Die Frage, die beantwortet werden soll.
|
|
9
|
+
* @returns Die Modellantwort als String.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const answer = await ask({
|
|
14
|
+
* question: "Was ist der Unterschied zwischen RAM und ROM?"
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function ask({ llm, question }: {
|
|
19
|
+
llm?: BaseChatModel;
|
|
4
20
|
question: string;
|
|
5
21
|
}): Promise<unknown>;
|
|
6
22
|
//# sourceMappingURL=ask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/ask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/ask.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA0C,MAAM,eAAe,CAAA;AAErF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,GAAG,CAAC,EACtB,GAAwC,EACxC,QAAQ,EACX,EAAE;IACC,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACnB,oBAOE"}
|
|
@@ -1,17 +1,28 @@
|
|
|
1
|
-
import { createSimpleChain
|
|
1
|
+
import { createSimpleChain } from "../../helpers/helpers";
|
|
2
|
+
import { getLLM } from "../../helpers/llms";
|
|
2
3
|
import { ChatPromptTemplate, StringOutputParser } from "../../imports";
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Stellt eine einfache Frage an ein LLM und gibt eine Textantwort zurueck.
|
|
6
|
+
*
|
|
7
|
+
* Sinnvoll fuer schnelle Q&A-Use-Cases ohne zusaetzliche Struktur oder Tools.
|
|
8
|
+
*
|
|
9
|
+
* @param params.llm Optionales Chat-LLM. Default: `getLLM({ provider: "openrouter" })`.
|
|
10
|
+
* @param params.question Die Frage, die beantwortet werden soll.
|
|
11
|
+
* @returns Die Modellantwort als String.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const answer = await ask({
|
|
16
|
+
* question: "Was ist der Unterschied zwischen RAM und ROM?"
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export async function ask({ llm = getLLM({ provider: "openrouter" }), question }) {
|
|
5
21
|
const prompt = ChatPromptTemplate.fromMessages([
|
|
6
22
|
["system", `Du bist ein hilfreicher Assistent.`],
|
|
7
23
|
["human", "{input}"]
|
|
8
24
|
]);
|
|
9
25
|
const chain = createSimpleChain(prompt, llm, new StringOutputParser());
|
|
10
|
-
|
|
11
|
-
return await chain.invoke({ input });
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return await chain.invoke({ input: input.question });
|
|
15
|
-
}
|
|
26
|
+
return await chain.invoke({ input: question });
|
|
16
27
|
}
|
|
17
28
|
//# sourceMappingURL=ask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAiB,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAErF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,EACtB,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EACxC,QAAQ,EAIX;IACG,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC;QAC7C,CAAC,QAAQ,EAAE,oCAAoC,CAAC;QAChD,CAAC,OAAO,EAAE,SAAS,CAAC;KACrB,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAA;IACtE,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fuehrt eine Websuche via Tavily aus und gibt die zusammengefasste Antwort zurueck.
|
|
3
|
+
*
|
|
4
|
+
* Die Query wird vorher in ein Tavily-Topic klassifiziert (`general`, `news`, `finance`),
|
|
5
|
+
* damit passend gesucht wird.
|
|
6
|
+
*
|
|
7
|
+
* @param query Suchanfrage als Freitext.
|
|
8
|
+
* @returns Tavily-Antworttext (falls vorhanden).
|
|
9
|
+
* @throws Wenn `TAVILY_API_KEY` nicht gesetzt ist.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const answer = await websearch("Aktuelle Nachrichten zu OpenAI in der EU")
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
1
16
|
export declare function websearch(query: string): Promise<string | undefined>;
|
|
2
17
|
//# sourceMappingURL=websearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/websearch.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,CAAC,KAAK,EAAC,MAAM,+BAczC"}
|
|
1
|
+
{"version":3,"file":"websearch.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/websearch.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAC,MAAM,+BAczC"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { classify } from "../evaluators/classify";
|
|
2
2
|
import { TavilySearch } from "../../heart/tools/Tavily";
|
|
3
|
+
/**
|
|
4
|
+
* Fuehrt eine Websuche via Tavily aus und gibt die zusammengefasste Antwort zurueck.
|
|
5
|
+
*
|
|
6
|
+
* Die Query wird vorher in ein Tavily-Topic klassifiziert (`general`, `news`, `finance`),
|
|
7
|
+
* damit passend gesucht wird.
|
|
8
|
+
*
|
|
9
|
+
* @param query Suchanfrage als Freitext.
|
|
10
|
+
* @returns Tavily-Antworttext (falls vorhanden).
|
|
11
|
+
* @throws Wenn `TAVILY_API_KEY` nicht gesetzt ist.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const answer = await websearch("Aktuelle Nachrichten zu OpenAI in der EU")
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
3
18
|
export async function websearch(query) {
|
|
4
19
|
if (!process.env.TAVILY_API_KEY)
|
|
5
20
|
throw new Error("TAVILY_API_KEY is not set for websearch() call");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websearch.js","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/websearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAY;IACxC,IAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACjG,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC;QAC3B,IAAI,EAAC,KAAK;QACV,OAAO,EAAC,CAAC,SAAS,EAAC,MAAM,EAAC,SAAS,CAAU;QAC7C,OAAO,EAAC,yIAAyI;KAClJ,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,UAAU,EAAC,EAAE;QACb,YAAY,EAAC,OAAO,CAAC,GAAG,CAAC,cAAe;QACxC,aAAa,EAAC,IAAI;QAClB,KAAK,EAAC,KAAK,CAAC,KAAK;KAClB,CAAC,CAAA;IACF,OAAO,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"websearch.js","sourceRoot":"","sources":["../../../src/magic-funcs/answerers/websearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAY;IACxC,IAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACjG,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC;QAC3B,IAAI,EAAC,KAAK;QACV,OAAO,EAAC,CAAC,SAAS,EAAC,MAAM,EAAC,SAAS,CAAU;QAC7C,OAAO,EAAC,yIAAyI;KAClJ,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,UAAU,EAAC,EAAE;QACb,YAAY,EAAC,OAAO,CAAC,GAAG,CAAC,cAAe;QACxC,aAAa,EAAC,IAAI;QAClB,KAAK,EAAC,KAAK,CAAC,KAAK;KAClB,CAAC,CAAA;IACF,OAAO,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC"}
|
|
@@ -13,7 +13,26 @@ declare function createClassificationSchema<T extends readonly [string, ...strin
|
|
|
13
13
|
confidence: z.ZodNumber;
|
|
14
14
|
reasoning: z.ZodString;
|
|
15
15
|
}> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Klassifiziert Input in genau eine vordefinierte Klasse und liefert Confidence + Begruendung.
|
|
18
|
+
*
|
|
19
|
+
* Sinnvoll fuer Routing, Labeling, Topic-Erkennung oder Vorentscheidungen in Flows.
|
|
20
|
+
*
|
|
21
|
+
* @param params.llm Optionales Chat-LLM.
|
|
22
|
+
* @param params.data Zu klassifizierender Input (String oder Objekt).
|
|
23
|
+
* @param params.classes Erlaubte Klassen als konstantes Tuple.
|
|
24
|
+
* @param params.context Optionaler Zusatzkontext fuer die Entscheidung.
|
|
25
|
+
* @returns Objekt mit `class`, `confidence` (0-100) und `reasoning`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const result = await classify({
|
|
30
|
+
* data: "Der Kunde moechte kuendigen und ist unzufrieden.",
|
|
31
|
+
* classes: ["support", "sales", "churn"] as const
|
|
32
|
+
* })
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function classify<const T extends readonly [string, ...string[]]>({ llm, data, classes, context }: {
|
|
17
36
|
llm?: BaseChatModel;
|
|
18
37
|
data: any;
|
|
19
38
|
classes: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/classify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/classify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAK1B,iBAAS,0BAA0B,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;;;;;;;;;;;;kEAUrF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAC7E,GAAiH,EACjH,IAAI,EACJ,OAAO,EACP,OAAO,EACR,EAAE;IACD,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAiDrE"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { createSimpleChain } from "../../helpers";
|
|
1
|
+
import { createSimpleChain } from "../../helpers/helpers";
|
|
2
2
|
import { ChatPromptTemplate } from "../../imports";
|
|
3
3
|
import { z } from "zod/v3";
|
|
4
|
-
import { getLLM } from "../../helpers";
|
|
5
4
|
import { StructuredOutputParser } from "../../imports";
|
|
5
|
+
import { getLLM } from "../../helpers/llms";
|
|
6
6
|
function createClassificationSchema(classes) {
|
|
7
7
|
return z.object({
|
|
8
8
|
class: z.enum(classes),
|
|
@@ -14,7 +14,26 @@ function createClassificationSchema(classes) {
|
|
|
14
14
|
.describe("Kurze Begründung basierend auf dem Input")
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Klassifiziert Input in genau eine vordefinierte Klasse und liefert Confidence + Begruendung.
|
|
19
|
+
*
|
|
20
|
+
* Sinnvoll fuer Routing, Labeling, Topic-Erkennung oder Vorentscheidungen in Flows.
|
|
21
|
+
*
|
|
22
|
+
* @param params.llm Optionales Chat-LLM.
|
|
23
|
+
* @param params.data Zu klassifizierender Input (String oder Objekt).
|
|
24
|
+
* @param params.classes Erlaubte Klassen als konstantes Tuple.
|
|
25
|
+
* @param params.context Optionaler Zusatzkontext fuer die Entscheidung.
|
|
26
|
+
* @returns Objekt mit `class`, `confidence` (0-100) und `reasoning`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const result = await classify({
|
|
31
|
+
* data: "Der Kunde moechte kuendigen und ist unzufrieden.",
|
|
32
|
+
* classes: ["support", "sales", "churn"] as const
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export async function classify({ llm = getLLM({ provider: "openrouter", apikey: process.env.OPENROUTER_API_KEY ?? "", model: "openai/gpt-5.4-mini" }), data, classes, context }) {
|
|
18
37
|
const inputString = typeof data === "string"
|
|
19
38
|
? data
|
|
20
39
|
: JSON.stringify(data, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,SAAS,0BAA0B,CAA2C,OAAU;IACpF,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;aACnB,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,CAAC,+BAA+B,CAAC;QAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB,QAAQ,CAAC,0CAA0C,CAAC;KACxD,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAiD,EAC7E,GAAG,GAAG,MAAM,CAAC,EAAC,QAAQ,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAC,CAAC,EACjH,IAAI,EACJ,OAAO,EACP,OAAO,EAMR;IAEC,MAAM,WAAW,GACf,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEnC,MAAM,MAAM,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,sBAAsB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAE3D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC;QACnD,CAAC,QAAQ,EAAE;;;;;UAKP,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;UAgBrC,OAAO,CAAC,CAAC,CAAC;;UAEV,OAAO;SACR,CAAC,CAAC,CAAC,EAAE;;;;SAIL,CAAC;QACJ,CAAC,OAAO,EAAE,SAAS,CAAC;KACrB,CAAC,CAAC,OAAO,CAAC;QACT,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,EAAE;KACpD,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;IAEzD,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC"}
|
|
@@ -13,6 +13,24 @@ declare const decideSchema: z.ZodObject<{
|
|
|
13
13
|
decision: "yes" | "no" | "unclear";
|
|
14
14
|
reason: string;
|
|
15
15
|
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Trifft eine strukturierte Ja/Nein/Unklar-Entscheidung fuer ein gegebenes Kriterium.
|
|
18
|
+
*
|
|
19
|
+
* Sinnvoll fuer Gate-Checks, Policy-Validierung oder automatische Freigabeentscheidungen.
|
|
20
|
+
*
|
|
21
|
+
* @param params.llm Optionales Chat-LLM.
|
|
22
|
+
* @param params.material Material/Datengrundlage fuer die Entscheidung.
|
|
23
|
+
* @param params.kriteria_to_decide Kriterium, nach dem entschieden werden soll.
|
|
24
|
+
* @returns Objekt mit `decision`, `reason` und `confidence`.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const result = await decide({
|
|
29
|
+
* material: "Der User hat AGB akzeptiert und Email bestaetigt.",
|
|
30
|
+
* kriteria_to_decide: "Ist der User onboarding-ready?"
|
|
31
|
+
* })
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
16
34
|
export declare function decide({ llm, material, kriteria_to_decide }: {
|
|
17
35
|
llm?: BaseChatModel;
|
|
18
36
|
material: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/decide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/decide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAO7C,QAAA,MAAM,YAAY;;;;;;;;;;;;EAad,CAAA;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,MAAM,CAAC,EAC3B,GAAiH,EACjH,QAAQ,EACR,kBAAkB,EACnB,EAAE;IACD,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,QAAQ,EAAE,GAAG,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;CAC3B,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC,CAoCxC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from "zod/v3";
|
|
2
2
|
import { ChatPromptTemplate } from "../../imports";
|
|
3
|
-
import { getLLM } from "../../helpers";
|
|
4
3
|
import { StructuredOutputParser } from "../../imports";
|
|
5
|
-
import { createSimpleChain } from "../../helpers";
|
|
4
|
+
import { createSimpleChain } from "../../helpers/helpers";
|
|
5
|
+
import { getLLM } from "../../helpers/llms";
|
|
6
6
|
const decideSchema = z.object({
|
|
7
7
|
decision: z.enum(["yes", "no", "unclear"])
|
|
8
8
|
.describe("Ergebnis der Entscheidung basierend auf dem Kriterium"),
|
|
@@ -15,7 +15,25 @@ const decideSchema = z.object({
|
|
|
15
15
|
"decision='unclear' → confidence=0. " +
|
|
16
16
|
"decision='yes' oder 'no' → confidence > 0")
|
|
17
17
|
});
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Trifft eine strukturierte Ja/Nein/Unklar-Entscheidung fuer ein gegebenes Kriterium.
|
|
20
|
+
*
|
|
21
|
+
* Sinnvoll fuer Gate-Checks, Policy-Validierung oder automatische Freigabeentscheidungen.
|
|
22
|
+
*
|
|
23
|
+
* @param params.llm Optionales Chat-LLM.
|
|
24
|
+
* @param params.material Material/Datengrundlage fuer die Entscheidung.
|
|
25
|
+
* @param params.kriteria_to_decide Kriterium, nach dem entschieden werden soll.
|
|
26
|
+
* @returns Objekt mit `decision`, `reason` und `confidence`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const result = await decide({
|
|
31
|
+
* material: "Der User hat AGB akzeptiert und Email bestaetigt.",
|
|
32
|
+
* kriteria_to_decide: "Ist der User onboarding-ready?"
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export async function decide({ llm = getLLM({ provider: "openrouter", apikey: process.env.OPENROUTER_API_KEY ?? "", model: "openai/gpt-5.4-mini" }), material, kriteria_to_decide }) {
|
|
19
37
|
const inputString = typeof material === "string"
|
|
20
38
|
? material
|
|
21
39
|
: JSON.stringify(material, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/decide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../../../src/magic-funcs/evaluators/decide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;SACvC,QAAQ,CAAC,uDAAuD,CAAC;IACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,uCAAuC;QACvC,qCAAqC;QACrC,2CAA2C,CAC5C;CACJ,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EAC3B,GAAG,GAAG,MAAM,CAAC,EAAC,QAAQ,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAC,CAAC,EACjH,QAAQ,EACR,kBAAkB,EAKnB;IAEC,MAAM,WAAW,GACf,OAAO,QAAQ,KAAK,QAAQ;QAC1B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEvC,MAAM,UAAU,GAAG,sBAAsB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC;QACnD,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;UAeP,kBAAkB;;;;SAInB,CAAC;QACJ,CAAC,OAAO,EAAE,SAAS,CAAC;KACrB,CAAC,CAAC,OAAO,CAAC;QACT,mBAAmB,EAAE,UAAU,CAAC,qBAAqB,EAAE;KACxD,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;IACzD,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import { BaseChatModel } from "../../imports";
|
|
2
|
+
/**
|
|
3
|
+
* Erzeugt aus einer Nutzeranforderung einen robusten System-Prompt fuer Agents.
|
|
4
|
+
*
|
|
5
|
+
* Sinnvoll wenn aus vagen Anforderungen ein klarer, wiederverwendbarer Prompt entstehen soll.
|
|
6
|
+
*
|
|
7
|
+
* @param params.llm Optionales Chat-LLM.
|
|
8
|
+
* @param params.request Urspruengliche Nutzeranfrage.
|
|
9
|
+
* @param params.agentRole Optionaler Rollen-Kontext fuer den Ziel-Agenten.
|
|
10
|
+
* @returns Finaler System-Prompt als String.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const systemPrompt = await promptify({
|
|
15
|
+
* request: "Baue einen Assistenten fuer technische Kundentickets.",
|
|
16
|
+
* agentRole: "Senior Support Engineer"
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
2
20
|
export declare function promptify({ llm, request, agentRole, }: {
|
|
3
21
|
llm?: BaseChatModel;
|
|
4
22
|
request: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptify.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/promptify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAK7C,wBAAsB,SAAS,CAAC,EAC5B,
|
|
1
|
+
{"version":3,"file":"promptify.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/promptify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAK7C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,SAAS,CAAC,EAC5B,GAAkF,EAClF,OAAO,EACP,SAAS,GACV,EAAE;IACD,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ClB"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
|
-
import { getLLM } from "../../helpers";
|
|
1
|
+
import { getLLM } from "../../helpers/llms";
|
|
2
2
|
import { ChatPromptTemplate } from "../../imports";
|
|
3
|
-
import { createSimpleChain } from "../../helpers";
|
|
3
|
+
import { createSimpleChain } from "../../helpers/helpers";
|
|
4
4
|
import { StringOutputParser } from "../../imports";
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Erzeugt aus einer Nutzeranforderung einen robusten System-Prompt fuer Agents.
|
|
7
|
+
*
|
|
8
|
+
* Sinnvoll wenn aus vagen Anforderungen ein klarer, wiederverwendbarer Prompt entstehen soll.
|
|
9
|
+
*
|
|
10
|
+
* @param params.llm Optionales Chat-LLM.
|
|
11
|
+
* @param params.request Urspruengliche Nutzeranfrage.
|
|
12
|
+
* @param params.agentRole Optionaler Rollen-Kontext fuer den Ziel-Agenten.
|
|
13
|
+
* @returns Finaler System-Prompt als String.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const systemPrompt = await promptify({
|
|
18
|
+
* request: "Baue einen Assistenten fuer technische Kundentickets.",
|
|
19
|
+
* agentRole: "Senior Support Engineer"
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export async function promptify({ llm = getLLM({ provider: "chatgroq", apikey: process.env.CHATGROQ_API_KEY ?? "" }), request, agentRole, }) {
|
|
6
24
|
const prompt = ChatPromptTemplate.fromMessages([
|
|
7
25
|
["system", `
|
|
8
26
|
Du bist ein Prompt-Engineering-Experte für KI-Agenten.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptify.js","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/promptify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"promptify.js","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/promptify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC5B,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC,EAClF,OAAO,EACP,SAAS,GAMV;IAEC,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC;QAC7C,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;UA0BP,SAAS,CAAC,CAAC,CAAC;;YAEV,SAAS;SACZ,CAAC,CAAC,CAAC,EAAE;;;;;SAKL,CAAC;QACJ,CAAC,OAAO,EAAE,SAAS,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAErD,OAAO,MAAgB,CAAA;AACzB,CAAC"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import { BaseChatModel } from "../../imports";
|
|
2
|
+
/**
|
|
3
|
+
* Optimiert Input zu einem dichten, RAG-freundlichen Kontexttext.
|
|
4
|
+
*
|
|
5
|
+
* Sinnvoll vor Embedding/Indexing, um Redundanz zu reduzieren und Fakten klar zu strukturieren.
|
|
6
|
+
*
|
|
7
|
+
* @param params.llm Optionales Chat-LLM.
|
|
8
|
+
* @param params.data Rohtext, der fuer RAG optimiert werden soll.
|
|
9
|
+
* @returns Strukturierter Kontext als String.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const context = await ragify({
|
|
14
|
+
* data: "Langer Meeting- und Projektext mit vielen Wiederholungen..."
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
2
18
|
export declare function ragify({ llm, data, }: {
|
|
3
19
|
llm?: BaseChatModel;
|
|
4
20
|
data: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ragify.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/ragify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAK7C,wBAAsB,MAAM,CAAC,EACzB,
|
|
1
|
+
{"version":3,"file":"ragify.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/ragify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAK7C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,MAAM,CAAC,EACzB,GAAkF,EAClF,IAAI,GACL,EAAE;IACD,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,CAqClB"}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
import { getLLM } from "../../helpers";
|
|
1
|
+
import { getLLM } from "../../helpers/llms";
|
|
2
2
|
import { ChatPromptTemplate } from "../../imports";
|
|
3
|
-
import { createSimpleChain } from "../../helpers";
|
|
3
|
+
import { createSimpleChain } from "../../helpers/helpers";
|
|
4
4
|
import { StringOutputParser } from "../../imports";
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Optimiert Input zu einem dichten, RAG-freundlichen Kontexttext.
|
|
7
|
+
*
|
|
8
|
+
* Sinnvoll vor Embedding/Indexing, um Redundanz zu reduzieren und Fakten klar zu strukturieren.
|
|
9
|
+
*
|
|
10
|
+
* @param params.llm Optionales Chat-LLM.
|
|
11
|
+
* @param params.data Rohtext, der fuer RAG optimiert werden soll.
|
|
12
|
+
* @returns Strukturierter Kontext als String.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const context = await ragify({
|
|
17
|
+
* data: "Langer Meeting- und Projektext mit vielen Wiederholungen..."
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export async function ragify({ llm = getLLM({ provider: "chatgroq", apikey: process.env.CHATGROQ_API_KEY ?? "" }), data, }) {
|
|
6
22
|
const prompt = ChatPromptTemplate.fromMessages([
|
|
7
23
|
["system", `
|
|
8
24
|
Du bist ein RAG-Kontext-Optimierer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ragify.js","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/ragify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ragify.js","sourceRoot":"","sources":["../../../src/magic-funcs/optimizers/ragify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EACzB,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC,EAClF,IAAI,GAIL;IAEC,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC;QAC7C,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;aA0BJ,CAAC;QACR,CAAC,OAAO,EAAE,SAAS,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAElD,OAAO,MAAgB,CAAA;AACzB,CAAC"}
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
import { BaseChatModel } from "../../imports";
|
|
2
2
|
import { z } from "zod/v3";
|
|
3
|
+
/**
|
|
4
|
+
* Extrahiert strukturierte Daten aus unstrukturiertem Input anhand eines Zod-Schemas.
|
|
5
|
+
*
|
|
6
|
+
* Sinnvoll fuer Information Extraction aus Texten, Notizen, Tickets oder Logs.
|
|
7
|
+
*
|
|
8
|
+
* @param params.llm Optionales Chat-LLM.
|
|
9
|
+
* @param params.data Eingabedaten (String oder Objekt).
|
|
10
|
+
* @param params.goal Optionales Extraktionsziel zur Fokussierung.
|
|
11
|
+
* @param params.schema Zod-Schema der gewuenschten Ausgabe.
|
|
12
|
+
* @returns Geparstes Ergebnis als `z.infer<T>`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const result = await extract({
|
|
17
|
+
* data: "Max Mustermann, 32, Berlin",
|
|
18
|
+
* schema: z.object({
|
|
19
|
+
* name: z.string(),
|
|
20
|
+
* age: z.number(),
|
|
21
|
+
* city: z.string()
|
|
22
|
+
* })
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
3
26
|
export declare function extract<T extends z.ZodObject<any>>({ llm, data, goal, schema }: {
|
|
4
27
|
llm?: BaseChatModel;
|
|
5
28
|
data: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/parsers/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/magic-funcs/parsers/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAK1B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EACtD,GAAiH,EACjH,IAAI,EACJ,IAAI,EACJ,MAAM,EACP,EAAE;IACD,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,GAAG,CAAA;IACT,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,CAAC,CAAA;CACV,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAiCtB"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import { createSimpleChain } from "../../helpers";
|
|
1
|
+
import { createSimpleChain } from "../../helpers/helpers";
|
|
2
2
|
import { ChatPromptTemplate } from "../../imports";
|
|
3
|
-
import { getLLM } from "../../helpers";
|
|
4
3
|
import { StructuredOutputParser } from "../../imports";
|
|
5
|
-
|
|
4
|
+
import { getLLM } from "../../helpers/llms";
|
|
5
|
+
/**
|
|
6
|
+
* Extrahiert strukturierte Daten aus unstrukturiertem Input anhand eines Zod-Schemas.
|
|
7
|
+
*
|
|
8
|
+
* Sinnvoll fuer Information Extraction aus Texten, Notizen, Tickets oder Logs.
|
|
9
|
+
*
|
|
10
|
+
* @param params.llm Optionales Chat-LLM.
|
|
11
|
+
* @param params.data Eingabedaten (String oder Objekt).
|
|
12
|
+
* @param params.goal Optionales Extraktionsziel zur Fokussierung.
|
|
13
|
+
* @param params.schema Zod-Schema der gewuenschten Ausgabe.
|
|
14
|
+
* @returns Geparstes Ergebnis als `z.infer<T>`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const result = await extract({
|
|
19
|
+
* data: "Max Mustermann, 32, Berlin",
|
|
20
|
+
* schema: z.object({
|
|
21
|
+
* name: z.string(),
|
|
22
|
+
* age: z.number(),
|
|
23
|
+
* city: z.string()
|
|
24
|
+
* })
|
|
25
|
+
* })
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export async function extract({ llm = getLLM({ provider: "openrouter", apikey: process.env.OPENROUTER_API_KEY ?? "", model: "openai/gpt-5.4-mini" }), data, goal, schema }) {
|
|
6
29
|
const inputString = typeof data === "string"
|
|
7
30
|
? data
|
|
8
31
|
: JSON.stringify(data, null, 2);
|