only_ever_generator 0.0.7 → 0.0.8

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.
@@ -1,14 +1,16 @@
1
- import { OpenAiService } from "../class/services/open_ai_service";
2
- import { returnTypologyData } from "../parse_response/response_format_typology";
1
+ import { OpenAiService } from "../services/open_ai_service";
2
+ import { returnTypologyData } from "../parse/response_format_typology";
3
3
 
4
4
  export class GenerateTypology{
5
5
  public openAiService: OpenAiService;
6
6
  public prompt:string = '';
7
7
  public content:string = '';
8
- constructor(openAiService: OpenAiService, prompt:string,content:string){
8
+ expectedFields: Array<string>;
9
+ constructor(openAiService: OpenAiService, prompt:string,content:string,expected_fields: Array<string>){
9
10
  this.openAiService = openAiService;
10
11
  this.prompt = prompt;
11
12
  this.content = content;
13
+ this.expectedFields = expected_fields.map((elem:string)=>elem.toLowerCase());
12
14
  }
13
15
  async generate(){
14
16
  const response = await this.openAiService?.sendRequest(this.prompt,this.content);
@@ -16,8 +18,8 @@ export class GenerateTypology{
16
18
  response.metadata = {
17
19
  "req_time": response.generated_at,
18
20
  "req_type": response.type,
19
- "req_tokens": response.usage_data.prompt_tokens,
20
- "res_tokens": response.usage_data.completion_tokens,
21
+ "req_tokens": response.usage_data?.prompt_tokens,
22
+ "res_tokens": response.usage_data?.completion_tokens,
21
23
  };
22
24
  if(response.status_code == 200){
23
25
  return this.parseTypologyOnSuccess(response);
@@ -33,15 +35,25 @@ export class GenerateTypology{
33
35
  return {
34
36
  status_code: 200,
35
37
  metadata: responseData.metadata,
36
- field: generatedContent.field,
38
+ field: this.parseFields(generatedContent.field),
37
39
  concepts: generatedContent.concepts,
38
40
  facts: generatedContent.facts,
39
41
  generate_cards : generatedContent.generate_cards,
40
42
  summary_cards: generatedContent.summary_cards,
41
- type: responseData.type,
43
+ type: responseData.type
42
44
  }
43
45
  }
44
46
 
47
+ parseFields(fields: Array<string>){
48
+ const fieldKeys = ['primary_field', 'secondary_field', 'tertiary_field'];
49
+ return fields.slice(0,3).map((item,index)=> (
50
+ {
51
+ [fieldKeys[index]]: item,
52
+ "reconcile" : !(this.expectedFields.includes(item.toLowerCase()))
53
+ }
54
+ ));
55
+ }
56
+
45
57
  async parseTypologyOnFailure(responseData:any){
46
58
  responseData.metadata.status = 'failed';
47
59
  return {
@@ -1,18 +0,0 @@
1
- import { openAIRequest } from "../../service/open_ai_request";
2
-
3
-
4
- export class OpenAiService{
5
- public api_key: string;
6
- public model: string;
7
-
8
-
9
- constructor(apiKey: string, model:string){
10
- this.api_key = apiKey;
11
- this.model =model
12
- }
13
-
14
- async sendRequest(prompt: string,content: string){
15
- return await openAIRequest(content,prompt,this.api_key,this.model);
16
- }
17
- }
18
-
@@ -1,46 +0,0 @@
1
- import axios from "axios";
2
- import config from "../config.js";
3
- import { parseOpenAiFailureResponse, parseOpenAiSuccessResponse } from "../utils/parse_openai_response.js";
4
-
5
-
6
- export async function openAIRequest(content:String,prompt:String,token:String,model: String){
7
- try{
8
- let message = [
9
- {
10
- "role": "system", "content": prompt
11
- },{
12
- "role": "user", "content": content
13
- }
14
- ];
15
- const url = 'https://api.openai.com/v1/chat/completions';
16
- let response = await axios.post(
17
- url,
18
- //data
19
- {
20
- "model": model,
21
- "messages": message,
22
- "response_format": {"type": "json_object"},
23
- },
24
- ///config
25
- {
26
- headers : {
27
- Authorization : "Bearer "+ token,
28
- "Content-Type" : ['application/json']
29
- },
30
-
31
- }
32
-
33
- );
34
-
35
- if(response.status == 200){
36
- console.log('success');
37
- return parseOpenAiSuccessResponse(response.data) as any
38
- // return JSON.parse(response.data.choices[0].message.content);
39
-
40
- }else{
41
- console.log('failed');
42
- return response.statusText as any;
43
- }}catch (err:any) {
44
- return parseOpenAiFailureResponse(err.response);
45
- }
46
- }