Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: ✨ **Os Bastidores da Criação de Agentes Inteligentes: Complexidade, Recursos de Software e Hardware** ✨

_Créditos das imagens: ChatGPT ✨ **Os Bastidores da Criação de Agentes Inteligentes: Complexidade, Recursos de Software e Hardware** ✨ A inteligência artificial é hoje o coração de muitas inovações, seja em assistentes de voz, chatbots, sistemas de recomendação ou automação industrial. Mas, afinal, o que está por trás da implementação de um bom agente de IA? A partir de uma análise do projeto open source [naldodj-hb-ai-agents](https://github.com/naldodj/naldodj-hb-ai-agents), que engloba diversos exemplos de agentes escritos na linguagem Harbour, vamos explorar as camadas de complexidade e os requisitos necessários para construir soluções eficientes com IA. --- ## 🔄 Muito além do modelo: o ecossistema de um agente de IA Para quem imagina que basta conectar um grande modelo de linguagem (LLM) a uma interface e pronto, a verdade é outra. Um agente inteligente robusto requer a integração de múltiplas camadas de software e suporte a hardware adequado, além de estruturas para testes, ...

BlackTDN :: Atualização de Dicionários e Tabelas de Dados

001 BlackTDN disponibiliza mais uma ferramenta para a atualização dos Dicionários e Tabela de Dados. U_NDJUPDDIC.PRG (depende de atualização dos arquivos da NDJLib).

A idéia básica é , a partir de um arquivo de configuração ndj_upd.ini, permitir a parametrização das tabelas e informações a serem atualizadas. Permite a “Simulação” e gera log ao final do Processo.

Exemplo de Configuração do arquivo ndj_upd.ini

[GENERAL]
adbConfig=SIX,SX1,SX2,SX3,SX6,SX7,SX9,SXA,SXB,SXG,SXM,SXO
adbTables=SX5
nApplyUpdate=1

[SX5]
bdbSourceName={||"\ndj_upd\sx5esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx5"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__cRDD}
cIndexKey=X5_FILIAL+X5_TABELA+X5_CHAVE
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SIX]
bdbSourceName={||"\ndj_upd\sixesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"six"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=INDICE+ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX1]
bdbSourceName={||"\ndj_upd\sx1esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx1"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X1_GRUPO+X1_ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX2]
bdbSourceName={||"\ndj_upd\sx2esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx2"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X2_CHAVE
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX3]
bdbSourceName={||"\ndj_upd\sx3esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx3"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X3_ARQUIVO+X3_CAMPO
cIndexCond=
bEvalCond={||.T.}
cFieldDefUpdTable=X3_ARQUIVO;Obrigatorio para o SX3
aFieldsNotChange=
nSoftSeek=0

[SX6]
bdbSourceName={||"\ndj_upd\sx6esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx6"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X6_FIL+X6_VAR
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=X6_CONTEUD,X6_CONTSPA,X6_CONTENG
nSoftSeek=0

[SX7]
bdbSourceName={||"\ndj_upd\sx7esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx7"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X7_CAMPO+X7_SEQUENC
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX9]
bdbSourceName={||"\ndj_upd\sx9esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx9"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X9_DOM+X9_CDOM+X9_EXPDOM+X9_EXPCDOM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=1;Obrigatorio para SX9

[SXA]
bdbSourceName={||"\ndj_upd\sxaesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxa"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XA_ALIAS+XA_ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXB]
bdbSourceName={||"\ndj_upd\sxbesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxb"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXG]
bdbSourceName={||"\ndj_upd\sxgesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxg"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XG_GRUPO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXM]
bdbSourceName={||"\ndj_upd\sxmesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxm"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XM_FILIAL+XM_CODIGO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXO]
bdbSourceName={||"\ndj_upd\sxoesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxo"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XO_ALIAS+XO_CAMPO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

Ex.: do Processo de Simulação

imageimage

image

image

image

image

image

image

image

Ex.: do Processo

image

image

image 

image

image

image

Obs.: Vale lembrar que qualquer rotina que altera estrutura de dados deve ser EXAUSTIVAMENTE testada antes de posta em prática.

[]s

иαldσ dj

Comentários

  1. Ta nas prioridades incluir a gravação dos Helps de Campo e Perguntas....(Issue List em Code Google)

    ResponderExcluir
  2. OK. Finalizado. Processo de Update atualizará também Help de Campos e Help de Perguntas....

    ResponderExcluir
  3. Naldo Dj, voce por acaso já integrou o Protheus com o AD do windows? se sim, vale a pena?

    ResponderExcluir
  4. Sim. Funciona. É tão simples de habilitar/desabilitar que, seria rendundancia minha, dizer se vale apena ou não.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas