@delofarag/ai-utils 1.0.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.
Files changed (46) hide show
  1. package/README.md +95 -0
  2. package/dist/src/heart/agent.d.ts +68 -0
  3. package/dist/src/heart/agent.d.ts.map +1 -0
  4. package/dist/src/heart/agent.js +140 -0
  5. package/dist/src/heart/agent.js.map +1 -0
  6. package/dist/src/heart/chain.d.ts +42 -0
  7. package/dist/src/heart/chain.d.ts.map +1 -0
  8. package/dist/src/heart/chain.js +152 -0
  9. package/dist/src/heart/chain.js.map +1 -0
  10. package/dist/src/heart/chatbot.d.ts +27 -0
  11. package/dist/src/heart/chatbot.d.ts.map +1 -0
  12. package/dist/src/heart/chatbot.js +99 -0
  13. package/dist/src/heart/chatbot.js.map +1 -0
  14. package/dist/src/heart/memorychain.d.ts +59 -0
  15. package/dist/src/heart/memorychain.d.ts.map +1 -0
  16. package/dist/src/heart/memorychain.js +164 -0
  17. package/dist/src/heart/memorychain.js.map +1 -0
  18. package/dist/src/heart/tools/BasicToolRegistry.d.ts +22 -0
  19. package/dist/src/heart/tools/BasicToolRegistry.d.ts.map +1 -0
  20. package/dist/src/heart/tools/BasicToolRegistry.js +45 -0
  21. package/dist/src/heart/tools/BasicToolRegistry.js.map +1 -0
  22. package/dist/src/heart/tools/CombinedRegistry.d.ts +41 -0
  23. package/dist/src/heart/tools/CombinedRegistry.d.ts.map +1 -0
  24. package/dist/src/heart/tools/CombinedRegistry.js +46 -0
  25. package/dist/src/heart/tools/CombinedRegistry.js.map +1 -0
  26. package/dist/src/heart/tools/ZodiosToolRegistry.d.ts +22 -0
  27. package/dist/src/heart/tools/ZodiosToolRegistry.d.ts.map +1 -0
  28. package/dist/src/heart/tools/ZodiosToolRegistry.js +80 -0
  29. package/dist/src/heart/tools/ZodiosToolRegistry.js.map +1 -0
  30. package/dist/src/helpers.d.ts +31 -0
  31. package/dist/src/helpers.d.ts.map +1 -0
  32. package/dist/src/helpers.js +105 -0
  33. package/dist/src/helpers.js.map +1 -0
  34. package/dist/src/imports.d.ts +44 -0
  35. package/dist/src/imports.d.ts.map +1 -0
  36. package/dist/src/imports.js +56 -0
  37. package/dist/src/imports.js.map +1 -0
  38. package/dist/src/memory.d.ts +78 -0
  39. package/dist/src/memory.d.ts.map +1 -0
  40. package/dist/src/memory.js +276 -0
  41. package/dist/src/memory.js.map +1 -0
  42. package/dist/src/rag.d.ts +58 -0
  43. package/dist/src/rag.d.ts.map +1 -0
  44. package/dist/src/rag.js +72 -0
  45. package/dist/src/rag.js.map +1 -0
  46. package/package.json +42 -0
@@ -0,0 +1,58 @@
1
+ import { SupabaseVectorStore, FaissStore, Document, Embeddings, ChatPromptTemplate, BaseChatModel, VectorStore, BaseRetriever } from "./imports";
2
+ import { SupabaseClient } from "@delofarag/supabase-utils";
3
+ interface SupabaseStoreConfig {
4
+ data: string[];
5
+ table_name?: string;
6
+ RPC_function?: string;
7
+ }
8
+ export declare function turn_to_docs<T>(docs: T[]): Document<Record<string, any>>[];
9
+ export declare function createSupabaseVectoreStore({ supabase, data, table_name, RPC_function }: SupabaseStoreConfig & {
10
+ supabase: SupabaseClient;
11
+ }): Promise<SupabaseVectorStore>;
12
+ export declare function getSupabaseVectorStore({ supabase, table_name, RPC_function }: {
13
+ supabase: SupabaseClient;
14
+ table_name?: string;
15
+ RPC_function?: string;
16
+ }): SupabaseVectorStore;
17
+ export declare function createFaissStore({ data, save_path, embeddings }: {
18
+ data: string[];
19
+ save_path?: string;
20
+ embeddings?: Embeddings;
21
+ }): Promise<FaissStore>;
22
+ export declare function loadFaissStore({ path, embeddings }: {
23
+ path: string;
24
+ embeddings?: Embeddings;
25
+ }): Promise<FaissStore>;
26
+ export declare function createRAGChain({ vectorStore, llm, prompt, num_of_results_from_vdb }: {
27
+ vectorStore: VectorStore;
28
+ llm: BaseChatModel;
29
+ prompt?: ChatPromptTemplate;
30
+ num_of_results_from_vdb?: number;
31
+ }): Promise<import("@langchain/core/dist/runnables/base").Runnable<{
32
+ input: string;
33
+ chat_history?: import("@langchain/core/dist/messages/base").BaseMessage[] | string;
34
+ } & {
35
+ [key: string]: unknown;
36
+ }, {
37
+ context: Document[];
38
+ answer: string;
39
+ } & {
40
+ [key: string]: unknown;
41
+ }, import("@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>>>>;
42
+ export declare function createRAGChainFromRetriever({ retriever, llm, prompt }: {
43
+ retriever: BaseRetriever;
44
+ llm: BaseChatModel;
45
+ prompt?: ChatPromptTemplate;
46
+ }): Promise<import("@langchain/core/dist/runnables/base").Runnable<{
47
+ input: string;
48
+ chat_history?: import("@langchain/core/dist/messages/base").BaseMessage[] | string;
49
+ } & {
50
+ [key: string]: unknown;
51
+ }, {
52
+ context: Document[];
53
+ answer: string;
54
+ } & {
55
+ [key: string]: unknown;
56
+ }, import("@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>>>>;
57
+ export {};
58
+ //# sourceMappingURL=rag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.d.ts","sourceRoot":"","sources":["../../src/rag.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAGnB,UAAU,EACV,QAAQ,EACR,UAAU,EAGV,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,aAAa,EAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,UAAU,mBAAmB;IACzB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAWD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAKzE;AAED,wBAAsB,0BAA0B,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,UAAwB,EAAE,YAAgC,EAAC,EAAE,mBAAmB,GAAG;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAC,gCAa9K;AAGD,wBAAgB,sBAAsB,CAAC,EAAC,QAAQ,EAAE,UAAwB,EAAE,YAAgC,EAAC,EAAE;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAC,uBAMpL;AAED,wBAAsB,gBAAgB,CAAC,EAAC,IAAI,EAAE,SAAuB,EAAE,UAA2B,EAAC,EAAE;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAC,uBAWjK;AAED,wBAAsB,cAAc,CAAC,EAAC,IAAI,EAAE,UAA2B,EAAC,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAC,uBAEhH;AAED,wBAAsB,cAAc,CAAC,EACjC,WAAW,EACX,GAAG,EACH,MAAM,EACN,uBAA2B,EAC9B,EAAE;IACC,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACnC;;;;;;;;;;wFAiBA;AAGD,wBAAsB,2BAA2B,CAAC,EAC9C,SAAS,EACT,GAAG,EACH,MAAM,EACT,EAAE;IACC,SAAS,EAAE,aAAa,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC9B;;;;;;;;;;wFAcA"}
@@ -0,0 +1,72 @@
1
+ import { SupabaseVectorStore, OllamaEmbeddings, RecursiveCharacterTextSplitter, FaissStore, Document, createStuffDocumentsChain, createRetrievalChain } from "./imports";
2
+ const baseEmbeddings = new OllamaEmbeddings({
3
+ model: "nomic-embed-text"
4
+ });
5
+ const baseSplitter = new RecursiveCharacterTextSplitter({
6
+ chunkSize: 500,
7
+ chunkOverlap: 50
8
+ });
9
+ export function turn_to_docs(docs) {
10
+ return docs.map(doc => new Document({
11
+ pageContent: typeof doc === "string" ? doc : JSON.stringify(doc, null, 2),
12
+ metadata: {}
13
+ }));
14
+ }
15
+ export async function createSupabaseVectoreStore({ supabase, data, table_name = "documents", RPC_function = "match_documents" }) {
16
+ const docs = turn_to_docs(data);
17
+ const splitted_docs = await baseSplitter.splitDocuments(docs);
18
+ return await SupabaseVectorStore.fromDocuments(splitted_docs, baseEmbeddings, {
19
+ client: supabase,
20
+ tableName: table_name,
21
+ queryName: RPC_function
22
+ });
23
+ }
24
+ // Bestehenden Supabase Store holen (ohne neue Docs)
25
+ export function getSupabaseVectorStore({ supabase, table_name = "documents", RPC_function = "match_documents" }) {
26
+ return new SupabaseVectorStore(baseEmbeddings, {
27
+ client: supabase,
28
+ tableName: table_name,
29
+ queryName: RPC_function
30
+ });
31
+ }
32
+ export async function createFaissStore({ data, save_path = "faiss_rag", embeddings = baseEmbeddings }) {
33
+ const docs = turn_to_docs(data);
34
+ const splitted_docs = await baseSplitter.splitDocuments(docs);
35
+ const vectore_store = await FaissStore.fromDocuments(splitted_docs, embeddings);
36
+ if (save_path) {
37
+ await vectore_store.save(save_path);
38
+ }
39
+ return vectore_store;
40
+ }
41
+ export async function loadFaissStore({ path, embeddings = baseEmbeddings }) {
42
+ return await FaissStore.load(path, embeddings);
43
+ }
44
+ export async function createRAGChain({ vectorStore, llm, prompt, num_of_results_from_vdb = 4 }) {
45
+ const model = llm;
46
+ const retriever = vectorStore.asRetriever({ k: num_of_results_from_vdb });
47
+ // Document Chain: Kombiniert Docs in den Prompt
48
+ const documentChain = await createStuffDocumentsChain({
49
+ llm: model,
50
+ prompt: prompt
51
+ });
52
+ // Retrieval Chain: Verbindet Retriever mit Document Chain
53
+ const retrievalChain = await createRetrievalChain({
54
+ retriever: retriever,
55
+ combineDocsChain: documentChain
56
+ });
57
+ return retrievalChain;
58
+ }
59
+ // Erstellt eine Retrieval Chain direkt aus einem Retriever
60
+ export async function createRAGChainFromRetriever({ retriever, llm, prompt }) {
61
+ const model = llm;
62
+ const documentChain = await createStuffDocumentsChain({
63
+ llm: model,
64
+ prompt: prompt
65
+ });
66
+ const retrievalChain = await createRetrievalChain({
67
+ retriever: retriever,
68
+ combineDocsChain: documentChain
69
+ });
70
+ return retrievalChain;
71
+ }
72
+ //# sourceMappingURL=rag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.js","sourceRoot":"","sources":["../../src/rag.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@delofarag/ai-utils",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsx",
14
+ "start": "tsx"
15
+ },
16
+ "dependencies": {
17
+ "@langchain/anthropic": "^1.3.3",
18
+ "@langchain/classic": "^1.0.7",
19
+ "@langchain/community": "^1.1.1",
20
+ "@langchain/core": "^1.1.8",
21
+ "@langchain/groq": "^1.0.2",
22
+ "@langchain/langgraph": "^1.0.7",
23
+ "@langchain/langgraph-checkpoint-postgres": "^1.0.0",
24
+ "@langchain/langgraph-checkpoint-sqlite": "^1.0.0",
25
+ "@langchain/ollama": "^1.1.0",
26
+ "@langchain/openai": "^1.2.0",
27
+ "@langchain/textsplitters": "^1.0.1",
28
+ "@delofarag/base-utils": "^1.0.0",
29
+ "readline": "^1.3.0",
30
+ "zod": "^3.23.0",
31
+ "zod-validation-error": "^2.1.0",
32
+ "zodios": "^5.1.0"
33
+ },
34
+ "peerDependencies": {
35
+ "@delofarag/supabase-utils": "^1.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^20.0.0",
39
+ "tsx": "^4.0.0",
40
+ "typescript": "^5.0.0"
41
+ }
42
+ }