Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go × 軽量ワークフロー言語で実装する LLM ワークフロー
Search
Yota Hamada
February 17, 2025
2
290
Go × 軽量ワークフロー言語で実装する LLM ワークフロー
Yota Hamada
February 17, 2025
Tweet
Share
More Decks by Yota Hamada
See All by Yota Hamada
普通のエンジニアがOSSで世界と繋がるまで.pdf
yohamta
0
120
IP電話自動応答システムの実現
yohamta
1
73
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
What's in a price? How to price your products and services
michaelherold
246
12k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
The Invisible Side of Design
smashingmag
301
51k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Agile that works and the tools we love
rasmusluckow
329
21k
Thoughts on Productivity
jonyablonski
69
4.8k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Practical Orchestrator
shlominoach
190
11k
A better future with KSS
kneath
239
17k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Transcript
Go × 軽量ワークフロー言語で実 装する LLM ワークフロー Sales Retriever - 営業向けSaaSプロダクト
2025/2/17
自己紹介 • 濱田 (@yohamta) • AIとGo言語 が好きなバックエンドエンジニア 略歴 • スタートアップや大企業におけるSW開発全般に携わる
本日のトピック 複雑な 生成AI ワークフローを軽量ワークフロー言語を用いて実装する話
None
どんな営業でもトップ営業と同じように 企業のリサーチを行えるようにするプロダクト
メイン機能 • テーブル形式の UI / UX • 調べたいことを列として設定できる • テーブルに行として企業を追加する
→ 自動でリサーチ
生成 AI を用いたリサーチのワークフロー 調査項目を入力として、以下5つのステップで自動リサーチを行い、 その結果をテーブルのセルに保存する 1. 検索ワードの拡張 2. Web 検索処理
3. Web ページのコンテンツ取得 4. コンテンツの判定、重要箇所の抜粋 5. 要約 ※説明のため簡略化しています
実装における課題 1. リサーチ間の依存関係を設定したい 2. 効率的に並列処理を行いたい
具体例 • 多段階でのリサーチを行いたい(以下、例)
具体例 • 多段階でのリサーチを行いたい(以下、例)
具体例 • 多段階でのリサーチを行いたい(以下、例)
実装における課題(2/2) • 大量の Web 検索, LLM の実行処理を行うため並列化が必須 大まかなワークフローのタスク数: 総タスク数 =
リサーチ対象セル数 × 各セルに対する検索ワード拡張数 × Web 検索結果数 例: 10 列 × 4 キーワード × 検索結果 10 件 =400 タスク → どう実装するか?
ワークフロー言語とは • ワークフロー言語は一連のタスクの流れを記述するプログラミ ング言語の一種 • 今回のようなリサーチ処理のタスクの流れをワークフロー言語 を用いて記述できる
生成 AI プロダクトにワークフロー言語を用いる恩恵 • 再実行 • 進捗、エラー箇所の監視 • 分散・並行処理 •
柔軟性 ◦ 動的にワークフローの組み換えができる • 拡張性 ◦ 新しいタスク種別を追加しても, 基盤のコードを そのまま利用できる
具体例 タスクの依存関係をワークフロー言語で定義する例(YAML) タスク間の依存関係 ワークフロー言語表現
Goで実装する恩恵 • シングルバイナリ • 並行処理(goroutine + channel) • 静的型付け •
速度 • 可読性 • 標準ライブラリ • 後方互換性 コード品質と生産性を両立しやすい言語
ワークフロー層の実装 • ワークフロービルダー、実行レイヤを内部に包含 アプリケーション内部のモジュール構造
バックエンド全体で Go を採用 Workflow Executor Backend API Backend DB Workflow
Job LLM API (Open AI etc) Company Data source Client
β版と製品版の比較 • β 版は Python で実装 • 製品版は Go で実装し、ワークフロー機構を内蔵
• 1回のリサーチ時間は 2~3 分 → 40秒程度になり、 ざっくり 70% ほど高速化
まとめ • LLM に関する一連のタスクをワークフロー言語で記述することで様々な恩恵 が得られる • Go 言語を用いてワークフローを実装することでアーキテクチャをシンプルに できる
宣伝(1/2) • Sales Retriever 社の開発初期メンバー募集中
宣伝(2/2) • Dagu という OSS のワークフローエンジンを開発しています 🚀 dagu-org/dagu 🚀
宣伝(2/2) • Dagu のユースケース ◦ 衛星観測データの取り込みパイプライン ◦ IoT のエッジデバイス上でのデータ処理 ◦
メディアファイルの変換パイプライン ◦ 従業員の入退社に関するワークフロー自動化
以上 ありがとうございました