2024年 Qiita投稿記事まとめ

# 投稿記事のまとめ

2024年にQiitaへ投稿した記事をまとめました｡記事ごとのViews数も紹介するため､スクリーンショットを添付しました｡
Viewsは2025/01/04時点の数字です｡

Qiita提供の2024年サマリーも併せて紹介します｡

https://qiita.com/revsystem/yearly-summary/2024


## 2024年の記事まとめ

OpenAIのFunction CallingとBacklog APIを組み合わせたチャットボットを実装しました｡この頃はAWS Chaliceを使ってデプロイしていました｡
[OpenAIのFunction callingとTypetalk､Backlog APIを使って、自然言語で課題を作成,更新する](https://qiita.com/revsystem/items/2dfb4c767d3b14c611d8)

![OpenAIのFunction callingとTypetalk､Backlog APIを使って、自然言語で課題を作成,更新する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/4946cb80-5b15-f049-3409-07e3cddaee8c.png)

---

Knowledge BasesをとAgentsを使ったRAGの構築と､Slackチャットボットを実装しました｡

[Bedrockを使って、S3に置いた独自データに応答してくれるチャットボットを作ってみた。](https://qiita.com/revsystem/items/55a4c2ee25ca10964102)
![Bedrockを使って、S3に置いた独自データに応答してくれるチャットボットを作ってみた。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/52359b2a-cb10-3b1b-f907-368707a3377c.png)

---

Agents for Amazon BedrockとBacklog APIを使ってBacklogの課題やWikiを検索するエージェントを実装しました｡
[Agents for Amazon Bedrockを使ってBacklogの課題とWikiを検索する](https://qiita.com/revsystem/items/93e9c744c63c5667a810)

![Agents for Amazon Bedrockを使ってBacklogの課題とWikiを検索する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/20d8342f-6c20-d0a9-bcc8-1a850cd2fb61.png)

---

Sonnetが生成した回答をストリーミング形式で出力する実装を試しました｡
[Amazon Bedrock+ Anthropic Claude 3 Sonnetでストリーミングテキストを生成する](https://qiita.com/revsystem/items/bb7a303f5be93f8d0f18)

![Amazon Bedrock+ Anthropic Claude 3 Sonnetでストリーミングテキストを生成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/c45134fc-1335-4896-76fb-57899ff7083c.png)

---

ストリーミング形式で出力する実装をチャットボットに応用しました｡
[Amazon Bedrock+Anthropic Claude 3 SonnetでSlackチャットボットを作成する](https://qiita.com/revsystem/items/dc5809f05ef2732f996e)

![Amazon Bedrock+Anthropic Claude 3 SonnetでSlackチャットボットを作成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/3c165d01-5a48-ff2e-239e-5ab3caf1ef89.png)

![2025-01-04_21h09_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/befa6c60-a8ec-4406-5785-76dec42338e4.png)

---

実装したチャットボットに会話履歴を保持する実装を追加し､会話ができるチャットボットを実装しました｡
[Amazon Bedrock+Anthropic Claude 3 Sonnetで会話履歴を保持するSlackチャットボットを作成する](https://qiita.com/revsystem/items/9b664bf511f7eaafe323)

![Amazon Bedrock+Anthropic Claude 3 Sonnetで会話履歴を保持するSlackチャットボットを作成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/0402bf27-c67c-6d8a-3265-adeae1aa15dd.png)

---

IPAが公開するドキュメントを使ってAmazon BedrockでRAGを構築し､質問に答えてくれるチャットボットを実装しました｡"ウェブサイトのセキュリティのことを調べたいけど､誰かに聞くのははばかられる"といった場合に役に立ちそうだと思って作りました｡
[Amazon Bedrock+PineconeでRAGを構築し､IPAの"安全なウェブサイトの作り方"に詳しいSlackチャットボットを作成する](https://qiita.com/revsystem/items/a07b1cc159b2d3483113)

![Amazon Bedrock+PineconeでRAGを構築し､IPAの"安全なウェブサイトの作り方"に詳しいSlackチャットボットを作成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/befa6c60-a8ec-4406-5785-76dec42338e4.png)

---

Amazon BedrockがAWS CloudFormationによるデプロイをサポートしたので､AWS SAM用のtemplate.yamlを書いてみました｡
[AWS SAMでKnowledge Bases for Amazon Bedrockを構築する](https://qiita.com/revsystem/items/213d951d35097cee5005)

![AWS SAMでKnowledge Bases for Amazon Bedrockを構築する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/4ef0e7bc-1770-43de-5b9b-b7c7f3808089.png)

---

Amazon BedrockでAdvanced RAG用に最適化されているCommando R+がサポートされたので､精度向上やハルシネーション軽減の検証を行ってみました｡
[Amazon BedrockでRAGを構築し､Cohere Command R+でストリーミングテキストを生成する](https://qiita.com/revsystem/items/571504731d38278408ba)

![Amazon BedrockでRAGを構築し､Cohere Command R+でストリーミングテキストを生成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/c0fc4042-a3f8-a24f-027b-d2e280da47de.png)

---

Cohere Command R+でチャットボットを実装し､併せて回答文に参照番号と参照文を出力する実装をしました｡
[Amazon BedrockでRAGを構築し､Cohere Command R+でSlackチャットボットを作成する](https://qiita.com/revsystem/items/64aecab061ae278003c6)

![Amazon BedrockでRAGを構築し､Cohere Command R+でSlackチャットボットを作成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/f19be425-1ae1-1256-a39a-f0bbecbd6fc8.png)

---

Command R/R+のクエリ拡張をClaude3.5 Sonnetとプロンプトを利用して実装した場合の実装方法や出力の違いを検証してみました｡
[Amazon BedrockでCommand R/R+とClaude3.5 Sonnetでの検索クエリ生成を比較する](https://qiita.com/revsystem/items/80f47289a6d0050d2df5)

![Amazon BedrockでCommand R/R+とClaude3.5 Sonnetでの検索クエリ生成を比較する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/e57797b5-15a8-a4ed-638e-bfc331993753.png)

---

AWS blogの検証記事をもとにAdvanced RAG全体の再現実装を行ってみました｡
[Amazon Bedrock で Advanced RAG を実装してみる](https://qiita.com/revsystem/items/36f81083bc54cb48edbb)
![Amazon Bedrock で Advanced RAG を実装してみる](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/82873207-644b-4cd8-5fa0-02932aea3774.png)

---

Amazon Bedrockでサポートされたクエリ拡張を使い､その有無により回答生成にどのような違いがあるかを検証しました｡
[Knowledge Bases for Amazon BedrockでサポートされたAdvanced RAGを試す](https://qiita.com/revsystem/items/10a6666ed9ca4a5923cb)
![Knowledge Bases for Amazon BedrockでサポートされたAdvanced RAGを試す](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/5b330f2f-8091-96b5-4d05-42990e11940f.png)

---

Amazon BedrockのConverse APIとTool useを使ってクエリ拡張を実装し､RAGの精度を検証しました｡
[Amazon Bedrock Converse APIとTool useで実現するAdvanced RAG: クエリ拡張によるBacklogヘルプセンターの検索](https://qiita.com/revsystem/items/b819633c16bdb133a182)
![Amazon Bedrock Converse APIとTool useで実現するAdvanced RAG: クエリ拡張によるBacklogヘルプセンターの検索](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/365ce4dc-2bf4-5aec-c74f-9f9671ad9ba1.png)

---

Tool useで生成する検索用クエリの数を､インストラクションの工夫により動的に変化させることができるか検証しました｡
[Converse APIとTool useを使って動的に検索用クエリを生成する](https://qiita.com/revsystem/items/303487a39eea5924187c)
![Converse APIとTool useを使って動的に検索用クエリを生成する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/38fee16d-4bc3-dbcf-70bb-a0feefd7458e.png)

---

AWS blogにあるSlackボットに少し手を加えてSlackフリープランのWebhookで動作するようにしてみました｡
[AWSのアップデートをSlackに通知する"What’s New Summary Notifier"をSlackフリープランのWebhookで受信する](https://qiita.com/revsystem/items/c6a9cfae9f1047da602e)
![2025-01-04_22h08_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/25055155-e1a6-b9f7-f135-bbe0ecb4ebd9.png)

---

有害なユーザー入力やモデルの出力を防ぐAmazon Bedrock GuardrailsのDenied topicを設定し､日本語と英語で出力に違いがあるか検証しました｡
[Amazon Bedrock GuardrailsでDenied topicを試す](https://qiita.com/revsystem/items/fb0bdc117c29de3fe42e)

![Amazon Bedrock GuardrailsでDenied topicを試す](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/d4bca5de-ca48-1bb0-1a8a-fd380fb92580.png)

---

LLMの出力内容に機密情報が含まれる場合､Amazon Bedrok Guradrailsの機密情報フィルターでそれらの出力をブロックしたりマスクできるか､日本語と英語でそれぞれ検証しました｡
[Amazon Bedrok GuradrailsでSensitive information filters(機密情報フィルター)を試す](https://qiita.com/revsystem/items/b12caae7ac162d29a581)
![2025-01-04_22h28_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/519657b0-20cc-801e-5405-9686c855a771.png)

---

Amazon Bedrock GuardrailsをConverse APIやRetrieveAndGenerate APIとともに使用し､出力内容を検証しました｡
[Amazon Bedrock Guardrailsをknowledgebaseやtool use、クエリ拡張で試す。](https://qiita.com/revsystem/items/cbfa54cbcdd0f83a0ac2)
![Amazon Bedrock Guardrailsをknowledgebaseやtool use、クエリ拡張で試す。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/1948d446-a76a-35be-d6cf-a899d2e173a9.png)

---

AWS blogの記事をもとに複雑な質問を複数の簡単な質問に分解する「クエリ分解」の再現実装を行いました｡
[Amazon Bedrock Converse APIでTool useのJSONモードを使って"クエリ拡張"と"クエリ分解"を試す](https://qiita.com/revsystem/items/f4c540f3891058a58d7e)
![2025-01-04_22h44_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/bc4bbc2f-bf82-6cb9-d57d-52c5cb602a03.png)