{"version":3,"file":"ngx-teacher-assist.mjs","sources":["../../../projects/ngx-teacher-assist/src/helpers/questions.ts","../../../projects/ngx-teacher-assist/src/lib/ngx-teacher-assist.service.ts","../../../projects/ngx-teacher-assist/src/lib/ngx-teacher-assist.module.ts","../../../projects/ngx-teacher-assist/src/ngx-teacher-assist.ts"],"sourcesContent":["import { NgXTeacherAssitQuestion } from '../public-api';\r\n\r\nexport const QUESTION: NgXTeacherAssitQuestion = {\r\n  english: {\r\n    misspelling:\r\n      'List down the spelling and grammatical errors of this string in english. Write the spelling errors preceded by the word \"E_SPELLING:\" and the grammatical errors preceded by the word \"E_GRAMMAR:\". string=\"',\r\n    numberOfWords: 'Tell me the number of words in this text in english: ',\r\n    iaGenerated:\r\n      'Tell me if any part of this text was autogenerated by artificial intelligence: ',\r\n    resolvingDoubts: 'Explain me in a resume: ',\r\n    generateExam:\r\n      'Generate N_QUESTION questions with N_OPTION answers each, where only one will be correct, in HTML format with a radio buttons so that they can be selected by the user on the topic: ',\r\n    rightOrWrong: `Answer 'Correct' if it is correct or 'Iconrrect' if it is incorrect if to the question: 'N_QUESTION', the user answers: 'N_RESPONSE'`,\r\n    summary: 'Summarize this text: ',\r\n    shortQuestions:\r\n      'Generate an exam of N_QUESTION short questions on the topic: N_TOPIC. After that, write the most accurate answers. Write the question preceded by the word \"N_TOPIC\" and answers with the word \"N_ANSWER\"',\r\n    generalCulture:\r\n      'Ask me a question of general culture for a student of N_AGE years and his answer. Write the question preceded by the word \"N_QUESTION:\" and the answer preceded by the word \"N_ANSWER:\"',\r\n  },\r\n  spanish: {\r\n    misspelling:\r\n      'Enumera los errores ortográficos y gramaticales de este string en español. Escriba los errores ortográficos precedidos por la palabra \"E_SPELLING:\" y los errores gramaticales precedidos por la palabra \"E_GRAMMAR:\". string=\"',\r\n    numberOfWords: 'Dime cuantas palabras tiene el siguiente texto: ',\r\n    iaGenerated:\r\n      'Dime si alguna parte de este texto ha sido generado por inteligencia artificial: ',\r\n    resolvingDoubts: 'Explicame en un resumen: ',\r\n    generateExam:\r\n      'Genera N_QUESTION preguntas con N_OPTION respuestas cada una, donde solo una sera correcta, en formato HTML con radio buttons para que puedan ser seleccionadas por el usuario sobre el tema: ',\r\n    rightOrWrong: `Responde 'Correcto' si es correcto o 'Iconrrecto' si es incorrecto si a la pregunta: 'N_QUESTION', el usuario respode: 'N_RESPONSE'`,\r\n    summary: 'Haz un resumen de este texto: ',\r\n    shortQuestions:\r\n      'Genera un examen de N_QUESTION preguntas cortas sobre el tema: N_TOPIC. Después de eso, escribe las respuestas mas precisas. Escribe la pregunta precedido de la palabra \"N_TOPIC\" y las respuestas con la palabra \"N_ANSWER\"',\r\n    generalCulture:\r\n      'Hazme una pregunta de cultura general para un estudiante de N_AGE años y su respuesta. Escribe la pregunta precedido de la palabra \"N_QUESTION:\" y la respuesta precedido de la palabra \"N_ANSWER:\"',\r\n  },\r\n  polish: {\r\n    misspelling:\r\n      'Wypisz błędy ortograficzne i gramatyczne tego string w języku polskim. Wpisz błędy ortograficzne poprzedzone słowem „E_SPELLING:”, a błędy gramatyczne poprzedzone słowem „E_GRAMMAR:”. string=\"',\r\n    numberOfWords: 'Podaj liczbę słów w tym tekście: ',\r\n    iaGenerated:\r\n      'Powiedz mi, czy jakakolwiek część tego tekstu została wygenerowana przez sztuczną inteligencję: ',\r\n    resolvingDoubts: 'Wyjaśnij mi w skrócie: ',\r\n    generateExam:\r\n      'Wygeneruj N_QUESTION pytań z N_OPTION odpowiedziami w każdym, z których tylko jedna będzie poprawna, w formacie HTML z przycisk radiowy, aby użytkownik mógł je wybrać na dany temat: ',\r\n    rightOrWrong: `Odpowiedz 'Prawidłowo', jeśli jest poprawna lub 'Ikona', jeśli jest niepoprawna, jeśli na pytanie: 'N_QUESTION', użytkownik odpowiada: 'N_RESPONSE'`,\r\n    summary: 'Podsumuj ten tekst: ',\r\n    shortQuestions:\r\n      'Generuje egzamin z N_QUESTION krótkich pytań na temat: N_TOPIC. Następnie napisz najdokładniejsze odpowiedzi. Wpisz pytanie poprzedzone słowem „N_TOPIC”, a odpowiedzi słowem „N_ANSWER”',\r\n    generalCulture:\r\n      'Zadaj mi pytanie dotyczące ogólnej kultury studenta w wieku N_AGE lat i jego odpowiedź. Napisz pytanie poprzedzone słowem „N_QUESTION:”, a odpowiedź poprzedzoną słowem „N_ANSWER:”',\r\n  },\r\n  italian: {\r\n    misspelling:\r\n      'Elenca gli errori ortografici e grammaticali di questa string in italiano. Scrivi gli errori ortografici preceduti dalla parola \"E_SPELLING:\" e gli errori grammaticali preceduti dalla parola \"E_GRAMMAR:\". string=\"',\r\n    numberOfWords: 'Dimmi il numero di parole in questo testo: ',\r\n    iaGenerated: `Dimmi se qualche parte di questo testo è stata generata dall' intelligenza artificiale: `,\r\n    resolvingDoubts: 'Spiegami in sintesi: ',\r\n    generateExam: `Genera N_QUESTION domande con N_OPTION risposte ciascuna, di cui solo una sarà corretta, in formato HTML con radio buttons in modo che possano essere selezionate dall'utente sull'argomento: `,\r\n    rightOrWrong: `Rispondi 'Correct' se è corretta o 'Iconrrect' se è errata se alla domanda: 'N_QUESTION', l'utente risponde: 'N_RESPONSE'`,\r\n    summary: 'Riassumi questo testo: ',\r\n    shortQuestions: `Genera un esame di N_QUESTION domande brevi sull'argomento: N_TOPIC. Successivamente, scrivi le risposte più accurate. Scrivi la domanda preceduta dalla parola \"N_TOPIC\" e le risposte con la parola \"N_ANSWER\"`,\r\n    generalCulture:\r\n      'Fammi una domanda di cultura generale per uno studente di N_AGE anni e la sua risposta. Scrivi la domanda preceduta dalla parola \"N_QUESTION:\" e la risposta preceduta dalla parola \"N_ANSWER:\"',\r\n  },\r\n};\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport { QUESTION } from '../helpers/questions';\nimport {\n  NgxImages,\n  NgxImagestData,\n  NgxTeacherAssistLanguage,\n} from '../interfaces/config.interface';\nimport {\n  NgxResolution,\n  NgxTeacherAssistConfig,\n  NgxTeacherAssistData,\n  NgxTeacherAssistImageResponse,\n  NgxTeacherAssistResponse,\n} from '../public-api';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxTeacherAssistService {\n  private readonly headers: HttpHeaders;\n  private readonly url = `https://api.openai.com/v1/engines/${\n    this.config.engine || 'text-davinci-003'\n  }/completions`;\n  private readonly imageUrl = 'https://api.openai.com/v1/images/generations';\n  private data: NgxTeacherAssistData;\n\n  constructor(\n    @Inject('CONFIG') private readonly config: NgxTeacherAssistConfig,\n    private readonly http: HttpClient\n  ) {\n    // Headers are set for all requests.\n    this.headers = new HttpHeaders()\n      .set('Content-Type', 'application/json')\n      .set('Authorization', `Bearer ${this.config.api_key}`);\n    // Initial configuration is established.\n    this.data = {\n      best_of:\n        (this.config.number_of_responses &&\n          this.config.number_of_responses++) ||\n        2, // Should be \"n\" + 1.\n      max_tokens: this.config.max_tokens || 1000,\n      n: this.config.number_of_responses || 1,\n      prompt: '',\n      temperature: 0.7,\n    };\n    // If there is no language set, English will be the default.\n    this.config.language = this.config.language || 'english';\n  }\n\n  /**\n   * Method to check if the given response has misspellings, and which are they.\n   * @param {string} studentResponse\n   * @returns Observable<string>\n   */\n  checkMisspellings(studentResponse: string): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.temperature = undefined;\n    DATA.top_p = 1;\n    DATA.n = 1;\n    DATA.best_of = 2;\n    DATA.prompt = `${\n      QUESTION[this.config.language].misspelling\n    }${studentResponse.trim()}\"`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to know the number of words in the given text.\n   * @param {string} text\n   * @returns Observable<string>\n   */\n  checkNumberOfWords(text: string): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.temperature = 0.2;\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].numberOfWords} ${text}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to ckech if any part of the given text has been generated by artificial inteligence.\n   * @param {string} text\n   * @returns Observable<string>\n   */\n  checkIfItHasBeenGeneratedByAI(text: string): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].iaGenerated} ${text}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to get a resume of a given topic.\n   * @param {string} text\n   * @returns Observable<string>\n   */\n  resolveDoubts(text: string): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.n = 1;\n    DATA.max_tokens = 2000;\n    DATA.prompt = `${QUESTION[this.config.language].resolvingDoubts} ${text}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to generate an exam with checkboxes of a given topic.\n   * @param {string} topic\n   * @returns Observable<string>\n   */\n  generateExam(\n    topic: string,\n    numberQuestions: number,\n    numberOptions: number\n  ): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].generateExam\n      .replace('N_QUESTION', `${numberQuestions}`)\n      .replace('N_OPTION', `${numberOptions}`)} ${topic}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(\n        map((response) =>\n          response.choices[0].text.replace('/\\n/g', '').replace('/\\\\/g', '')\n        )\n      );\n  }\n\n  /**\n   * Method to generate an exam with short questions and its possible respones.\n   * @param {string} topic\n   * @returns Observable<string>\n   */\n  generateExamShortQuestions(\n    topic: string,\n    numberQuestions: number\n  ): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].shortQuestions\n      .replace('N_QUESTION', `${numberQuestions}`)\n      .replace('N_TOPIC', topic)}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to obtain images generated by AI.\n   * @param {string} topic\n   * @param {number} numberOfImages\n   * @param {NgxResolution} resolution\n   * @returns Observable<string[]>\n   */\n  generateImages(\n    topic: string,\n    numberOfImages: number = 1,\n    resolution: NgxResolution = '512x512'\n  ): Observable<string[]> {\n    const DATA: NgxImagestData = {\n      prompt: topic,\n      n: numberOfImages,\n      size: resolution,\n    };\n\n    return this.http\n      .post<NgxTeacherAssistImageResponse>(this.imageUrl, DATA, {\n        headers: this.headers,\n      })\n      .pipe(\n        map((response) => response.data.map((value: NgxImages) => value.url))\n      );\n  }\n\n  /**\n   * Method to check if the response for a given question is correct.\n   * @param {string} question\n   * @param {string} response\n   * @returns Observable<string>\n   */\n  checkRightOrWrong(question: string, response: string): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].rightOrWrong\n      .replace('N_QUESTION', question)\n      .replace('N_RESPONSE', response)} `;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to make a summary about a given text.\n   * @param {string} text\n   * @returns Observable<string>\n   */\n  makeASummary(text: string): Observable<string> {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.max_tokens = 2000;\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].summary} ${text}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to make a general culture question.\n   * @param {number} age This is used to custom the response for an especific age\n   * @returns Observable<string>\n   */\n  generalCulture(age: number) {\n    const DATA: NgxTeacherAssistData = JSON.parse(JSON.stringify(this.data));\n    DATA.n = 1;\n    DATA.prompt = `${QUESTION[this.config.language].generalCulture.replace(\n      'N_AGE',\n      `${age}`\n    )}`;\n\n    return this.http\n      .post<NgxTeacherAssistResponse>(this.url, DATA, {\n        headers: this.headers,\n      })\n      .pipe(map((response) => response.choices[0].text));\n  }\n\n  /**\n   * Method to change the language of the questions.\n   * @param {NgxTeacherAssistLanguage} languague\n   */\n  setLanguage(languague: NgxTeacherAssistLanguage): void {\n    this.config.language = languague;\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NgxTeacherAssistConfig } from '../interfaces/config.interface';\nimport { NgxTeacherAssistService } from './ngx-teacher-assist.service';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: [],\n})\nexport class NgxTeacherAssistModule {\n  static config(\n    config: NgxTeacherAssistConfig\n  ): ModuleWithProviders<NgxTeacherAssistModule> {\n    return {\n      ngModule: NgxTeacherAssistModule,\n      providers: [\n        NgxTeacherAssistService,\n        { provide: 'CONFIG', useValue: config },\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}