Nova postagem

Pesquisar

Anúncio
· Abr. 2

InterSystems Developer Ecosystem News, Q1 2025

Hello and welcome to the Developer Ecosystem News!

The first quarter of the year was full of exciting activities in the InterSystems Developer Ecosystem. In case you missed something, we've prepared a selection of the hottest news and topics for you to catch up on!

News

🎇 Developer Community AI: descriptions of Open Exchange Applications added

🎆 Top InterSystems Developer Community Authors of 2024

🎆 Top Open Exchange Developers and Applications of 2024

🎇 Top InterSystems Ideas Contributors of 2024

🎊 Global Masters Update - Discover New Rewards

💡 InterSystems Ideas News #18#19 and #20

📝 InterSystems Developer Ecosystem Annual Survey 2025

📝 Early Access Program for new Table Partitioning feature

📝 Alert: Invalid Data Introduced to Database and Journal files with Specific $LIST Operations

📝 Alert: SQL Queries Returning Wrong Results

📝 What's new with InterSystems Language Server 2.7

📝 Deprecation of MultiValue in InterSystems IRIS 2025.1

📝 InterSystems Platforms Update Q1-2025

📝 Using OpenEHR with InterSystems IRIS

Contests & Events

 
InterSystems Technical Article Contest 2025
 
"DC Search" Sweepstakes

👨‍💻 InterSystems at European Healthcare Hackathon 2025

👨‍💻 InterSystems at TreeHacks 2025

👨‍💻 InterSystems GenAI challenge at NUS Health Hack 2025 hackathon

👨‍💻 InterSystems at IC HACK ‘25

🤝 AI Meetup with InterSystems Iberia

🤝 InterSystems Benelux and France Summit 2025

📺 Interoperability as a catalyst for AI

📺 Cloud Health: FHIR Server

📺 Webinar in Hebrew: GenAI + RAG - Leveraging InterSystems IRIS as your Vector DB

📺 Configuring a Web Server for use with InterSystems IRIS

📺 2025 Data Management: Technology Trends & Predictions

Latest Releases

⬇️ General Availability of InterSystems IRIS, InterSystems IRIS for Health, and HealthShare Health Connect 2025.1

⬇️ Maintenance Releases 2024.1.3 of InterSystems IRIS, IRIS for Health, & HealthShare HealthConnect are now available

Best Practices & Key Questions

❓ Key Questions: January, February, March (TBA)

People and Companies to Know About 

👩‍🏫 Celebrating a True Educator of the Developer Community

💼 IRIS Engineer Needed

💼 Role for IRIS Engineer

💼 Opportunity for HealthShare Engineers

💼 Principal Architect and Integration Engineer

👨‍💻 looking for new opportunity

👨‍💻 Looking for Opportunities in InterSystems Technology

So...

Here is our take on the most interesting and important things! 

What were your highlights from this past quarter? Share them in the comments section and let's remember the fun we've had!

Discussão (0)3
Entre ou crie uma conta para continuar
Artigo
· Abr. 2 22min de leitura

L'API REST avec Swagger dans InterSystems IRIS

L'API REST avec Swagger dans InterSystems IRIS

Salut

Le protocole HTTP permet de récupérer des ressources, telles que des documents HTML. Il est à la base de tout échange de données sur le Web et constitue un protocole client-serveur, ce qui signifie que les requêtes sont initiées par le destinataire, généralement un navigateur Web.

Les API REST tirent parti de ce protocole pour échanger des messages entre le client et le serveur. Cela rend les API REST rapides, légères et flexibles. Les API REST utilisent les verbes HTTP GET, POST, PUT, DELETE et d'autres pour indiquer les actions qu'elles veulent effectuer.

Discussão (0)0
Entre ou crie uma conta para continuar
Artigo
· Abr. 2 2min de leitura

IRIS for MACにODBCでアクセスする方法その2

その1で設定したODBCのシステムDSNを使って、LibreOfficeからアクセスしてみたいと思います。

ここでLibreOfficeをデスクトップから起動すると、詳細は不明ですが、日本語の表示がうまくできません。

(ロケール情報が正しく取得できていない様です)

なので、少し面倒なのですがターミナルから起動する必要があります。

