記事
· 2025年12月8日 2m read
Native SDK for Pythonの使用方法

これは InterSystems FAQ サイトの記事です。

PythonからIRISにアクセスするためのNative SDK for Pythonと呼ばれるインタフェースが用意されています。

Javaや.Net用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

また、Python用にはEmbedded Pythonと呼ばれるIRISと密に連携した機能があります。

IRISから最大限の性能を得るためには、Embedded Pythonが適していますが、以下のような場合、Native SDKが適しているケースもあります。

0 0
0 17
記事
· 2025年12月8日 1m read
Native SDK for .NETの使用方法

これは InterSystems FAQ サイトの記事です。

.NETからIRISにアクセスするためのNative SDK for .NETと呼ばれるインタフェースが用意されています。

JavaやPython用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

    Native SDKを利用することで以下のようなことを実装することができます。

    1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
    2. IRISオブジェクトの操作
    3. IRISグローバルデータの操作
    4. ADO.NETによるデータベースアクセス

    以下からこれらのサンプルプログラムを取得することができます。

    0 0
    0 19

    .pyファイルの中でIRISのEmbedded Pythonを動作させる際にirispythonコマンドで実行する方法はドキュメント上で紹介されていましたので、以前より使用していました。

    しかし、普通のpythonコマンドを使用するとうまく実行できなかったのですが、最近その謎(原因)が解けたので紹介します。

    これは、Mac特有の問題である可能性が高くWindowsやLinuxでは何の問題もなく実行できるのかもしれません。

    エラーは以下のようなエラーです。

    0 3
    0 88

    コミュニティの皆さん、こんにちは。

    この記事では、私のアプリケーションである iris-AgenticAI をご紹介します。

    エージェンティック AI の登場により、人工知能が世界とやりとりする方法に変革的な飛躍をもたらし、静的なレスポンスが動的な目標主導の問題解決にシフトしています。 OpenAI の Agentic SDK を搭載した OpenAI Agents SDK を使用すると、抽象化をほとんど行わずに軽量で使いやすいパッケージでエージェンティック AI アプリを構築できます。 これは Swarm という前回のエージェントの実験を本番対応にアップグレードしたものです。
    このアプリケーションは、人間のような適応性で複雑なタスクの推論、コラボレーション、実行を行える次世代の自律 AI システムを紹介しています。

    アプリケーションの機能

    • エージェントループ  🔄 ツールの実行を自律的に管理し、結果を LLM に送信して、タスクが完了するまで反復処理するビルトインのループ。
    • Python-First 🐍 ネイティブの Python 構文(デコレーター、ジェネレーターなど)を利用して、外部の DSL を使用せずにエージェントのオーケストレーションとチェーンを行います。
    • ハンドオフ 🤝 専門化されたエージェント間でタスクを委任することで、マルチエージェントワークフローをシームレスに調整します。
    • 関数ツール ⚒️ @tool で Python 関数をデコレートすることで、エージェントのツールキットに即座に統合させます。
    • ベクトル検索(RAG) 🧠 RAG 検索のためのベクトルストアのネイティブ統合。
    • トレース 🔍 リアルタイムでエージェントワークフローの可視化、デバッグ、監視を行うためのビルトインのトレース機能(LangSmith の代替サービスとして考えられます)。
    • MCP サーバー 🌐 stdio と HTTP によるモデルコンテキストプロトコル(MCP)で、クロスプロセスエージェント通信を可能にします。
    • Chainlit UI 🖥️ 最小限のコードで対話型チャットインターフェースを構築するための統合 Chainlit フレームワーク。
    • ステートフルメモリ 🧠 継続性を実現し、長時間実行するタスクに対応するために、セッション間でチャット履歴、コンテキスト、およびエージェントの状態を保持します。

    0 0
    0 37

    コミュニティの皆さん、こんにちは。

    従来のキーワードベースの検索では、ニュアンスのあるドメイン固有のクエリには対応できません。 ベクトル検索であれば、セマンティック認識を利用して、キーワードだけでなくコンテキストにも基づいたレスポンスを AI エージェントで検索して生成することができます。

    この記事では、エージェンティック AI RAG(検索拡張生成)アプリケーションを作成手順を紹介します。

    実装手順:

    1. エージェントツールを作成する
      • インジェスト機能の追加: ドキュメント(例: InterSystems IRIS 2025.1 リリースノート)を自動的にインジェストしてインデックス作成を行います。
      • ベクトル検索機能の実装
    2. ベクトル検索エージェントを作成する
    3. Triage(メインエージェント)に渡す
    4. エージェントを実行する
    0 0
    0 28

    この連載記事を終えていなかったことに気付きました!

    GIF de Shame On You Meme | Tenor

    今日の記事では、フロントエンドから最適なオプションを選択できるように、テキストに最も類似する ICD-10 診断を抽出するプロダクションプロセスについて説明します。

    診断の類似度検索:

    アプリケーション内で、HL7 で受け取った診断リクエストを示す画面から、医療従事者が入力したテキストに最も近い ICD-10 診断を検索できます。

    1 0
    0 30

    開発者の皆さん、こんにちは!

    Windows 版 IRIS/IRIS for Health 2025.1 以降で Embedded Python をご利用いただく場合、Windows に Python のインストールが必要になりました。

    以前のバージョンから Embedded Python をご利用いただいている場合は、新しいバージョンにアップグレードした後、Python のインストールと IRIS 側に必要な設定がありますのでご注意ください。

    ※ 2024.1 以前のバージョンでは、IRIS インストールと同時にインストールされる Python ご利用いただく必要があったため、Windows への Python インストールは不要でした。

    補足:フレキシブル Python ランタイム機能の導入により、OS にインストールされた Python のバージョンを IRIS 側で指定できるようになりました。

    2 0
    3 98

    これは InterSystems FAQ サイトの記事です。

    InterSystems 製品では、ファイルオープン時に文字コードを指定すれば指定の文字コードで正しくファイルの中身を処理できます。

    文字コードを指定しない場合、InterSystems 製品をインストールした OS に合わせて設定されたファイル I/O 用文字コードを利用してファイルをオープンします(Linux 系は UTF8、Windows は SJIS)。

    また、文字列については文字コードが判明していれば $ZCONVERT() 関数を使用して指定文字コードで文字列を処理することができます。

     例)$ZCONVERT(文字列,"I","IRIS内文字コード")

    2 0
    1 117

    インターシステムズは、InterSystems IRIS®data platformInterSystems IRIS® for HealthTM、および HealthShare® Health Connect の 2025.1 リリースを一般提供 (GA) したことを発表しました。2025.1 は、拡張メンテナンス(EM)リリースです。

    リリースハイライト
    今回のリリースには、以下のような数々の興味深いアップデートが含まれます:

    0 0
    0 131

    InterSystems IRIS 2021.2 のバージョンより、Embedded Python を使用できるようになりました。

    Embedded Python で Excel のデータを IRIS グローバルに格納する方法 では pandas.DataFrame のデータを InterSystems IRIS グローバルに保存する方法をご紹介しました。
    こちらの記事では、その逆の「InterSystems IRIS グローバル($LB) を pandas.DataFrame に変換する」方法をご紹介します。

    2 1
    0 460

    開発者の皆さん、こんにちは。

    Teams ワークフロー Webhook を用意すると、curl コマンドや REST クライアントを利用して Teams チャネルに任意メッセージを簡単に送信できるので、IRIS や IRIS の Interoperability を使って自動的に何か情報を入手+必要なときだけ Teams チャネル通知ができたら面白いな、と思い試してみた内容をご紹介します。

    以下、Teamsワークフローの作成例です。

    4 0
    0 104

    Mac版IRISでは、現状Pythonのバージョンが固定(3.11)なのですが、これに付随する他製品との相性問題に遭遇しましたので報告します。

    今までEmbedded Pythonは調子よく動作していたのですが、ある時から急に動作しなくなりました。

    原因を調べてみると、Python3.13がインストールされ、それがデフォルトとして上書きされたため、irispythonコマンドを発行すると、それが内部で3.13を呼ぶ様になってしまったためでした。

    ちなみにiris session でログインし、そこからEmbedded Pythonを実行する場合は、問題ありません。

    あくまでもirispythonコマンドで直接.pyファイルを実行する場合に発生する問題です。

    そしてとりあえずの対処法は、python3をpython3.11で置き換える方法です。

    以下のような感じです。(どのMacでもbrewコマンドでインストールした場合、ディレクトリ構造は同じだと思いますが、違う可能性もゼロではありません)

    cp /opt/homebrew/bin/python3.11 /opt/homebrew/bin/python3

    1 0
    0 48

    前回の記事では、ICD-10 による診断のコーディングをサポートできるように開発された d[IA]gnosis アプリケーションを紹介しました。 この記事では、InterSystems IRIS for Health が、事前トレーニングされた言語モデル、そのストレージ、およびその後の生成されたすべてのベクトルの類似性の検索を通じて ICD-10 コードのリストからベクトルを生成するために必要なツールをどのように提供するかを見ていきます。

    はじめに

    AI モデルの開発に伴って登場した主な機能の 1 つは、RAG(検索拡張生成)という、コンテキストをモデルに組み込むことで LLM モデルの結果を向上させることができる機能です。 この例では、コンテキストは ICD-10 診断のセットによって提供されており、これらを使用するには、まずこれらをベクトル化する必要があります。

    診断リストをベクトル化するにはどうすればよいでしょうか?

    0 0
    0 93

    Embedded Pythonの導入に伴い、1つ嬉しいことは、直接エクセルファイルの読み書きができるようになったことです。

    それでこの機能を使って、ミニ業務改革をちょこちょこ行なっているのですが、そこでちょっとハマったことを共有します。

    実際この内容は実はIRISとは全く関係ないのですが、このDCコミュニティの皆さんが同じことでハマった場合に少しでも早く問題解決できるように情報共有します。

    エクセルの計算式の入ったセルの値を読み取るときには、そのファイルのオープンの際にdata_only=Trueというフラグをつけないといけないのですが、そのファイルがopenpyxlで読み書きしたファイルの場合に、その計算式のセルの値(Noneとなる)がうまく読めないことがあります。

    その場合には、そのファイルをエクセルで開いて再保存することで、正しく読むことができます。

    以下にそのあたりの内容を説明したページがあります。

    元ネタ

    1 0
    0 414

    Pythonでは、拡張モジュールのバージョン違いが混同されないように、venv を使って仮想環境に拡張モジュールをインストールする事を推奨されてたりしますが、IRISから使用する場合に、このvenvで作られた仮想環境を利用する事は可能でしょうか?

    PythonPathに仮想環境のパスを指定してはみましたが、プロジェクトから、あるいはimportで、その場所を指定する等出来るでしょうか?

    何方か御存知の方がおられましたら、その方法などを教えて下さい。

    0 4
    0 273

    ベクトルデータ型と Vector Search 機能が IRIS に導入されたことにより、アプリケーションの開発に多数の可能性が開かれました。こういったアプリケーションの例として、バレンシア保健省が AI モデルを使用した ICD-10 コーディング支援ツールを要求した公募で出品されたアプリケーションが最近私の目に留まりました。

    要求されたツールのようなアプリケーションをどのように実装できるでしょうか? 必要なものを確認しましょう。

    1. ICD-10 コードのリスト。自由テキスト内で診断を検索するための RAG アプリケーションのコンテキストとして使用します。
    2. ICD-10 コード内で相当するものを検索するためにテキストをベクトル化するトレーニング済みモデル。
    3. ICD-10 コードとテキストの取り込みとベクトル化を行うために必要な Python ライブラリ。
    4. 可能性のある診断を見つけるためのテキストを受け入れる使いやすいフロントエンド。
    5. フロントエンドから受信するリクエストのオーケストレーション。

    これらのニーズに対応するために、IRIS は何を提供できるでしょうか?

    0 0
    0 70

    image

    コミュニティの皆さん、こんにちは。

    この記事では、iris-RAG-Gen という私のアプリケーションをご紹介します。

    iris-RAG-Gen は、IRIS Vector Search の機能を使用して、Streamlit ウェブフレームワーク、LangChain、および OpenAI で ChatGPT をパーソナライズするジェネレーティブ AI 検索拡張生成(RAG: Retrieval-Augmented Generation)アプリケーションです。 このアプリケーションは IRIS をベクトルストアとして使用します。

    アプリケーションの機能

    • ドキュメント(PDF または TXT)を IRIS に取り込む
    • 選択されたドキュメントの取り込みを使ってチャットする
    • ドキュメントの取り込みを削除する
    • OpenAI ChatGPT

    0 0
    0 71

    以前、Azure用にOAouth2クライアントをセットアップする記事を書いた時に思ったのですが、各IdPはサンプルコードとしてPythonコードや専用のモジュールを提供しているので、それがそのまま使用できれば効率が良いのにな、と思いました。

    IRISが埋め込みPython機能としてWSGIをサポートしたことにより、これが簡単に実現しそうなので、その方法をご紹介したいと思います。

    導入方法

    今回は、IdPとしてOKTAを使用してAuthorization Codeフローを行います。

    OKTAでの設定内容

    参考までに、今回使用した環境を後半に記載しています。

    アプリケーションの起動

    コンテナ化してありますので、コンテナのビルド環境をお持ちの方は、下記を実行してください。

    3 0
    0 72

    開発者の皆様はじめまして。
    私からはIRISのソースコントロール機能を用いたソースの自動チェック機能のご紹介をしたいと思います。
    チーム開発では、ソースの可読性や実装方法等がある程度統一されるようにコーディング規約を作成すると思います。
    しかし、メンバーの入れ替わりでコーディング規約の説明をしていても徹底されないことが起こることも少なくありません。
    なので、ソースコントロールを使用してコンパイル時に自動的にチェックするようにしました。
    IRIS内で完結させるメリットとして、エラーチェックだけでなくチェック後にエラーがなければコンパイルまで自動で行えること、
    %Dictionary.ClassDefinition(クラス定義)を使用できるので、チェッククラスを作成しやすいこと等があげられます。

    目次

    15 0
    0 172

    IRISはPythonの豊富なライブラリや既存のPythonプログラムをそのまま利用する事も、COS内でネイティブにコーディングする事も可能となりました。
    しかし開発において、いくつかの問題点があります。

    1. Pythonのバージョン

    Pythonを使ったプロジェクトを構築していると、バージョンの問題にあたる時があります。
    古いバージョンで開発していたところに、使いたいライブラリが対応していなかった等です。
    しかし、IRISのEmbedded Pythonを利用する場合には、Pythonランタイムのバージョンに影響される為、プロジェクトで使用するバージョンは、プロジェクト単位はなく、IRISのバージョン単位で決まってしまいます。
    また、現時点ではこのPythonランタイムをアップグレードする事はできません。

    6 0
    0 430

    開発者の皆さん、こんにちは!
    InterSystems IRIS(以下、IRIS)を使用したアプリケーション開発において、皆さんは環境設定をどうされていますか?
    私は最近になって、「インストールマニフェスト」という機能があることを知りました。
    これは、管理ポータルでポチポチしていた作業をコード化・自動化できる強力なツールです!
    最初こそとっつきづらかったものの良いところがたくさんあるなと思ったので、簡単にではありますが皆さんにその良さと始め方をご紹介したいと思います。

    なお、私が使用しているIRISバージョンは以下です。

    2022.1

    バージョンが異なる場合、違う書き方になっているもの等が存在する場合がありますので、
    公式ドキュメント等を参照し適宜読み替えていただければと思います。

    24 0
    1 320

    コミュニティの皆さんこんにちは。

    突然ですが、皆さんはIRISの機能にある「ユニットテスト」は利用されているでしょうか。
    筆者はまだ実装まで行えていませんが、各関数の品質保証を担保するため導入を検討している段階です。

    現状、IRISのユニットテストには下記2点の対応すべき点があると考えています。

    1. テスト結果の可読性が低い(先日vscodeで拡張機能が出ていましたが、やはり見ずらいと感じました)
    2. ユニットテストを自動で実行する手段がない

    特にテストが継続的に自動で実施されないと、ユニットテスト自体が次第に陳腐化し、実行されなくなり忘れ去られる恐れがあると考えます。
    ただし、意味もなく定期的にテストを実行しても効果がありません。
    そこで、Gitのpushのタイミングで行おうと考えました。

    次にテスト環境です。
    テスト環境の構築は、テスト自動化の観点からみるとCI/CDツール等を利用するのが一般的だと思います。
    ただ今回は、テスト環境の構築を簡易にすませたいと考え、IRISの既存技術を組み合わせて構築しようと考えました。

    11 0
    0 225

    これは InterSystems FAQ サイトの記事です。

    PythonからObjectScriptのルーチンを直接呼び出すことはできませんが、クラスメソッドを経由して間接的に呼び出すことができます。

    しかし、Pythonの変数とObjectScriptのローカル変数は内部構造が異なるため、情報の交換には少し工夫が必要です。

    簡単なサンプルでその方法について説明します。

    まず、2つの変数を足し算する簡単なルーチン ^testを作ります。

    1 0
    0 140

    IRISでPythonを扱う時に、既存の%DynamicObject型の値をそのまま利用したいと思うのですが、Embedded Pythonは自動で%DynamicObjectをdict型にはしてくれません。親和性はとてもあるのですが。。。

    そこで、既存プログラムで生成した%DynamicObject型の値をPython側、特に外部のPythonファイル側でdict型を期待している関数に利用するにはどうすれば良いか。

    少しスマートではありませんが、%DynamicObjectを一旦JSON文字列に置き換え、Embedded Python 内でJSON文字列からdict型に変換する方法しかないようです。
    以下が、その手順です。

    3 5
    0 258

    埋め込みPythonは、同じプロセス空間で、IRIS言語とPython言語を組み合わせて使える面白い環境を提供しますが、組み合わせて使う場合、オブジェクトタイプとそのアクセス方法の違いをはっきり意識して使わないと混乱するように思います。その使い分けの勉強の為、両言語のオブジェクト参照から、その構造を解析ダンプするツールを作ってみました。とくに、実行中のPython情報が、ZWRITE Oref コマンドでの表示しかないようなので、有用かも知れません。ツールは、まだ、間違い、改良等があると思います(教えて下さい)が、ポストします。

    ツール本体: Py.Dump.cls

    2 1
    0 315

    Pandas は単に人気のあるソフトウェアライブラリだけではありません。 これは、Python データ分析環境の基礎でもあります。 その単純さとパワーで知られており、データの準備と分析の複雑さをより扱いやすい形態に変換する上で不可欠な多様なデータ構造と関数が備わっています。 これは、主要なデータ管理および分析ソリューションである InterSystems IRIS プラットフォームのフレームワーク内で、主要評価指標(KPI)やレポート作成用の ObjectScript などの特殊な環境に特に関連しています。

    データの処理と分析の分野において、Pandas はいくつかの理由により際立っています。 この記事では、それらの側面を詳細に探ります。

    • データ分析における Pandas の主なメリット:

    ここでは、Pandas を使用する様々なメリットについて深く掘り下げます。 直感的な構文、大規模なデータセットの効率的な処理、および異なるデータ形式のシームレスな操作などが含まれます。 Pandas を既存のデータ分析ワークフローに統合する容易さも、生産性と効率を強化する大きな要因です。

    1 0
    0 125

    開発者の皆さん、こんにちは!

    次のInterSystems プログラミングコンテストの内容についてご案内します📣

    🏆 InterSystems Python コンテスト 🏆

    期間: 2024年7月15日~2024年8月4日

    賞金総額:$14,000

    2 0
    0 189

    これは InterSystems FAQ サイトの記事です。

    PythonスクリプトファイルやPythonで記述されたIRIS内メソッドを呼び出す際、エラーが発生した場合の対応方法をご紹介します。

    説明使用するコードや資料PDFは公開しています👉 test1.pyFS.Utilsクラスコードのコピー元ビデオで解説している資料PDF

    Embedded Python 自習用ビデオをご用意しています(項目別にYouTubeプレイリストをご用意しています)。

    各プレイリストについて詳しくはこちらをご参照ください👉【はじめてのInterSystems IRIS】Embedded Python セルフラーニングビデオシリーズ公開!

    1 0
    0 404

    これは InterSystems FAQ サイトの記事です。

    現時点(2024年3月)では、コミュニティに掲載されているPythonライブラリ「iris-dollar-list」を利用することでIRISの$LIST()形式のデータをPythonのリストとして利用することができます。

    ※標準ツールではありませんがご利用いただけます。詳細はコミュニティの記事「もう1つの $ListBuild() の実装:Pythonライブラリ「iris-dollar-list」」をご参照ください。

    WindowsにインストールしたIRISで使用する場合は、以下の方法で「iris-dollar-list」をインストールしてください。

    ※Windows以外にインストールしたIRISでは、pipコマンドを利用した通常の方法でインストールできます。

    1 1
    1 187

    近頃、LLM や AI などに関する話題で非常ににぎわっています。 ベクトルデータベースもそれなりに関わっており、IRIS 以外では、世界中で多様なサポートがすでに実現されています。

    なぜベクトルなのでしょうか?

    • 類似検索: ベクトルでは、データベース内で最も類似する項目やドキュメントを検索するなど、効率的な類似検索が可能です。 従来のリレーショナルデータベースは完全一致検索向けに設計されているため、画像やテキストの類似検索といったタスクには向いていません。
    • 柔軟性: ベクトル表現には汎用性があり、テキスト(Word2Vec、BERT などの埋め込み経由)や画像(ディープラーニングモデル経由)などの様々なデータタイプから導き出すことができます。
    • クロスモーダル検索: ベクトルでは、様々なデータモダリティでの検索が可能です。 たとえば、画像のベクトル表現を基に、マルチモーダルデータベースで類似する画像や関連するテキストを検索できます。

    理由は他にも多数あります。

    そこで、この Python コンテストでは、このサポートを実装してみることにしました。 残念ながら時間内に完成させることはできませんでしたが、その理由を以下で説明します。

    1 0
    0 180