Rechercher

Article
· Mars 9 2m de lecture

Construindo Agentes de IA com InterSystems IRIS - O que queremos dizer?

Olá, colegas!

Como vocês podem ver, o novo tópico do concurso de programação é Agentes de IA.

O tópico tem sido muito comentado recentemente na Internet e possui diferentes significados. Vocês podem estar curiosos sobre o que queremos dizer com agentes de IA em relação ao concurso de programação da InterSystems.

De fato, acreditamos que agentes de IA podem mudar significativamente o panorama das soluções de TI em quase todas as áreas, impulsionando sua eficiência e frequentemente alterando a forma de gerenciamento, consumo e operação.

Em geral, agentes de IA tratam da habilitação de diferentes processos de negócios para a automação, de modo que a automação inclua a tomada de decisões com base em qualquer um dos motores de IA generativa disponíveis no mercado, por exemplo, OpenAI, Claude ou Grok, que podem ser usados em conjunto com a Pesquisa Vetorial do IRIS relacionada a soluções RAG.

Normalmente, a construção de agentes de IA pressupõe o aproveitamento de qualquer um dos motores de automação de cenários, como Zapier, Make, N8N, e/ou Interoperabilidade do InterSystems IRIS..

O que agentes de IA podem fazer? Bem, podemos perguntar ao ChatGPT sobre isso agora, mas as práticas mais comuns são:

  • - verificar, filtrar e responder emails,
  • - procurar eventos de um tipo e reservar ingressos,
  • - responder a tickets de suporte,
  • - monitorar bancos de dados/serviços e realizar limpeza ou fornecer operações de serviço.

Então, neste concurso, consideraremos como uma solução de Agente de IA aquela que aproveita:

- qualquer motor LLM para tomada de decisões (e.g. OpenAI, Antropic, Grok),

- qualquer motor de automação/interoperabilidade (e.g. Zapier, Make, N8N, IRIS Interoperability),

- o uso do banco de dados IRIS, da Interoperabilidade IRIS ou da Pesquisa Vetorial IRIS é uma condição obrigatória.

Boa sorte, e estou ansioso para apresentar mais agentes de IA úteis de qualquer tipo alimentados pelo InterSystems IRIS!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Question
· Mars 9

%Net.SSH.Session - how to sudo

Hey,

I need to read a directory on a remote server which requires a user to be su.
The question is how to correctly read the server response and then to send a su password using IRIS device I/O API (I'm able to read other commands output such as uname, but can't figure out how to switch to su):

1 Comment
Discussion (1)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Mars 8

Videos for InterSystems Developers, February 2025 Recap

Hello and welcome to the January 2025 Developer Community YouTube Recap.
InterSystems Global Summit
"Code to Care" videos
Open Source and Proprietary LLMs
By Don Woodlock, Head of Global Healthcare Solutions, InterSystems
AI model distillation
By Nicholai Mitchko, Manager of Solution Partner Sales Engineering, InterSystems
More from InterSystems developers
Globals in Embedded Python for Dummies/b>
By Irene Mikhailova, Developer Relations Manager, InterSystems
Unit Testing with IPM
By Pravin Barton, Principal Applications Developer, InterSystems
Coding InterSystems ObjectScript with AI Copilot
By Evgeny Shvarov, Senior Manager of Developer and Startup Programs, InterSystems
1 Comment
Discussion (1)2
Connectez-vous ou inscrivez-vous pour continuer
Question
· Mars 7

EnsLib.JavaGateway.Service to remote JavaGateway

Hello, dear colleagues.

 

I need to connect to a remote JavaGateway from an Ensemble service.

I am trying to use the EnsLib.JavaGateway.Service with a remote host where the JVM is running.

 

I can successfully ping the remote Java Gateway from EnsLib.JavaGateway.Service, and Ensemble reports that the service status is OK.

There are no network issues, and all necessary ports are accessible.

 

My requests work without any problems when I specify localhost in EnsLib.JavaGateway.Service. However, when I specify a remote JVM, I get the following error:

#5023: Error Java-gateway: Connection cannot be established

