orki-core-consumer

0.0.103 • Public • Published

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": "",
                        "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))

Readme

Keywords

none

Package Sidebar

Install

npm i orki-core-consumer

Weekly Downloads

103

Version

0.0.103

License

ISC

Unpacked Size

82.8 kB

Total Files

15

Last publish

Collaborators

  • willguitaradmfar