@graphext/cuery 0.4.0 → 0.5.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.
- package/esm/browser.d.ts +1 -1
- package/esm/browser.d.ts.map +1 -1
- package/esm/browser.js +1 -1
- package/esm/mod.d.ts +5 -2
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +7 -2
- package/esm/src/api.d.ts +36 -5
- package/esm/src/api.d.ts.map +1 -1
- package/esm/src/api.js +84 -37
- package/esm/src/apis/chatgptScraper/brightdata.js +1 -1
- package/esm/src/apis/chatgptScraper/oxy.js +1 -1
- package/esm/src/apis/chatgptScraper/scraper.js +2 -2
- package/esm/src/apis/hasdata/aim.js +1 -1
- package/esm/src/apis/hasdata/aio.js +1 -1
- package/esm/src/apis/hasdata/helpers.d.ts +1 -1
- package/esm/src/apis/hasdata/helpers.d.ts.map +1 -1
- package/esm/src/apis/hasdata/helpers.js +2 -2
- package/esm/src/assets/models.d.ts +60725 -0
- package/esm/src/assets/models.d.ts.map +1 -0
- package/esm/src/assets/models.js +71915 -0
- package/esm/src/helpers/async.d.ts.map +1 -0
- package/esm/src/{async.js → helpers/async.js} +1 -1
- package/esm/src/helpers/seedKeywords.d.ts.map +1 -0
- package/esm/src/helpers/urls.d.ts.map +1 -0
- package/esm/src/helpers/utils.d.ts.map +1 -0
- package/esm/src/llm.d.ts +35 -0
- package/esm/src/llm.d.ts.map +1 -0
- package/esm/src/llm.js +59 -0
- package/esm/src/providers/google.d.ts +12 -0
- package/esm/src/providers/google.d.ts.map +1 -0
- package/esm/src/providers/google.js +111 -0
- package/esm/src/providers/index.d.ts +13 -0
- package/esm/src/providers/index.d.ts.map +1 -0
- package/esm/src/providers/index.js +14 -0
- package/esm/src/providers/openai.d.ts +12 -0
- package/esm/src/providers/openai.d.ts.map +1 -0
- package/esm/src/providers/openai.js +141 -0
- package/esm/src/providers/pricing.d.ts +72 -0
- package/esm/src/providers/pricing.d.ts.map +1 -0
- package/esm/src/providers/pricing.js +88 -0
- package/esm/src/providers/registry.d.ts +20 -0
- package/esm/src/providers/registry.d.ts.map +1 -0
- package/esm/src/providers/registry.js +35 -0
- package/esm/src/providers/types.d.ts +49 -0
- package/esm/src/providers/types.d.ts.map +1 -0
- package/esm/src/providers/types.js +7 -0
- package/esm/src/response.d.ts +74 -0
- package/esm/src/response.d.ts.map +1 -0
- package/esm/src/response.js +110 -0
- package/esm/src/tool.d.ts +58 -0
- package/esm/src/tool.d.ts.map +1 -0
- package/esm/src/tool.js +91 -0
- package/esm/src/tools/brands.js +6 -6
- package/esm/src/tools/classifier.d.ts +80 -17
- package/esm/src/tools/classifier.d.ts.map +1 -1
- package/esm/src/tools/classifier.js +68 -80
- package/esm/src/tools/entities.d.ts +23 -12
- package/esm/src/tools/entities.d.ts.map +1 -1
- package/esm/src/tools/entities.js +27 -47
- package/esm/src/tools/funnel.js +7 -7
- package/esm/src/tools/generic.d.ts +17 -4
- package/esm/src/tools/generic.d.ts.map +1 -1
- package/esm/src/tools/generic.js +39 -14
- package/esm/src/tools/keywords.js +5 -5
- package/esm/src/tools/personas.d.ts +49 -2
- package/esm/src/tools/personas.d.ts.map +1 -1
- package/esm/src/tools/personas.js +59 -35
- package/esm/src/tools/scorer.d.ts +24 -6
- package/esm/src/tools/scorer.d.ts.map +1 -1
- package/esm/src/tools/scorer.js +27 -22
- package/esm/src/tools/search.d.ts.map +1 -1
- package/esm/src/tools/search.js +33 -9
- package/esm/src/tools/sentiment.d.ts +30 -8
- package/esm/src/tools/sentiment.d.ts.map +1 -1
- package/esm/src/tools/sentiment.js +33 -28
- package/esm/src/tools/sources.d.ts +5 -5
- package/esm/src/tools/sources.d.ts.map +1 -1
- package/esm/src/tools/sources.js +5 -6
- package/esm/src/tools/topics.d.ts +44 -16
- package/esm/src/tools/topics.d.ts.map +1 -1
- package/esm/src/tools/topics.js +77 -68
- package/esm/src/tools/translate.d.ts +22 -31
- package/esm/src/tools/translate.d.ts.map +1 -1
- package/esm/src/tools/translate.js +40 -36
- package/package.json +2 -1
- package/script/browser.d.ts +1 -1
- package/script/browser.d.ts.map +1 -1
- package/script/browser.js +1 -1
- package/script/mod.d.ts +5 -2
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +14 -2
- package/script/src/api.d.ts +36 -5
- package/script/src/api.d.ts.map +1 -1
- package/script/src/api.js +84 -35
- package/script/src/apis/chatgptScraper/brightdata.js +1 -1
- package/script/src/apis/chatgptScraper/oxy.js +1 -1
- package/script/src/apis/chatgptScraper/scraper.js +2 -2
- package/script/src/apis/hasdata/aim.js +1 -1
- package/script/src/apis/hasdata/aio.js +1 -1
- package/script/src/apis/hasdata/helpers.d.ts +1 -1
- package/script/src/apis/hasdata/helpers.d.ts.map +1 -1
- package/script/src/apis/hasdata/helpers.js +2 -2
- package/script/src/assets/models.d.ts +60725 -0
- package/script/src/assets/models.d.ts.map +1 -0
- package/script/src/assets/models.js +71917 -0
- package/script/src/helpers/async.d.ts.map +1 -0
- package/script/src/{async.js → helpers/async.js} +1 -1
- package/script/src/helpers/seedKeywords.d.ts.map +1 -0
- package/script/src/helpers/urls.d.ts.map +1 -0
- package/script/src/helpers/utils.d.ts.map +1 -0
- package/script/src/llm.d.ts +35 -0
- package/script/src/llm.d.ts.map +1 -0
- package/script/src/llm.js +65 -0
- package/script/src/providers/google.d.ts +12 -0
- package/script/src/providers/google.d.ts.map +1 -0
- package/script/src/providers/google.js +148 -0
- package/script/src/providers/index.d.ts +13 -0
- package/script/src/providers/index.d.ts.map +1 -0
- package/script/src/providers/index.js +24 -0
- package/script/src/providers/openai.d.ts +12 -0
- package/script/src/providers/openai.d.ts.map +1 -0
- package/script/src/providers/openai.js +181 -0
- package/script/src/providers/pricing.d.ts +72 -0
- package/script/src/providers/pricing.d.ts.map +1 -0
- package/script/src/providers/pricing.js +97 -0
- package/script/src/providers/registry.d.ts +20 -0
- package/script/src/providers/registry.d.ts.map +1 -0
- package/script/src/providers/registry.js +39 -0
- package/script/src/providers/types.d.ts +49 -0
- package/script/src/providers/types.d.ts.map +1 -0
- package/script/src/providers/types.js +8 -0
- package/script/src/response.d.ts +74 -0
- package/script/src/response.d.ts.map +1 -0
- package/script/src/response.js +114 -0
- package/script/src/tool.d.ts +58 -0
- package/script/src/tool.d.ts.map +1 -0
- package/script/src/tool.js +95 -0
- package/script/src/tools/brands.js +6 -6
- package/script/src/tools/classifier.d.ts +80 -17
- package/script/src/tools/classifier.d.ts.map +1 -1
- package/script/src/tools/classifier.js +72 -85
- package/script/src/tools/entities.d.ts +23 -12
- package/script/src/tools/entities.d.ts.map +1 -1
- package/script/src/tools/entities.js +29 -51
- package/script/src/tools/funnel.js +7 -7
- package/script/src/tools/generic.d.ts +17 -4
- package/script/src/tools/generic.d.ts.map +1 -1
- package/script/src/tools/generic.js +39 -14
- package/script/src/tools/keywords.js +5 -5
- package/script/src/tools/personas.d.ts +49 -2
- package/script/src/tools/personas.d.ts.map +1 -1
- package/script/src/tools/personas.js +63 -36
- package/script/src/tools/scorer.d.ts +24 -6
- package/script/src/tools/scorer.d.ts.map +1 -1
- package/script/src/tools/scorer.js +28 -24
- package/script/src/tools/search.d.ts.map +1 -1
- package/script/src/tools/search.js +69 -9
- package/script/src/tools/sentiment.d.ts +30 -8
- package/script/src/tools/sentiment.d.ts.map +1 -1
- package/script/src/tools/sentiment.js +37 -30
- package/script/src/tools/sources.d.ts +5 -5
- package/script/src/tools/sources.d.ts.map +1 -1
- package/script/src/tools/sources.js +4 -5
- package/script/src/tools/topics.d.ts +44 -16
- package/script/src/tools/topics.d.ts.map +1 -1
- package/script/src/tools/topics.js +80 -72
- package/script/src/tools/translate.d.ts +22 -31
- package/script/src/tools/translate.d.ts.map +1 -1
- package/script/src/tools/translate.js +43 -40
- package/esm/src/async.d.ts.map +0 -1
- package/esm/src/models.d.ts +0 -18
- package/esm/src/models.d.ts.map +0 -1
- package/esm/src/models.js +0 -48
- package/esm/src/openai.d.ts +0 -17
- package/esm/src/openai.d.ts.map +0 -1
- package/esm/src/openai.js +0 -136
- package/esm/src/tools/seedKeywords.d.ts.map +0 -1
- package/esm/src/urls.d.ts.map +0 -1
- package/esm/src/utils.d.ts.map +0 -1
- package/script/src/async.d.ts.map +0 -1
- package/script/src/models.d.ts +0 -18
- package/script/src/models.d.ts.map +0 -1
- package/script/src/models.js +0 -52
- package/script/src/openai.d.ts +0 -17
- package/script/src/openai.d.ts.map +0 -1
- package/script/src/openai.js +0 -175
- package/script/src/tools/seedKeywords.d.ts.map +0 -1
- package/script/src/urls.d.ts.map +0 -1
- package/script/src/utils.d.ts.map +0 -1
- /package/esm/src/{async.d.ts → helpers/async.d.ts} +0 -0
- /package/esm/src/{tools → helpers}/seedKeywords.d.ts +0 -0
- /package/esm/src/{tools → helpers}/seedKeywords.js +0 -0
- /package/esm/src/{urls.d.ts → helpers/urls.d.ts} +0 -0
- /package/esm/src/{urls.js → helpers/urls.js} +0 -0
- /package/esm/src/{utils.d.ts → helpers/utils.d.ts} +0 -0
- /package/esm/src/{utils.js → helpers/utils.js} +0 -0
- /package/script/src/{async.d.ts → helpers/async.d.ts} +0 -0
- /package/script/src/{tools → helpers}/seedKeywords.d.ts +0 -0
- /package/script/src/{tools → helpers}/seedKeywords.js +0 -0
- /package/script/src/{urls.d.ts → helpers/urls.d.ts} +0 -0
- /package/script/src/{urls.js → helpers/urls.js} +0 -0
- /package/script/src/{utils.d.ts → helpers/utils.d.ts} +0 -0
- /package/script/src/{utils.js → helpers/utils.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from '../../deps/jsr.io/@zod/zod/4.3.6/src/index.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { Tool, type ModelConfig } from '../tool.js';
|
|
3
|
+
import type { Message } from '../llm.js';
|
|
3
4
|
import { type TopicType, type TaxonomyType, type TopicLabel } from '../schemas/topics.schema.js';
|
|
4
5
|
export type { TopicType, TaxonomyType, TopicLabel };
|
|
5
6
|
/**
|
|
@@ -48,27 +49,54 @@ export declare function createLabelSchema(taxonomy: TaxonomyType): z.ZodObject<{
|
|
|
48
49
|
[x: string]: string;
|
|
49
50
|
}>;
|
|
50
51
|
}, z.core.$strip>;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*/
|
|
54
|
-
export declare function assignTopic(text: string | null, taxonomy: TaxonomyType | Array<TopicType> | string, labelSchema: z.ZodType<TopicLabel>, model?: string, modelParams?: AIParams): Promise<TopicLabel | null>;
|
|
55
|
-
/**
|
|
56
|
-
* Assigns topics to multiple texts concurrently while preserving order.
|
|
57
|
-
*/
|
|
58
|
-
export declare function assignTopics(texts: Array<string | null>, taxonomy: TaxonomyType | Array<TopicType>, model?: string, modelParams?: AIParams, maxConcurrency?: number): Promise<Array<TopicLabel | null>>;
|
|
59
|
-
export interface TopicExtractionOptions {
|
|
60
|
-
records: Array<Record<string, unknown>>;
|
|
52
|
+
export interface TopicExtractorConfig {
|
|
53
|
+
/** Maximum number of top-level topics (default: 10) */
|
|
61
54
|
nTopics?: number;
|
|
55
|
+
/** Maximum number of subtopics per topic (default: 5) */
|
|
62
56
|
nSubtopics?: number;
|
|
57
|
+
/** Additional instructions */
|
|
63
58
|
instructions?: string;
|
|
59
|
+
/** Maximum number of records to sample (default: 500) */
|
|
64
60
|
maxSamples?: number;
|
|
65
|
-
|
|
66
|
-
modelParams?: AIParams;
|
|
67
|
-
maxRetries?: number;
|
|
61
|
+
/** Language for topics (default: same as records) */
|
|
68
62
|
language?: string;
|
|
69
63
|
}
|
|
70
64
|
/**
|
|
71
|
-
*
|
|
65
|
+
* A tool that extracts a topic taxonomy from a set of records.
|
|
72
66
|
*/
|
|
73
|
-
export declare
|
|
67
|
+
export declare class TopicExtractor extends Tool<Array<Record<string, unknown>>, TaxonomyType, TaxonomyType> {
|
|
68
|
+
private readonly maxSamples;
|
|
69
|
+
private readonly promptTemplate;
|
|
70
|
+
constructor(config: TopicExtractorConfig | undefined, modelConfig: ModelConfig);
|
|
71
|
+
protected schema(): z.ZodObject<{
|
|
72
|
+
topics: z.ZodArray<z.ZodObject<{
|
|
73
|
+
topic: z.ZodString;
|
|
74
|
+
subtopics: z.ZodArray<z.ZodString>;
|
|
75
|
+
}, z.core.$strip>>;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
protected prompt(records: Array<Record<string, unknown>>): string;
|
|
78
|
+
protected isEmpty(records: Array<Record<string, unknown>>): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Not supported. TopicExtractor is an aggregation operation that extracts
|
|
81
|
+
* a single taxonomy from many records. Use invoke() instead.
|
|
82
|
+
*/
|
|
83
|
+
batch(): never;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Configuration for the TopicAssigner tool.
|
|
87
|
+
*/
|
|
88
|
+
export interface TopicAssignerConfig {
|
|
89
|
+
taxonomy: TaxonomyType | Array<TopicType>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A tool that assigns topic and subtopic labels to text based on a taxonomy.
|
|
93
|
+
*/
|
|
94
|
+
export declare class TopicAssigner extends Tool<string | null, TopicLabel, TopicLabel> {
|
|
95
|
+
private readonly labelSchema;
|
|
96
|
+
private readonly systemPrompt;
|
|
97
|
+
constructor(config: TopicAssignerConfig, modelConfig: ModelConfig);
|
|
98
|
+
protected schema(): z.ZodType<TopicLabel, unknown, z.core.$ZodTypeInternals<TopicLabel, unknown>>;
|
|
99
|
+
protected prompt(text: string | null): Message[];
|
|
100
|
+
protected isEmpty(text: string | null): boolean;
|
|
101
|
+
}
|
|
74
102
|
//# sourceMappingURL=topics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topics.d.ts","sourceRoot":"","sources":["../../../src/src/tools/topics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"topics.d.ts","sourceRoot":"","sources":["../../../src/src/tools/topics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,+CAA+C,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAEN,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,MAAM,6BAA6B,CAAC;AAIrC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AA+EpD;;;GAGG;AACH,eAAO,MAAM,KAAK;;;iBAShB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;iBAEvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;iBAEnB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAKpH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY;;;;;;;kBAmBvD;AA+BD,MAAM,WAAW,oBAAoB;IACpC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,IAAI,CACvC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9B,YAAY,EACZ,YAAY,CACZ;IACA,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,MAAM,EAAE,oBAAoB,YAAK,EAAE,WAAW,EAAE,WAAW;cAkBpD,MAAM;;;;;;IAIzB,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;cAQrC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO;IAI5E;;;OAGG;IACM,KAAK,IAAI,KAAK;CAOvB;AAyBD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW;cAiB9C,MAAM;IAIzB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE;cAQ7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;CAGxD"}
|
package/esm/src/tools/topics.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/* eslint no-console: ["warn", { allow: ["log", "warn", "error"] }] */
|
|
2
2
|
import { z } from '../../deps/jsr.io/@zod/zod/4.3.6/src/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import { askOpenAISafe } from '../openai.js';
|
|
3
|
+
import { Tool } from '../tool.js';
|
|
5
4
|
import { TopicSchema } from '../schemas/topics.schema.js';
|
|
6
|
-
import { dedent, formatRecordsAttrWise } from '../utils.js';
|
|
5
|
+
import { dedent, formatRecordsAttrWise } from '../helpers/utils.js';
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// Helper Functions
|
|
8
|
+
// =============================================================================
|
|
7
9
|
/**
|
|
8
10
|
* Levenshtein distance implementation for string similarity validation
|
|
9
11
|
*/
|
|
@@ -61,6 +63,9 @@ function validateSubtopics(topic, subtopics) {
|
|
|
61
63
|
}
|
|
62
64
|
return errors;
|
|
63
65
|
}
|
|
66
|
+
// =============================================================================
|
|
67
|
+
// Schemas
|
|
68
|
+
// =============================================================================
|
|
64
69
|
/**
|
|
65
70
|
* Topic schema with subtopic validation
|
|
66
71
|
* Validates that subtopics are sufficiently distinct from each other and from the parent topic.
|
|
@@ -120,6 +125,9 @@ export function createLabelSchema(taxonomy) {
|
|
|
120
125
|
}
|
|
121
126
|
});
|
|
122
127
|
}
|
|
128
|
+
// =============================================================================
|
|
129
|
+
// TopicExtractor
|
|
130
|
+
// =============================================================================
|
|
123
131
|
const TOPICS_PROMPT = dedent(`
|
|
124
132
|
# Instructions
|
|
125
133
|
|
|
@@ -144,6 +152,48 @@ The taxonomy should follow the MECE framework (Mutually Exclusive, Collectively
|
|
|
144
152
|
|
|
145
153
|
{records}
|
|
146
154
|
`);
|
|
155
|
+
/**
|
|
156
|
+
* A tool that extracts a topic taxonomy from a set of records.
|
|
157
|
+
*/
|
|
158
|
+
export class TopicExtractor extends Tool {
|
|
159
|
+
maxSamples;
|
|
160
|
+
promptTemplate;
|
|
161
|
+
constructor(config = {}, modelConfig) {
|
|
162
|
+
super(modelConfig);
|
|
163
|
+
const { nTopics = 10, nSubtopics = 5, instructions = '', maxSamples = 500, language = 'The same language as the records' } = config;
|
|
164
|
+
this.maxSamples = maxSamples;
|
|
165
|
+
this.promptTemplate = TOPICS_PROMPT
|
|
166
|
+
.replace('{n_topics}', String(nTopics))
|
|
167
|
+
.replace('{n_subtopics}', String(nSubtopics))
|
|
168
|
+
.replace('{instructions}', instructions)
|
|
169
|
+
.replace('{language}', language);
|
|
170
|
+
}
|
|
171
|
+
schema() {
|
|
172
|
+
return Taxonomy;
|
|
173
|
+
}
|
|
174
|
+
prompt(records) {
|
|
175
|
+
const sampledRecords = records.length > this.maxSamples
|
|
176
|
+
? records.slice(0, this.maxSamples)
|
|
177
|
+
: records;
|
|
178
|
+
const formattedRecords = formatRecordsAttrWise(sampledRecords);
|
|
179
|
+
return this.promptTemplate.replace('{records}', formattedRecords);
|
|
180
|
+
}
|
|
181
|
+
isEmpty(records) {
|
|
182
|
+
return !records || records.length === 0;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Not supported. TopicExtractor is an aggregation operation that extracts
|
|
186
|
+
* a single taxonomy from many records. Use invoke() instead.
|
|
187
|
+
*/
|
|
188
|
+
batch() {
|
|
189
|
+
throw new Error('TopicExtractor.batch() is not supported. ' +
|
|
190
|
+
'This tool extracts a single taxonomy from many records (aggregation). ' +
|
|
191
|
+
'Use invoke() with all records instead.');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// =============================================================================
|
|
195
|
+
// TopicAssigner
|
|
196
|
+
// =============================================================================
|
|
147
197
|
const LABEL_PROMPT_SYSTEM = dedent(`
|
|
148
198
|
You're task is to use the following hierarchy of topics and subtopics (in json format),
|
|
149
199
|
to assign the correct topic and subtopic to each text in the input.
|
|
@@ -162,74 +212,33 @@ Assign the correct topic and subtopic to the following text.
|
|
|
162
212
|
{text}
|
|
163
213
|
`);
|
|
164
214
|
/**
|
|
165
|
-
*
|
|
215
|
+
* A tool that assigns topic and subtopic labels to text based on a taxonomy.
|
|
166
216
|
*/
|
|
167
|
-
export
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return null;
|
|
181
|
-
}
|
|
182
|
-
return parsed;
|
|
217
|
+
export class TopicAssigner extends Tool {
|
|
218
|
+
labelSchema;
|
|
219
|
+
systemPrompt;
|
|
220
|
+
constructor(config, modelConfig) {
|
|
221
|
+
super(modelConfig);
|
|
222
|
+
const { taxonomy } = config;
|
|
223
|
+
// Normalize taxonomy to TaxonomyType
|
|
224
|
+
const normalizedTaxonomy = Array.isArray(taxonomy)
|
|
225
|
+
? { topics: taxonomy }
|
|
226
|
+
: taxonomy;
|
|
227
|
+
// Build schema and system prompt once in constructor
|
|
228
|
+
this.labelSchema = createLabelSchema(normalizedTaxonomy);
|
|
229
|
+
this.systemPrompt = LABEL_PROMPT_SYSTEM.replace('{taxonomy}', JSON.stringify(normalizedTaxonomy, null, 2));
|
|
183
230
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return null;
|
|
231
|
+
schema() {
|
|
232
|
+
return this.labelSchema;
|
|
187
233
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const normalizedTaxonomy = Array.isArray(taxonomy)
|
|
195
|
-
? { topics: taxonomy }
|
|
196
|
-
: taxonomy;
|
|
197
|
-
const labelSchema = createLabelSchema(normalizedTaxonomy);
|
|
198
|
-
const serializedTaxonomy = JSON.stringify(normalizedTaxonomy, null, 2);
|
|
199
|
-
return mapParallel(texts, maxConcurrency, text => assignTopic(text, serializedTaxonomy, labelSchema, model, modelParams));
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Extracts a topic hierarchy from an array of records using an LLM.
|
|
203
|
-
*/
|
|
204
|
-
export async function extractTopics({ records, nTopics = 10, nSubtopics = 5, instructions = '', maxSamples = 500, model = 'gpt-4.1', modelParams = {}, maxRetries = 8, language = 'The same language as the records' }) {
|
|
205
|
-
if (!records || records.length === 0) {
|
|
206
|
-
return { topics: [] };
|
|
207
|
-
}
|
|
208
|
-
const sampledRecords = records.length > maxSamples
|
|
209
|
-
? records.slice(0, maxSamples)
|
|
210
|
-
: records;
|
|
211
|
-
const formattedRecords = formatRecordsAttrWise(sampledRecords);
|
|
212
|
-
const prompt = TOPICS_PROMPT
|
|
213
|
-
.replace('{n_topics}', String(nTopics))
|
|
214
|
-
.replace('{n_subtopics}', String(nSubtopics))
|
|
215
|
-
.replace('{instructions}', instructions)
|
|
216
|
-
.replace('{records}', formattedRecords)
|
|
217
|
-
.replace('{language}', language);
|
|
218
|
-
const { parsed, output_text, error } = await askOpenAISafe(prompt, model, Taxonomy, modelParams, maxRetries, 'return');
|
|
219
|
-
if (error != null) {
|
|
220
|
-
if (output_text == null) {
|
|
221
|
-
throw new Error('Failed to get response from OpenAI');
|
|
222
|
-
}
|
|
223
|
-
try {
|
|
224
|
-
const taxonomy = JSON.parse(output_text);
|
|
225
|
-
return TaxonomyBase.parse(taxonomy);
|
|
226
|
-
}
|
|
227
|
-
catch (parseError) {
|
|
228
|
-
throw new Error(`Failed to parse response even without validation: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
|
|
229
|
-
}
|
|
234
|
+
prompt(text) {
|
|
235
|
+
const userPrompt = LABEL_PROMPT_USER.replace('{text}', text ?? '');
|
|
236
|
+
return [
|
|
237
|
+
{ role: 'system', content: this.systemPrompt },
|
|
238
|
+
{ role: 'user', content: userPrompt }
|
|
239
|
+
];
|
|
230
240
|
}
|
|
231
|
-
|
|
232
|
-
|
|
241
|
+
isEmpty(text) {
|
|
242
|
+
return text == null || text.trim() === '';
|
|
233
243
|
}
|
|
234
|
-
return parsed;
|
|
235
244
|
}
|
|
@@ -1,44 +1,35 @@
|
|
|
1
|
+
import { Tool, type ModelConfig } from '../tool.js';
|
|
1
2
|
import type { BrandContext } from '../schemas/brand.schema.js';
|
|
2
|
-
export interface
|
|
3
|
-
|
|
3
|
+
export interface KeywordTranslatorConfig {
|
|
4
|
+
/** Brand context for disambiguation */
|
|
5
|
+
brandContext: BrandContext;
|
|
6
|
+
/** Language for the output prompt (default: 'en') */
|
|
4
7
|
language?: string;
|
|
5
|
-
|
|
8
|
+
/** Additional instructions */
|
|
6
9
|
instructions?: string;
|
|
7
|
-
brandContext: BrandContext;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
12
|
+
* A tool that converts Google search keywords into natural language LLM prompts.
|
|
13
|
+
* Uses raw text mode (no schema) since the output is plain text.
|
|
11
14
|
*/
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
keywords: Array<string>;
|
|
18
|
-
language?: string;
|
|
19
|
-
model?: string;
|
|
20
|
-
maxConcurrency?: number;
|
|
21
|
-
instructions?: string;
|
|
22
|
-
brandContext: BrandContext;
|
|
15
|
+
export declare class KeywordTranslator extends Tool<string | null, string, string> {
|
|
16
|
+
private readonly promptTemplate;
|
|
17
|
+
constructor(config: KeywordTranslatorConfig, modelConfig: ModelConfig);
|
|
18
|
+
protected prompt(keyword: string | null): string;
|
|
19
|
+
protected isEmpty(keyword: string | null): boolean;
|
|
23
20
|
}
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
prompt: string;
|
|
21
|
+
export interface PromptToKeywordConfig {
|
|
22
|
+
/** Language for the output keyword (default: 'en') */
|
|
27
23
|
language?: string;
|
|
28
|
-
model?: string;
|
|
29
24
|
}
|
|
30
25
|
/**
|
|
31
|
-
*
|
|
26
|
+
* A tool that converts natural language prompts into Google search keywords.
|
|
27
|
+
* Uses raw text mode (no schema) since the output is plain text.
|
|
32
28
|
*/
|
|
33
|
-
export declare
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
maxConcurrency?: number;
|
|
29
|
+
export declare class PromptToKeyword extends Tool<string | null, string, string> {
|
|
30
|
+
private readonly promptTemplate;
|
|
31
|
+
constructor(config: PromptToKeywordConfig | undefined, modelConfig: ModelConfig);
|
|
32
|
+
protected prompt(text: string | null): string;
|
|
33
|
+
protected isEmpty(text: string | null): boolean;
|
|
39
34
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Converts multiple natural language prompts to Google search keywords concurrently while preserving order.
|
|
42
|
-
*/
|
|
43
|
-
export declare function reverseTranslateBatch(params: reverseTranslateBatchParams): Promise<Array<string>>;
|
|
44
35
|
//# sourceMappingURL=translate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../src/src/tools/translate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../src/src/tools/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA+C/D,MAAM,WAAW,uBAAuB;IACvC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,WAAW;IAarE,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;cAIpB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;CAG3D;AAmCD,MAAM,WAAW,qBAAqB;IACrC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACvE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,MAAM,EAAE,qBAAqB,YAAK,EAAE,WAAW,EAAE,WAAW;IASxE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;cAIjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;CAGxD"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { dedent } from '../utils.js';
|
|
1
|
+
import { Tool } from '../tool.js';
|
|
2
|
+
import { dedent } from '../helpers/utils.js';
|
|
4
3
|
const TRANSLATE_PROMPT = dedent(`
|
|
5
4
|
You are an expert in understanding search intent and conversational AI interactions.
|
|
6
5
|
|
|
@@ -33,7 +32,7 @@ You will receive brand context (sector, country). Follow these rules strictly:
|
|
|
33
32
|
- WRONG: "Tell me about geography" (ignores sector context)
|
|
34
33
|
- CORRECT: "What is GEO in AI visibility and search optimization?" (uses sector to disambiguate the acronym)
|
|
35
34
|
|
|
36
|
-
{
|
|
35
|
+
{instructions}
|
|
37
36
|
|
|
38
37
|
# Keyword
|
|
39
38
|
|
|
@@ -46,25 +45,31 @@ You will receive brand context (sector, country). Follow these rules strictly:
|
|
|
46
45
|
Return only the converted prompt, nothing else.
|
|
47
46
|
`);
|
|
48
47
|
/**
|
|
49
|
-
*
|
|
48
|
+
* A tool that converts Google search keywords into natural language LLM prompts.
|
|
49
|
+
* Uses raw text mode (no schema) since the output is plain text.
|
|
50
50
|
*/
|
|
51
|
-
export
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
51
|
+
export class KeywordTranslator extends Tool {
|
|
52
|
+
promptTemplate;
|
|
53
|
+
constructor(config, modelConfig) {
|
|
54
|
+
super(modelConfig);
|
|
55
|
+
const { brandContext, language = 'en', instructions = '' } = config;
|
|
56
|
+
this.promptTemplate = TRANSLATE_PROMPT
|
|
57
|
+
.replace('{language}', language)
|
|
58
|
+
.replace('{sector}', brandContext.sector)
|
|
59
|
+
.replace('{country}', brandContext.country)
|
|
60
|
+
.replace('{instructions}', instructions);
|
|
61
|
+
}
|
|
62
|
+
// No schema() override - uses default null for raw text mode
|
|
63
|
+
prompt(keyword) {
|
|
64
|
+
return this.promptTemplate.replace('{keyword}', keyword ?? '');
|
|
65
|
+
}
|
|
66
|
+
isEmpty(keyword) {
|
|
67
|
+
return keyword == null || keyword.trim() === '';
|
|
61
68
|
}
|
|
62
|
-
return parsed;
|
|
63
|
-
}
|
|
64
|
-
export async function translateBatch(params) {
|
|
65
|
-
const { keywords, language = 'en', model = 'gpt-4.1-mini', maxConcurrency = 100, brandContext, instructions = '' } = params;
|
|
66
|
-
return mapParallel(keywords, maxConcurrency, kwd => translate({ keyword: kwd, language, model, brandContext, instructions }));
|
|
67
69
|
}
|
|
70
|
+
// =============================================================================
|
|
71
|
+
// PromptToKeyword (LLM prompt → keyword)
|
|
72
|
+
// =============================================================================
|
|
68
73
|
const REVERSE_TRANSLATE_PROMPT = dedent(`
|
|
69
74
|
You are an expert in understanding search intent.
|
|
70
75
|
|
|
@@ -94,22 +99,21 @@ Otherwise, Google keyword planner will not accept it.
|
|
|
94
99
|
Return only the keyword, nothing else.
|
|
95
100
|
`);
|
|
96
101
|
/**
|
|
97
|
-
*
|
|
102
|
+
* A tool that converts natural language prompts into Google search keywords.
|
|
103
|
+
* Uses raw text mode (no schema) since the output is plain text.
|
|
98
104
|
*/
|
|
99
|
-
export
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
export class PromptToKeyword extends Tool {
|
|
106
|
+
promptTemplate;
|
|
107
|
+
constructor(config = {}, modelConfig) {
|
|
108
|
+
super(modelConfig);
|
|
109
|
+
const { language = 'en' } = config;
|
|
110
|
+
this.promptTemplate = REVERSE_TRANSLATE_PROMPT.replace('{language}', language);
|
|
111
|
+
}
|
|
112
|
+
// No schema() override - uses default null for raw text mode
|
|
113
|
+
prompt(text) {
|
|
114
|
+
return this.promptTemplate.replace('{prompt}', text ?? '');
|
|
115
|
+
}
|
|
116
|
+
isEmpty(text) {
|
|
117
|
+
return text == null || text.trim() === '';
|
|
106
118
|
}
|
|
107
|
-
return parsed;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Converts multiple natural language prompts to Google search keywords concurrently while preserving order.
|
|
111
|
-
*/
|
|
112
|
-
export async function reverseTranslateBatch(params) {
|
|
113
|
-
const { prompts, language = 'en', model = 'gpt-5-mini', maxConcurrency = 100 } = params;
|
|
114
|
-
return mapParallel(prompts, maxConcurrency, p => reverseTranslate({ prompt: p, language, model }));
|
|
115
119
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphext/cuery",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Cuery tools for AI-powered keyword research and brand analysis",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"scripts": {},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"@google/genai": "^1.37.0",
|
|
27
28
|
"google-auth-library": "^10.4.0",
|
|
28
29
|
"openai": "^6.9.1",
|
|
29
30
|
"tldts": "^6.1.71",
|
package/script/browser.d.ts
CHANGED
package/script/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,wBAAwB,CAAC;AAGvC,cAAc,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,wBAAwB,CAAC;AAGvC,cAAc,+BAA+B,CAAC"}
|
package/script/browser.js
CHANGED
|
@@ -26,4 +26,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
// Types and schemas (no runtime dependencies)
|
|
27
27
|
__exportStar(require("./src/schemas/index.js"), exports);
|
|
28
28
|
// Pure functions for seed keyword handling (no external dependencies)
|
|
29
|
-
__exportStar(require("./src/
|
|
29
|
+
__exportStar(require("./src/helpers/seedKeywords.js"), exports);
|
package/script/mod.d.ts
CHANGED
|
@@ -3,19 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
export * from './src/llm.js';
|
|
7
|
+
export { BatchResponse } from './src/response.js';
|
|
8
|
+
export { getProvider, getProviderForModel, getModelPricing, getModelInfo, calculateCost, type ModelPricing, type ModelInfo, } from './src/providers/index.js';
|
|
6
9
|
export * from './src/tools/keywords.js';
|
|
7
10
|
export * from './src/tools/classifier.js';
|
|
8
11
|
export * from './src/tools/funnel.js';
|
|
9
12
|
export * from './src/tools/personas.js';
|
|
10
13
|
export * from './src/tools/search.js';
|
|
11
14
|
export * from './src/tools/topics.js';
|
|
12
|
-
export * from './src/utils.js';
|
|
15
|
+
export * from './src/helpers/utils.js';
|
|
13
16
|
export * from './src/tools/brands.js';
|
|
14
17
|
export * from './src/tools/translate.js';
|
|
15
18
|
export * from './src/tools/sentiment.js';
|
|
16
19
|
export * from './src/tools/sources.js';
|
|
17
20
|
export * from './src/tools/entities.js';
|
|
18
|
-
export * from './src/
|
|
21
|
+
export * from './src/helpers/seedKeywords.js';
|
|
19
22
|
export * from './src/tools/generic.js';
|
|
20
23
|
export * from './src/api.js';
|
|
21
24
|
export * from './src/apis/chatgptScraper/index.js';
|
package/script/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACN,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,GACd,MAAM,0BAA0B,CAAC;AAGlC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC"}
|
package/script/mod.js
CHANGED
|
@@ -19,19 +19,31 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
19
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.calculateCost = exports.getModelInfo = exports.getModelPricing = exports.getProviderForModel = exports.getProvider = exports.BatchResponse = void 0;
|
|
23
|
+
// Core LLM interface and types
|
|
24
|
+
__exportStar(require("./src/llm.js"), exports);
|
|
25
|
+
var response_js_1 = require("./src/response.js");
|
|
26
|
+
Object.defineProperty(exports, "BatchResponse", { enumerable: true, get: function () { return response_js_1.BatchResponse; } });
|
|
27
|
+
var index_js_1 = require("./src/providers/index.js");
|
|
28
|
+
Object.defineProperty(exports, "getProvider", { enumerable: true, get: function () { return index_js_1.getProvider; } });
|
|
29
|
+
Object.defineProperty(exports, "getProviderForModel", { enumerable: true, get: function () { return index_js_1.getProviderForModel; } });
|
|
30
|
+
Object.defineProperty(exports, "getModelPricing", { enumerable: true, get: function () { return index_js_1.getModelPricing; } });
|
|
31
|
+
Object.defineProperty(exports, "getModelInfo", { enumerable: true, get: function () { return index_js_1.getModelInfo; } });
|
|
32
|
+
Object.defineProperty(exports, "calculateCost", { enumerable: true, get: function () { return index_js_1.calculateCost; } });
|
|
33
|
+
// Tools
|
|
22
34
|
__exportStar(require("./src/tools/keywords.js"), exports);
|
|
23
35
|
__exportStar(require("./src/tools/classifier.js"), exports);
|
|
24
36
|
__exportStar(require("./src/tools/funnel.js"), exports);
|
|
25
37
|
__exportStar(require("./src/tools/personas.js"), exports);
|
|
26
38
|
__exportStar(require("./src/tools/search.js"), exports);
|
|
27
39
|
__exportStar(require("./src/tools/topics.js"), exports);
|
|
28
|
-
__exportStar(require("./src/utils.js"), exports);
|
|
40
|
+
__exportStar(require("./src/helpers/utils.js"), exports);
|
|
29
41
|
__exportStar(require("./src/tools/brands.js"), exports);
|
|
30
42
|
__exportStar(require("./src/tools/translate.js"), exports);
|
|
31
43
|
__exportStar(require("./src/tools/sentiment.js"), exports);
|
|
32
44
|
__exportStar(require("./src/tools/sources.js"), exports);
|
|
33
45
|
__exportStar(require("./src/tools/entities.js"), exports);
|
|
34
|
-
__exportStar(require("./src/
|
|
46
|
+
__exportStar(require("./src/helpers/seedKeywords.js"), exports);
|
|
35
47
|
__exportStar(require("./src/tools/generic.js"), exports);
|
|
36
48
|
__exportStar(require("./src/api.js"), exports);
|
|
37
49
|
__exportStar(require("./src/apis/chatgptScraper/index.js"), exports);
|
package/script/src/api.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type JobId } from './apis/chatgptScraper/index.js';
|
|
2
|
-
import { ModelId } from './models.js';
|
|
3
2
|
import { type Entity } from './schemas/entity.schema.js';
|
|
4
3
|
import { type Funnel } from './schemas/funnel.schema.js';
|
|
5
4
|
import type { ModelIdentifier } from './schemas/models.schema.js';
|
|
@@ -24,8 +23,40 @@ export type EnrichedModelResponse = {
|
|
|
24
23
|
rankedBrandsInSourceTitles: Array<string>;
|
|
25
24
|
rankedBrandsInSourceDomains: Array<string>;
|
|
26
25
|
};
|
|
27
|
-
export declare function queryModel(prompts: Array<string | JobId>, model: ModelIdentifier
|
|
26
|
+
export declare function queryModel(prompts: Array<string | JobId>, model: ModelIdentifier, searchCountry?: string | null): Promise<Array<ModelResponse>>;
|
|
28
27
|
export declare function classifyIntent(texts: Array<string>): Promise<Array<string | null>>;
|
|
28
|
+
export declare function extractTopics(params: {
|
|
29
|
+
records: Array<Record<string, unknown>>;
|
|
30
|
+
maxSamples?: number;
|
|
31
|
+
instructions?: string;
|
|
32
|
+
language?: string;
|
|
33
|
+
model?: string;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
topics: {
|
|
36
|
+
topic: string;
|
|
37
|
+
subtopics: string[];
|
|
38
|
+
}[];
|
|
39
|
+
} | null>;
|
|
40
|
+
export declare function generatePersonas(params: {
|
|
41
|
+
sector: string;
|
|
42
|
+
market: string;
|
|
43
|
+
language: string;
|
|
44
|
+
brand?: string;
|
|
45
|
+
brandDomain?: string;
|
|
46
|
+
count?: number;
|
|
47
|
+
briefing?: string;
|
|
48
|
+
instructions?: string;
|
|
49
|
+
userLanguage?: string;
|
|
50
|
+
personas?: Array<Persona>;
|
|
51
|
+
model?: string;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
personas: {
|
|
54
|
+
name: string;
|
|
55
|
+
description: string;
|
|
56
|
+
keywordSeeds: string[];
|
|
57
|
+
}[];
|
|
58
|
+
explanation: string;
|
|
59
|
+
} | null>;
|
|
29
60
|
export declare function extractAndAssignTopics(texts: Array<string>): Promise<Array<{
|
|
30
61
|
topic: string | null;
|
|
31
62
|
subtopic: string | null;
|
|
@@ -36,7 +67,7 @@ export declare function assignFunnelStages(texts: Array<string>, funnel: Funnel)
|
|
|
36
67
|
}>>;
|
|
37
68
|
export declare function classifyIntoPersonas(texts: Array<string>, personas: Array<Persona>): Promise<Array<Array<string> | null>>;
|
|
38
69
|
export declare function classifyBrandedNonBranded(texts: Array<string>): Promise<Array<string | null>>;
|
|
39
|
-
export declare function extractEntities(texts: Array<string>): Promise<Array<Array<Entity
|
|
40
|
-
export declare function scorePurchaseProbability(texts: Array<string>, numDays?: number): Promise<Array<number>>;
|
|
41
|
-
export declare function scoreRelevance(prompts: Array<string>, context: BrandContext): Promise<Array<number>>;
|
|
70
|
+
export declare function extractEntities(texts: Array<string>): Promise<Array<Array<Entity> | null>>;
|
|
71
|
+
export declare function scorePurchaseProbability(texts: Array<string>, numDays?: number): Promise<Array<number | null>>;
|
|
72
|
+
export declare function scoreRelevance(prompts: Array<string>, context: BrandContext): Promise<Array<number | null>>;
|
|
42
73
|
//# sourceMappingURL=api.d.ts.map
|