#VSCode

0 Seguidores · 49 Postagens

VSCode é o nome abreviado para o popular editor multiplataforma VisualStudio Code da Microsoft.

Saber mais.

Artigo Heloisa Paiva · Set. 29, 2025 2m read

Olá,

Pensei em compartilhar um hook bem útil que me ajudou no desenvolvimento no Health Connect Cloud com VS Code e GitBash. Ao desenvolver no Health Connect Cloud, se forem feitas alterações diretamente no servidor, como regras de roteamento (routing rules) ou implantações de componentes, elas não são incluídas automaticamente no controle de origem (source control). Por isso, você deve exportar do servidor para seus arquivos locais e enviar para o seu repositório remoto. Tenho certeza de que existem métodos mais fáceis para lidar com isso, os quais estou testando, mas como uma solução rápida, achei que seria útil ter um gancho de pré-commit que aciona um lembrete no GitBash - veja abaixo.

0
0 21
Anúncio Danusa Calixto · Ago. 8, 2025

Usuários do framework %UnitTest agora podem obter informações de cobertura de teste dentro do VS Code combinando a versão mais recente (v2.0.0) da extensão InterSystems Testing Manager com a impressionante Test Coverage Tool de @Timothy.Leavitt.

Acima, você pode ver o painel Cobertura de Teste, que movi para a barra lateral secundária à direita para que possa ser explorado mais facilmente em conjunto com o Explorador de Testes à esquerda.

0
0 31
Artigo Henry Pereira · Ago. 3, 2025 5m read

artisan cover

Se você já viu um artesão em ação — seja um ceramista moldando o barro até virar arte ou um luthier transformando madeira bruta em um violão extraordinário — sabe que a mágica não está nos materiais, e sim no cuidado, na técnica e no processo. Tenho uma guitarra feita por um luthier que me inspira todos os dias. Mas, vou confessar, criar algo assim é um talento que não tenho.

Por outro lado, no digital, vejo muita gente esperando essa mesma “mágica” de uma IA generativa... prompts genéricos como “crie um app” e esperando resultados espetaculares. Espera-se que a IA faça milagres com zero contexto.

Foi dessa frustração que nasceu o dc-artisan — uma ferramenta para quem quer ser um verdadeiro artesão na criação de prompts. A proposta? Ajudar qualquer pessoa a transformar aquela ideia bruta e mal formata em um prompt funcional, eficiente e cheio de contexto.

Assim como o artesão não faz belas peças por sorte, gerar bons resultados com IA exige intenção, preparo e um bom processo. O problema quase nunca é a IA em si — é como nós a utilizamos. Igual ao luthier que escolhe a madeira certa e molda cada detalhe, engenhar prompts bons exige clareza, estrutura e propósito.

Acreditamos que o mundo merece muito mais do que “prompts mágicos” que só levem à decepção. A IA generativa mostra todo seu potencial guiada por humanos com clareza, objetivos reais e estrutura bem pensada. Nenhum artesão cria beleza por acidente — gerar boas respostas com IA requer preparo e cuidado.

Engenharia de Prompt é uma Arte — e o dc-artisan é Sua Oficina

O dc-artisan trata a criação de prompts como um ofício — algo sistematizado, que pode ser aprendido, testado e aprimorado. Ele oferece uma caixa de ferramentas completa, indo além da tentativa-e-erro.

De início, o dc-artisan busca entender seu prompt, ele interage diretamente com você:

  • Perguntas inteligentes: O dc-artisan analisa seu prompt e faz perguntas pontuais para entender o que você realmente quer, quem é o público, qual o formato esperado e que informações faltam. Por exemplo:
    • “Você espera qual tipo de saída? Um resumo textual, código ou dados estruturados?”
    • “Quem é o público-alvo?”
    • “Qual será o tipo de conteúdo usado com esse prompt?”

prompt enhance

Essas interações te ajudam a entender não apenas o “o que” você quer dizer, mas o “por quê”.

Com o objetivo claro, o dc-artisan analisa a estrutura do seu prompt e oferece sugestões personalizadas — para melhorar a clareza, ajustar o tom e preencher lacunas críticas de contexto.

E o melhor: tudo isso dentro do editor favorito — o VS Code! Você pode incluir variáveis diretamente no seu prompt (como {task} ou {audience}), o que oferece flexibilidade e reaproveitamento. É possível visualizar instantaneamente como os prompts ficam com diferentes substituições — e ver exatamente como vão funcionar.

Mas não para por aí.

Teste, Ajuste e Melhore Seus Prompts

O dc-artisan também ajuda você a fazer tuning de prompts para extrair o melhor desempenho. Basta fazer o upload de um CSV com casos de teste para que a ferramenta avalie de forma automatizada a consistência, a qualidade da saída e o impacto da estrutura do prompt em diferentes contextos.

O dc-artisan analisa cada resposta e gera um relatório completo com métricas de similaridade — assim você pode otimizar seus prompts com dados reais, não com achismo.

testing

Criar Prompts Sem Contexto Não É Técnica — É Caos

Criar prompts sem estrutura é como tentar esculpir madeira vendado. Algo pode sair... mas dificilmente vai soar como um bom instrumento.

Muitos caem em dois extremos: prompts vagos e curtos demais, ou blocos enormes de conteúdo jogados sem organização. Nenhum dos dois funciona. Ou a IA não entende o que você quer, ou se perde em um mar de informações inúteis.

E quando o contexto é longo ou confuso demais, até LLMs avançadas perdem o rumo. Em vez de pensar, elas repetem o conteúdo anterior ou se prendem a padrões do início da conversa. Ironicamente, modelos com contexto grandes (como 32k tokens) são ainda mais propensos a este erro.

A solução para esse problema? RAG (Retrieval-Augmented Generation): não dar qualquer informação à IA, mas sim as relevantes, no momento certo.

Como o dc-artisan e o Modo RAG Pipeline Entram em Cena

O dc-artisan une criação de prompts com gestão de contexto. Ele não só te ajuda a escrever prompts melhores — ele garante que a IA receba informação relevante, e não um tsunami aleatório.

Com o Modo RAG Pipeline, você pode:

  • 🗂️ Enviar e dividir documentos: PDF, DOCX, Markdown, TXT — tudo isso pode ser dividido em blocos e enviado para sua base vector.
  • 🧬 Inspecionar blocos de texto: Veja cada bloco de embedding vector com clareza.
  • 🧹 Gerenciar conteúdo: Remova diretamente blocos desatualizados ou irrelevantes, mantendo a “memória” da IA enxuta e refinada.

rag

Essa ideia foi inspirada pelo Portal de Ideias da InterSystems (DPI-I-557)

Arquitetura Robusta e Flexível

Um dos maiores diferenciais do dc-artisan está por trás dos panos: seu backend. A extensão roda sobre o InterSystems IRIS Interoperability, com um adapter para o liteLLM que desenvolvemos.

Essa estrutura garante flexibilidade e integração com múltiplas LLMs. Você não fica preso a uma única IA. Pode alternar e conectar, no mesmo ambiente, com plataformas como OpenAI, Gemini, Claude, Azure OpenAI entre outras.

Cada vez mais desenvolvedores estão percebendo que prompting não é sobre “mágica” — é sobre propósito, clareza e contexto. Não se trata de chutar palavras certas, mas projetar prompts como engenheiros e não como feiticeiros.

Assim como luthiers criam instrumentos com alma a partir de madeira, você também pode esculpir prompts com contexto, previsíveis e eficazes com uma ferramenta feita sob medida para isso.

dc-artisan não é só uma ferramenta — é uma mudança de mentalidade: do improviso para a precisão, da sorte para a técnica, da intuição para a arte.

🎸 Pronto pra criar prompts com as próprias mãos?
⚙️ Abra o VS Code, instale o dc-artisan e comece a esculpir seu prompt como um artesão — não como um mágico.

dc-artisan

