orki-core-consumer
v0.0.103
Published
## Como instalar o módulo
Downloads
273
Readme
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))