Employee Blog
社員ブログ

Kiro で行うちょっと進んだ AI 駆動開発(4)

はじめに

今回は、AI(LLM)特有のハルシネーション対策について説明します。

ハルシネーション(LLMの嘘)対策

Kiro で行うちょっと進んだ AI 駆動開発(1) で ハルシネーションについて説明しましたが、そこでは対策について述べてきませんでした。

LLM(Large Language Model)は「学習した内容しか覚えていない」「学習していないことは嘘をつく」という性質があります。更に、学習元の意向や、モデルを作成から実用化されるまでには何ヶ月もかかることから、「学習した内容しか覚えていない」も、

  • 正しく学習して知っている
  • 学習したけどモデルが作成された当時以前の知識しかない(知識が古い)
  • 学習したけど学習のための元情報が誤っていて誤った情報を学習している

に分かれます。

これが結構曲者で、あたかもすべて知っているかのように回答します。こちらが質問するときはこちらが知らないことを質問するので、もっともらしく回答されるとコロっと騙されてしまうわけです。正直なところ、これをすべて前提に織り込んでおいて使いこなすというのはかなり大変です。

そこで、その対策として MCP サーバーを使って、調べようとする内容について正しい一次ソースから情報を取得してその内容を回答してもらうことにすることでハルシネーションを「低減する」ことができます。その上でさらにその回答のもととなったドキュメントのリンクも回答の一部としてもらい、そのリンク先のドキュメントを自分でも確認し、「裏取り」を行うことで信頼できる情報なのかどうか「自分で確認」することでハルシネーションの対策とします。

つまり結論としては、

  • LLMには正しい一次ソースを調べてもらって回答してもらう
  • LLMがソースとして調べた情報を自分でも確認して間違った回答ではないことを裏付け確認する

となります。

これを Kiro で楽に行う方法を説明します。

Kiro のハルシネーション対策

「LLMには正しい一次ソースを調べてもらって回答してもらう」については、 Kiro にMCP サーバーを設定し、質問に際してMCPサーバーを使用して回答すること。「LLMがソースとして調べた情報を自分でも確認して間違った回答ではないことを裏付け確認する」については、参考とした URL を表示してもらうことで対策とします。

Kiro で MCP サーバーを設定する

MCPサーバー動作環境の準備

まず、MCPサーバーを設定しますが、その前にMCPサーバーが動作する環境設定が必要です。

ここでは詳細を解説しませんが、 Python と uv をインストールする必要があります。

Pythonのバージョンは、開発プロジェクトの環境などに合わせたほうが良いのですが、個人的には最新版よりも1~3つくらい下のバージョンを選択したほうがトラブルに遭遇しにくいように思えます。本記事執筆時点では 3.14 がダウンロードできる最新版だったのですが、Bugfix フェーズの終了している 3.12 辺りがよいかもしれません。MCP Server がリリースされたのが 2024年11月末、Kiro のベータ版リリースが 2025年07月 なのでそれ以前に end-of-life になったバージョンは避けたほうが無難かと思います。

参考: Pythonのリリースとライフサイクル 2026/01/03時点

Python For Beginners
https://www.python.org/about/gettingstarted/

Installing uv

https://docs.astral.sh/uv/getting-started/installation/

Kiro にMCPサーバーを設定する

続いて Kiro にMCPサーバーの設定を行います。

Kiroアイコン -> MCP SERVERS -> 編集アイコン とクリックしていくと、 mcp.json ファイルが開かれます。ここにはデフォルトで fetch MCP Server が設定されていますが、 “disabled”: true なので動作しない状態です。

kiro MCP Server 設定

設定するMCPサーバーによって設定内容は異なりますが、今回は AWS のMCP Server を設定します。AWSのMCPサーバーは用途に応じて色々提供されていますが、まずは AWS Core MCP Server (全部入り、迷ったらこれ) または AWS Documentation MCP Server(AWS 公式ドキュメントから情報を取得、軽量) から使ってみるのが良いでしょう。

今回は以下の内容で設定します。(Windows 11環境)

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": [
        "mcp-server-fetch"
      ],
      "env": {},
      "disabled": false,
      "autoApprove": [],
      "disabledTools": [
        "fetch"
      ]
    },
    "awslabs.aws-documentation-mcp-server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "awslabs.aws-documentation-mcp-server@latest",
        "awslabs.aws-documentation-mcp-server.exe"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_DOCUMENTATION_PARTITION": "aws"
      },
      "autoApprove": [
        "read_documentation",
        "search_documentation"
      ]
    },
    "awslabs.core-mcp-server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "awslabs.core-mcp-server@1.0.7",
        "awslabs.core-mcp-server.exe"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_PROFILE": "your-aws-profile",
        "AWS_REGION": "us-east-1",
        "aws-foundation": "true",
        "solutions-architect": "true"
      },
      "autoApprove": [
        "prompt_understanding"
      ]
    }
  }
}

