workflow

ふつうのデータ基盤移行 - Part 4. AI ワークフローで移行作業効率化編

このポストについて データ基盤移行について書いていくシリーズです。 シリーズ一覧はこちらから。 前回 Part 3. アーキテクチャ編ではどういったシステム構成にしたかを書きました。 今回はその技術スタックへと移行するための苦労と効率化について書きます。 (次は CI/CD の話をすると書きましたが…スマンありゃウソだった) スコープ 今回はやや小さいスコープの話です。 データ基盤における ETL (ELT) 処理の移行作業を対象としています。 移行作業における工数的な課題を AI ワークフローを作って効率化して軽減したという話になります。 ETL 以外の移行作業は今回はスコープ外となります。 課題 旧データ基盤から新データ基盤へと table およびそれを更新するための処理を移行するにあたり工数面での課題が2つあります。 技術スタックの移行 column 命名などの標準化 これらについて述べます。 技術スタックの移行 データ基盤の移行において、新旧の環境で技術スタックは次のようになっています。 旧データ基盤 ETL: Glue Job 新データ基盤 ELT: dbt-databricks つまり Glue Job の Python コードを dbt model、つまり SQL に翻訳する必要があり、それなりに手間がかかります。 さらにこの Python コードは次のような問題もあり、移行のハードルを上げます。 UDF を実装して特殊な処理を行っているケースがある Spark の API だけでなく Glue の API をふんだんに使っている (なるべく Spark に寄せればいいものを…) (ここ数年の業務で見た中で一番というぐらいに) コード品質が低い column 命名などの標準化 旧データ基盤は利用者への配慮があまりない状態で table の schema が作られており、利用者にとって使いにくいものとなっていました。 それを改善するため、新データ基盤では次のようなルールを導入しました。 ...

6月 18, 2025 · soonraah
AI frog graph network with parrot

読書メモ: LangChainとLangGraphによるRAG・AIエージェント[実践]入門

書籍について 西見 公宏; 吉田 真吾; 大嶋 勇樹. LangChainとLangGraphによるRAG・AIエージェント[実践]入門 エンジニア選書. 株式会社技術評論社. タイトルのとおりで RAG や AI エージェントについて書かれた本。 出版は2024年11月。 LangChain や LangGraph を使ったサンプルコードが豊富に載っている。 著者の方は3名ともジェネラティブエージェンツ社の方で、AI エージェントを扱う会社らしい。 前作として『ChatGPT/LangChainによるチャットシステム構築[実践]入門』という本もあり、本書の何章かは前作の内容を引き継いでアップデートしているとのこと。 個人的にはこれまで LLM や LangChain など追えていなかったので勉強になったし、自分でコードを写経して動かしてみるのがとても面白かった。 AI エージェントまわりの技術を実感したい人におすすめ。 ちなみにサンプルコードを動かすためには OpenAI をはじめとする様々なサービスに登録する必要があり、料金が発生するものも含まれている。 このポストについて 書籍「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」を読んで、面白かったので内容をまとめる。 各章ごとに内容を挙げていってもいいのだが、ここではそうはせず、本書に登場する言葉や概念をまとめていくことにする。 ちなみにこの記事で紹介するプロンプト等は書籍そのままではなく、少し変更している。 実際のプロンプトを知りたい場合は書籍を読んでください。 プロンプトエンジニアリング これは知っている人も多いだろう。 プロンプトとは主に自然言語で記述される、LLM に与える命令のこと。 LLM をアプリケーションに組み込む場合はプロンプトはテンプレート化し、入力データをそれに差し込む形となる。 LLM は必ずしも人間の出す命令に対して望ましい回答を出力してくれるわけではない。 望ましい回答を出力してもらえるよう、プロンプトを工夫するテクニックがプロンプトエンジニアリングである。 本書ではプロンプトエンジニアリングの具体的な手法として次の3つが紹介されていた。 ちなみにここで例として示している出力は実際に OpenAI の LLM gpt-4o-mini で出力したものである。 Zero-shot プロンプティング 簡単なタスクであれば、特に追加の情報がなくとも (=Zero-shot) 望ましい回答を得ることができる。 system: 次の日本酒のレビューをポジティブ・ネガティブ・中立のどれかに分類してください。 user: ふくよかで芳醇な香り 出力 ポジティブ Few-shot プロンプティング より複雑なタスクになった場合、デモンストレーションを与えることで回答の精度を高めることができる。 いくつかのデモンストレーションを示すため、Zero-shot ではなく Few-shot である。 ...

3月 2, 2025 · soonraah