2
0 26
Artigo Heloisa Paiva · Abr. 22, 2025 6m read

Há treze anos, obtive dois diplomas de graduação em engenharia elétrica e matemática, e logo em seguida comecei a trabalhar em tempo integral na InterSystems, sem usar nenhuma das duas. Uma das minhas experiências acadêmicas mais memoráveis e perturbadoras foi em Estatística II. Em uma prova, eu estava resolvendo um problema de intervalo de confiança moderadamente difícil. O tempo estava acabando, então (sendo um engenheiro) escrevi a integral definida na folha de prova, digitei-a na minha calculadora gráfica, escrevi uma seta com "calculadora" sobre ela e depois escrevi o resultado. Meu

0
0 26
Artigo Heloisa Paiva · Abr. 20, 2025 6m read

Sei que pessoas completamente novas no VS Code, Git, Docker, FHIR e outras ferramentas podem, às vezes, ter dificuldades com a configuração do ambiente. Por isso, decidi escrever um artigo que percorre todo o processo de configuração passo a passo para facilitar o início.

Eu realmente agradeceria se você pudesse deixar um comentário no final – me diga se as instruções foram claras, se algo ficou faltando ou se há mais alguma coisa que você acharia útil.

A configuração inclui:

✅ VS Code – Editor de código
✅ Git – Sistema de controle de versão
✅ Docker – Executa uma instância do IRIS for Health Community
Extensão REST Client do VS Code – Para executar consultas à API FHIR
✅ Python – Para escrever scripts baseados em FHIR
✅ Jupyter Notebooks –Para tarefas de IA e FHIR

Antes de começar: Certifique-se de ter privilégios de administrador no seu sistema.

Além de ler o guia, você também pode seguir os passos nos vídeos:

Para Windows

0
0 39
InterSystems Oficial Danusa Calixto · Fev. 17, 2025

Primeiro, deixe-me desejar um Feliz Ano Novo à comunidade de desenvolvedores! Esperamos trazer muitas coisas boas para vocês este ano, e hoje eu gostaria de apresentar a versão mais recente da extensão Intersystems Language Server para o VS Code. A maioria das melhorias do Language Server são experimentadas por meio da interface do usuário da extensão ObjectScript, então você pode não estar ciente das muitas melhorias em áreas como Intellisense e hover overs que foram lançadas ao longo de 2024. Dê uma rápida lida no CHANGELOG do Language Server e descubra o que você perdeu. Mais recentemente,

0
0 37
InterSystems Oficial Danusa Calixto · jan 28, 2025

Já faz um tempo que não posto sobre o Embedded Git na Comunidade de Desenvolvedores, e gostaria de fornecer uma atualização sobre a enorme quantidade de trabalho que fizemos este ano e para onde estamos indo a seguir.

Contexto

Se você estiver construindo soluções no IRIS e quiser usar o Git, isso é ótimo! Basta usar o VSCode com um repositório git local e enviar suas alterações para o servidor - é muito fácil.

Mas e se:

0
0 32
Artigo Heloisa Paiva · Jul. 16, 2024 2m read

Olá!

Recentemente estive investigando uma situação incômoda enquanto editava classes ou rotinas ObjectScript no VSCode. O que acontecia era que, como estava escrevendo as linhas de código na minha classe (por exemplo: a adição de um novo método, mudança da assinatura de classe ou de um bloco de código) isso ocasionava uma rápida revisão da sintaxe, reformatação e compilação - e inevitavelmente (já que eu estava apenas na metade da escrita), isso gerava erros de compilação.

0
0 177
InterSystems Oficial Danusa Calixto · Maio 14, 2024

Como a maioria de vocês já ouviu falar, a InterSystems anunciou a descontinuação do Studio com o lançamento do IRIS 2023.2. Um plano detalhado de descontinuação foi revelado em novembro e agora estamos atingindo o primeiro marco desse plano. A partir dos kits de visualização 2024.2, os kits do Windows não conterão mais o Studio. Isso significa que novas instalações usando este kit não instalarão o Studio, e atualizar uma instância existente para a versão 2024.2 (ou posterior) removerá o Studio do diretório bin da instância.

0
0 142
Artigo Danusa Calixto · Abr. 4, 2024 3m read

Olá, Desenvolvedores!

Suponha que você tenha uma classe persistente com dados e queira ter uma IU Angular simples para visualizar os dados e fazer operações CRUD.

Recentemente, @Alberto Fuentes descreveu como desenvolver uma IU Angular para seu aplicativo do InterSystems IRIS usando RESTForms2. 

Neste artigo, quero explicar a você como obter uma IU Angular simples para fazer operações CRUD e visualizar seus dados de classes do InterSystems IRIS automaticamente em menos de 5 minutos.

Vamos lá!

Para isso, você precisará do seguinte:

Usarei uma classe Data.Countries, que gerei e importei pelo csvgen usando este comando:

d ##class(community.csvgen).GenerateFromURL("https://raw.githubusercontent.com/datasciencedojo/datasets/master/WorldDBTables/CountryTable.csv",",","Data.Countries"

Para criar uma IU Angular, precisamos expor a API REST para essa classe, que servirá as operações CRUD.

Vamos usar o módulo restforms2 para isso. 

Esse comando no dockerfile instala restforms2 no contêiner IRIS:

zpm "install restforms2" \

Para adicionar uma API REST, precisamos derivar a classe de Form.Adaptor:

Class Data.Countries Extends (%Library.Persistent, Form.Adaptor)

Adicione os parâmetros restforms2 à classe persistente para gerenciar o comportamento geral: parâmetro de classificação, nome de exibição etc.:

// Nome do formulário, e não uma chave global, então pode ser qualquer coisa
Parameter FORMNAME = "Countries";

/// Permissões padrão /// Objetos desse formulário podem ser Criados, Lidos, Atualizados e Excluídos /// Redefina esse parâmetro para mudar as permissões para todo mundo /// Redefina o método checkPermission (veja Form.Security) para essa classe  /// para adicionar a segurança personalizada com base em usuário/funções/etc. Parameter OBJPERMISSIONS As %String = "CRUD";

/// Propriedade usada para informações básicas sobre o objeto /// Por padrão, o método getObjectDisplayName recebe seu valor dela Parameter DISPLAYPROPERTY As %String = "name";

Perfeito. Em seguida, podemos usar a sintaxe restforms2 para informar ao restforms2 quais propriedades queremos expor às operações CRUD. Você pode fazer isso adicionando o atributo "DISPLAYNAME =" às propriedades que você quer expor em restforms2-ui. Exemplo:

Property code As %Library.String(MAXLEN = 250) [ SqlColumnNumber = 2 ];

Property name As %Library.String(DISPLAYNAME = "Name", MAXLEN = 250) [ SqlColumnNumber = 3 ];

Property continent As %Library.String(DISPLAYNAME = "Continent", MAXLEN = 250) [ SqlColumnNumber = 4 ];

Property region As %Library.String(DISPLAYNAME = "Region", MAXLEN = 250) [ SqlColumnNumber = 5 ];

Property surfacearea As %Library.Integer(DISPLAYNAME = "Surface Area", MAXVAL = 2147483647, MINVAL = -2147483648) [ SqlColumnNumber = 6, SqlFieldName = surface_area ];

Property independenceyear As %Library.Integer(DISPLAYNAME = "Independence Year", MAXVAL = 2147483647, MINVAL = -2147483648) [ SqlColumnNumber = 7, SqlFieldName = independence_year ];

Ótimo! Agora vamos introduzir a camada de UI.  Esse comando no dockerfile instala restforms2-ui, que é a IU Angular para Restform2:

zpm "install restforms2-ui" \

É isso! Vamos examinar a IU para sua classe, que você pode encontrar no URL server:port/restforms2-ui:

RESTForms são usados com as classes de teste Person e Company, e você pode usar isso para examinar os recursos de restformsUI. No momento, é possível editar campos de string, número, booleano, data e consulta.