ファイルを保存してうまくMCPサーバが動作すると、Connected 表示になります。

MCP Server 設定

これらのMCP Serverの設定の詳細は以下で確認してください。

Welcome to AWS MCP Servers

https://awslabs.github.io/mcp/

MCP サーバーの設定は完了しましたが、これだけでは単純にMCPサーバーと接続できるようになっただけなので、次に AWS 関連の質問の際には AWS MCP Server を使ってもらって回答するように設定します。

Kiro の Steering 設定

Steering 機能は、設定を記述したMarkdownファイルを通じて、新しいチャットごとに毎回どうするのかをいちいち説明するのではなく、いつもしてほしい振る舞いを記述しておく設定です。毎回チャットのたびに「AWSのドキュメントMCPサーバーを使ってを調べて、参考URLを含めて回答してください」とするのは面倒なので、AWSに関する質問については、毎度Steering設定どおり動いてね、と、設定することができます。

%USERPROFILE%\.kiro\steering フォルダに、aws-response-guide.md として 以下の内容をペーストします。 (%USERPROFILE% は通常は C:\Users\<ユーザー名>) 

---
inclusion: always
---

# AWS質問対応ガイド

AWS関連の質問を受けた際は、以下の手順で対応してください:

## 1. プロンプト理解

まず、AWS Core MCPサーバーのプロンプト理解ツールを使用して質問を分析します。

## 2. ドキュメント検索

AWS Documentation MCPサーバーを使用して関連するドキュメントを検索します:

- 具体的な技術用語を使用
- サービス名を含める(例:「S3 bucket versioning」)
- 必要に応じてフィルターを使用

## 3. 詳細情報の取得

検索結果から最も関連性の高いドキュメントを選択し、詳細な内容を読み取ります。

## 4. 回答の構成

以下の要素を含めて回答を作成します:

- 質問に対する直接的な回答
- 具体的な手順やコード例(必要に応じて)
- 参考リンク(AWS公式ドキュメント)
- 関連するベストプラクティス

## 5. 参考リンクの形式

参考リンクは以下の形式で提供します:

- [説明文](URL) - 簡潔な説明
- 複数のリンクがある場合は、重要度順に並べる

## 例

質問:「AWS Lambdaの始め方を教えてください」

回答:
AWS Lambdaを始めるには、以下の手順を実行します:

1. AWSコンソールでLambda関数を作成
2. 関数コードを記述(PythonまたはNode.jsがお勧め)
3. テストイベントで動作確認
4. CloudWatch Logsでログを確認

参考リンク:

- [Create your first Lambda function](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) - Lambda関数の作成手順
- [What is AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) - Lambdaの概要と用途
kiro agent steering 設定

Kiro の Steering についての詳細は以下で確認してください。

Kiro – Steering What is steering?
https://kiro.dev/docs/steering/

これで設定完了です。

設定の動作確認

試しに Kiro で AWS に関する質問を投げてみます。質問内容は、「S3 のベストプラクティスを教えて下さい。」とします。

すると、

  • 設定した aws-response-guide.md の内容をみて、どういう振る舞いをするか決定
  • Core MCP Server のプロンプトを理解する機能でユーザーの質問を確認
  • Documentation MCP Sever の ドキュメント検索機能でAWSドキュメントを検索
  • 検索結果の内容を読み込み
  • 内容から回答をまとめて回答
  • 最後に参考リンクを表示

という手順をふんで、回答をしてくれるようになりました。

S3ベストプラクティス質問の例-前半
S3ベストプラクティス質問の例-後半

提示された参考URLの内容を表示し、回答に誤りがないか、いい加減な情報が無いか確認します。

こうすることで、然るべき一次情報源から情報を取得し回答させ、それを確認する仕組みができました。

おわりに

MCPサーバーの支援のお陰で LLM と仕事をするのは非常に楽になりました。裏付け確認ももちろん行っているのですが、正答率が段違いです。

今回は Kiro での例の解説でしたが、似たような機能は他の LLM を使った開発環境には似た機能があると思います。皆様もこれを機にぜひプロジェクトリーダーを説得して導入してみてはいかがでしょうか。