0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DifyとOCI ADB Select AIで自然言語からSQL生成とデータベース検索を実現する方法

Posted at

1. 概要

この記事では、Difyのチャットフロー機能OCI ADB Select AIを組み合わせることで、自然言語でのデータベース検索を実現する方法を解説します。非技術者でも以下のような操作が可能になります:

  • 「売上上位5件のデータを表示してください」といった自然言語の入力
  • 入力内容をAIが自動でSQLに変換
  • 結果をMarkdownテーブル形式で返却

OCI ADB Select AIの自然言語処理能力とDifyのワークフロー機能を活用することで、データ分析の敷居を大幅に下げられます。

応用例

  • データ可視化連携:結果をPower BIやTableauで可視化
  • チャットボット統合:SlackやTeams経由での質問対応
  • バッチ処理:定期的なレポート生成

2. ステップバイステップ解説

ステップ1. チャットフローの作成

チャットフロー作成画面

  1. Difyダッシュボードで「チャットフロー」を選択
  2. チャットフローの名前を設定(例:「自然言語検索フロー」)

ステップ2. SQL生成用HTTPリクエスト

OCI ADB APIリクエスト設定

  • メソッド: POST
  • URL: showsqlのエンドポイント(例:http://192.168.31.20:9999/selectai/showsql
  • ボディ:
    {
      {"query" : "{{#sys.query#}}"}
    }
    

ステップ3. SQL抽出用コードブロック

SQL抽出コード


import json


def main(json_body: str) -> dict:
    dict_body = json.loads(json_body)
    sql_query = dict_body["sql"]
    sql_query = sql_query.replace('"', '\\"')
    return {"result": sql_query}

ステップ4. SQL実行リクエスト

SQL実行リクエスト設定

  • メソッド: POST
  • URL: runsqlのエンドポイント(例:http://192.168.31.20:9999/selectai/runsql
  • ボディ:
    {
      {"query" : "{{#1742363069217.result#}}"}
    }
    

ステップ5. 結果のMarkdown変換

Markdown変換コード


import json


def main(json_body: str) -> dict:
    dict_body = json.loads(json_body)
    columns = dict_body['columns']
    table_data = dict_body['data']

    header = "|{}|".format(" | ".join(columns))
    separator = "|{}|".format(" | ".join(["---" for _ in columns]))

    rows = []
    for row in table_data:
        row_str = " | ".join(map(str, row))
        rows.append(f"|{row_str}|")

    markdown_table = "\n".join([header, separator] + rows)

    return {"result": markdown_table}


ステップ6. 最終出力設定

回答表示設定



query is:

---

{{#sys.query#}}

---

sql is:

---

{{#1742363069217.result#}}

---

result is:

----

{{#1742363491175.result#}}

---

3. テストケース

テスト1:

image.png

テスト2:

image.png

テスト3:

image.png

テスト4:

image.png


4. 注意点

  • セキュリティ: APIキーは環境変数で管理推奨
  • パフォーマンス: 複雑なクエリは実行時間に注意
  • サポート対象: OCI ADB Select AIがサポートするSQL文式に限定

このフローを活用することで、データ分析業務の効率化とチーム間のコミュニケーションコスト削減が期待できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?