# opex-ai
### generateText
#### Example
```js
const { generateText } = require("opex-ai")
await generateText(`Рассказ на тему: Мои летние каникулы. на 4000 символов, 9 класс
`)
//или await generateText("Жил был Великий Белый Гриб") :)
```
#### Usage
```js
await generateText(text)
```
#### `text`
 - начальная фраза по которой он будет генерировать текст (в некоторых случаях может попытаться дать ответ на вопрос или написать текст на данную тему, но в основном просто продолжит текст после этой фразы )

### summarize

#### Usage
```js
await summarize(text, num_beams,  num_return_sequences, length_penalty,genstrategy,no_repeat_ngram_size) 
```
#### `text` 
 - оригинальный текст для переписывания

#### `num_beams`
 - default: 8
 - границы 1-40+
 - количество источников генерации текста

#### `num_return_sequences`
 - кол-во примеров, из которых выбирается лучший вариант. 
 - default: 7
 - границы: 1 - 50
 - чем болше тем лучше качество
 - при большом количестве может долго обрабатывать или выдать ошибку

#### `no_repeat_ngram_size`
 - все ngrams такого размера могут встречаться только один раз.
 - default: 5;

#### `length_penalty`
 - параметр генерации текста length_penalty — экспоненциальный штраф к длине.
 - default: 2.0;
   
#### `genstrategy`
- параметр переключения между стратегиями генерации (0 — для beam search, 1 — для sampling).
 - default: 0;
top_k — параметр top_k текста для генерации. Дефолтное значение 30;
top_p — параметр top_p текста для генерации. Дефолтное значение 0.95.


### rewrite
#### Usage
```js
await rewrite (text, temperature, top_k,  top_p, repetition_penalty, num_return_sequences, range_mode)
```

#### `text` 
 - оригинальный текст для переписывания
 
#### `temperature`
 - default: 1
 - границы: 0.1 - 1.9
 - параметр температуры текста для генерации. 
 - Температура текста - его актуальность(~качество). 
 - Чем она выше, тем ближе текст к идеальному прототипу
 - Чем меньше коэффициент тем ближе к оригиналу 
 
#### `top_k`
 - default: 50
 - границы: 1 - 300 
 - Коэффициент показывает насколько тема близка или аналогична теме запроса.  Уникальность текста.
 
#### `top_p`
 - default: 0.7
 - границы: 0.1 - 150 
 - параметр отвечает за то сколько процентов оригинала содержится в статье
 - чем меньше, тем больше оригинального текста содержится в переписанном тексте
 
#### `repetition_penalty`
 - (штраф за повторные реплики.) 
 - default: 0.1-1.99
 - определяет, сколько раз каждое выражение должно пройти проверку на соответствие по запросу

#### `num_return_sequences`
 - кол-во примеров, из которых выбирается лучший рерайт. 
 - default: 5
 - границы: 1 - 40+
 - чем болше тем лучше качество
 - при большом количестве может долго обрабатывать или выдать ошибку
 
#### `range_mode`
 - выбор режима ранжирования кандидатов ("bertscore"/"classifier"). 
 - default: сразу оба

### chat 

#### Подключение
#### - SQLite3
```js
const SQLite3 = require('better-sqlite3');
var db = new SQLite3("./db.sqlite")

const { SQLite3Chat } = require('opex-ai')
const ai = new SQLite3Chat(db,"ОрехБот"/*?bot_name*/); 
```
#### - MySQL
```js
const MySQL = require('mysql-database');
const database = new MySQL()
const db = await database.connect({
    host:     "localhost",
    user:     "root",
    password: "passwrd",
    database: "db"
})

db.on('connected',(connection) => {
		log('Database Connected');
	})
  
const { MySQLChat } = require('opex-ai')
const ai = new MySQLChat(db,"ОрехБот"/*?bot_name*/);
```

#### Functions
```js 
await ai.sendMessage(msg,?id))
//отправляет сообщение боту, и возвращает ответ

await ai.getAllMessages(?id)
//возвращает массив сообщений указанного чата

await ai.deleteData(?id)
// Удаляет все сообщения по указанному айди ( если указать "all" в поле id, то удалятся все сообщения из всех чатов)
 
//Если вы используете только один чат, можно не указывать айди, по умолчанию будет использоваться 123456
```



#### Можно вручную указать массив сообщений
```js
const { chat } = require("opex-ai")
history = [
  "привет",
  "привет, как дела?",
  "хорошо, а у тебя как?"
]
await chat(history,?bot_name="Орех")
```
```js
const { chat } = require("opex-ai")
await chat(["Привет, как дела?"],"Ева")
```
#### `history`
 - история сообщений в виде массива
 - контекст, чтобы бот мог отвечать, по смыслу учитывая прошлые сообщения 
#### `bot_name`
 - можно указать имя бота

### Developers
 - package by: [OpexDev](https://t.me/OpexDev)