起動する前にロケールが正しく設定されているか確認する必要があります。

一般的には、LC_ALLは設定されていないので、この環境変数に値を設定してエクスポートします。

 % locale                                              
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=""
% export LC_ALL="ja_JP.UTF-8"
% locale                     
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL="ja_JP.UTF-8"
 % /Applications/LibreOffice.app/Contents/MacOS/soffice

以下の様なスクリーンが表示されます。

Base Databaseを選んで、

ODBCを選んで、Nextボタンを押します。

設定したシステムDSNを選択します。

Nextを二回ほど連続で押して、Finishボタンを押しデータベースを保存するかを尋ねるダイアログスクリーンが表示された後、保存ボタンを押します。

Tablesをクリックすると、以下の様にTablesペインが表示されます。

ここで適当なテーブルを選んで、ダブルクリックすると、そのテーブルの内容が表示されます。

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Abr. 2 3min de leitura

IRIS for MacにODBCアクセスする方法 その1

Mac版のIRISにSQLを使用して他ツールからアクセスするケースはそもそも少ないと思いますが、DBeaverにJDBCを使用してアクセスできることはこのコミュニティの住人であれば、知っている人は結構いるかと思います。

しかし今回ちょっと理由があってMac上のIRISにODBCを使ってアクセスする方法についてトライしてみました。

ここではその備忘録を書き留めておこうと思います。

実際の所、Mac上のクライアントツールでODBCでアクセスできるツールもそんなにないのですが、

候補としてMS-Excel(MS-Query経由)またはLibreOfficeがありました。

まず結論としてExcelは色々とトライしましたが、原因不明ですがうまくつながりませんでした。

(どうもExcel(MS-Query)が拒絶している感じです)

LibreOfficeは何とか接続でき、データの取得はできる様になりました。

まず、前準備としてODBC Driver Managerというものをセットアップする必要があります。

細かくいうとこれにもiODBCとUnixODBCの2系統があるのですが、ExcelおよびLibreOfficeはiODBCにしか対応していない感じです。
(これは正確な情報ではない可能性はあります)

iODBC用のDriver ManagerはiODBCのウェブサイトで説明している手順で自分でビルドすることも可能なはずですが、出来合いのものがあるので、それを使います。

以下のサイトからダウンロードしてインストールできます。

Mac用ODBC Driver Manager

このODBCドライバーマネージャをインストールして、起動すると、以下の様なスクリーンが表示されます。

以下のドライバパネルの所でIRIS用のiODBCドライバを設定します。



ここでODBCドライバの名前とドライバファイルを指定します。

ドライバファイルは、

<IRISインストールディレクトリ>/bin/libirisodbc35.so

です。

次にシステムDSNの設定を行います。

システムDSNタブのところで追加ボタンを押します。

ドライバを指定するためのダイアログが表示されるので、先ほど設定したドライバ構成の名前を選択します。
 

OKボタンを押すと次にシステムDSNの設定スクリーンが表示されます。

ここでシステムDSN名と設定項目を指定していきます。

このスクリーン上で項目を1つ1つ設定することもできますが、この内容はODBC .iniというファイルに直接書いた方が早いです。

そのファイルの内容は、

 [ODBC Data Sources]
IRIS ODBC User = IRIS iODBC Driver

[IRIS ODBC User]
Driver      = /opt/iris/bin/libirisodbc35.so
Description = 
Host        = localhost
Namespace   = USER
UID         = _system
Password	= SYS
Protocol    = TCP
Port        = 1972
Trace		= on
TraceFile   = /Users/hsatoctr/work/iodbctrace.log

の様な感じです。

このファイルの場所は、/Library/ODBCです。

これで接続の準備ができたので、実際にLibreOfficeからアクセスしてみます。

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Abr. 1 7min de leitura

Iris-AgenticAI: Enterprise Automation Powered by OpenAI’s Agentic SDK for Intelligent Multi-Agent Workflows

Hi Community,

In this article, I will introduce my application iris-AgenticAI .

