0.0.107 • Published 6 months ago

orki-core-consumer v0.0.107

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

orki-core-consumer

Como instalar o módulo

    npm install orki-core-consumer

Apos instalar, você precisa apontar para a spec e gerar o skeleton

Configurando:

    npx orki-core-consumer configure

Informe o host do ambiente orki. Exemplo: https://api.orki.example

Gerando o skeleton:

    npx orki-core-consumer generate -w <workspace> -f <folder>

Inofrme o workspace e a pasta onde o skeleton será gerado.

|O Workspace é o nome dados ao conjunto de APIs no ORKI.|

Como usar

Para usar esse módulo, você precisa configurar o host e token

orkiSetConfig({
    baseUrl: 'https://api.orki.example',
    token: '<token>',
})

|A configuração acima deve ficar no topo da execução. Exemplo, na entrada de uma rota|

Executando scripts

Simples, passando o nome do script, por padrão é usado o metodo GET

OrkiScript.execute<any>('welcome').then((data) => {
    console.log(data.result)
}).catch((err) => {
    console.log(err)
})

Para modificar a requisicao, basta passar o segundo parametro

OrkiScript.execute<any>({
    script: 'welcome',
    body: {
        name: 'Teste'
    },
    method: 'POST',
    query: {
        id: '5ce5919009fbfb0025132016'
    }
}).then((data) => {
    console.log(data.result)
}).catch((err) => {
    console.log(err)
})

Como user as variáveis suspend para scripts ?

Nesse caso, a variavel é true quando quanquer um script é chamado

Para usar, basta importar a classe OrkiScript e usar a variavel suspend.

class AppComponent {
    get suspend(): boolean { 
        return OrkiScript.suspend['<scriptName>']
    }
}

Interagindo com o CRUD

Para interagir com o CRUD, siga os exemplos abaixo:

Listando

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        name: 'teste'
    },
    invertedFilter: {
        organization: '5ce5919009fbfb0025132016'
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Ouvindo eventos

Ouvindo os eventos de created

public async ngOnInit(): Promise<void> {
    await ProgramAppService.listen({ event: 'created', }, async (error?: any, message?: OrkiEventMessage<Program>) => {      
        // message.data typeof Program
        console.log('event', message, error)
    })
}

Fechando a conexão

public async ngOnDestroy(): Promise<void> {
    await ProgramAppService.closeListen()
}

Listando com exemplos de filtro

Filtro de datas

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        created_at: {
            start: '2019-05-22T00:00:00.000Z',
            end: '2019-05-22T23:59:59.999Z'
        }
    },
    invertedFilter: {
        created_at: {
            start: '2019-05-22T00:00:00.000Z',
            end: '2019-05-22T23:59:59.999Z'
        }
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Filtro de números

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        age: {
            start: "18",
            end: "25"
        }
    },
    invertedFilter: {
        age: {
            start: "18",
            end: "25"
        }
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Filtro de booleanos

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        active: true
    },
    invertedFilter: {
        active: true
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Filtro com contém

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        organization: ['5ce5919009fbfb0025132016']
    },
    invertedFilter: {
        organization: ['5ce5919009fbfb0025132016']
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Recuperando um registro por ID

ProgramAppService.getById('5ce5919009fbfb0025132019')
.then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Criando um registro

ProgramAppService.create({
    name: 'Teste',
    organization: '5ce5919009fbfb0025132016'
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Criando um registro com upload

<input type="file" id="file" />
ProgramAppService.create({
    attachment: {
        file: document.querySelector('#file'),
        isPublic: true,
        progress: (progress: number) => {
            console.log('Progresso:', progress)
        }            
    }
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Atualizando um registro

ProgramAppService.updateById('5ce5919009fbfb0025132019', {
    name: 'Teste',
    organization: '5ce5919009fbfb0025132016'
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Removendo um registro

ProgramAppService.deleteById('5ce5919009fbfb0025132019')
.then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Como user as variáveis suspend das classes ?

Nesse caso, a variavel é true quando quanquer ação do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspend
    }
}

Nesse caso, a variavel é true quando a ação list do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendList
    }
}

Nesse caso, a variavel é true quando a ação getById do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendGet
    }
}

Nesse caso, a variavel é true quando a ação create do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendCreate
    }
}

