sentientは「3行でブラウザ操作エージェントを書ける」とうたうPython製のOSSです。pip install sentient の1コマンドで入り、sentient.invoke("play shape of you on youtube") のように指示文を渡すだけでブラウザが動きます。ただし2026年8月現在、このライブラリは最終リリースから22か月以上更新が止まったままです。本記事では実際にインストールして確認した結果をもとに、導入手順とinvokeの正しい書き方、そして「いま新規案件で採用してよいか」の判断材料をまとめました。
まとめ
sentientの最新版は0.1.10で、PyPIへの公開は2024年10月3日、GitHubリポジトリ(sentient-engineering/sentient)の最終コミットも同日です。READMEには今も[beta]と書かれており、機能追加もバグ修正も止まっています。動かすこと自体は可能で、リモートデバッグポート9222で起動したChromeとOPENAI_API_KEYがあれば、asyncio.run(sentient.invoke(...)) の形で指示文からブラウザ操作を走らせられます。
問題は依存関係です。宣言が2024年時点で固定されているため、pip install sentient は111個のパッケージを入れると同時にopenaiパッケージを1.109.1へ巻き戻します。既存のPythonプロジェクトへ同居させると壊れる可能性が高く、検証するなら専用の仮想環境を切るのが前提です。新規に業務自動化を組むなら、更新の続いているBrowser UseやPlaywright MCPを先に検討してください。以下、確認した数値と実行結果を順に示します。
sentientの正体と同名プロジェクトの見分け方
「sentient」で検索すると別物が複数ヒットします。本記事が扱うsentientは、GitHubのsentient-engineeringが公開したPythonパッケージで、PyPI上のパッケージ名もsentient、ライセンスはMIT License(Copyright (c) 2024 Sentient Engineering)です。作者はnischalj10、対応Pythonは>=3.9,<4.0と宣言されています。
紛らわしいのが、AI関連で名前の近い次の3つです。混同したまま情報を集めると、まったく別の製品のドキュメントを読むことになります。
| 名称 | 実体 | 本記事との関係 |
|---|---|---|
| sentient(PyPI) | Python製ブラウザ操作エージェント | 本記事の対象 |
| Sentient(existence-master) | 個人向けAIアシスタント(688★・2026年も更新) | 別プロジェクト |
| Sentient OS | 端末内でLLMを動かすOS・アプリ層の総称 | 無関係 |
| Sentient AGI | 分散型AIを掲げる別組織のプロジェクト | 無関係 |
「sentient ui」「sentient software」といった語でこのページに来た場合も、目的の対象は上記の別プロジェクトである可能性が高いと考えてください。パッケージの出所を確かめる一番速い方法は、PyPIのJSON APIを直接叩くことです。info.author と info.version、公開日時が一度に取れます。
curl -s https://pypi.org/pypi/sentient/json | python3 -c "
import json,sys
d=json.load(sys.stdin)
print(d['info']['version'], d['info']['author'])
print(d['releases'][d['info']['version']][0]['upload_time'])
"
# 0.1.10 nischalj10
# 2024-10-03T13:32:58
2026年8月時点の開発状況|最終リリースから22か月の停止
PyPIとGitHubで確認した最終更新日
採用可否の判断材料として最初に見るべきは、公開日ではなく「最後に動いた日」です。2026年8月9日に確認した数値は次のとおりでした。
| 確認項目 | 値 | 取得元 |
|---|---|---|
| 最新バージョン | 0.1.10 | PyPI JSON API |
| 最終リリース日 | 2024-10-03 | PyPI JSON API |
| 最終コミット | 2024-10-03「fix:together」 | GitHub Commits API |
| リポジトリ最終push | 2024-10-10 | GitHub Repos API |
| スター数 | 569 | GitHub Repos API |
| 未解決Issue | 13(別に未マージPR 1) | GitHub 検索API |
| アーカイブ状態 | false(未アーカイブ) | GitHub Repos API |
紛らわしいのは、リポジトリがアーカイブされていない点です。GitHubの画面上は「生きている」ように見えますが、コミットもリリースも22か月止まり、未解決Issueが13件残ったままになっています。なおREST APIのopen_issues_countが返す14はPull Requestを含んだ数なので、Issueだけを数えるなら検索APIでis:issue+is:openを指定して分離してください。
判断を決定づけるのは、同じsentient-engineeringが公開しているagent-q(508スター、最終push 2024-09-26)やjobber(721スター、同2024-09-09)も同時期に止まっている事実です。リポジトリ単位ではなく組織ごと活動が停止しており、復帰を前提にした採用計画は立てられません。
依存パッケージの固定が招く実害
更新停止が実務に効いてくるのは、依存関係の宣言が2024年で凍結されている点です。sentientはopenai<2.0.0、anthropic<0.35.0、instructor==1.4.2、pdfplumber==0.11.2のように上限固定・完全固定を多用しています。Python 3.12+pip 26.2.1の空の仮想環境へ入れたところ、111パッケージが導入され、主要な依存は次のバージョンに解決されました。
| パッケージ | sentientが入れる版 | PyPI最新版(2026-08-09) |
|---|---|---|
| openai | 1.109.1 | 2.53.0 |
| instructor | 1.4.2 | 1.15.4 |
| tiktoken | 0.7.0 | 0.13.0 |
| pdfplumber | 0.11.2 | 0.11.10 |
| google-generativeai | 0.8.6 | 0.8.6(サポート終了) |
openai 2系を使っている既存プロジェクトにsentientを追加すると、openaiが1系へ巻き戻ります。SDKのメジャーバージョンが変わると呼び出し方も変わるため、同居させた既存コードは高い確率で動かなくなるでしょう。検証は必ず専用のvenvで行ってください。
importした時点では次の警告が出ます。sentientが依存するinstructor経由でgoogle.generativeaiが読み込まれるためで、このパッケージはGoogleが提供を終了しgoogle.genaiへの移行を案内しているものです。sentient側のプロバイダー実装ではGoogleを選べない(後述)にもかかわらず、依存だけが残っています。
FutureWarning:
All support for the `google.generativeai` package has ended. It will no longer be receiving
updates or bug fixes. Please switch to the `google.genai` package as soon as possible.
See README for more details:
https://github.com/google-gemini/deprecated-generative-ai-python/blob/main/README.md
もう一つの副作用として、importするとsite-packages配下にsentient/log_filesとsentient/tempが自動生成されます。これはsentient/config/config.pyがモジュール読み込み時に例外処理なしでos.makedirsを呼ぶためで、パッケージを読み取り専用で配置するコンテナのように書き込み権限が無い環境では、importの時点で例外が伝播します。
導入手順|pip installとChromeのリモートデバッグ起動
インストールと前提環境
インストール自体は1行です。Pythonは3.9以上4.0未満が条件で、実測ではPython 3.12でも依存解決は通りました。
python3 -m venv venv-sentient
source venv-sentient/bin/activate
pip install sentient
LLMの呼び出しにはAPIキーが必要です。既定はOpenAIなので、OPENAI_API_KEYを環境変数か.envで渡します。
export OPENAI_API_KEY="sk-..."
OS別のリモートデバッグ起動コマンド
sentientは新しいブラウザを立ち上げるのではなく、すでに起動しているChromeにポート9222経由で接続します。スクリプトを走らせる前に、別ターミナルでChromeをリモートデバッグモードで起動しておいてください。READMEが案内している起動コマンドは次のとおりです。
# macOS
sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
# Linux
google-chrome --remote-debugging-port=9222
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
macOSの例だけsudoが付いていますが、管理者権限で起動するとプロファイル配下の所有者がrootに変わり以後の通常起動が壊れることがあるため、常用プロファイルとは別の--user-data-dirを指定して切り分けてください。起動できたかどうかはhttp://localhost:9222/json/versionにアクセスし、JSONが返るかで確認します。返らない場合は、同じプロファイルのChromeが既に起動していてデバッグポートを開かない新プロセスになっている可能性を先に疑いましょう。
ログインが必要なサイトを操作する場合は、このデバッグ起動したブラウザ側で先にログインを済ませます。セッションをそのまま使えるのは、新規コンテキストを立ち上げる方式にはない利点です。Playwrightの仕組みと比べると、sentientは「人が使っているブラウザに相乗りする」設計だと理解できます。
invokeの実シグネチャと非同期実行
5つのパラメータと既定値
インストール済みのパッケージからinspect.signatureで取り出したうえで、インスタンス経由の呼び出し形に直した引数は次のとおりです。ドキュメントではなく実体を確認しておくと、引数名の取り違えを防げます。
invoke(
goal: str,
provider: str = 'openai',
model: str = 'gpt-4o-2024-08-06',
task_instructions: str = None,
custom_base_url: str = None
)
goalが達成したいことを書く必須引数、task_instructionsが「先にyoutube.comへ直接行く」といった手順の制約を自然言語で足す任意引数です。既定モデルはgpt-4o-2024-08-06が埋め込まれたままなので、新しいモデルを使いたい場合はmodelを明示的に指定します。custom_base_urlはOpenAI互換エンドポイントを自前で立てているときに使う引数です。
asyncio.runを外すと何も起きない理由
実行時に最も引っかかりやすいのがここです。invokeはコルーチン関数として定義されているため、そのまま呼んでもコルーチンオブジェクトが返るだけでブラウザは1ミリも動きません。例外は送出されず、RuntimeWarning: coroutine 'Sentient.invoke' was never awaitedが出るだけなので、警告を抑制していると原因に気づけないでしょう。
from sentient import sentient
import asyncio
# 誤り: コルーチンが返るだけで実行されない
sentient.invoke("play shape of you on youtube")
# 正しい: イベントループで実行する
result = asyncio.run(sentient.invoke("play shape of you on youtube"))
print(result)
Jupyter Notebookのように既にイベントループが動いている環境ではasyncio.runが例外を投げるため、nest_asyncio.apply()を先に呼ぶ必要があります。task_instructionsを併用する場合は次の形です。
from sentient import sentient
import asyncio
custom_instructions = """
1. Googleで検索せず、youtube.com へ直接遷移すること
"""
result = asyncio.run(sentient.invoke(
goal="play shape of you on youtube",
task_instructions=custom_instructions,
provider="openai",
model="gpt-4o-2024-08-06"))
操作の途中経過は2か所に分かれて出ます。標準出力へはorchestratorがAction - CLICKやAction results:といった行を1手ごとに書き出し、どのセレクタを操作したかを含む詳細ログはlogger側がファイルハンドラだけを持つ設計のためsentient/log_files/sentient.logに落ちます。ターミナルに詳細が出ないときはログファイルを見てください。要素の指定にはsentientが注入するmmid属性([mmid='114']のような形)が使われます。アクセシビリティツリーを読んで要素へ番号を振る方式なので、ラベルの無いアイコンだけのボタンは取りこぼしやすい、という失敗傾向もここから説明がつきます。
対応プロバイダー6種の実測とgoogle指定がValueErrorになる理由
インストール済みパッケージのPROVIDER_MAPを直接読み出すと、指定できるproviderは6つでした。
from sentient.utils.providers import PROVIDER_MAP
print(list(PROVIDER_MAP.keys()))
# ['openai', 'together', 'ollama', 'groq', 'anthropic', 'openrouter']
これに加え、provider="custom"とcustom_base_urlを同時に渡す経路があります(base_urlを省略するとValueErrorになります)。ollamaはhttp://localhost:11434/v1/が既定で埋め込まれており、ローカルモデルを試す用途にはコード変更なしで届きます。openrouterだけは内部でlitellm経由の呼び出しに切り替わる実装で、OPENROUTER_API_KEYを設定したうえでmodel="openrouter/anthropic/claude-3.5-sonnet"のようにプロバイダー名を接頭辞に付けたモデル名を渡します。
選べないのはgoogle(Gemini)です。ソース上でGoogleProviderクラスごとコメントアウトされているため、実行すると次のエラーになります。前述のとおりgoogle-generativeaiは依存として入るので「入っているのに使えない」という分かりにくい状態です。
ValueError: Unsupported provider: google. Choose one of the supported providers: openai, together, ollama, groq, anthropic, openrouter
sentientを採用すべきでない条件と代替の選び方
ここは立場を明確にします。2026年時点で、業務システムの一部としてsentientを新規採用するのは避けるべきです。判断の分かれ目は次の3点になります。
- 本番の定常運用に組み込む場合:22か月更新が無く未解決Issueが13件残る依存を運用系に入れる合理性がありません。OpenAI SDKの仕様変更に追随する主体も不在です。
- 既存のPythonプロジェクトへ同居させる場合:openaiを1系へ巻き戻すため、他のLLM連携コードが壊れます。
- 読み取り専用のsite-packagesを前提としたコンテナ環境:importの副作用でディレクトリを作るため起動に失敗します。
逆に、隔離したvenvで「指示文だけでブラウザがどこまで動くか」を短時間で体感したい用途には今でも成立します。MITライセンスなので、コードを読んでアクセシビリティツリーからの要素特定ロジックだけを自前実装へ取り込む使い方も可能です。
置き換え先は目的で決まります。Pythonでエージェント型のブラウザ操作を続けたいならBrowser Useが近い立ち位置で開発も継続中、既存のAIコーディング環境やDifyなどのワークフローから呼び出したいならPlaywright MCP、CLIから使いたいならagent-browserという選択肢もあります。いずれも外部サイトへ自動アクセスする以上、認証情報の扱いとプロンプトインジェクションの経路は事前に潰す必要があり、この観点はPlaywright MCPのセキュリティで整理した論点がそのまま当てはまります。
ブラウザ自動操作で踏みやすい利用規約の線引き
sentientのREADMEにあるサンプルはYouTubeで曲を再生するものですが、これをそのまま業務に転用するのは危険です。YouTubeの利用規約(日本語版)の「許可と制限事項」には、次の禁止条項が明記されています。
「自動化された手段(ロボット、ボットネット、スクレーパなど)を使用して本サービスにアクセスすること。ただし、(a)公開されている検索エンジンを YouTube の robots.txt ファイルに従って使用する場合、または(b)YouTube が事前に書面で許可している場合を除きます。」
例外はrobots.txtに従う公開検索エンジンと、YouTubeからの事前の書面許可の2つだけです。個人が学習目的でローカルに動かす分と、業務フローに組み込んで反復アクセスさせる分では、規約上のリスクがまったく違います。他社サービスを自動操作するなら、対象サイトの利用規約とrobots.txtを先に確認し、公式APIがあるなら必ずそちらを使ってください。ブラウザ操作エージェントの適所は、APIが用意されていない社内システムや、認証の都合でAPI化できない画面の定型入力です。渡すブラウザは業務アカウントでログイン済みのことが多いため、意図しないページで権限のある操作を実行してしまう事故への備えも欠かせません。
よくある質問
sentientは2026年現在も使えますか?
隔離した仮想環境であれば動作します。ただし最新版0.1.10のリリースは2024年10月3日、GitHubの最終コミットも同日で、以降22か月以上更新がありません。未解決Issueは13件残り、READMEの表記も[beta]のままです。同じ開発元のagent-qやjobberも2024年9月で更新が止まっているため、組織として開発が再開する見通しも立ちません。学習や検証には使えますが、本番運用への新規採用は推奨しません。
sentient osやSentient AGIと同じものですか?
いずれも別物です。本記事のsentientはsentient-engineeringが公開したPythonパッケージ(PyPI名sentient、MITライセンス)で、ブラウザ操作エージェントを書くためのライブラリです。「Sentient OS」は端末内でLLMを動かすOS・アプリ層を指す別系統の呼称、「Sentient AGI」は分散型AIを掲げる別組織のプロジェクトを指します。個人向けAIアシスタントのSentient(existence-master/Sentient)とも開発元が異なります。
pip install sentientでopenaiのバージョンが下がるのはなぜですか?
sentientが依存宣言でopenai<2.0.0と上限を固定しているためです。実測ではopenai 1.109.1が入り、PyPI最新の2.53.0からは巻き戻ります。既存プロジェクトと同居させると他のOpenAI連携コードが動かなくなるので、専用のvenvを切ってください。
invokeを呼んでもブラウザが動かないのはなぜですか?
原因は2つに絞られます。1つはasyncio.runで包まずに呼び、コルーチンが実行されないまま終わっているケース。もう1つはポート9222でリモートデバッグ起動したChromeが無いケースです。http://localhost:9222/json/versionでJSONが返るかを先に確認してください。詳細な動作ログは標準出力ではなくsentient/log_files/sentient.logに書かれます。
Gemini(google)をproviderに指定できますか?
できません。ソース上でGoogleのプロバイダー実装がコメントアウトされているため、provider="google"を渡すとValueErrorになります。選べるのはopenai、together、ollama、groq、anthropic、openrouterの6つと、base_urlを自分で渡すcustomです。google-generativeaiは依存として導入されますが、sentientからは呼び出されず、importのたびにサポート終了の警告だけが出ます。