The rise of agentic AI marks a transformative leap in how artificial intelligence interacts with the world—moving beyond static responses to dynamic, goal-driven problem-solving. Powered by OpenAI’s Agentic SDK , The OpenAI Agents SDK enables you to build agentic AI apps in a lightweight, easy-to-use package with very few abstractions. It's a production-ready upgrade of our previous experimentation for agents, Swarm.
This application showcases the next generation of autonomous AI systems capable of reasoning, collaborating, and executing complex tasks with human-like adaptability.

Application Features

  • Agent Loop 🔄 A built-in loop that autonomously manages tool execution, sends results back to the LLM, and iterates until task completion.
  • Python-First 🐍 Leverage native Python syntax (decorators, generators, etc.) to orchestrate and chain agents without external DSLs.
  • Handoffs 🤝 Seamlessly coordinate multi-agent workflows by delegating tasks between specialized agents.
  • Function Tools ⚒️ Decorate any Python function with @tool to instantly integrate it into the agent’s toolkit.
  • Vector Search (RAG) 🧠 Native integration of vector store (IRIS) for RAG retrieval.
  • Tracing 🔍 Built-in tracing to visualize, debug, and monitor agent workflows in real time (think LangSmith alternatives).
  • MCP Servers 🌐 Support for Model Context Protocol (MCP) via stdio and HTTP, enabling cross-process agent communication.
  • Chainlit UI 🖥️ Integrated Chainlit framework for building interactive chat interfaces with minimal code.
  • Stateful Memory 🧠 Preserve chat history, context, and agent state across sessions for continuity and long-running tasks.

Agent

Agents are the core building block in your apps. An agent is a large language model (LLM), configured with instructions and tools. Basic configuration The most common properties of an agent you'll configure are:

Instructions: also known as a developer message or system prompt.
model: which LLM to use, and optional model_settings to configure model tuning parameters like temperature, top_p, etc.
tools: Tools that the agent can use to achieve its tasks.

from agents import Agent, ModelSettings, function_tool

@function_tool
def get_weather(city: str) -> str:
    return f"The weather in {city} is sunny"
agent = Agent(
    name="Haiku agent",
    instructions="Always respond in haiku form",
    model="o3-mini",
    tools=[get_weather],
)

Running agents

You can run agents via the Runner class. You have 3 options:

  1. Runner.run(), which runs async and returns a RunResult.
  2. Runner.run_sync(), which is a sync method and just runs .run() under the hood.
  3. Runner.run_streamed(), which runs async and returns a RunResultStreaming. It calls the LLM in streaming mode, and streams those events to you as they are received.
from agents import Agent, Runner

async def main():
    agent = Agent(name="Assistant", instructions="You are a helpful assistant")

    result = await Runner.run(agent, "Write a haiku about recursion in programming.")
    print(result.final_output)
    # Code within the code,
    # Functions calling themselves,
    # Infinite loop's dance.


Agent Architecture

The application comprises 7 specialized agents:

  1. Triage Agent 🤖
    • Role: Primary router that receives user input and delegates tasks via handoffs
    • Example: Routes "Show production errors" → IRIS Production Agent  
  2. Vector Search Agent 🤖
    • Role: Provide IRIS 2025.1 Release notes details (RAG Functionality)
    • Example: Routes "Provide me summary of Release Notes" → Vector Search Agent  
  3. IRIS Dashboard Agent 🤖
    • Function: Provides real-time management portal metrics: plaintext Copy
      ApplicationErrors, CSPSessions, CacheEfficiency, DatabaseSpace, DiskReads,  
      DiskWrites, ECPAppServer, ECPDataServer, GloRefs, JournalStatus,  
      LicenseCurrent, LockTable, Processes, SystemUpTime, WriteDaemon, [...]
  4. IRIS Running Process Agent 🤖
    • Function: Monitors active processes with details:
      • Process ID | Namespace | Routine | State | PidExternal
  5. IRIS Production Agent 🤖
    • Role: Provide production details along with the functionality to start and stop the production.
  6. WebSearch Agent 🤖
    • Capability: Performs contextual web searches via API integrations
  7. Order Agent 🤖
    • Function: Retrieves order status using an order ID


Handoffs

Handoffs allow an agent to delegate tasks to another agent. This is particularly useful in scenarios where different agents specialize in distinct areas. For example, a customer support app might have agents that each specifically handle tasks like order status, refunds, FAQs, etc.

