はじめに
現在、弊社ではチャットボットの開発・運用を行っています。
チャットボットを運用する上で最も避けたいのは、「ユーザーが不満を感じているのに、それに気づけないこと」です。ユーザーがネガティブな反応(怒りや失望など)を示した瞬間を捉えることができれば、プロンプトの改善やUXの見直しに役立ちます。
そこで今回は、Datadog LLM Observability の感情分析機能を活用し、ユーザー入力が「Negative」と判定された瞬間にSlackへアラートを飛ばす仕組みを構築しました。
実現したいこと
- ユーザーがチャットボットにメッセージを送信する。
- アプリケーションコードからDatadogへトレース(ユーザー入力)を送信する。
- Datadog側で入力を自動解析し、感情スコア(Sentiment)を付与する。
- 「Negative」判定が出た場合、即座にSlackの専用チャンネルに通知する。
前提環境
- チャットボットアプリがDatadogへトレースを送信していること。
- Datadog LLM Observability が有効化されていること。
- Datadog Slack Integration が設定済みであること。
実装ステップ
1. アプリケーションコードへの実装(トレース送信)
まず、アプリケーション側でユーザーの入力をDatadogに送信する部分を実装します。
Pythonの ddtrace ライブラリを使用している場合の例です。ここで重要なのは、LLMObs.annotate を使ってユーザーの入力(Input)を明示的に記録することです。
from ddtrace.llmobs import LLMObs
def chat_with_bot(user_input):
# LLM Observabilityのトレースを開始
with LLMObs.llm(model="gpt-4", name="conversation") as span:
# 1. ユーザーの入力を注釈として記録(これが感情分析の対象になります)
LLMObs.annotate(
input_data=user_input
)
# ... ここでLLM呼び出し処理 ...
llm_output = call_llm_api(user_input)
# 2. AIの回答も記録
LLMObs.annotate(
input_data=user_input,
output_data=llm_output,
)
return response
このように input_data として渡されたテキストが、Datadog側での感情分析の対象となります。
2. Datadog側での設定
トレースの送信設定ができたら、
Datadogが送られてきたテキストデータを自動的に評価(Evaluation)するように設定します。
以下の手順で有効化します。
- Datadogメニューの LLM Observability > 対象のサービスを開きます。
- Create Evaluations > Sentiment を選択して設定を行います。
これで、Datadogに送信されたユーザープロンプトに対して、自動的に Positive / Neutral / Negative のラベル付けが行われるようになります。
3. 現状の確認
データが流れ始めたら、Datadog上で正しく判定されているか確認します。

4. Slack通知の準備
通知先のSlackチャンネル(例: #llm-negative-alerts)を用意し、Datadogアプリを招待しておきます。
これを忘れると、後の設定画面でチャンネル候補に出てきません。
5. モニター(アラート)の作成
Datadogの Monitors > New Monitor からアラートを作成します。
A. モニタータイプの選択とスコープ定義
LLM Observability 専用のモニタータイプを使用します。
- Choose a monitor type で Evaluations を選択します。
- Define the monitor scope を以下のように設定します。
- For traces submitted to
[チャットボットのサービス名] - that have been evaluated on Input Sentiment
- compute the count of spans with the value negative
- Query:
@ml_app:[チャットボットのサービス名] @evaluations.input_sentiment:negative
B. アラート条件
1件でも発生したら即座に検知したいので、閾値を「0」に設定します。
- Trigger when the count is:
above 0 - Alert window:
last 5 minutes
※直近5分間に1件でもあれば発火させる設定です。
6. 通知メッセージの作成
Slackで連携されたリンクに飛ぶだけで状況がわかるようにテンプレートを作成しました。
Message Body:
{{#is_alert}}
🚨 チャットボットの入力からネガティブな感情を検知しました。
👇 詳細をDatadogで確認
[Datadog Trace](https://app.datadoghq.com/llm/traces?query=%40ml_app%3A{service-name}%20%40event_type%3Aspan%20%40parent_id%3A%2A%20%40evaluations.input_sentiment%3Anegative)
@slack-llm-alerts
{{/is_alert}}
7. 動作確認
設定完了後、実際にチャットボットに対してネガティブな言葉(テスト用)を投げかけてみます。
例えば、以下のようなプロンプトを入力します。
「全然答えになってないんだけど。もっとちゃんと調べて回答してよ」
すると、数分以内にSlackへ以下のような通知が届きました。

担当者はこのリンクをクリックするだけで、Datadogの対象トレース画面にジャンプできます。
そこでユーザーの入力内容やAIの回答、前後の文脈を確認することで「単なる誤検知なのか」「システムエラーによる不満なのか」「プロンプト改善が必要なのか」を判断でき、改善やUXの見直しに繋がります。
まとめ
Datadog LLM Observabilityを使えば、ログを個別に解析するコードを書かなくても、簡単な設定と少しのコード実装だけで高度な感情分析アラートを実現できました。
チャットボットの開発を進める中で、こうした「運用監視」の視点も取り入れることで、プロダクトの品質を継続的に向上させていきたいと思います。