Perplexity APIでAgentにWeb検索機能を持たせてみる
何の記事?なんで書いたの?
Perplexity APIを使ってAmazon Bedrock AgentsにWeb検索の能力を付加してみよう、という遊びです。なんでそんなことやりたくなったのかは次の通り。
その1 Perplexity APIがGAした
2025年1月なのですごく最近というわけでもないですが、待望のAPI化なので試してみたかったです。
その2 AWSのAIサービスと統合したかった
Amazon Bedrockで選択可能なモデルの中にSonar(PerplexityのLLM)があれば良いのですが、残念ながらそれは未だ無いです。では、どうすればBedrockの中でSonarが使えるかなぁ、と考えた結果が「Bedrock AgentsのツールとしてAPI経由で使ってしまえばいいんじゃね?」ということです。
その3 API実行のパラメータ生成をAIに任せてみたかった
Perplexity APIはいくつかのパラメータを設定することができます。検索実行時のプロンプトや情報取得元になるドメインのリストなどの生成をAIにやってもらうとユーザーが楽できるんじゃないか、というあたりも期待してAgentのツールとしてPerplexity APIを使ってみました。
アーキテクチャ
今回の検証のために構築した実行環境は以下のようなアーキテクチャになっています。シンプルです。
検証のインプットとアウトプット
今回は以下のような要望を投げて検証してみました。Agentが自律的に検索条件を調整してPerplexity APIを上手に使いながら提案を構築してくれることを期待した内容にしたつもりです。
今週末に温泉とおいしい料理が楽しめる旅行に出かけたいので旅行プランを提示してください。
以下の条件を満たしてほしいです。
- 公共交通機関でアクセス可能
- 所要時間は東京から3時間以内
- 大人2名で予算は10万円以内
Bedrock Agentからの出力は以下。記事の本文とAIの出力結果が混ざって分かりづらくなるのを避けたかったので、アコーディオンの中にアウトプットを閉じ込めています。
アウトプット
今週末(4月19日~20日)の温泉旅行プランをご提案いたします。
【おすすめプラン:箱根湯本温泉 1泊2日】
■アクセス
新宿駅から小田急ロマンスカーで箱根湯本駅まで約85分
※特急料金込みで片道約2,500円/人
■宿泊先候補:箱根パークス吉野
1泊2食付き 2名1室利用で1人13,000円~
特徴:
- 箱根湯本駅から徒歩圏内
- アルカリ性単純温泉で肌にやさしい
- 4月の旬の食材を使った会席料理
■おすすめポイント
- 交通の利便性が高く、駅から徒歩で移動可能
- 温泉街で足湯巡りや散策を楽しめる
- 春の旬を活かした食事が魅力
- 山菜や筍などの春野菜
- 名物の湯葉料理
- 箱根山麓豚料理
■概算費用(2名分)
- 交通費:約10,000円(往復)
- 宿泊費:約26,000円~
- 観光・食事代:約14,000円
合計:約50,000円
予算に余裕があるため、以下のオプションもおすすめです:
- 箱根登山鉄道で強羅まで足を延ばし、違う温泉も楽しむ
- 箱根湯本の老舗「田むら銀かつ亭」で名物の豆腐かつ煮を味わう
- 小田原かまぼこの買い物
中を開いて見てもらえばわかりますが、なかなかに頑張った回答が返ってきています。以降、Agentの中で何が行われていたのか確認していきましょう。
主な設定値と実装
ここでは注目したい部分だけ記載します。Bedrock Agentsの作り方の全体像や詳細はガイドを見て確認してください。
ModelとInstructions
今回の検証では、Foundation modelには Anthropic Claude 3.5 Sonnet v2 を採用しましたが、特に理由は無いです。特に理由もないので「新しいのを選んでおこう」という判断です。
Instructionsは少々の試行錯誤を経て以下のようになっています。
あなたはインターネット検索を駆使して最新情報や幅広い情報を取得し、ユーザーの要求に従って提案を作成するエージェントです。
ユーザーへの提案は以下のステップで実施します。
1. ユーザーの要求に対応するために必要な情報をリストします。
2. 最新または特定時点や期間に関する情報が必要な場合、必ず現在日時をツールを利用して取得します。
3. リストされた情報のそれぞれについてインターネットから情報を得るためのプロンプトを生成します。プロンプトには情報取得の背景と取得した情報の用途を含めます。
4. 生成したプロンプトの情報を取得するのに適したWebサイトのドメインを10個を上限に選定し、プロンプトとドメインのリストを指定して情報を取得します。ドメインの選定にツールを利用する場合はドメインリストの指定は不要です。
5. 獲得したすべての情報を参考にユーザーの要求に従った提案としてパッケージします。
6. 最後に回答を日本語に翻訳して最終的な提案を完成させます。
提案の体裁は以下のルールに従います。
1. ユーザーからの体裁に関する指示には最優先で従います。
2. 提案は他のプログラムへのインプットになる可能性があるためテキストのみで作成します。
3. マークダウンやマークアップのように文字の修飾やメタ情報の埋め込みのみを目的としたデータは含めません。
4. 人間が読みやすいように改行や空白を挿入することは許容されます。
主な工夫している点を挙げておきます。各項目がどの程度効果があるのか詳細に検証していませんが、全体としてAgentからのアウトプットの質は向上したと感じています。
- 冒頭にAgent自身の役割を示すのは定石なので、とりあえずいれてます。
- 現在日時は必ずツールから取得するように指示しています。適当な日付を推定して検索されても困るので。
- 必要情報のリストを作成することでプロンプトが具体化されるようにしています。また、詳細な背景や用途を含めるように指示しています。これはPerplexity APIのPrompt Guidのベストプラクティスに従った結果です。
- ドメインのリストの要素数の上限はPerplexity APIの仕様です。
Action Group
Agentが利用するツールであるAction Groupは一つだけ作っています。このAction Groupには2つの関数を定義しています。
now
現在日時を提供する関数です。パラメータは何もないシンプルな関数です。
search
Web検索した結果に基づいて回答を返す関数です。裏でPerplexitiy APIを利用していて、今回の検証の肝になる関数です。以下のパラメータが定義されていて、Perplexity APIを呼び出す際のPayloadに反映されます。
名前 | 説明 | 型 | 必須 |
---|---|---|---|
prompt | 情報取得に利用するプロンプトです。取得する情報の用途、情報が必要な背景などコンテキストを含めた専門家に質問するときのような文章で指定します。 | string | true |
domains | 情報を取得先として推奨されるWebサイトのドメインのリストを指定します。各要素はホスト名のみで構成され正しいDNS名である必要があります。プロトコル、ポート番号、パス、ファイル名、拡張子などは含めません。リストはカンマ区切りの文字列です。要素数は10個が上限です。 | string | false |
Perplexity APIの呼び出し
上記2つの関数の実装はtypescriptのLambda関数で作成しました。nowの方は現在日時を返すだけなので特に説明しません。searchの方はPerplexity APIを以下のような実装で呼び出しています。Payloadにリクエストしたい内容をセットして、レスポンスとして結果を受け取る、ごくごく普通のWeb APIです。
参考までにPerplexity APIの呼び出し部分のコードだけ掲載しておきます。
const invoke_api = (apiKey: string | undefined, prompt: string | undefined, domains: string[] | undefined): Promise<any | undefined> => {
if (apiKey == undefined || prompt == undefined) {
return Promise.resolve(undefined);
}
const payload = {
model: 'sonar-pro',
messages: [{
role: 'system',
content: `
You are an AI assistant that provides up-to-date information based on internet searches.
1. Create answers that include the information the user is looking for.
2. If multiple answers are possible, include all possible answers in the answer.
3. If multiple answers are included, separate them with a blank line.
4. Answers should not be formatted with Markdown.
`
}, {
role: 'user',
content: prompt,
}],
...(domains !== undefined && { search_domain_filter: domains }),
};
return fetch(`${perplexityApiEndpoint}`, {
method: 'POST',
headers: {
'accept': 'application/json',
'content-type': 'application/json',
'Authorization': `Bearer ${apiKey}`,
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(json => { console.log(json); return json; })
.then(json => json.choices[0].message.content);
};
Action GroupのためのLambda関数の実装ガイドはこちらにあります。
アウトプットまでの流れ
Amazon Bedrock Agentsでは、ユーザーの入力を受け取ってから最終的なアウトプットが出力されるまでにAgentがどんな過程を経てアウトプットを作ったのか確認することができます。この記事では注目したいポイントに絞って、どんなふうにAIが最終的な出力を作っていったのか紹介しようと思います。
トレースに何が出てくるのかはこちらにガイドがあります。
ステップ1
AgentはInstructionsで指定されている通り最初に回答のために必要な情報のリストを作っていますね。素直でいい子です。そのうえで、最初にやるべきことは「現在の日時の確認」であるとAgent自身で判断しています。
必要な情報を整理します:
1. 東京から3時間以内でアクセス可能な温泉地の情報
2. 各温泉地の公共交通機関でのアクセス方法
3. 温泉旅館の料金と空室状況
4. 温泉地の特徴と名物料理
5. 現在の日時を確認して今週末の日程を特定
まず現在の日時を確認します。
自身の判断にしたがって現在の日時の取得を行っていますが、Instructionsで指定されている通りツール now関数 を使って現在の日時を取得していることが確認できます。
"orchestrationTrace": {
"invocationInput": {
"actionGroupInvocationInput": {
"actionGroupName": "web_search",
"executionType": "LAMBDA",
"function": "search",
"parameters": [
{
"name": "domians",
"type": "string",
"value": "jalan.net,rurubu.travel,japan-guide.com,travel.watch.impress.co.jp,eki-net.com"
},
{
"name": "prompt",
"type": "string",
"value": "東京から3時間以内でアクセス可能な人気温泉地について、以下の情報を教えてください:\n1. 温泉地名とその特徴\n2. 東京からの具体的なアクセス方法(電車・バスなど)と所要時間\n3. 温泉地の代表的な旅館と料金相場\n目的:週末の温泉旅行プラン作成のため"
}
]
},
"invocationType": "ACTION_GROUP",
"traceId": "76c3b745-3f19-4358-a54d-f5bc15562115-1"
}
}
"orchestrationTrace": {
"observation": {
"actionGroupInvocationOutput": {
"text": "{\n \"now\": \"2025-04-17T11:21:43.844Z\"\n}"
},
"traceId": "76c3b745-3f19-4358-a54d-f5bc15562115-0",
"type": "ACTION_GROUP"
}
}
ステップ2
現在の日時が取得できたので次に何をやるべきか自分で再び考えたようです。どうやら必要な情報のリストを上から処理していくようですね。
今週末は4月19日(土)、20日(日)となります。
まず、東京から3時間以内の温泉地とアクセス情報を検索します。
情報の検索はもちろん search関数 を使っています。リストの中から一つずつ処理していくのかと思いきや、リストの1-3を一括で情報取得することにしたようです。情報の取得元になるドメインのリストもAgent自身で作成して設定していますし、プロンプトには背景や用途もきちんと入れています。
"invocationInput": {
"actionGroupInvocationInput": {
"actionGroupName": "web_search",
"executionType": "LAMBDA",
"function": "search",
"parameters": [
{
"name": "domians",
"type": "string",
"value": "jalan.net,rurubu.travel,japan-guide.com,travel.watch.impress.co.jp,eki-net.com"
},
{
"name": "prompt",
"type": "string",
"value": "東京から3時間以内でアクセス可能な人気温泉地について、以下の情報を教えてください:\n1. 温泉地名とその特徴\n2. 東京からの具体的なアクセス方法(電車・バスなど)と所要時間\n3. 温泉地の代表的な旅館と料金相場\n目的:週末の温泉旅行プラン作成のため"
}
]
},
"invocationType": "ACTION_GROUP",
"traceId": "76c3b745-3f19-4358-a54d-f5bc15562115-1"
}
}
"orchestrationTrace": {
"observation": {
"actionGroupInvocationOutput": {
"text": "\"【箱根湯本温泉(神奈川県)】\\n特徴:\\n箱根十七湯の中心的存在で1200年以上の歴史を誇る有名温泉地。アルカリ性単純温泉で肌にやさしく、豊富な湧出量とアクセスの良さが魅力。温泉街には伝統ある旅館や日帰り温泉、グルメ、足湯などが揃う[1][2]。\\n\\nアクセス:\\n・電車…新宿駅から小田急ロマンスカーで箱根湯本駅まで約85分。箱根湯本駅から温泉街は徒歩すぐ[1][2]。\\n・車…東名高速厚木IC→小田原厚木道路経由で約1時間30分[2]。\\n\\n代表的な旅館と料金相場:\\n・ホテルおかだ:1泊2食付きで1人あたり15,000~30,000円程度\\n・箱根パークス吉野:1泊2食付きで1人あたり13,000~25,000円程度\\n・吉池旅館:1泊2食付きで1人あたり18,000~40,000円程度[6]。\\n\\n【湯河原温泉(神奈川県)】\\n特徴:\\n万葉集にも詠まれた歴史ある温泉。無色透明の弱アルカリ性ナトリウム泉で、肌にやさしい“美肌の湯”。文人・画家ゆかりの地で、落ち着いた温泉地として人気[1][2][4]。\\n\\nアクセス:\\n・電車…東京駅から特急踊り子で湯河原駅まで約1時間30分。駅からバスやタクシーで各旅館へ[1][2]。\\n・車…東名高速厚木IC→小田原厚木道路経由で約1時間20分[4]。\\n\\n代表的な旅館と料金相場:\\n・アルベルゴ湯楽:1泊2食付きで20,800~35,800円程度[8]。\\n・ふきや旅館:1泊2食付きで20,000~40,000円程度\\n・海石榴(つばき):1泊2食付きで30,000~50,000円程度[6]。\\n\\n【伊東温泉(静岡県)】\\n特徴:\\n首都圏からも近く湯量が豊富な温泉地。海に面した温泉街で、魚介料理と街歩きも楽しめる。泉質は塩化物泉・単純温泉などでバリエーションが豊富[1]。\\n\\nアクセス:\\n・電車…東京駅から新幹線(こだま)で熱海駅まで約55分、熱海駅乗り換えでJR伊東線約25分、伊東駅下車[1]。\\n・車…東名高速厚木IC→小田原厚木道路・熱海経由で約90分[1]。\\n\\n代表的な旅館と料金相場:\\n・青山やまと:1泊2食付きで17,000~35,000円程度\\n・伊東小涌園:1泊2食付きで11,000~25,000円程度\\n・ホテルラヴィエ川良:1泊2食付きで8,000~20,000円程度[6]。\\n\\n【那須温泉(栃木県)】\\n特徴:\\n那須高原の自然と多様な泉質、美肌・薬湯として知られる温泉郷。リゾートホテルや高級旅館、ペンションと宿泊スタイルが豊富[4][10]。\\n\\nアクセス:\\n・電車…東京駅から東北新幹線で那須塩原駅(約70分)、無料送迎バスや路線バスで各旅館(約30分)[10]。\\n・車…東北道那須ICより約35分[10]。\\n\\n代表的な旅館と料金相場:\\n・ホテルエピナール那須:1泊2食付きで9,000~25,000円程度\\n・那須別邸 回:1泊2食付きで20,000~50,000円程度[9]。\\n\\n【塩原温泉(栃木県)】\\n特徴:\\n1200年以上の歴史を持つ温泉郷。複数の泉質(7色の湯)、渓谷美が魅力。湯めぐりや自然散策に最適[4][10]。\\n\\nアクセス:\\n・電車…東京駅から東北新幹線で那須塩原駅(約70分)、JRバス関東塩原温泉行きで約70分[4][10]。\\n・車…東北自動車道西那須野塩原ICより約20~30分[4][10]。\\n\\n代表的な旅館と料金相場:\\n・ホテルニュー塩原:1泊2食付きで8,000~20,000円程度\\n・湯守田中屋:1泊2食付きで14,000~30,000円程度[6]。\\n\\n【鬼怒川温泉(栃木県)】\\n特徴:\\n都心からのアクセス抜群な大型温泉地で渓谷沿いにホテル・旅館が並び、レジャー施設も豊富。泉質はアルカリ性単純温泉[10]。\\n\\nアクセス:\\n・電車…浅草駅から東武特急で約2時間、鬼怒川温泉駅下車徒歩すぐ[10]。\\n・車…東北道宇都宮IC下車、日光宇都宮道路経由で約2時間30分[10]。\\n\\n代表的な旅館と料金相場:\\n・あさやホテル:1泊2食付きで15,000~35,000円程度\\n・鬼怒川温泉ホテル:1泊2食付きで12,000~28,000円程度[6]。\\n\\n【東丹沢七沢温泉郷(神奈川県)】\\n特徴:\\n都心から1時間半ほど。とろとろの強アルカリ性泉質で「美肌の湯」として人気。山あいの静かな風情が特徴。露天風呂と里山グルメが魅力[2][7]。\\n\\nアクセス:\\n・電車…小田急線本厚木駅からバス約25分\\n・車…東名高速厚木ICより車で約25分、新東名伊勢原大山ICより車で12分[2][7]。\\n\\n代表的な旅館と料金相場:\\n・元湯玉川館:1泊2食付きで15,000~30,000円程度\\n・七沢荘:1泊2食付きで10,000~22,000円程度[6]。\\n\\n【磯部温泉(群馬県)】\\n特徴:\\n北陸新幹線利用でアクセスしやすい。泉質は単純温泉、歴史深く温泉マーク発祥の地とされる。碓氷川の清流と鮎料理、温泉せんべいも有名[7]。\\n\\nアクセス:\\n・電車…東京駅から北陸新幹線で安中榛名駅(約60分)、タクシーで15分\\n・車…上信越道松井田妙義ICより車で約15分[7]。\\n\\n代表的な旅館と料金相場:\\n・舌切雀のお宿 磯部ガーデン:1泊2食付きで12,000~25,000円程度\\n・ホテル櫻井:1泊2食付きで14,000~25,000円程度[6]。\\n\\n【参考:他の人気温泉地】\\n・三浦マホロバ温泉(神奈川県):京急三浦海岸駅徒歩5分。海鮮料理や景観が魅力。1泊2食付き10,000~25,000円程度[7]。\\n・菱野温泉(長野県):軽井沢から電車+タクシーで行ける雲上露天が有名な秘湯。1泊2食付き14,000~30,000円程度[3]。\\n\\n温泉地ごとに料金や旅館のグレードは幅広いため、週末や休前日、シーズンによって異なります。旅館公式サイトや予約サイトで最新料金・空室状況をご確認ください。\""
},
"traceId": "76c3b745-3f19-4358-a54d-f5bc15562115-1",
"type": "ACTION_GROUP"
}
}
どうやらWeb検索の結果には、「箱根湯本温泉」「湯河原温泉」「伊東温泉」「塩原温泉」「鬼怒川温泉」などなどがヒットしたようです。ここからどうやって旅行プランを作っていくのでしょうね。
ステップ3
どうやらおいしい食事という条件を満たせる候補地に絞り込みするようです。
次に、おすすめの料理や食事情報を検索します。
再び search関数 で情報収集です。情報の取得元になるドメインは旅情報サイトからグルメサイトに変えていますね。細かいところまで気が利いています。プロンプトにはステップ1で確認した現在日時や、ステップ2で取得した候補となる温泉地が反映されていますね。ただ、多くの候補地の中から先頭の3つのみについて情報を取得することにしたようです。もっと幅広に情報収集して欲しい気もしましたが、そういった期待はユーザーの要求やAgentのInstructionsで明確に指示してあげるべきなんでしょう。
"orchestrationTrace": {
"invocationInput": {
"actionGroupInvocationInput": {
"actionGroupName": "web_search",
"executionType": "LAMBDA",
"function": "search",
"parameters": [
{
"name": "domians",
"type": "string",
"value": "jalan.net,rurubu.travel,gurutabi.gnavi.co.jp,tabelog.com"
},
{
"name": "prompt",
"type": "string",
"value": "箱根、湯河原、伊東温泉の名物料理や季節の食事について教えてください。\n目的:温泉旅行での食事プラン検討のため、4月の旬の食材や名物料理を知りたい"
}
]
},
"invocationType": "ACTION_GROUP",
"traceId": "76c3b745-3f19-4358-a54d-f5bc15562115-2"
}
}
}
"orchestrationTrace": {
"observation": {
"actionGroupInvocationOutput": {
"text": "\"箱根、湯河原、伊東温泉の名物料理や4月におすすめの旬食材・ご当地グルメは以下の通りです。\\n\\n【箱根の名物料理と旬の食材】\\n- 豆腐かつ煮(田むら銀かつ亭):箱根強羅の名物で、豆腐をカツにして卵とじにしたヘルシーな料理[1]。\\n- 湯葉丼:箱根湯本の名物。汲み上げたての湯葉を出汁と卵でとじてご飯にかけた優しい味わい。汲み上げ豆腐や湯葉刺しとのセットも人気[3][4][5]。\\n- 早雲豆腐:昆布だしで温めた豆腐に味噌とろろをかけていただく一品[5]。\\n- 小田原かまぼこ:近隣の名産で朝食やお土産に[2][8]。\\n- 箱根山麓豚のメンチカツや地元野菜を使ったメニューも豊富[3]。\\n- 芦ノ湖のわかさぎ料理、牛鍋[2][9]。\\n- 4月の旬食材:山菜、たけのこ、新じゃが、新玉ねぎ、春キャベツなど山の幸が豊富。懐石料理や旅館の和食では地元で採れた山菜・根菜の天ぷらや炊き込みご飯がよく登場[8]。\\n\\n【湯河原の名物料理と旬の食材】\\n- 金目鯛の煮付けや刺身:相模湾直送の新鮮な魚介を使った料理は定番。特に春は脂がのった金目鯛が美味[6][10]。\\n- アジの干物御膳や海老天丼など、海鮮料理が充実[6]。\\n- 湯河原担々やきそば:ピリ辛のご当地グルメ[6]。\\n- 湯河原の和菓子「きび餅」:土産にも人気[10]。\\n- 春の旬:新わかめ、アサリ、シラス、春野菜(たけのこや菜の花など)を使った料理が旅館や飲食店で味わえる[8]。\\n\\n【伊東温泉の名物料理と旬の食材】\\n- 金目鯛の煮付け・豊満黒潮煮定食:伊豆を代表する名物。脂がのって身も柔らかい春が特におすすめ[7]。\\n- ねごめし:魚のたたき(主にアジやマグロ、タイなど)をネギ・ショウガ・味噌と和えてご飯にのせる漁師めし[7]。\\n- シラスやアジを使った丼・寿司:伊豆近海の新鮮な地魚を使ったメニュー[7]。\\n- イカの丸焼きや伊勢海老を使った洋食・和食コースも充実[7]。\\n- 春の旬:金目鯛やアジ、シラス、春野菜(たけのこ、しいたけ、山菜など)[7]。\\n\\n【総合的なワンポイント】\\n- 箱根は湯葉や豆腐料理、黒毛和牛や地元野菜を使った和食が楽しめ、自然薯や山菜料理も4月にぴったり[3][5][8]。\\n- 湯河原・伊東は温暖な気候を活かした新鮮な魚介が自慢。特に金目鯛やアジ、春野菜を使った料理が多いです[6][7]。\\n- 旅館やホテルの夕食では季節ごとに献立が変わるため、4月は山菜や新じゃが・たけのこなど春らしい食材が提供される場合が多いです[8]。\\n\\nこの時期は春の旬食材を使った和食懐石や、地元の海鮮丼・煮魚がおすすめです。食事プランの参考にしてください。\""
},
"traceId": "76c3b745-3f19-4358-a54d-f5bc15562115-2",
"type": "ACTION_GROUP"
}
}
温泉地の旅館やグルメの情報が揃ったようなので、そろそろ旅行プランが作れるんじゃないかと思います。
ステップ4
期待通り旅行プランの作成に取り掛かってくれるようです。しかも予算をちゃんと考慮すると言っています。ただ、具体的な数字が書かれていないので予算がいくらなのかちゃんと把握しているのか不安にはなります、、、。
収集した情報を基に、予算内で実現可能な温泉旅行プランを提案します。
こうして出来上がったのが記事の先頭の方に書いた旅行プランです。箱根湯本温泉への旅行プランを作ってくれていましたが、やはりここでも候補の中の先頭を選んだようですね。このAgentは明確な指示が無い場合は先頭の候補を選ぶことにしたようです。
ちなみに、作った旅行プランの見積もりが5万円になったことを受けて、「予算に余裕がある」と追加プランを提案しているので、冒頭で心配した「予算が10万円なの覚えているかな?」については考慮できていたようですね。
まとめ
Bedrock AgentのツールにWeb検索を実装するための手段としてPerplexity APIが利用できることが確認できました。また、Agentが自律的に判断してWeb検索を適切な条件で複数回実行してくれていましたが、これは期待以上の成果でした。このあたりの挙動もカスタマイズ可能なので、そのうち挑戦してみようと思います。
Discussion