only_ever_generator 0.5.4 → 0.5.6
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/dist/bootstrap/app.js +5 -5
- package/dist/card_gen/generate_cards.js +2 -1
- package/dist/config.js +1 -1
- package/dist/constants/api_constants.js +1 -1
- package/dist/constants/prompt_data.js +4 -4
- package/dist/constants/source_data.js +234 -982
- package/dist/logger.js +4 -4
- package/dist/parse/parse_card/parse_cloze_card.js +12 -10
- package/dist/parse/parse_card/parse_flash_cards.js +33 -0
- package/dist/parse/parse_card/parse_match_card.js +1 -1
- package/dist/parse/parse_card/parse_mcq_card.js +1 -1
- package/dist/parse/parse_card_response.js +8 -31
- package/dist/parse/parse_source_content.js +30 -20
- package/dist/parse/response_format_typology.js +16 -16
- package/dist/services/open_ai_service.js +13 -10
- package/dist/typology_gen/generate_typology.js +16 -15
- package/dist/utils/generate_args.js +3 -3
- package/dist/utils/parse_openai_response.js +7 -7
- package/package.json +1 -1
- package/src/bootstrap/app.ts +69 -79
- package/src/card_gen/generate_cards.ts +6 -1
- package/src/config.ts +3 -3
- package/src/constants/api_constants.ts +3 -3
- package/src/constants/prompt_data.ts +24 -26
- package/src/constants/prompts/card_gen_prompt.ts +2 -4
- package/src/constants/source_data.ts +317 -1181
- package/src/index.ts +1 -2
- package/src/logger.ts +24 -25
- package/src/parse/parse_card/parse_cloze_card.ts +55 -43
- package/src/parse/parse_card/parse_flash_cards.ts +33 -0
- package/src/parse/parse_card/parse_match_card.ts +33 -33
- package/src/parse/parse_card/parse_mcq_card.ts +1 -1
- package/src/parse/parse_card_response.ts +28 -47
- package/src/parse/parse_source_content.ts +173 -168
- package/src/parse/response_format_card.ts +0 -2
- package/src/parse/response_format_typology.ts +42 -42
- package/src/services/open_ai_service.ts +50 -48
- package/src/typology_gen/generate_typology.ts +68 -60
- package/src/utils/generate_args.ts +25 -23
- package/src/utils/parse_openai_response.ts +17 -19
|
@@ -2,74 +2,82 @@ import { OpenAiService } from "../services/open_ai_service";
|
|
|
2
2
|
import { returnTypologyData } from "../parse/response_format_typology";
|
|
3
3
|
import { ErrorLogger } from "../logger";
|
|
4
4
|
|
|
5
|
-
export class GenerateTypology{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
export class GenerateTypology {
|
|
6
|
+
public openAiService: OpenAiService;
|
|
7
|
+
public prompt: string = "";
|
|
8
|
+
public content: string = "";
|
|
9
|
+
expectedFields: Array<string>;
|
|
10
|
+
constructor(
|
|
11
|
+
openAiService: OpenAiService,
|
|
12
|
+
prompt: string,
|
|
13
|
+
content: string,
|
|
14
|
+
expected_fields: Array<string>
|
|
15
|
+
) {
|
|
16
|
+
this.openAiService = openAiService;
|
|
17
|
+
this.prompt = prompt;
|
|
18
|
+
this.content = content;
|
|
19
|
+
this.expectedFields = expected_fields.map((elem: string) =>
|
|
20
|
+
elem.toLowerCase()
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
async generate() {
|
|
24
|
+
try {
|
|
25
|
+
const response = await this.openAiService?.sendRequest(
|
|
26
|
+
this.prompt,
|
|
27
|
+
this.content
|
|
28
|
+
);
|
|
29
|
+
response["type"] = "typology";
|
|
20
30
|
response.metadata = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
req_time: response.generated_at ?? new Date(),
|
|
32
|
+
req_type: response.type,
|
|
33
|
+
req_tokens: response.usage_data?.prompt_tokens,
|
|
34
|
+
res_tokens: response.usage_data?.completion_tokens,
|
|
35
|
+
prompt_tokens_details: response.usage_data?.prompt_tokens_details,
|
|
36
|
+
model: this.openAiService.model,
|
|
37
|
+
};
|
|
38
|
+
if (response.status_code == 200) {
|
|
28
39
|
return this.parseTypologyOnSuccess(response);
|
|
29
40
|
} else {
|
|
30
41
|
response.metadata.err_message = response.message;
|
|
31
42
|
return response;
|
|
32
|
-
}} catch (e: any){
|
|
33
|
-
await new ErrorLogger({
|
|
34
|
-
"type": 'typology_parsing',
|
|
35
|
-
"data": e.message
|
|
36
|
-
}).log();
|
|
37
43
|
}
|
|
44
|
+
} catch (e: any) {
|
|
45
|
+
await new ErrorLogger({
|
|
46
|
+
type: "typology_parsing",
|
|
47
|
+
data: e.message,
|
|
48
|
+
}).log();
|
|
38
49
|
}
|
|
50
|
+
}
|
|
39
51
|
|
|
52
|
+
parseTypologyOnSuccess(responseData: any) {
|
|
53
|
+
responseData.metadata.status = "completed";
|
|
54
|
+
const generatedContent = responseData.generated_content;
|
|
55
|
+
return {
|
|
56
|
+
status_code: 200,
|
|
57
|
+
metadata: responseData.metadata,
|
|
58
|
+
field: this.parseFields(generatedContent.field),
|
|
59
|
+
concepts: generatedContent.concepts,
|
|
60
|
+
facts: generatedContent.facts,
|
|
61
|
+
generate_cards: generatedContent.generate_cards,
|
|
62
|
+
summary_cards: generatedContent.summary_cards,
|
|
63
|
+
type: responseData.type,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
40
66
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
concepts: generatedContent.concepts,
|
|
49
|
-
facts: generatedContent.facts,
|
|
50
|
-
generate_cards : generatedContent.generate_cards,
|
|
51
|
-
summary_cards: generatedContent.summary_cards,
|
|
52
|
-
type: responseData.type
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
parseFields(fields: Array<string>){
|
|
57
|
-
const fieldKeys = ['primary_field', 'secondary_field', 'tertiary_field'];
|
|
58
|
-
return fields.slice(0,3).map((item,index)=> (
|
|
59
|
-
{
|
|
60
|
-
[fieldKeys[index]]: item,
|
|
61
|
-
"reconcile" : !(this.expectedFields.includes(item.toLowerCase()))
|
|
62
|
-
}
|
|
63
|
-
));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async parseTypologyOnFailure(responseData:any){
|
|
67
|
-
responseData.metadata.status = 'failed';
|
|
67
|
+
parseFields(fields: Array<string>) {
|
|
68
|
+
const fieldKeys = ["primary_field", "secondary_field", "tertiary_field"];
|
|
69
|
+
return fields.slice(0, 3).map((item, index) => ({
|
|
70
|
+
[fieldKeys[index]]: item,
|
|
71
|
+
reconcile: !this.expectedFields.includes(item.toLowerCase()),
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
68
74
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
metadata: responseData.metadata,
|
|
72
|
-
}
|
|
73
|
-
}
|
|
75
|
+
async parseTypologyOnFailure(responseData: any) {
|
|
76
|
+
responseData.metadata.status = "failed";
|
|
74
77
|
|
|
75
|
-
|
|
78
|
+
return {
|
|
79
|
+
status_code: responseData.status_code,
|
|
80
|
+
metadata: responseData.metadata,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
export class GenerateArgs{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class GenerateArgs {
|
|
2
|
+
public generate_card: boolean = false;
|
|
3
|
+
public generate_typology: boolean = false;
|
|
4
|
+
public generate_summary: boolean = false;
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
constructor(
|
|
7
|
+
generate_card: boolean,
|
|
8
|
+
generate_typology: boolean,
|
|
9
|
+
generate_summary: boolean
|
|
10
|
+
) {
|
|
11
|
+
this.generate_card = generate_card;
|
|
12
|
+
this.generate_typology = generate_typology;
|
|
13
|
+
this.generate_summary = generate_summary;
|
|
14
|
+
}
|
|
10
15
|
|
|
16
|
+
getWhatNeedsToBeGenerated() {
|
|
17
|
+
let returnData = [];
|
|
18
|
+
if (this.generate_typology == true) {
|
|
19
|
+
returnData.push("generate_tyopology");
|
|
11
20
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
let returnData = [];
|
|
15
|
-
if(this.generate_typology == true){
|
|
16
|
-
returnData.push('generate_tyopology')
|
|
17
|
-
}
|
|
18
|
-
if(this.generate_summary == true){
|
|
19
|
-
returnData.push('generate_summary')
|
|
20
|
-
}
|
|
21
|
-
if(this.generate_card == true){
|
|
22
|
-
returnData.push('generate_card');
|
|
23
|
-
}
|
|
24
|
-
return returnData;
|
|
21
|
+
if (this.generate_summary == true) {
|
|
22
|
+
returnData.push("generate_summary");
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
if (this.generate_card == true) {
|
|
25
|
+
returnData.push("generate_card");
|
|
26
|
+
}
|
|
27
|
+
return returnData;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
export function parseOpenAiSuccessResponse(responseData: any){
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
export function parseOpenAiSuccessResponse(responseData: any) {
|
|
2
|
+
let choices = JSON.parse(responseData.choices[0].message.content);
|
|
3
|
+
let usuage = responseData.usage;
|
|
4
|
+
let createdTime = responseData.created;
|
|
5
|
+
return {
|
|
6
|
+
status_code: 200,
|
|
7
|
+
usage_data: usuage,
|
|
8
|
+
generated_content: choices,
|
|
9
|
+
generated_at: new Date(createdTime * 1000),
|
|
10
|
+
};
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function parseOpenAiFailureResponse(errorResponse: any){
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
}
|
|
13
|
+
export function parseOpenAiFailureResponse(errorResponse: any) {
|
|
14
|
+
// let statusCode =
|
|
15
|
+
return {
|
|
16
|
+
status_code: errorResponse.status,
|
|
17
|
+
message: errorResponse.data?.error?.code,
|
|
18
|
+
};
|
|
19
|
+
}
|