Contents
はじめに
本稿では、Salesforce Flow と OpenAI が提供する ChatGPT API(gpt‑3.5‑turbo・gpt‑4)を組み合わせてノーコードで自然言語処理機能を実装する手順を解説します。認証の安全な管理方法、外部サービスとしての登録手順、エラーハンドリングや運用上のベストプラクティスまで網羅しているため、Apex を書かずにすぐに試せます。
1. ChatGPT API の基本情報と料金
ChatGPT API は HTTPS / REST で呼び出すことができ、認証は Bearer トークン(API キー)だけです。2026 年 4 月時点の公式価格は下表をご参照ください(※最新情報は OpenAI Pricing をご確認ください)。
| 項目 | gpt‑3.5‑turbo | gpt‑4 |
|---|---|---|
| パラメータ数 | 約 60 億 | 約 175 億 |
| 主な利用シーン | 日常的な問い合わせ・簡易レポート生成 | 長文要約、複雑な要件定義、創造的タスク |
| 料金(2026‑04 時点) | $0.002 / 1,000 トークン(入力+出力合計) | 入力 $0.03 / 1k トークン、 出力 $0.06 / 1k トークン |
| 推奨レートリミット | 60 RPM (1 分あたり約 60 リクエスト)※Rate‑limit docs | 同上(モデルごとに個別カウント) |
注:レートリミットはプランや利用状況により変動するため、実装時はエラーコード 429 をハンドリングし、必要に応じてバックオフ処理を入れることが推奨されます。
2. OpenAI API キーの取得手順
-
OpenAI アカウント作成
https://platform.openai.com/ にアクセスし、メール認証でアカウントを作成します。 -
API ダッシュボードへ移動
左メニューの「API Keys」をクリックします。 -
シークレットキー生成
「Create new secret key」ボタンを押し、表示されたキーを安全な場所にコピーします(以後は再表示できません)。
取得したキーは Salesforce の Named Credential に格納して管理します。
3. Named Credential の正しい設定方法
Salesforce では「Bearer トークン」方式を 認証プロトコルなし (No Authentication) とし、ヘッダーをカスタムで付与するのが最もシンプルです。OAuth 2.0 の Password Flow を使用すると認証フローと実態が合わず混乱の原因になるため、本手順ではそれを避けます。
3‑1. Named Credential 作成手順
| 手順 | 内容 |
|---|---|
| 設定 → セキュリティ → 認証情報 に移動し「新規認証情報」クリック | |
| ラベル/名前 | OpenAI_ChatGPT(任意) |
| URL | https://api.openai.com/(末尾にスラッシュは不要) |
| 認証プロトコル | No Authentication を選択 |
| カスタムヘッダー | 「Authorization」=Bearer {!$Credential.OpenAI_ChatGPT} と設定。ここで $Credential は作成した Named Credential の API キーです。 |
| 保存 → 「テスト接続」でステータスが Success なら完了 |
ポイント:API キーは 保護されたカスタムメタデータ として格納され、プロファイルや権限セットで閲覧権限を限定できます。
4. Flow Builder での HTTP Callout 設定
4‑1. 外部サービスとして OpenAPI 定義をインポートする理由
External Service 機能により、OpenAPI スキーマから自動的に Apex‑ラッパーが生成され、Flow 上で「アクション」だけで呼び出せます。スキーマは バージョン固定 の URL を使用し、将来の変更リスクを低減します。
|
1 2 |
https://raw.githubusercontent.com/openai/openapi/v1.0.0/openapi.yaml |
上記は公式リポジトリのタグ v1.0.0(2024‑12 リリース)です。
4‑2. 手順概要
| 手順 | 内容 |
|---|---|
| 外部サービス定義を登録 | 設定 → 外部サービス → 「新規外部サービス」→ 名前 OpenAI_ChatGPT_Service、先述の OpenAPI URL、認証情報に作成した Named Credential を選択。 |
| Flow 作成 | Flow Builder で「レコードトリガー」「スクリーンフロー」のいずれかを新規作成。 |
| 外部サービスアクション追加 | 要素パネル → アクション → 外部サービス → OpenAI_ChatGPT_Service → POST /v1/chat/completions(ChatCompletions) を選択。 |
| リクエストパラメータ設定 | JSON ボディは「テキストテンプレート」リソースで組み立て、変数 {!ModelChoice}・{!UserPrompt} を埋め込む。 |
| レスポンス処理 | ResponseBody 変数に格納された JSON を JSON Parse 関数で解析し、choices[0].message.content を取得して次の要素へ渡す。 |
4‑3. テキストテンプレート例(JSON ボディ)
|
1 2 3 4 5 6 7 8 9 10 |
{ "model": "{!ModelChoice}", "messages": [ { "role": "system", "content": "You are a helpful Salesforce assistant." }, { "role": "user", "content": "{!UserPrompt}" } ], "temperature": 0.7, "max_tokens": 500 } |
テンプレートは「リソース」→「テキストテンプレート」で作成し、Flow の変数を {!VariableName} 形式で埋め込みます。
5. 実務で使えるユースケース(3 例)
5‑1. 自然言語でリード一覧取得
概要:営業担当が「未接触の新規リードを表示して」と入力するだけで、条件に合致したレコードをテーブル形式で返すフローです。
| フロー構成 | 説明 |
|---|---|
| スクリーンフロー → ユーザー入力 | UserPrompt 変数に自然言語を取得 |
| ChatCompletions アクション | プロンプト例: 「未接触の新規リードを取得する SOQL を生成して」 |
| JSON 解析 | GeneratedSOQL(文字列)を抽出 |
| レコード検索 | 抽出した SOQL を レコード検索 要素で実行し、結果を LeadList に格納 |
| スクリーン表示 | テーブルコンポーネントで LeadList を表示 |
主な変数
| 変数名 | 用途 |
|---|---|
UserPrompt |
ユーザーが入力した自然言語 |
GeneratedSOQL |
ChatGPT が生成した SOQL 文 |
LeadList |
検索結果のレコードコレクション |
効果:手動で条件を組み立てる工数が削減され、営業スピードが向上します。
5‑2. 顧客問い合わせメールの自動下書き作成
| フロー構成 | 説明 |
|---|---|
| レコードトリガー(ケース作成) | ケース本文を取得し CaseDescription に格納 |
| ChatCompletions アクション | プロンプト例: 「以下の問い合わせに対する返信メールを書いて」+ CaseDescription |
| JSON 解析 | EmailDraft(テキスト)を抽出 |
| フィールド更新 | ケースレコードの Email_Draft__c に保存 |
主な変数
| 変数名 | 用途 |
|---|---|
CaseDescription |
顧客からの質問内容 |
EmailDraft |
ChatGPT が生成したメール本文 |
効果:サポート担当者が返信文を一から作成する時間が大幅に短縮され、回答品質も一定水準に保たれます。
5‑3. 商談完了後の次アクションプラン生成
| フロー構成 | 説明 |
|---|---|
| レコードトリガー(商談ステージ → Closed Won) | 商談情報を JSON 化し OpportunityInfo に格納 |
| ChatCompletions アクション | プロンプト例: 「この商談の次に取るべきアクションを 3 件提案してください」 |
| JSON 解析 | PlanList(箇条書きテキスト)を取得 |
| カスタムオブジェクト作成 | Action_Plan__c にレコードを 1 件ずつ保存 |
主な変数
| 変数名 | 用途 |
|---|---|
OpportunityInfo |
商談の主要項目(金額、業界等)を JSON 化した文字列 |
PlanList |
ChatGPT が生成したアクションプランテキスト |
効果:商談完了後に何をすべきかが自動で提示されるため、フォローアップ漏れが防止できます。
6. エラーハンドリングと運用上のベストプラクティス
6‑1. 基本的なエラー分岐
| シナリオ | 推奨フローロジック |
|---|---|
| HTTP 4xx / 5xx | 「判定」要素で Response.StatusCode を評価し、ステータスが 200 以外の場合は ChatGPT_Error__c カスタムオブジェクトに記録し、担当者へメール通知。 |
| タイムアウト / Rate‑limit (429) | 「遅延」要素(Pause)で 2 秒待機し、最大 3 回までリトライ。リトライ上限を超えたら同様にエラーレコードを作成。 |
| JSON パース失敗 | ParseException を捕捉する「例外ハンドラ」要素で代替メッセージ(例: 「ChatGPT の応答が取得できませんでした」)を表示または保存。 |
6‑2. レートリミット対策
- デフォルトは 60 RPM(1 分あたり約 60 リクエスト)。
- Flow 内で連続呼び出しが必要な場合は、「遅延」要素を使い 2 秒以上のインターバルを設けます。
- 大量呼び出しが想定されるバッチ処理では、プラットフォームイベントや Queueable Apex に切り替えることも検討してください。
6‑3. データ保護と最小権限
| 項目 | 実装ポイント |
|---|---|
| API キー | Named Credential の「参照のみ」権限に限定し、View All Data を付与しない。 |
| 顧客情報 | Flow で使用する項目は Read‑Only に設定し、更新が不要な場合は書き込み権限を外す。 |
| 監査ログ | 設定 → セキュリティ → 監査トレイルで「外部サービス呼び出し」ログを有効化し、実行ユーザー・日時を記録。 |
6‑4. その他のセキュリティ対策
- HTTPS の徹底:Named Credential の URL は必ず
https://を使用。 - CSP(コンテンツセキュリティポリシー):外部サービス登録時にホワイトリスト化されたドメインのみ許可。
- IP 制限は不可:OpenAI 側で固定 IP が提供されていないため、Salesforce の Outbound Network Access 設定で不要な外部接続をブロックするだけに留める。
7. 導入効果の測定指標(KPI)と評価手順
7‑1. 推奨 KPI
| 指標 | 測定方法 | 目標値例 |
|---|---|---|
| 処理時間短縮率 | Flow 実行前後の平均所要秒数を比較 | ≥ 30 % 短縮 |
| 担当者工数削減(人時) | 月間手作業件数 × 平均対応時間 → 自動化後との差分 | 月 20 人時以上 |
| エラーレート | API 呼び出し失敗回数 ÷ 総呼び出し回数 | < 1 % |
| ユーザー満足度(CSAT) | 社内アンケートで 5 段階評価 | 平均 4.2 以上 |
7‑2. 効果測定の実務フロー
- ベースライン取得
-
対象業務(例:リード検索、メール下書き作成)の平均処理時間と工数をレポートで集計。
-
フロー本番導入
-
本稿の手順で構築した Flow をサンドボックスから本番へデプロイし、同一期間のメトリクスを取得。
-
比較分析
-
「フローレコード」レポートで
実行時間とエラー件数を可視化し、KPI と照らし合わせて効果を定量化。 -
改善サイクル
- エラーレートが目標を超える場合はリトライロジックや入力バリデーションを強化。
- 工数削減効果が低い場合は、対象業務のフロー設計を再検討し、より多くのステップを自動化する方向で拡張。
7‑3. 次のアクション
- テンプレート配布:本稿で作成したサンプル Flow(リード取得・メール下書き・アクションプラン)は、GitHub の
v1.0.0タグ付きリポジトリに公開予定です。 - 社内ハンズオン開催:Flow Builder と OpenAI 連携の実践ワークショップを開催し、ノーコード自動化への理解を深めます。
- 拡張アイデア:生成したテキストを Einstein Search にインデックスすれば、社内検索でも活用できるようになります。
まとめ
- 認証は Named Credential のカスタムヘッダーで安全に管理し、OAuth 2.0 のパスワードフローは使用しません。
- External Service と OpenAPI スキーマ(v1.0.0)を利用すれば Apex 不要で ChatGPT API を呼び出せます。
- 3つの実務ユースケース(リード取得・メール下書き・商談次アクション)を通じて、すぐに業務効率化が可能です。
- エラーハンドリング、レートリミット対策、最小権限設定といったベストプラクティスを守ることで、運用上のリスクは最小化できます。
- KPI による効果測定で数値的根拠を示し、さらなる自動化投資へつなげられます。
本稿の手順に沿って設定すれば、数時間で Salesforce Flow と ChatGPT の連携が完成します。ぜひ実装して、業務効率と顧客体験の向上を実感してください。