The triage agent is our main agent, which delegates tasks to another agent based on user input

    #TRIAGE AGENT, Main agent receives user input and delegates to other agent by using handoffs
    triage_agent = Agent(
        name="Triage agent",
        instructions=(
            "Handoff to appropriate agent based on user query."
            "if they ask about Release Notes, handoff to the vector_search_agent."
            "If they ask about production, handoff to the production agent."
            "If they ask about dashboard, handoff to the dashboard agent."
            "If they ask about process, handoff to the processes agent."
            "use the WebSearchAgent tool to find information related to the user's query and do not use this agent is query is about Release Notes."
            "If they ask about order, handoff to the order_agent."
        ),
        handoffs=[vector_search_agent,production_agent,dashboard_agent,processes_agent,order_agent,web_search_agent]
    )


Tracing

The Agents SDK includes built-in tracing, collecting a comprehensive record of events during an agent run: LLM generations, tool calls, handoffs, guardrails, and even custom events that occur. Using the Traces dashboard, you can debug, visualize, and monitor your workflows during development and in production.
https://platform.openai.com/logs

image

 


Application Interface

Application Workflow Process

Vector Search Agent

Vector Search Agent automatically ingests New in InterSystems IRIS 2025.1 text information into IRIS Vector Store only once if the data doesn't already exist.  


Use the query below to retrieve the data

SELECT
id, embedding, document, metadata
FROM SQLUser.AgenticAIRAG

The Triage Agent receives user input, routing the question to the Vector Search Agent.

IRIS Dashboard Agent

The Triage Agent receives user input, routing the question to the IRIS Dashboard Agent.


IRIS Processes Agent

 

The Triage Agent receives user input, routing the question to the IRIS Processes Agent.


IRIS Production Agent

Start and Stop the Production by using Production Agent.


Get Production Details by using Production Agent.

Local Agent

The Triage Agent receives user input, routing the question to the Local Order Agent.


WebSearch Agent

Here, the triage Agent receives two questions, routing both to the WebSearcg Agent.

MCP Server application

MCP Server is running at https://localhost:8000/sse

image

Below is the code to start the MCP server:

import os
import shutil
import subprocess
import time
from typing import Any
from dotenv import load_dotenv

load_dotenv()

#Get OPENAI Key, if not fond in .env then get the GEIMINI API KEY
#IF Both defined then take OPENAI Key 
openai_api_key = os.getenv("OPENAI_API_KEY")
if not openai_api_key:
   raise ValueError("OPENAI_API_KEY is not set. Please ensure to defined in .env file.")


if __name__ == "__main__":
    # Let's make sure the user has uv installed
    if not shutil.which("uv"):
        raise RuntimeError(
            "uv is not installed. Please install it: https://docs.astral.sh/uv/getting-started/installation/"
        )

    # We'll run the SSE server in a subprocess. Usually this would be a remote server, but for this
    # demo, we'll run it locally at http://localhost:8000/sse
    process: subprocess.Popen[Any] | None = None
    try:
        this_dir = os.path.dirname(os.path.abspath(__file__))
        server_file = os.path.join(this_dir, "MCPserver.py")

        print("Starting SSE server at http://localhost:8000/sse ...")

        # Run `uv run server.py` to start the SSE server
        process = subprocess.Popen(["uv", "run", server_file])
        # Give it 3 seconds to start
        time.sleep(3)

        print("SSE server started. Running example...\n\n")
    except Exception as e:
        print(f"Error starting SSE server: {e}")
        exit(1)

 

The MCP Server is equipped with the following tools:

  • Provide IRIS 2025.1 Release notes details (Vector Search)
  • IRIS Info tool
  • Check Weather tool
  • Find secret word tool (Local function)
  • Addition Tool (Local function)

MCP application is running at  http://localhost:8001


 

MCP Server Vector Search (RAG) functionality

The MCP Server is equipped with InterSystems IRIS vector search ingestion capabilities and Retrieval-Augmented Generation (RAG) functionality.


MCP Server other functionality

The MCP Server dynamically delegates tasks to the appropriate tool based on user input.


For more details, please visit iris-AgenticAI open exchange application page.

Thanks

Discussão (0)1
Entre ou crie uma conta para continuar