チュートリアル: Higressを使用したDeepSeek Web Searchの実装

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/tutorial-implementing-deepseek-web-search-using-higress_602057?spm=a2c65.11461433.0.0.4ee35355GhyKtd)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# HigressでDeepSeekウェブ検索をサポートするためのステップバイステップガイド

以前、HigressがDeepSeekウェブ検索をサポートする記事を[こちら](https://www.alibabacloud.com/blog/the-era-of-self-built-deepseek-has-arrived-how-to-efficiently-implement-web-search_602028)に公開しましたが、ステップバイステップのガイドが不足していました。この記事ではそれを補足し、この機能に興味のある方々を支援することを目指します。Higressのインストールプロセスについては繰り返しません。代わりに、すでにインストールされているHigressのインスタンスから始めましょう。

## ステップ 0: DeepSeek APIキーの設定
Higressのインストール中にDeepSeek APIキーを入力しなかった場合、ここで設定できます。
![](https://yqintl.alicdn.com/191e9a325c6e47a92abdaa092024ee5170e13ae0.png)

## ステップ 1: 検索エンジンAPIドメインの設定
まず、Higressコンソールで、さまざまな検索エンジンのドメイン名をサービスオリジンを作成して設定します。
- **Google検索APIドメイン**: customsearch.googleapis.com  
![](https://yqintl.alicdn.com/a2b944d10c0997e3d0034c4a092bc18ca67870ca.png)
- **Bing検索APIドメイン**: api.bing.microsoft.com  
![](https://yqintl.alicdn.com/0e93c771c9f7323b554122ab907dfcaa6d4dde20.png)
- **Quark検索APIドメイン**: cloud-iqs.aliyuncs.com  
![](https://yqintl.alicdn.com/5fc07640d3d6cb5d019e33a333cedb6f378d751a.png)
- **Arxiv APIドメイン**: export.arxiv.org  
![](https://yqintl.alicdn.com/c5a94d4b49b4db84035fda14d56d847c830fdafe.png)

設定後、対応するAPIキーの申請も必要です。Quark検索のAPIキー申請について（GoogleとBingはオンライン情報が豊富なので詳細は省略、Arxivは無料でAPIキーは不要）:
まず、Alibaba Cloudアカウントが必要です。次に、Alibaba CloudコンソールでIQSを検索し、IQSコンソールに入り、APIキーを生成します。
![](https://yqintl.alicdn.com/31624f04af8a36a1fbbac857d252b1e1221c4ba1.png)

詳細はIQSのドキュメントをご覧ください: [https://help.aliyun.com/document_detail/2870227.html](https://help.aliyun.com/document_detail/2870227.html)

## ステップ 2: AI検索プラグインの設定
Higressバージョン2.1.0より前の場合、AI検索プラグインをカスタムプラグイン経由でインポートする必要があります。
![](https://yqintl.alicdn.com/c8a5d2a44632fb87bc930798d1ccd12d4c54d74b.png)

プラグインのOCIイメージアドレスに注意してください: `higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/ai-search:latest`  
最新版のAI検索プラグインを使用する場合、安定版を希望する場合はタグを`1.0.0`に変更してください。デフォルトの実行ステージを選択し、実行優先度を100より大きい値に設定します（これにより、AI検索プラグインがLLMプロバイダーへの転送直前に実行され、プロンプトを変更します）。プラグイン追加後、以下のように設定します。
![](https://yqintl.alicdn.com/33d6c863f5366407f5a192087b8fd03beca6a2e9.png)

### 設定例:yaml
needReference: true # 結果にウェブページの参照情報を含める場合はtrueに設定
promptTemplate: | # 組み込みテンプレートを使用する場合は設定をスキップ可能
  # 以下の内容はユーザーが送信したクエリに基づく検索結果です:
  {search_results}
  私が提供する検索結果では、各結果は「[webpage X begin]...[webpage X end]」の形式で表示されます。Xは各記事のインデックス番号を表します。適切な箇所で文末に引用を追加してください。回答内の対応部分には引用番号]の形式を使用してください。ある文が複数の文脈から派生している場合、関連するすべての引用番号をリストアップしてください（例: [3][5]）。引用を文末にまとめるのではなく、回答の該当部分にリスト化してください。回答時には次の点に注意してください:
  - 北京時間での今日の日付は: {cur_date}です。
  - 検索結果のすべてのコンテンツがユーザーの質問と密接に関連しているわけではありません。質問に基づいて検索結果を判断し、フィルタリングしてください。
  - リスト型の質問（例: すべてのフライト情報をリスト化）の場合、回答は10項目以内に収め、完全な情報を確認するには検索元をチェックするようユーザーに通知してください。最も包括的で関連性の高い情報を優先的に提供し、検索結果にない情報を自発的に提供しないでください（必要な場合を除く）。
  - 創作型の質問（例: 論文作成）の場合、本文中に関連する参考文献を引用し（例: [3][5]）、記事の最後にのみ記載するのではなく、ユーザーのトピック要件を解釈・要約し、適切なフォーマットを選択し、検索結果を最大限活用して重要な情報を抽出し、ユーザーの要求を満たす回答を生成してください。深く考え、創造的で専門的なアプローチを取り入れてください。可能な限り長さを延ばし、各ポイントにおけるユーザーの意図を仮定し、できるだけ多くの角度から情報を提供し、内容を充実させ、詳細な議論を行ってください。
  - 回答が長い場合、要約を段落に分けて構造化してください。ポイントごとに回答する場合、5項目以内に収め、関連する内容を統合してください。
  - 客観的なQ&Aの場合、回答が非常に短い場合は、内容を充実させるために1つか2つの関連する文を追加してください。
  - ユーザーの要件や回答内容に応じて、適切で美的なフォーマットを選択し、高い可読性を確保してください。
  - 回答は複数の関連するウェブページを統合して応答し、単一のウェブページを繰り返し引用しないようにしてください。
  - ユーザーが別の言語を指定しない限り、質問と同じ言語で回答してください。
# ユーザーのメッセージは:
  {question}
searchFrom: # 以下は設定済みの検索エンジンオプションのリストです。必要なものだけ設定してください
- type: quark
  apiKey: your-quark-api-key # 👈 ここにあなたのキーを入力
  serviceName: quark.dns
  servicePort: 443
- type: google
  apiKey: your-google-api-key # 👈 ここにあなたのキーを入力
  cx: your-search-engine-id # 👈 ここにあなたのエンジンIDを入力
  serviceName: google.dns
  servicePort: 443
- type: bing
  apiKey: bing-key # 👈 ここにあなたのキーを入力
  serviceName: bing.dns
  servicePort: 44