Nesse caso, a variavel é true quando a ação updateById do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendUpdate
    }
}

Nesse caso, a variavel é true quando a ação deleteById do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendDelete
    }
}

Interagindo com os Actions

Para interagir com os Actions, siga os exemplos abaixo:

Chamada assincrona, retorna um executionId para verificação de status

NameAction.execute({
    name: 'Teste'
}).then((executionId) => {
    console.log(executionId)
}).catch((err) => {
    console.log(err)
})

Verificando o status de uma chamada assincrona, retorna o resultado da execução

NameAction.status('<executionId>')
.then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Chamada sincrona, retorna o resultado da execução após o término

NameAction.executeSync({
    name: 'Teste'
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Como user as variáveis suspend das classes ?

Nesse caso, a variavel é true quando quanquer ação do Action executeSync é chamado

class AppComponent {
    get suspend(): boolean { 
        return NameAction.suspendExecuteSync
    }
}

Core Storage, como usar ?

O modulo permite fazer upload, remoção e download de arquivos.

Fazendo upload de um arquivo

await OrkiStorage.upload('mode_name', 'bucket', [{
    file: document.querySelector('#file'), // Referencia ao input file
    isPublic: false,
    progress: (p) => console.log(p)
}])

Removendo um arquivo

await OrkiStorage.remove({
    "key": "path/to/file.txt",
    "bucketId": "65271722ac4580823b739d18"
})

Baixando um arquivo

await OrkiStorage.download({
    "key": "path/to/file.txt",
    "bucketId": "65271722ac4580823b739d18"
}).then((blob) => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement("a");
    a.href = url;
    a.download = 'file.txt';
    document.body.appendChild(a);
    a.click();
    a.remove();
})

Core LLM, como usar ?

O identifier é o identificador do contexto, o client precisa gerar um identificador único para cada contexto. É recomandado usar o uuid para gerar o identificador.

O llmbotIdentifier é o identificador do Bot configurado no servidor.

Recuperando os contextos

console.log(await OrkiLLM.getContexts())
[
    {
        "isActive": true,
        "_id": "657df2ac561ce65e5f71903e",
        "identifier": "uxk4xx",
        "authentication": "657cb9f67ef62aeebbcb992e",
        "llmbot": "657cefae80a801b4f37d233e",
        "createdAt": "2023-12-16T18:55:40.725Z",
        "updatedAt": "2023-12-16T18:55:40.725Z",
        "__v": 0
    },
    {
        "isActive": true,
        "_id": "657defeedbc83e0f0d8a0331",
        "identifier": "93b03640-b4a6-44be-ae8a-dc25520a5f19",
        "authentication": "657cb9f67ef62aeebbcb992e",
        "llmbot": "657cefae80a801b4f37d233e",
        "createdAt": "2023-12-16T18:43:58.915Z",
        "updatedAt": "2023-12-16T18:43:58.915Z",
        "__v": 0
    },
    {
        "isActive": true,
        "_id": "657def0adbc83e0f0d89ffe5",
        "identifier": "8e9a73ca-9b39-4488-ba61-c1d43cb5155a",
        "authentication": "657cb9f67ef62aeebbcb992e",
        "llmbot": "657cefae80a801b4f37d233e",
        "createdAt": "2023-12-16T18:40:10.832Z",
        "updatedAt": "2023-12-16T18:40:10.832Z",
        "__v": 0
    }
]

Criando um contexto

console.log(await OrkiLLM.createContext({
    identifier,
    llmbotIdentifier: 'MyBot'
}))

Se inscrevendo para ouvir os eventos

await OrkiLLM.events(indentifier, async (error, event) => {
    if(!error) return
    console.log(`Event:` event.event)
})
{
    "event": "writing",
    "identifier": "7qd5ii",
    "data": {}
}

Recuperando as mensagens

console.log(await OrkiLLM.getMessages(indentifier))
{
    "data": [
        {
            "_id": "657df492561ce65e5f719767",
            "role": "user",
            "content": "Qual a rua do cep 01001000 ?",
            "createdAt": "2023-12-16T19:03:46.762Z"
        },
        {
            "_id": "657df492561ce65e5f71976d",
            "role": "assistant",
            "content": "A rua do CEP 01001000 é a Praça da Sé.",
            "createdAt": "2023-12-16T19:03:46.790Z"
        }
    ],
    "total": 2
}

Enviando uma mensagem

console.log(await OrkiLLM.sendMessage(indentifier, 'Qual a rua do cep 01001000 ?'))
{
    "request": {
        "_id": "657df492561ce65e5f719767",
        "content": "Qual a rua do cep 01001000 ?",
        "role": "user",
        "createdAt": "2023-12-16T19:03:46.762Z"
    },
    "response": {
        "_id": "657df492561ce65e5f71976d",
        "content": "A rua do CEP 01001000 é a Praça da Sé.",
        "role": "assistant",
        "createdAt": "2023-12-16T19:03:46.790Z"
    },
    "functions": [
        {
            "_id": "657df492561ce65e5f71976b",
            "detail": {
                "function_call": {
                    "name": "viacep",
                    "arguments": {
                        "cep": "01001000"
                    }
                },
                "function_result": {
                    "success": true,
                    "endereco": {
                        "cep": "01001-000",
                        "logradouro": "Praça da Sé",
                        "complemento": "lado ímpar",
                        "bairro": "Sé",
                        "localidade": "São Paulo",
                        "uf": "SP",
                        "ibge": "3550308",
                        "gia": "1004",
                        "ddd": "11",
                        "siafi": "7107"
                    }
                }
            },
            "createdAt": "2023-12-16T19:03:46.780Z"
        }
    ]
}

Desativando um contexto

console.log(await OrkiLLM.disableContext(indentifier))
0.0.106

7 months ago

0.0.105

7 months ago

0.0.104

8 months ago

0.0.103

9 months ago

0.0.107

6 months ago

0.0.102

9 months ago

0.0.101

10 months ago

0.0.95

12 months ago

0.0.97

11 months ago

0.0.98

11 months ago

0.0.99

11 months ago

0.0.100

11 months ago

0.0.94

12 months ago

0.0.91

2 years ago

0.0.92

2 years ago

0.0.93

2 years ago

0.0.89

2 years ago

0.0.90

2 years ago

0.0.88

2 years ago

0.0.87

2 years ago

0.0.85

2 years ago

0.0.86

2 years ago

0.0.84

2 years ago

0.0.80

2 years ago

0.0.81

2 years ago

0.0.82

2 years ago

0.0.83

2 years ago

0.0.73

2 years ago

0.0.74

2 years ago

0.0.75

2 years ago

0.0.76

2 years ago

0.0.77

2 years ago

0.0.78

2 years ago

0.0.79

2 years ago

0.0.70

2 years ago

0.0.71

2 years ago

0.0.72

2 years ago

0.0.62

2 years ago

0.0.63

2 years ago

0.0.64

2 years ago

0.0.65

2 years ago

0.0.66

2 years ago

0.0.67

2 years ago

0.0.68

2 years ago

0.0.69

2 years ago

0.0.60

2 years ago

0.0.61

2 years ago

0.0.59

2 years ago

0.0.54

2 years ago

0.0.56

2 years ago

0.0.57

2 years ago

0.0.58

2 years ago

0.0.53

2 years ago

0.0.52

2 years ago

0.0.51

2 years ago

0.0.50

2 years ago

0.0.49

2 years ago

0.0.48

2 years ago

0.0.47

2 years ago

0.0.46

2 years ago

0.0.45

2 years ago

0.0.44

2 years ago

0.0.43

2 years ago

0.0.42

2 years ago

0.0.41

2 years ago

0.0.40

2 years ago

0.0.39

2 years ago

0.0.38

2 years ago

0.0.37

2 years ago

0.0.36

2 years ago

0.0.35

2 years ago

0.0.34

2 years ago

0.0.33

2 years ago

0.0.32

2 years ago

0.0.31

2 years ago

0.0.30

2 years ago

0.0.29

2 years ago

0.0.28

2 years ago

0.0.27

2 years ago

0.0.26

2 years ago

0.0.25

2 years ago

0.0.24

2 years ago

0.0.23

2 years ago

0.0.22

2 years ago

0.0.21

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago