はじめに
本記事はエージェントのチュートリアル中に無料利用を試みてLLM Meshの設定でドン詰まりし、結局断念しまった備忘その②で実際に何を試したかをまとめます。
Dataiku LLM 接続設定の検証記録・まとめ
Dataiku DSS上で無料のLLM API(Google Gemini / Groq)を連携させ、GUIの「LLMレシピ」でデータ処理を行うために実施した設定手順と、直面したエラー・システム制限の記録です。
1. 目的と試みたアプローチ
- 目的: Pythonコードを使用せず、フロー内の「LLMレシピ(GUI)」を使って、無料LLM(Gemini 1.5 Flash や Llama 3.3)でデータの一括処理を行う。
- 前提条件: チュートリアルのDataiku環境において、標準の「LLM Mesh(OpenAIやGeminiの直接接続)」が非表示、かつ「プラグインストア」からの新規インストールが制限されている状態。
- 接続規格: Gemini(Google AI Studio)および Groq のAPIは「OpenAI互換(OpenAI-compatible)」の規格に準拠しているため、OpenAI用の接続インターフェースを介して設定を試みた。
2. 実施した設定手順と直面したエラー内容
【検証1】標準の Google Vertex AI コネクターの利用
Dataiku標準の Google Vertex AI 接続から、Google AI Studioで発行した無料APIキー(文字列)の登録を試行。
-
発生したエラー:
Error connecting to model Gemini 3.5 Flash
Cannot read private key file, make sure you defined either the full path on the DSS server to the key file (.json or .p12)... - 原因: 標準コネクターは企業向けのGoogle Cloud(Vertex AI)のサービスアカウント(秘密鍵ファイル)を要求する仕様であり、無料APIキー単体では弾かれる。
【検証2】公式プラグイン(ZIP)の直接アップロード
プラグインストアにOpenAI系プラグインが表示されないため、Dataiku公式サーバー(CDN)から直接プラグインのソースコード(ZIP形式)をダウンロードし、手動インストールを試行。
-
ダウンロード元:
https://dataiku.com - 実施手順: 「Plugins > + Add Plugin > Upload zip file」からアップロード。
- 検証結果: インストール自体は成功したものの、管理画面(Connections)の「Custom LLM (plugin)」の選択肢(ドロップダウン)にプラグイン名が出現しなかった。開発コードが現在のDataikuのバージョンまたは環境に適合していない可能性が浮上。
【検証3】「Custom LLM (plugin)」による自作プラグインの構築
アップロードが反映されないため、「Plugins > Write your own」機能を使い、画面上のコピペだけで動作する「OpenAI互換カスタムプラグイン」の自作を試行。
-
作成を試みたファイル構成:
-
plugin.json(プラグインのメタデータと入力欄の定義) -
python-llms/custom-openai-llm/llm.py(APIリクエストを転送する内部処理)
-
-
発生したエラー①:
The plugin's definition is invalid. Missing plugin id-
原因: Dataikuが認識する内部フォルダ名(ID)と、
plugin.json内に記述した"id"の値の不一致。
-
原因: Dataikuが認識する内部フォルダ名(ID)と、
-
発生したエラー②:
Expected BEGIN_OBJECT but was STRING-
原因: Dataikuのバージョン変更に伴う、
plugin.jsonの構造(スキーマ)の不一致。"id"や"version"の記述位置がルート直下("meta"の外)である必要があった。
-
原因: Dataikuのバージョン変更に伴う、
-
解決結果: 新規の構造テンプレートをベースに、JSON構造を最新スキーマに修正したことで、プラグイン自体はエラーなく正常に保存・ロードに成功。
3. 最終的に判明したシステムの壁(ドロップダウン非表示問題)
プラグインの保存・Reloadに成功したものの、Administration > Connections > + NEW CONNECTION > Custom LLM の画面において、自作したプラグインがドロップダウンの選択肢に出現しない現象が発生。
🚨 根本的な原因
-
ドロップダウンの固定:
画面上に表示されているドロップダウンの選択肢がAzure OpenAI APIM Custom LLMのみに固定されていた。これは、社内インフラによって「インストール済みかつ承認済みの特定プラグイン以外はLLM接続として表示させない」強固なガードレール(制限)が敷かれていると推測。 -
Azure OpenAIコネクターの認証縛り:
既存のAzure OpenAI APIM Custom LLMを流用して、中身のURLやキーをGroq/Geminiに書き換える「偽装(騙す)方法」を試みたが、該当コネクターの認証方式(Auth type)がOAuth from app()(または OAuth Client Credentials)に強制固定されていた。- これにより、ユーザーが手動でAPIキーを入力する欄が一切表示されず、外部の無料API(
gsk_...やAIzaSy...)をシステムに入力・認識させることが物理的に不可能な構造になっていた。
- これにより、ユーザーが手動でAPIキーを入力する欄が一切表示されず、外部の無料API(
4. 今後の現実的な打開策(2択)
💡 対策A:利用可能なLLMに課金して設定する
一番楽だが、やはり費用は掛けたくないのがネック
💡 対策B:フロー内の「Pythonレシピ」での直接呼び出しに切り替える
完全にチュートリアルから離れる形の対応のため、正直どうかと思う部分はあるが一例としてはありかと思うので掲載 ※ただしまだ筆者も未実施
GUIのLLMレシピを諦め、データフロー内に「Pythonレシピ」を配置し、無料APIキーを使って直接LLMを呼び出すコードを記述する。(接続設定を完全にバイパス可能)
import dataiku
import pandas as pd
from openai import OpenAI
# 1. データの読み込み
df = dataiku.Dataset("入力データセット名").get_dataframe()
# 2. クライアント初期化(例: Groq)
client = OpenAI(api_key="gsk_あなたのGroqキー", base_url="https://groq.com")
# 3. LLM処理関数
def ask_llm(text):
try:
response = client.chat.completions.create(
model="llama-3.1-8b-instant",
messages=[{"role": "user", "content": f"以下を要約して:\n{text}"}]
)
return response.choices.message.content
except Exception as e:
return f"Error: {str(e)}"
# 4. 実行と書き出し
df['output'] = df['対象の列名'].apply(ask_llm)
dataiku.Dataset("出力データセット名").write_with_schema(df)
最後に
まとめてはみましたが、結局打開に至っていないため同じアプローチをしようとする方への参考になってくれてれば幸いです。