Do you have any experience running the JVM for EnsLib.JavaGateway.Service on a remote host?

I am also attaching a diagram for better understanding of what I am trying to achieve.

 

Below is the getLogFile log from intersystems-gateway-3.1.0.jar:

 >> PING

Sent: (18:26:01:582) [Job number = -1] [ThreadID = 67]

  0000:  00  00  00  00  00  00  00  00  00  00  00  00  59  51      ............YQ

 << PING

Received: (18:26:01:582) [Job number = -1] [ThreadID = 67]

  0000:  00  00  00  00  00  00  00  00  00  00  00  00  59  34      ............Y4

 >> DISCONNECT

Sent: (18:26:01:582) [Job number = -1] [ThreadID = 67]

  0000:  00  00  00  00  00  00  00  00  00  00  00  00  59  34      ............Y4

 << DISCONNECT

Received: (18:26:11:585) [Job number = -1] [ThreadID = 68]

  0000:  00  00  00  00  00  00  00  00  00  00  00  00  59  51      ............YQ

 

The versions I am using:

java -version

openjdk version "1.8.0_442"

OpenJDK Runtime Environment (build 1.8.0_442-b06)

OpenJDK 64-Bit Server VM (build 25.442-b06, mixed mode)

The command I use to start JavaGateway on the remote host:

java -classpath /opt/intersystems-gateway-3.1.0.jar:/opt/intersystems-jdbc-3.1.0.jar com.intersystems.gateway.JavaGateway 55560 "/tmp/jdbc.log" "" 0.0.0.0

1 Comment
Discussion (1)2
Connectez-vous ou inscrivez-vous pour continuer
Article
· Mars 7 2m de lecture

SQL Query Stopped Working After Changing %String Property to Wrapper Types

We recently changed the 'UserID" property in a "User" class from type of %String to be %Library.Username. This is for better consistency across our codebase regarding MAXLEN limit.

%Library.Username is a system wrapper datatype which extends %String and has a MAXLEN of 160. This change should have minimal/no impact on code behavior. However, we found that some SQL query cannot return expected rows after the change. Query will return empty values even if the entry is in the table.

After investigation, we found that re-building index could solve the issue, which means the data type change caused some inconsistency for existing index on the property. But why would a simple wrapper class of String make any difference in SQL table?

 

==================================================================================

Answer:

The reason index stopped working is that it was built when the property was still a %String.

So what's the difference between %Library.String and %Library.Username? They are both %String. But aside from MAXLEN, another key difference is the default COLLATION.

In SQL, by default, an index on a given property (or properties) uses the collation type of the property data. For %Library.String, there is a system-wide (namespace-wide) default COLLATION="SQLUPPER" (this default can be changed, see the documentation below). This means that if we have a row with UserID="JoeFu", it’s stored in the UserIDIndex global as " JOEFU".

For WHERE clause comparison: UserID="JoeFu", with default collation of UserID="SQLUPPER", the SQL engine evaluates it as %SQLUPPER(UserID)=%SQLUPPER("JoeFu").

However, when we switch to %Library.Username, there is no default COLLATION anymore (sadly, even if this type is pretty much just %String). Now, without "SQLUPPER" collation, SQL engine evaluates this equal condition as it is: UserID="JoeFu", then query optimizer decides to use the index built upon UserID, without rebuilding this index, we still have %SQLUPPER(UserID) in this index global. When it looks for "JoeFu" without such collation, it cannot find a match.

NOTE: when creating/using datatype that replacing %String, should pay attention to the usage of the property and its index, it's very possible that you need to set COLLATION="SQLUPPER" to match things in the existing SQL table

See https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_stringmanipulation#RSQL_stringmanipulation_desc for SQL string collation.

See https://docs.intersystems.com/iris20243/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_collation#GSQL_collation_ns for the setting of default collation on IRIS

See https://docs.intersystems.com/iris20243/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_collation#GSQL_collation_indexdef for Index collation.

Thanks Yuchen Liu for answering my initial question!

3 Comments
Discussion (3)1
Connectez-vous ou inscrivez-vous pour continuer