Você pode testar tudo isso no seu laptop, se clonar e compilar este repositório:

docker-compose up -d --build

E abrir o URL:

localhost:port/restforms2-ui/index.html

ou, se você usar o VSCode, selecione esse item do menu:

Boa programação e fique ligado!

0
0 87
Artigo Larissa Prussak · Mar. 20, 2024 2m read

Você já editou arquivos no VS Code, mas precisou verificar um valor global ou executar alguns comandos do ObjectScript? Agora você pode, sem necessidade de configuração! Se você tem vscode-objectscript extension version 2.10.0 ou posterior e estiver conectado ao InterSystems IRIS 2023.2 ou posterior, agora você pode abrir uma conexão de terminal com seu servidor, independentemente de onde ele esteja localizado.

Existem três maneiras de abrir este novo terminal:

  • O comando "Iniciar Terminal WebSocket" na paleta de comandos (Ctrl-Shift-P no Windows, Cmd-Shift-P no Mac): Launch WebSocket Terminal command

  • O terminal integrado do VS Code Menu Perfis: terminal profiles menu

*A extensão do Gerenciador de Servidores árvore do servidor: server manager tree

O Terminal WebSocket oferece suporte a muitos dos recursos do [shell ObjectScript] padrão(https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GCLI_intro) como leituras, trocas de namespace, interrupções e prompts de terminal personalizados. Porém, neste post gostaria de destacar três recursos que são exclusivos dele.

  • A entrada do comando tem sintaxe colorida, então você pode ter certeza de que sua entrada está sintaticamente correta antes de executar: syntax colored input

  • O terminal suporta um modo de edição multilinha, onde uma nova linha será adicionada ao pressionar Enter em vez de executar a entrada. Uma nova linha será adicionada se houver chave esquerda não fechada { ou parêntese esquerdo ( na entrada do comando: multi-line input

  • Está totalmente integrado com o VS Code integração de shell, então o VS Code captura a entrada e a saída do comando. Isso permite que você execute comandos novamente e copie a saída do comando para a área de transferência sem ter que destacar o texto com o cursor: command output

Para obter uma lista completa de recursos, consulte a documentação oficial. Tem uma ideia de como podemos melhorar esse recurso? Estamos felizes em ouvir isso! Poste suas sugestões no [repositório GitHub] da extensão(https://github.com/intersystems-community/vscode-objectscript/issues). Todas as capturas de tela desta postagem usam o novo tema VS Code "InterSystems Default Dark Modern", que está disponível na extensão InterSystems Language Server versão 2.4.0 e posterior.

1
0 191
Artigo Heloisa Paiva · Mar. 15, 2024 6m read

Introdução

Nas próximas semanas, meus colegas de trabalho estão planejando começar a usar VSCode para programar com os produtos InterSystems. Entre as várias vantagens disso, eu gostaria de salientar a possibilidade de se conectar com outras tecnologias, como o GitHub, com facilidade. Além disso, o VSCode também oferece uma extensa loja de extensões, onde você pode achar vários recursos adicionais gratuitos que fazem a programação mais rápida e eficiente. Por último e não menos importante, para conquistar os corações de todo desenvolvedor, é Open Source.

0
0 198
Artigo Danusa Calixto · Mar. 12, 2024 9m read

Neste GitHub, você pode encontrar todas as informações sobre como usar um modelo de machine learning / IA do HuggingFace no Framework IRIS usando python.

1. iris-huggingface

Uso de modelos de machine learning no IRIS usando Python. Para modelos text-to-text, text-to-image e image-to-image.

Modelos de exemplo:

2. Instalação

2.1. Iniciando a produção

Na pasta iris-local-ml, abra um terminal e insira:

docker-compose up

Na primeira vez, pode levar alguns minutos para criar a imagem corretamente e instalar todos os módulos necessários para o Python.

2.2. Acesse a produção

Seguindo este link, acesse a produção: Acesse a produção

2.3. Encerrando a produção

docker-compose down

Como funciona

Por enquanto, alguns modelos talvez não funcionem com essa implementação, já que tudo é feito automaticamente, ou seja, não importa o modelo de entrada, tentaremos fazer com que funcione usando a biblioteca transformerspipeline.

Pipeline é uma ferramenta poderosa da equipe HuggingFace que analisa a pasta em que o modelo foi baixado e entende qual biblioteca deve usar entre PyTorch, Keras, Tensorflow ou JAX. Em seguida, ela carrega esse modelo usando AutoModel.
Então, ao inserir a tarefa, o pipeline sabe o que fazer com o modelo, tokenizer ou até extrator de características nessa pasta e gerencia a entrada automaticamente, tokeniza, processa, transfere para o modelo e retorna um resultado decodificado que podemos usar diretamente.

3. API do HuggingFace

Primeiro, você precisa iniciar a demonstração, usando o botão verde Start, ou use Stop e Start novamente para aplicar as mudanças nas configurações.

Em seguida, ao clicar na operação Python.HFOperation escolhida e selecionar na guia à direita action, você pode aplicar test à demonstração.

Na janela de test, selecione:

Tipo de solicitação: Grongier.PEX.Message

Em classname, insira:

msg.HFRequest

Para json, veja um exemplo de uma chamada para GPT2:

{
    "api_url":"https://api-inference.huggingface.co/models/gpt2",
    "payload":"Can you please let us know more details about your ",
    "api_key":"----------------------"
}

Agora, você pode clicar em Visual Trace para ver nos detalhes o que aconteceu e visualizar os registros.

OBSERVE que você precisa ter uma chave de API do HuggingFace antes de usar essa Operação (as chaves de API são gratuitas, basta fazer a inscrição na HF)

OBSERVE que você pode mudar o URL para testar outros modelos do HuggingFace. Talvez seja necessário mudar o payload.

Veja este exemplo:
sending hf reqhf reqhf resp

4. Use qualquer modelo da web

Nesta seção, vamos ensinar você a usar praticamente qualquer modelo da internet, HuggingFace ou não.

4.1. PRIMEIRO CASO: VOCÊ TEM SEU PRÓPRIO MODELO

Nesse caso, você precisa copiar e colar seu modelo, com config, tokenizer.json etc. dentro de uma pasta na pasta do modelo.
Caminho: src/model/yourmodelname/

Depois, você precisa acessar os parâmetros de Python.MLOperation.
Clique em Python.MLOperation e vá para settings na guia à direita. Depois, na parte Python e na parte %settings. Aqui, você pode inserir ou modificar quaisquer parâmetros (não se esqueça de pressionar apply depois de terminar).
Veja a configuração padrão para esse caso:
%settings

name=yourmodelname
task=text-generation

OBSERVE que qualquer configuração que não for name ou model_url entrará nas configurações PIPELINE.

Agora você pode clicar duas vezes na operação Python.MLOperation e executar o start. Você precisa ver na parte Log a inicialização do modelo.

Em seguida, criamos um PIPELINE utilizando transformers que usam o arquivo config na pasta como vimos antes.

Para chamar esse pipeline, clique na operação Python.MLOperation e selecione action na guia à direita. Você pode aplicar test à demonstração.

Na janela de test, selecione:

Tipo de solicitação: Grongier.PEX.Message

Em classname, insira:

msg.MLRequest

Para json, você precisa inserir todos os argumentos necessários para o modelo.
Aqui está um exemplo de uma chamada para GPT2:

{
    "text_inputs":"Unfortunately, the outcome",
    "max_length":100,
    "num_return_sequences":3
}

Clique em Invoke Testing Service (Invocar serviço de teste) e aguarde a operação do modelo.

Veja este exemplo:
sending ml req

Agora, você pode clicar em Visual Trace para ver nos detalhes o que aconteceu e visualizar os registros.

Veja este exemplo:
ml req

ml resp

4.2. SEGUNDO CASO: VOCÊ QUER BAIXAR UM MODELO DO HUGGINGFACE

Nesse caso, você precisa encontrar o URL do modelo no HuggingFace.

4.2.1. Configurações

Depois, você precisa acessar os parâmetros de Python.MLOperation.
Clique em Python.MLOperation e vá para settings na guia à direita. Depois, na parte Python e na parte %settings. Aqui, você pode inserir ou modificar quaisquer parâmetros (não se esqueça de pressionar apply depois de terminar).
Veja um exemplo de configuração para alguns modelos que encontramos no HuggingFace:

%settings para gpt2

model_url=https://huggingface.co/gpt2
name=gpt2
task=text-generation

%settings para camembert-ner

name=camembert-ner
model_url=https://huggingface.co/Jean-Baptiste/camembert-ner
task=ner
aggregation_strategy=simple

%settings para bert-base-uncased

name=bert-base-uncased
model_url=https://huggingface.co/bert-base-uncased
task=fill-mask

%settings para detr-resnet-50

name=detr-resnet-50
model_url=https://huggingface.co/facebook/detr-resnet-50
task=object-detection

%settings para detr-resnet-50-protnic

name=detr-resnet-50-panoptic
model_url=https://huggingface.co/facebook/detr-resnet-50-panoptic
task=image-segmentation

OBSERVE que qualquer configuração que não for name ou model_url entrará nas configurações PIPELINE. Então, no segundo exemplo, o pipeline camembert-ner requer a especificação de aggregation_strategy e task, enquanto gpt2 requer apenas uma task.

Veja este exemplo:
settings ml ope2

Agora você pode clicar duas vezes na operação Python.MLOperation e executar o start.
Você precisa ver na parte Log a inicialização e o download do modelo.
OBSERVAÇÃO Você pode atualizar esses logs a cada x segundos para ver o avanço dos downloads. dl in real time

Em seguida, criamos um PIPELINE utilizando transformers que usam o arquivo config na pasta como vimos antes.

4.2.2. Testes

Para chamar esse pipeline, clique na operação Python.MLOperation e selecione action na guia à direita. Você pode aplicar test à demonstração.

Na janela de test, selecione:

Tipo de solicitação: Grongier.PEX.Message

Em classname, insira:

msg.MLRequest

Para json, você precisa inserir todos os argumentos necessários para o modelo.
Aqui está um exemplo de uma chamada para GPT2 (Python.MLOperation):

{
    "text_inputs":"George Washington lived",
    "max_length":30,
    "num_return_sequences":3
}

Aqui está um exemplo de uma chamada para Camembert-ner (Python.MLOperation2):

{
    "inputs":"George Washington lived in washington"
}

Aqui está um exemplo de uma chamada para bert-base-uncased (Python.MLOperation3):

{
    "inputs":"George Washington lived in [MASK]."
}

Aqui está um exemplo de uma chamada para detr-resnet-50 usando um URL online (Python.MLOperationDETRRESNET):

{
    "url":"http://images.cocodataset.org/val2017/000000039769.jpg"
}

Aqui está um exemplo de uma chamada para detr-resnet-50-panoptic usando um URL como caminho (Python.MLOperationDetrPanoptic):

{
    "url":"/irisdev/app/misc/000000039769.jpg"
}

Clique em Invoke Testing Service (Invocar serviço de teste) e aguarde a operação do modelo.
Agora, você pode clicar em Visual Trace para ver nos detalhes o que aconteceu e visualizar os registros.

OBSERVE que, após fazer pela primeira vez o download de um modelo, a produção não fará o download novamente, mas usará os arquivos em cache encontrados em src/model/TheModelName/.
Se alguns arquivos estiverem ausentes, a Produção fará o download novamente.

Veja este exemplo:
sending ml reqml reqml resp

Veja este exemplo:
sending ml reqml resp

5. Solução de problemas

Se você tiver problemas, a leitura é o primeiro conselho que podemos dar a você. A maioria dos erros são facilmente compreendidos apenas ao ler os logs, pois quase todos os erros são capturados por um try/catch e registrados.

Se você precisar instalar um novo módulo ou dependência do Python, abra um terminal dentro do contêiner e digite, por exemplo: "pip install new-module"
Há várias formas de abrir um terminal,

  • Se você usa os plugins da InterSystems, pode clicar na barra abaixo no VSCode, que se parece com docker:iris:52795[IRISAPP], e selecionar Open Shell in Docker (Abrir Shell no Docker).
  • Em qualquer terminal local, digite: docker-compose exec -it iris bash
  • No Docker-Desktop, encontre o contêiner IRIS e clique em Open in terminal (Abrir no terminal)

Alguns modelos talvez exijam algumas alterações no pipeline ou nas configurações, por exemplo. É sua responsabilidade adicionar as informações corretas nas configurações e na solicitação.

6. Conclusão

Depois disso, você poderá usar qualquer modelo que de precisa ou possui no IRIS.
OBSERVE que você pode criar uma Python.MLOperation para cada um dos seus modelos e ter todos ativados ao mesmo tempo.

0
0 166
Anúncio Danusa Calixto · Fev. 21, 2024

Recentemente, percebi que já faz muito tempo que não falo sobre os recursos mais recentes da extensão ObjectScript da InterSystems para Visual Studio Code.

Tenho o prazer de anunciar a versão 2.12.1 da extensão ObjectScript, contendo diversas melhorias que facilitam a vida do desenvolvedor. Alguns destaques são descritos abaixo, incluindo o recurso nº 1 solicitado pelo Global Summit – importação de XML!

Como sempre, encontre a lista completa de modificações no CHANGELOG, incluindo muitas correções de bugs e vulnerabilidades.

 

Interface do usuário mais limpa 

0
0 110
Artigo Larissa Prussak · Fev. 14, 2024 3m read

Após dois Webinars locais, focamos no VS Code ["Intro" e "Beyond Basics"; em hebraico], preparei para os participantes alguns links relacionados de recursos relevantes que enviamos como acompanhamento. Compartilhando-os aqui também para o benefício da Comunidade.
É claro que todos vocês são bem-vindos para adicionar mais recursos úteis.

0
0 88
Artigo Danusa Calixto · Dez. 13, 2023 6m read

Introdução

Como a InterSystems anunciou recentemente a descontinuação do suporte ao InterSystems Studio a partir da versão 2023.2 em favor do desenvolvimento exclusivo de extensões para o IDE do Visual Studio Code (VSC), acreditando que este oferece uma experiência superior em comparação com o Studio, vários desenvolvedores migraram ou estão começando a usar o VSC. Vários talvez tenham se perguntado sobre como abrir o terminal para realizar operações, já que o VSC não tem um painel de saída como o Studio nem um recurso integrado para abrir o terminal IRIS, exceto baixando os plug-ins desenvolvidos pela InterSystems.

Resumo

  • Introdução 
  • Soluções
    • Para usuários com, no mínimo, IRIS 2020.1 ou IRIS 2021.1.2  – Use Web Terminal
    • Para usuários com, no mínimo, IRIS 2023.2 – Use WebSocket Terminal
    • Para usuários com o IRIS baseado em Docker
    • Para usuários com versões do IRIS anteriores à 2023.2 trabalhando em suas máquinas locais
    • Para usuários programando no IRIS com base em um servidor remoto usando uma conexão SSH

Soluções

Há várias maneiras de abrir o terminal no VSC, dependendo da configuração específica que você estiver usando. Resumi aqui as melhores soluções para qualquer situação:

Para usuários com, no mínimo, IRIS 2020.1.1 ou IRIS 2021.1.2 – Use Web Terminal

Usuários que têm, no mínimo, o IRIS 2020.1.1 ou IRIS 2021.1.2 e podem instalar extensões externas (alguém pode não ter permissão para isso devido à política da empresa em relação a aplicativos de terceiros) podem achar útil a extensão Web Terminal para VSC. Para quem não sabe, Web Terminal é um terminal baseado na Web para os produtos da InterSystems desenvolvidos com ObjectScript (por exemplo, IRIS, Caché, Ensemble, HealthShare e TrakCare) que permite usar uma versão mais avançada do terminal dentro do navegador (página do projeto). Essa extensão do VSC possibilita inicializar um terminal baseado na Web diretamente do VSC, com um simples clique.

Para abrir o Web Terminal, clique em: InterSystems Tools (Ferramentas da InterSystems)  > selecione um namespace > clique em um dos seguintes ícones (, ) para abrir o Web Terminal em um painel de terminal do VSC ou no navegador (pressione Alt para mudar o ícone padrão):

 

 

Para usuários com, no mínimo, IRIS 2023.2 – Use WebSocket Terminal

Usuários com, no mínimo, IRIS 2023.2 podem se beneficiar do novo recurso "WebSocket Terminal" incluso na versão mais recente das extensões do VSC e não precisam de alternativas adicionais.

Para abrir o WebSocket Terminal, clique em: InterSystems Tools > selecione um namespace > clique no ícone ao lado do correspondente ao Web Terminal.

Para usuários com IRIS baseado em Docker

Quem trabalha com ambientes do IRIS no Docker e usa o VSC pode iniciar uma sessão de terminal diretamente no ambiente do Docker.  

Clique na voz do Docker na Barra de status e selecione Open Terminal in Docker (Abrir terminal no Docker).

Quero agradecer @Evgeny Shvarov pela foto e explicação sobre esse ponto.

 

Para usuários com versões do IRIS anteriores à 2023.2 trabalhando nas suas máquinas locais

Para usuários que trabalham com uma versão do IRIS executada na máquina local, é possível configurar um terminal do IRIS dedicado no VSC:

    1. Abra o arquivo settings.json. Você pode encontrá-lo de várias maneiras, por exemplo, clicando em View (Ver) > Command Palette (Paleta de comandos) > digite: "settings" (configurações) > Open User Settings (JSON) (Abrir configurações do usuário)
    2. Adicione o seguinte código em "terminal.integrated.profiles.windows":
"terminal.integrated.profiles.windows":{
<span class="hljs-string">"IRIS Terminal"</span>: {

&nbsp;&nbsp;&nbsp; <span class="hljs-string">"path"</span>: [

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="hljs-string">"C:\\InterSystems\\IRISHealth\\bin\\irissession.exe"</span>
&nbsp;&nbsp;&nbsp; ],

&nbsp;&nbsp;&nbsp; <span class="hljs-string">"args"</span>: [<span class="hljs-string">"IRISHEALTH"</span>],

&nbsp;&nbsp;&nbsp; <span class="hljs-string">"icon"</span>: <span class="hljs-string">"terminal-cmd"</span>
} 

}

Observação: insira o caminho correto do seu irissession.exe.

c. Para abrir o terminal a partir do VSC, navegue até: Terminal > New Terminal (Novo terminal) > Launch Profile… (Inicializar perfil) > IRIS Terminal.

d. Uma voz "IRIS Terminal" deve agora estar disponível no menu Terminal:

Para usuários programando no IRIS com base em um servidor remoto usando uma conexão SSH 

Para quem trabalha em uma versão do IRIS baseada em um servidor remoto (por exemplo, o servidor de uma empresa) acessível por conexão SSH (por exemplo, usando PuTTY), é possível usar a extensão Remote - SSH VSC para conectar o VSC diretamente ao servidor. Para fazer isso:

    1. Instale a extensão Remote - SSH: Editing Configuration Files no VSC;
    2. Clique no ícone "Remote Explorer" (Explorador remoto) na barra lateral;
    3. Selecione "Open SSH Config File" (Abrir arquivo de configuração SSH)

  

e abra o arquivo de configuração com o caminho: C:\Users\<username>\.ssh\config

    1. Insira o seguinte código no arquivo de configuração: 
Host my-putty-connection

    HostName < IP address or server name >

    User < username >

    IdentityFile < private key path on your local machine >

    Port < port >

O endereço IP e a porta correspondem ao nome do host e à porta especificada em PuTTY, o nome de usuário é a credencial de usuário usada para acessar o servidor remoto, e IdentityFile é o caminho do arquivo para a chave privada de PuTTY.

Observação:  o formato original da chave privada gerada por PuTTY (.ppk) não pode ser lido pelo VSC. Para estabelecer uma conexão entre o VSC e o servidor remoto via PuTTY, você precisa duplicar a chave privada original e converter a nova versão no formato .pem. Para fazer a conversão:

  1. Inicialize o aplicativo PuTTYgen
  2. No menu File (Arquivo), clique em "Load private key" (Carregar chave privada)
  3. Selecione sua chave privada no formato .ppk e escolha "Open" (Abrir)
  4. No menu Conversions (Conversões), clique em "Export OpenSSH Key (force new file format)", ou "Exportar chave OpenSSH (forçar novo formato de arquivo)".
  5. Defina um novo nome com a extensão .pem e clique no botão Save (Salvar).
  6. Vincule o caminho para esse novo arquivo .pem ao parâmetro IdentifyFile no VSC
    1. Salve o arquivo. Depois de alguns segundos, a nova conexão deve aparecer no painel Remote Explorer;
    2. Clique em "Connect in New Window..." (Conectar em uma nova janela...) para abrir a conexão SSH em uma nova janela do VSC:
  7.  Selecione o sistema operacional da sua máquina remota (somente no primeiro acesso)
  8. Na nova janela, acesse: Terminal New Terminal (ou use os atalhos Ctrl + ò ou Ctrl + Shift + ò).
  9. Agora você está conectado à máquina remota e pode usar seu Terminal IRIS dentro do VSC.

Observação: essa operação só funciona se você iniciar a conexão remota via PuTTY antes, e não funciona se PuTTY for encerrado ou não estiver conectado ao servidor remoto. Essa operação não inicializa PuTTY, só permite que o VSC se conecte ao túnel estabelecido por PuTTY.

Para iniciar uma conexão PuTTY pelo VSC, você pode utilizar um arquivo de lote (no Windows). O arquivo connect_remote.bat fornecido usa o comando Plink, incluso em PuTTY, para iniciar uma sessão:

@echo off

set SESSION="<your saved session name>"

plink -load %SESSION%

Para iniciar a sessão, basta digitar .\connect_remote.bat no terminal do VSC para abrir a conexão remota e inserir suas credenciais.

Observação: com este último método, você ganha acesso a uma versão do terminal compatível com todos os atalhos do VSC! Bem-vindo de volta, Ctrl+V, e adeus, Shift+Insert 🎉

1
0 309
Artigo Danusa Calixto · Dez. 12, 2023 1m read

Está se preparando para usar o VS Code pela primeira vez? Confira se você tem privilégios suficientes.

Você definiu seu servidor Iris nas configurações do VS Code e ainda recebe o erro a seguir?

O VS Code acessa o Iris/HealthConnect usando o web application /api/atelier.  Se você não tem a permissão (ou seja, estiver usando um usuário LDAP para a conexão, e o web application não estiver configurado para a compatibilidade com o LDAP), esse é o motivo pelo qual não é possível conectar.

você também perceberá uma entrada "Login Failure" (Falha no login) no banco de dados de auditoria, além do motivo dela. Peça para o gerente de sistema adicionar a permissão necessária ao web application para que você possa continuar.

Depois de conseguir conectar ao servidor, você talvez não consiga ver todas as classes/projetos no seu namespace. Você vê o erro a seguir?

Para permitir que o usuário 'keren' liste os projetos no namespace 'MAIN', execute esta instrução SQL nele usando uma conta com privilégio suficiente: GRANT SELECT ON %Studio.Project TO 'keren'

A lista de classes/projetos é recuperada ao consultar as tabelas do sistema SQL subjacentes.

Seu gerente de sistema deve executar a seguinte instrução SQL em cada um dos namespaces que você precisa acessar.

GRANT SELECT ON %Studio.Project TO 'keren'

Depois disso, você pode continuar sua jornada de desenvolvimento usando o VS Code.

Keren.

0
0 88
Artigo Danusa Calixto · Nov. 27, 2023 2m read

Ao usar o VS Code para editar o código-fonte, o modelo de configurações permite que você determine valores específicos à pasta para algumas configurações ao usar um arquivo settings.json localizado em uma subpasta .vscode da pasta raiz do espaço de trabalho. Um conjunto de valores aqui tem precedência sobre outro nas suas configurações pessoais quando você está trabalhando nessa pasta raiz do espaço de trabalho.

Se você usa um espaço de trabalho isfs-type para operar diretamente em um namespace no servidor, primeiro você precisa configurar esse servidor para oferecer suporte a uma pasta .vscode especial para cada um dos seus namespaces, presentes e futuros. A pasta também pode fornecer fragmentos de código específicos à pasta e configurações de inicialização de depuração.

Um benefício de configurar esse recurso é que, ao colocar uma configuração (ou fragmento/configuração de depuração) no servidor, ela fica imediatamente disponível para todos os usuários do VS Code que trabalham nesse servidor.

Por exemplo, nosso controle de código-fonte Deltanji é integrado ao VS Code usando uma extensão. O uso do armazenamento das configurações do lado do servidor permite que sites tenham a certeza de que todos os desenvolvedores conectados a um namespace específico obterão os mesmos resultados da extensão Deltanji em casos onde esses resultados dependem de uma configuração.

A configuração de um servidor para hospedar e publicar uma subpasta .vscode para cada um dos seus namespaces é uma tarefa realizada apenas uma vez. As etapas manuais estão documentadas, mas, se um ZPM / IPM estiver disponível no seu servidor, você pode realizá-las automaticamente ao instalar o pacote vscode-per-namespace-settings. Mais detalhes sobre esse pacote, incluindo o código-fonte, estão disponíveis no Open Exchange.

0
0 69
InterSystems Oficial Danusa Calixto · Nov. 21, 2023

Conforme anunciado pela primeira vez em maio, e depois de muitas apresentações e discussões aprofundadas no Global Summit 2023, continuamos com os planos de descontinuar o InterSystems Studio (descontinuado designa um recurso ou tecnologia que a InterSystems não desenvolve mais ativamente e para a qual existem melhores opções).

0
0 95
Artigo Danusa Calixto · Nov. 10, 2023 10m read

​Palavras-chave: ChatGPT, COS, Tabelas de consulta, IRIS, IA 

Objetivo

Aqui está outra pequena observação antes de seguirmos para a jornada de automação assistida por GPT-4. Confira abaixo algumas "ajudinhas" que o ChatGPT já oferece,  em várias áreas, durante as tarefas diárias. 

Saiba também quais são as possíveis lacunas, riscos e armadilhas da automação assistida por LLMs, caso você explore esse caminho. Também adoraria ouvir os casos de uso e as experiências de outras pessoas nesse campo. 

Tabelas de consulta

Uma das tarefas mais simples podem ser as tabelas de consulta.  Com frequência, precisamos transformar tabelas de código Excel ou CSV em tabelas de consulta XML de forma manual. Principalmente, quando há espaços em branco e outros elementos distribuídos de maneira aleatória nos valores em milhares de registros, e você precisa organizá-los diversas vezes antes dos prazos de publicação. 

O ChatGPT pode ajudar um pouco nisso? Aqui está um teste rápido.

Prompt:

Você é um programa que converte um arquivo CSV automaticamente em um arquivo de tabela de consulta XML.
A entrada é um arquivo CSV separado por vírgulas com 3 colunas de dados :
Blood Science ,XCOM,CANCELLED/REJECTED SAMPLE
Blood Science ,ADX ,ADD ON TEST COMMENT
Blood Transfusion,DARA,ALERT FOR DARA/CAMELLIA
Blood Transfusion, BT1 ,REJECT SAMPLE UNLABELLED
A saída deve ser um arquivo XML no seguinte formato:


<lookupTable>
     <entry table="HIE.ICE.FilterOBR4" key="XCOM">Blood Science</entry>
     <entry table="HIE.ICE.FilterOBR4" key="ADX ">Blood Science</entry>
     <entry table="HIE.ICE.FilterOB

R4" key="DARA">Blood Transfusion</entry>
     <entry table="HIE.ICE.FilterOBR4" key="BT1">Blood Transfusion</entry>
</lookupTable>
Observação: a sequência do atributo XML em cada raiz deve ser mantida

ChatGPT:

Aqui está um script em Python que lê o arquivo CSV, o processa e gera o arquivo XML:

import csv

defconvert_csv_to_xml(input_file, output_file):"""
    Convert a CSV file to an XML lookup table file.

    Parameters:
    input_file (str): Path to the input CSV file.
    output_file (str): Path to the output XML file.

    Returns:
    int: 0 if the conversion was successful, 1 if there was an error.
    """try:
        # Create a dictionary to hold the lookup table data
        lookup_table = {}

        # Read in the CSV file and process the datawith open(input_file, "r") as csvfile:
            csvreader = csv.reader(csvfile)
            for row in csvreader:
                category = row[0].strip()
                key = row[1].strip()
                value = row[2].strip()
                lookup_table[key] = category

        # Generate the XML filewith open(output_file, "w") as xmlfile:
            xmlfile.write('<?xml version="1.0"?>\n')
            xmlfile.write('<lookupTable>\n')
            for key in lookup_table:
                xmlfile.write(f'<entry table="HIE.ICE.FilterOBR4" key="{key}">{lookup_table[key]}</entry>\n')
            xmlfile.write('</lookupTable>\n')

        return0except Exception as e:
        print("Error:", e)
        return1

Esse script primeiro lê o arquivo CSV usando o módulo csv e cria um dicionário para manter os dados da tabela de consulta. Depois, ele processa cada linha do arquivo CSV e adiciona os dados relevantes ao dicionário.

Por fim, o script gera o arquivo XML ao iterar pelo dicionário e gravar as tags e os atributos XML apropriados no arquivo de saída. Veja que a sintaxe da string f é usada para inserir dinamicamente os dados da chave e da categoria nas tags XML.

Executei o script rapidamente em um Jupyter Notebook e deu certo. Ele também removeu todos os espaços em branco (seriam vários ajustes manuais). Ele ofereceu uma ferramenta para lidar com CSVs longos que têm valores confusos, sem limitação de tamanho do token. 

Nesse caso específico, eu diria que a produtividade aumentou cerca de 20 vezes em relação às abordagens manuais repetidas para lidar com várias tabelas de código confusas.

Depois de economizar um pouco de tempo, eu queria saber se ele poderia gerar uma amostra de COS para criar a classe Util para BAUs de serviços futuros etc. 

Prompt:  

Você pode converter a função em Python acima para o ClassMethod do COS da InterSystems usando a função correta específica do COS?

ChatGPT:

Com certeza! Aqui está o código convertido para o ClassMethod do ObjectScript da InterSystems:

ClassMethod ConvertCSVToXML(inputFile As%String, outputFile As%String) As%Integer
{
    try {
        // Create a dictionary to hold the lookup table dataset lookupTable = {}

        // Read in the CSV file and process the dataset csvReader = ##class(%File.CharacterStream).%New()
        do csvReader.LinkToFile(inputFile)
        while (csvReader.AtEnd = 0) {
            set row = csvReader.ReadLine()
            set category = $ZSTRIP($PIECE(row, ",", 1), "B")
            set key = $ZSTRIP($PIECE(row, ",", 2), "B")
            set value = $ZSTRIP($PIECE(row, ",", 3), "B")
            set lookupTable(key) = category
        }
        do csvReader.%Close()

        // Generate the XML fileset xmlWriter = ##class(%File.CharacterStream).%New()
        do xmlWriter.LinkToFile(outputFile)
        do xmlWriter.WriteLine("<?xml version=""1.0""?>")
        do xmlWriter.WriteLine("<lookupTable>")
        set keys = lookupTable.%GetKeys()
        while ('keys.%AtEnd) {
            set key = keys.%GetNext()
            set category = lookupTable(key)
            do xmlWriter.WriteLine("<entry table=""HIE.ICE.FilterOBR4"" key="""_key_""">"_category_"</entry>")
        }
        do xmlWriter.WriteLine("</lookupTable>")
        do xmlWriter.%Close()

        quit0
    }
    catch (ex) {
        Write"Error: "_ex.DisplayString(), !
        quit1
    }
}

No ObjectScript da InterSystems, podemos usar a classe %File.CharacterStream para ler e gravar arquivos. Usamos o método LinkToFile() para abrir os arquivos de entrada e saída, e depois usamos os métodos ReadLine() e WriteLine() para ler e gravar os dados nos arquivos.

Para remover os espaços à esquerda e à direita de cada campo, usamos a função $ZSTRIP() com a sinalização "B".

Também usamos o método %GetKeys() do objeto lookupTable para iterar as chaves no dicionário.

Por fim, o método retorna um código de status 0 se a conversão for bem-sucedida ou 1 se houver um erro.

Ele não fornece uma ferramenta correta que funciona de maneira tão imediata quanto o Python.  %File.CharacterStream deve ser  %Stream.FileCharacter, a remoção de espaços em branco deve usar "<>W", e a iteração pelos globais deve usar $ORDER etc. </p>

Os prompts podem ser melhorados, mas não sou muito bom em pedir favores, então fiz alguns ajustes rápidos durante o processo. 

ClassMethod ConvertCSVToXML2(inputFile As%String, outputFile As%String) As%Integer
{
  
  s tSC = $$$OKtry {
		set^lookupTable = ""// Read in the CSV file and process the dataset csvReader = ##class(%Stream.FileCharacter).%New()
        set tSC =  csvReader.LinkToFile(inputFile)
        while (csvReader.AtEnd = 0) {
            set row = csvReader.ReadLine()
            set category = $ZSTRIP($PIECE(row, ",", 1), "<>W")
            set key = $ZSTRIP($PIECE(row, ",", 2), "<>W")
            set value = $ZSTRIP($PIECE(row, ",", 3), "<>W")
            set^lookupTable(key) = category
        }
        //zw ^lookupTabledo csvReader.%Close()
        
        // Generate the XML fileset xmlWriter = ##class(%Stream.FileCharacter).%New()
        set tSC = xmlWriter.LinkToFile(outputFile)
        set tSC = xmlWriter.WriteLine("<?xml version=""1.0""?>")
        set tSC = xmlWriter.WriteLine("<lookupTable>")
        set key = $O(^lookupTable("")) //lookupTable.%GetKeys()while (key '= "") {
	        //w keyset category = $GET(^lookupTable(key))
            w !,key, " ", category
            set tSC =  xmlWriter.WriteLine("<entry table=""HIE.ICE.FilterOBR4"" key="""_key_""">"_category_"</entry>")
            set key = $O(^lookupTable(key))
        }
        set tSC = xmlWriter.WriteLine("</lookupTable>")
   		set tSC = xmlWriter.%Save("</lookupTable>")
        set tSC = xmlWriter.%Close()
  }
    catch (ex) {
        Write"Error: "_ex.DisplayString(), !
        s tSC = ex
    }
   return tSC
}

 

Então, quais são as lacunas detectadas aqui?  

Algumas possíveis implicações que vieram à minha mente:
1. Produtividade:  a recompensa de produtividade dependeria da proficiência do COS do desenvolvedor.  Essa ferramenta aumentaria ainda mais qualquer vantagem de proficiência em programação.  
2. Lacunas: minha pergunta seria — como podemos aumentar a precisão pela aprendizagem few-shot via prompts, com ou até mesmo sem ajustes?  Se você explora essa área em LLMs, eu adoraria ouvir suas ideias ou sonhos.  
 

Gerações automáticas de testes de unidades
 

Ao discutir o desenvolvimento, não podemos escapar dos testes.  
Parece que isso está mudando agora. Ferramentas polidas que parecem bastante "simples" e usam o poder dos GPTs, como RubberDuck, surgiram para ajudar.

Então, testei a extensão do RubberDuck no VSCode e configurei com minha chave da API OpenAI.
Depois, abri a função em Python mencionada acima no VSCode, conforme a seguir:

Em seguida, selecionei o menu "Generate Unit Test ...", que gera automaticamente uma cobertura de teste de unidade em alguns segundos, pelo menos 100 vezes mais rápido do que digitando. Ele fornece um marcador de posição rápido para ajustes.

Podemos fazer isso para o código COS também, mesmo que o RubberDuck e o ChatGPT ainda não entendam realmente o COS (e não é culpa do LLM):

Ele gerou esse marcador de posição de teste de unidade sem entender muito bem o COS — deixarei as lacunas abertas para conselhos agora e, especialmente, se ou como as lacunas precisarão ser resolvidas com um senso de propósito.

Precisaria de alguns ajustes, mas, usando o ChatGPT, parece que agora ele consegue gerar, analisar e comentar automaticamente o código, além de gerar marcadores de posição de testes de unidade para você. (Bem, mais ou menos, dependendo da linguagem de programação usada e do que queremos que ele faça em seguida).

Conclusão?


Novamente, não tenho conclusões rápidas, já que ainda não consigo explorar muito os limites e as armadilhas.  

Base matemática??


Talvez algum dia, assim como o conceito de "entropia" na teoria da informação foi criado em 1948, outro gênio da matemática possa simplesmente nos iluminar com outro conceito para quantificar as distâncias e lacunas "linguísticas" entre todos os tipos de linguagens, sejam humanas ou de máquina. Até lá, não saberemos realmente o potencial real, limites, riscos e armadilhas desses LLMs. Ainda assim, isso não parece impedir o avanço dos LLMs a cada mês ou semana. 

Outros casos de uso??


Painéis de análise baseados em consultas de linguagem natural humana: algumas semanas atrás, estava trabalhando na P&D de um projeto de inovação e, por acaso, percebi outro caso de uso:  transformar consultas clínicas em linguagem humana em uma consulta de máquina em SQL/MDX.  Na verdade, mais ou menos, sem qualquer ajuste ainda. Parece que ele está começando a aproximar linguagens humanas e tons de máquina, até certo ponto?   
Não seria difícil imaginar uma situação assim: um médico digita uma consulta clínica em um chat na sua linguagem natural e um painel clínico é gerado automaticamente, destacando os pacientes que possam ter perdido a detecção precoce da insuficiência cardíaca, além de agrupar e classificar esses pacientes em regiões, gênero e faixas etárias. As diferenças na qualidade do cuidado seriam destacadas em minutos, em vez de meses de esforços de engenharia. 

E, certamente, um assistente de IA personalizado de cuidados.  Parecia tão remoto e complexo no ano passado, mas, ao que tudo indica, se torna rapidamente uma realidade com o GPT4.  Teoricamente, nada impediria o GPT4 e os LLMs de analisarem meus registros de atendimento, apenas pedaços de dados estruturados e semiestruturados (como exames de laboratório e medicamentos), dados não estruturados (observações e relatórios clínicos etc.) e dados de imagem (raios X, tomografias e ressonâncias magnéticas), para começar a entender melhor e coordenar meus cuidados e consultas em breve.  


Ressalva 
 

Desculpe dizer o óbvio, mas o objetivo desta postagem não se trata de como podemos criar tabelas de consulta XML com rapidez, manualmente ou não. Na verdade, também sou muito bom com Excel e Notepad++. Em vez disso, o objetivo é entrar em contato com quem quer compartilhar casos de uso, reflexões, desafios, riscos e experiências na jornada das automações assistidas por LLMs etc
E o poder dos LLMs veio dos desenvolvedores, de todos os repositórios públicos e das postagens que todos fizeram em fóruns públicos. GPTs não surgem do nada. Nos últimos meses, isso ainda não foi totalmente valorizado e reconhecido.
A AGI apresenta riscos à humanidade nessa velocidade, mas, pessoalmente, me sinto um pouco sortudo, aliviado e dispensado, já que  estamos nos serviços de saúde. 
Outros riscos rotineiros incluem a conformidade de privacidade de dados de acordo com a HIPPA, o GDPR e os Acordos de Processamento de Dados.  

0
0 105
Artigo Danusa Calixto · Ago. 18, 2023 2m read

A InterSystems também lançou o IRIS como implantações em contêineres. Esta postagem demonstra como o InterSystems IRIS e os aplicativos que dependem do IRIS como um back-end podem ser empacotados em uma imagem e executados em outras máquinas em contêineres e como é simples fazer isso.

Um contêiner executa imagens que possuem todos os executáveis, código binário, bibliotecas e arquivos de configuração necessários. E as imagens podem ser movidas de uma máquina para outra, e um repositório de imagens como o Docker Hub pode simplificar esse processo.

Usei um aplicativo do Open Exchange para esta demonstração.

**Vídeo da demonstração: **https://www.loom.com/share/93f9a760b5f54c0a8811b7a212387b9d

A imagem para a Plataforma de Dados IRIS Community Edition pode ser encontrada no InterSystems Container Registry: https://containers.intersystems.com/contents

Para usar uma instância em contêiner do IRIS em uma máquina host, ela precisa ser extraída durante o tempo de execução.

Para isso, o Dockerfile precisa ter os seguintes comandos, conforme mostrado abaixo:

Dockerfile

ARG IMAGE=intersystemsdc/irishealth-community ARG IMAGE=intersystemsdc/iris-community ARG IMAGE=intersystemsdc/iris-community:preview FROM $IMAGE RUN iris start IRIS \  && iris merge IRIS /tmp/merge.cpf \  && iris stop IRIS quietly

Esses são os comandos básicos que criam um Dockerfile escrito para construir uma imagem que possui instruções para o IRIS em contêiner.

Também podem ser adicionados os comandos para executar a instalação de outras dependências necessárias para o aplicativo que está sendo executado com a instância em contêiner do IRIS.

São fornecidos os comandos do Docker que marcam e enviam uma imagem que carrega a instância IRIS para o Docker Hub e, subsequentemente, extraem e executam essa imagem em outra máquina host.

Comandos

docker build -t image_name filepath docker tag image_name dockerhub_username/repository_name:tag_name docker push dockerhub_username/repository_name:tag_name

   

Comandos

docker pull dockerhub_username/repository_name:tag_name docker run --name test -p host_8080:52773 padhikar/irisincontainer:main

Aplicativo usado na demonstração: https://openexchange.intersystems.com/package/iris-geo-map

Criando imagens do InterSystems IRIS: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ADOCK#ADOCK_iris_creating

0
0 65
Anúncio Danusa Calixto · Maio 24, 2023

Se você já construiu testes unitários utilizando o %UnitTest framework, ou está pensando em usá-lo, por favor dê uma olhada no InterSystems Testing Manager. 

Agora você pode buscar os testes unitários sem sair do VS Code, executar ou depurá-los, e visualizar os resultados da execução anterior. 

0
0 88
Artigo Danusa Calixto · Maio 2, 2023 3m read

Oi, pessoal!  

Neste artigo, quero revisar as extensões do VS Code que uso para trabalhar com a InterSystems e que facilitam muito meu trabalho. Tenho certeza de que este artigo será útil para quem está apenas começando a jornada de aprendizado das tecnologias da InterSystems. No entanto, também espero que este artigo seja útil para desenvolvedores com vários anos de experiências e abra novas possibilidades de uso do VS Code para desenvolvimento.

Recomendo que todo mundo que trabalhe com a InterSystems tenha essas extensões instaladas e, neste artigo, quero mostrar como usar algumas delas.

Você pode ler mais sobre a funcionalidade e o uso de cada extensão na seção "Extensions" do VS Code, onde também é possível baixar, atualizar e desinstalar extensões:

 Após a instalação, os ícones da extensão aparecem na lateral ou na parte inferior do editor de código.

Extensões obrigatórias

Acho que faz sentido começar nossa jornada com estas extensões básicas, necessárias para trabalhar com a InterSystems no VS Code.

  • A Extensão InterSystems Server Manager para o VS Code ajuda a especificar conexões do servidor.
  • A Extensão InterSystems ObjectScript para o VS Code ajuda a escrever e compilar arquivos de código.
  • A Extensão InterSystems Language Server Extension para o VS Code oferece uma implementação de servidor de idioma para o ObjectScript, permitindo coloração, preenchimento de código, linting e muito mais.
  • Juntas, essas extensões oferecem aos desenvolvedores uma maneira simplificada de criar, testar e implantar aplicativos de pilha completa criados na InterSystems.

    Extensões adicionais

    Além das extensões necessárias básicas, o VS Code oferece várias outras extensões. Você pode escrever código sem elas, mas o desenvolvimento fica mais eficiente ao usar qualquer outra pilha de tecnologia, incluindo as tecnologias da InterSystems. Vou descrever algumas que parecem ser essenciais.

  • A expansão Docker torna o gerenciamento de projetos dockerizados um pouco mais fácil. Você pode gerar automaticamente um Dockerfile para projetos, gerar imagens e gerenciar os contêineres em execução.  
  • SQLTools Driver para o InterSystems IRIS e SqlTools - são duas extensões muito úteis que trabalham em conjunto. Com elas, você pode criar e executar as consultas SQL de banco de dados no VS Code sem acessar o portal de gerenciamento e realizar consultas SQL para interagir com os índices de conteúdo lá.
  •  

    Atualmente, é difícil imaginar o desenvolvimento de um projeto sem o controle de versões. Geralmente, é o Git que faz isso, e o Visual Studio Code oferece suporte mínimo para ele. Se isso não for suficiente para você, confira as duas extensões a seguir: 

  • Git Graph - mostra branches e os status deles de maneira esquemática. Isso é útil quando você precisa entender rapidamente os status dos branches, por exemplo, quando eles são mesclados.
  • Git Lens - permite ver o histórico das alterações na linha destacada e a autoria.
  •  É indispensável para o trabalho em equipe!

  • EditorConfig - uma extensão para melhorar a aparência do código, exige a escrita no arquivo .editorconfig, em que você pode especificar qualquer configuração de formatação do código. É importante ressaltar que, por padrão, essa funcionalidade pode ser implementada pela extensão InterSystems Language Server para o VS Code. Para aplicar a formatação de código ObjectScript padrão no VS Code, você precisa usar a combinação de teclas: Windows - [Shift + Alt + F], Mac - [Shift + Option + F], Ubuntu - [Ctrl + Shift + I]. No entanto, ao usar o arquivo .editorconfig, você pode especificar a própria formatação de código para arquivos diferentes dentro do projeto.
  • Neste artigo, analisei apenas as extensões que já usei. Agradeceria se você reservasse um tempo para escrever nos comentários o que mais pode ser usado para facilitar o desenvolvimento. Então, este artigo será ainda mais útil!

    0
    0 280
    Anúncio Danusa Calixto · Abr. 27, 2023

    Nossa extensão gj :: codeSpex para o VS Code, que é parte do DX Jetpack, permite que a documentação seja exibida em linha enquanto você está codificando as classes. Em alguns casos a documentação é extensa, e a falta de suporte a rolagem no elemento de comentário do VS Code que estamos usando estava degradando o DX. 

    0
    0 110