Smolagents × Web Scraper × DeepSeek V3 で作る不動産AIリサーチエージェント完全ガイド
最近はChatGPTなどの大型言語モデル(LLM)の発展によって、AIを使った自動化や情報収集がますます身近になってきました。単に文章を生成するだけでなく、Webサイトをクロールして必要な情報を取得し、それを解析してレポートを作成する――そんな“AIアシスタント”を個人でも構築できる時代が到来しています。
本記事では、Smolagents、Web Scraper、DeepSeek V3という3つの技術・ツールを組み合わせて、実際に不動産情報を収集し分析する「AIリサーチエージェント」を構築する手順を解説します。特にDeepSeek V3はOllama経由で利用できるモデルであり、簡易的にローカル実行が可能な点が魅力です。
Smolagents: 軽量なエージェント構築フレームワーク
Web Scraper(ここではBeautifulSoupやRequestsを中心に): ウェブ情報をクロールして必要な情報を取得
DeepSeek V3(ollama経由): 大型言語モデルを用いて自然言語処理やテキスト解析を実施
本記事の後半では、完成したコードと具体的な設定手順、そして動かし方の詳細な解説を有料部分として公開しています。はじめのうちは無料パートで概要を知っていただき、ここまで読んで「これなら試してみたい!」と思われた方に、有料部分でさらに踏み込んだ情報とソースコード、活用事例、トラブルシューティングなどを提供する構成となっています。
この記事で得られるもの
不動産関連サイト(例:realtor.com)などからデータを自動で収集・整理する仕組み
大型言語モデルを活用して、スクレイピングしたデータをどのように処理するのかのアイデア
Pythonを使った軽量なAIエージェントアプリケーションの構築手順
GradioによるGUIインターフェースの付与方法
なぜ不動産データ収集にAIエージェントが有効なのか?
大量のリスティングやエージェント情報を効率化
不動産業界は物件情報やエージェント情報が非常に多く、都度手動で確認するのは大変です。たとえば、ある州や都市名を指定してエージェントリストを取得したい場合、ウェブ上の複数ページを渡り歩き、数十人から数百人の連絡先情報を抽出する必要があります。AIエージェントを使うことで、指定した回数分のページを自動巡回し、名前・電話番号・オフィス名などのデータを一括で取得できます。
取得したデータの自動整理と保存
スクレイピングによって手に入る情報はバラバラの形式であることが多いため、ExcelやCSVに手動でまとめるのは時間がかかります。この記事で紹介するツール群を使えば、取得した情報をCSV形式に自動変換し、手軽に保存できるようになります。バッチ処理やスケジュール管理と組み合わせれば、定期的に最新の不動産情報を取り込み、継続的なデータベースを構築することも可能です。
AIによる自然言語処理(DeepSeek V3活用例)
さらに、大型言語モデルであるDeepSeek V3を活用することで、ただ情報を取ってくるだけでなく、その後の簡単な分析やテキストの要約、問い合わせ応答などを自動化する道も開けます。「いつ・どこのエリアの物件が人気が高いのか?」といった簡易分析や、テキスト要約レポートを生成する機能を追加することも難しくありません。
無料パートの概要
ここからは、どのような環境・ツールが必要となるのかをざっくり紹介するとともに、プロジェクトの全体像を解説します。実際のコード全文や細かい手順は有料部分で解説しますので、まずは概要を掴んでいただければと思います。
1. プロジェクト全体の流れ
Python環境のセットアップ: Python3.8以上が必要です。特にWindows OSを想定した手順を紹介します。
Smolagents & litellm の導入: AIエージェントを実行するための軽量ライブラリ。
Ollama + DeepSeek V3のインストール: OllamaはmacOSやLinux版もありますが、今回はWindowsでのインストールフローを説明します。DeepSeek V3モデルをpullしてローカルに配置する形です。
スクレイピングの実装: requests と BeautifulSoup、そしてpandasを使用して、情報取得→CSV保存の流れを実装します。
エージェントとGradio UI: コマンドラインだけでなく、Gradioを用いたWeb GUIも提供し、より使いやすい仕上がりにします。
2. どんなファイルが必要?
requirements.txt: Pythonで必要なライブラリをまとめたファイル。
main.py: メインの実行スクリプト。スクレイピング用の関数・CSV保存用の関数、そしてエージェント部分とGradio UIの起動などが含まれます。
(任意)Dockerfile: もしDockerコンテナとして配布するなら作っておくと便利ですが、本記事では取り上げません。
3. スクレイピング対象の例
この記事の例では、アメリカの不動産ポータルサイトrealtor.comをサンプルにしています。州の略称(NYなど)と都市名を指定し、エージェント情報を数ページ分まとめて取得します。海外サイトですが、やっていることは日本の不動産情報サイトでもほぼ同様に応用できます。ただし国内の不動産ポータルはログインやクローリング制限が厳しい場合があるため、事前に利用規約を必ず確認しましょう。
4. ライブラリ・フレームワークの特徴
Smolagents: 最小限の記述でエージェントを実装できるPythonライブラリです。大げさなオーケストレーションなしに、特定のタスク(スクレイピング、保存など)をまとめるのに向いています。
litellm: LLMモデルとやり取りするための薄いラッパライブラリ。モデルの切り替えやAPI呼び出しなどを簡単に扱うことができます。
requests: PythonでHTTPリクエストを行う際の定番ライブラリ。
BeautifulSoup4 (bs4): HTMLをパースし、要素を取り出すライブラリ。古い書籍などでは「BeautifulSoup」と表記されることもあります。
pandas: データフレーム形式で扱える強力なツール。CSV入出力が簡単。
Gradio: Webブラウザ上で簡易的なインターフェースを作るためのライブラリ。コードとユーザー操作を紐付けて可視化・操作可能。
Ollama: もともとmacOS向けに開発されたLLM実行ツール。Windows版もリリースされており、コマンドollama pull モデル名でモデルをダウンロードする仕組み。
DeepSeek V3: さまざまなタスクに対応できる優れた言語モデル。AIエージェントを設計する際に汎用的な応答や推論が可能。
5. 動作イメージ(無料パートでの概要)
スクレイピング関数は以下のような流れを持ちます(ダイジェスト版):
指定したURL(州や都市別)へHTTP GETリクエスト
HTMLの解析: BeautifulSoupを使ってdiv.agent-list-cardなどのクラス名を手掛かりに、エージェント名・電話番号・オフィス名を取得
取得した情報をPythonのリストに追加し、一定数のページを反復
結果をまとめたdictを返却
取得した情報を保存する関数では、pandasのDataFrameに整形し、指定されたファイル名(デフォルトは都市名)でCSVに保存します。
無料部分だけでは、この概念的な流れをイメージしやすいように解説しています。 詳細なコードは、後述する有料部分にてフルソースコードを載せていますので、ぜひ最後まで読み進めてください!
ここまで読んで興味が湧いた方へ
AIエージェントがどのように実際のPythonコードで構成されているのか
Ollamaのインストール手順やDeepSeek V3モデルの具体的なセットアップ
Gradioで起動するとどんなUIが立ち上がって、どう操作できるのか
必要なコマンドやコードブロックは何をコピペすればいいのか
実行時にトラブルが発生したときはどう対処すればいいのか
といった疑問をお持ちではないでしょうか。次の章では、それらの情報を有料部分として、より詳しく解説していきます。実際のコード全文とともに、インストールのスクリーンショット例や、よくあるエラーと対策なども掲載しますので、ぜひご覧ください。
ここでは、実際のソースコード全文、具体的なセットアップ手順、そして運用時の注意点や応用例について詳しく解説します。
1. 全体のフォルダ構成とコード全文
まず、今回のプロジェクトは以下のようなフォルダ構成を想定しています。
smolagents-demo/
├── venv/ # Python仮想環境(venv)
├── requirements.txt
├── main.py
└── ...
1.1 requirements.txt
このファイルには、今回必要となるPythonライブラリを列挙しています。以下の内容をそのまま記述し、pip install -r requirements.txt でインストールしてください。
smolagents
litellm
requests
beautifulsoup4
pandas
gradio
ワンポイント解説
もしライブラリのバージョン固定が必要であれば、requests==2.28.1 のように指定します。ただし本記事執筆時点では特定のバージョン固定は行っていません。
1.2 main.py (フルソースコード)
ここでは、無料部分で概要を見せていた処理の完全版コードを掲載します。適宜注釈を入れながら、どのような役割を果たしているのかを説明していきます。
ここから先は
¥ 500
この記事を最後まで読んでくださり、ありがとうございます。少しでも役に立ったり、楽しんでいただけたなら、とても嬉しいです。 もしよろしければ、サポートを通じてご支援いただけると、新たなコンテンツの制作や専門家への取材、さらに深いリサーチ活動に充てることができます。