geminiでbrowser-use

1
pip install browser-use
1
pip install --upgrade pip

の後に

1
2
pip install playwright
playwright install

とりあえずインストール完了したので
Ollamaで動かしたい

1
2
3
4
5
6
7
8
9
10
11
12
13
from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
 
async def main():
    agent = Agent(
        task="東京都のおすすめの焼肉屋を調べてください。",
        llm=ChatOpenAI(model="gpt-4o-mini"),
    )
    result = await agent.run()
    print(result)
 
asyncio.run(main())

のコードを書き換える

【Ollama】ローカル環境でLLMを選んでLangChainで実行する。
を参考に書き換える

LangChainでOllamaを使用する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama.llms import OllamaLLM
 
 
def main():
    # MODEL
    model = OllamaLLM(model="hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF")
 
    # PROMPT
    template = """Question: {question}
    Answer: ステップバイステップで考えてみましょう。"""
    prompt = ChatPromptTemplate.from_template(template)
 
    # CHAIN
    chain = prompt | model
    result = chain.invoke({"question": "美味しいパスタの作り方は?"})
    print(result)
 
if __name__ == "__main__":
    main()

1
2
3
4
5
6
7
8
9
10
11
12
13
from langchain_ollama import ChatOllama
from browser_use import Agent
import asyncio
 
async def main():
    agent = Agent(
        task="東京都のおすすめの焼肉屋を調べてください。",
        llm=ChatOllama(model="elyza:jp8b"),  # Ollama の日本語モデルを指定
    )
    result = await agent.run()
    print(result)
 
asyncio.run(main())

にして保存

しかし実行すると

1
Traceback (most recent call last): File "/Users/snowpool/aw10s/browse/test.py", line 1, in <module> from langchain_ollama import ChatOllama ModuleNotFoundError: No module named 'langchain_ollama'

となるので

1
pip install langchain-ollama

今度は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
INFO     [browser_use] BrowserUse logging setup complete with level info
Traceback (most recent call last):
  File "/Users/snowpool/aw10s/browse/test.py", line 2, in <module>
    from browser_use import Agent
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/browser_use/__init__.py", line 6, in <module>
    from browser_use.agent.service import Agent as Agent
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/browser_use/agent/service.py", line 41, in <module>
    from browser_use.controller.service import Controller
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/browser_use/controller/service.py", line 5, in <module>
    from main_content_extractor import MainContentExtractor
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/main_content_extractor/__init__.py", line 1, in <module>
    from main_content_extractor.main_content_extractor import *
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/main_content_extractor/main_content_extractor.py", line 4, in <module>
    from .trafilatura_extends import TrafilaturaExtends
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/main_content_extractor/trafilatura_extends.py", line 3, in <module>
    import trafilatura
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/trafilatura/__init__.py", line 16, in <module>
    from .core import bare_extraction, extract
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/trafilatura/core.py", line 18, in <module>
    from .external import compare_extraction
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/trafilatura/external.py", line 11, in <module>
    from justext.core import ParagraphMaker, classify_paragraphs, revise_paragraph_classification  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/justext/__init__.py", line 12, in <module>
    from .core import justext
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/justext/core.py", line 21, in <module>
    from lxml.html.clean import Cleaner
  File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/lxml/html/clean.py", line 18, in <module>
    raise ImportError(
ImportError: lxml.html.clean module is now a separate project lxml_html_clean.
Install lxml[html_clean] or lxml_html_clean directly.

となる

1
pip install lxml_html_clean

これで再度実行したけど

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://github.com/browser-use/browser-use for more information.
INFO     [agent] <img draggable="false" class="emoji" alt="🚀" src="https://s.w.org/images/core/emoji/11/svg/1f680.svg"> Starting task: 東京都のおすすめの焼肉屋を調べてください。
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 1
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 1/3 times:
 elyza:jp8b does not support tools
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 1
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 2/3 times:
 elyza:jp8b does not support tools
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 1
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 3/3 times:
 elyza:jp8b does not support tools
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Stopping due to 3 consecutive failures
INFO     [agent] Created GIF at agent_history.gif
AgentHistoryList(all_results=[ActionResult(is_done=False, extracted_content=None, error='elyza:jp8b does not support tools', include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='elyza:jp8b does not support tools', include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='elyza:jp8b does not support tools', include_in_memory=True)], all_model_outputs=[])

となって
ブラウザが立ち上がり検索開始するが中断される

他のモデルを試すため調べたが

Browser-useでollamaを使ってローカルLLMを使用する
によれば
2025/1/12現在、browser-use web-uiでは、LLM Providerにollamaを選択した場合、
Model名には、「qwen2.5:7b」と「llama2:7b」が選択可能

しかし

Googleへアクセスし、”OpenAI”で検索した最初のURLを取得
の英文プロンプト

go to google.com and type ‘OpenAI’ click search and give me the first url
で実行しても
いずれも、OpenAIのgpt-4oを使う場合と比べると、時間はかかりました。
今回の場合、約10分〜20分程度かかりました。
* llama2:7b だと、Step5まで進みましたが、失敗しました。
* qwen2.5:7b だと、Step4まで進みましたが、失敗しました。
*
LLM ConfigurationタブのLLM Providerを「ollama」を選択、Model Nameを「gemma:2b」と入力しました。
動作は1つのStepごとに30秒から1分程度になりましたが、タスクを解くのは失敗しました

とあるため
まだ ollama では使え無さそう

browser-use で Gemini と DeepSeek を使用する
によれば
無料枠のある Gemini を使用したいところですが、現在 Issue に上がっているように Gemini は使用できません。

本家ではありませんが、つい最近 Gemini と DeepSeek を利用できるように改良したリポジトリを見つけたため紹介します。
とあるので
Geminiを使うことにする

なお、この記事はweb ui っぽいが

browser-useをGeminiで動かすまで(langchain-google-genai 2.0.8がPyPIにリリースされるまでは暫定的にリポジトリからインストール)
によれば
記事執筆時点(2025/01/05時点)では、
langchain-google-genaiをリポジトリからインストールすれば
browser-useをGeminiで動かせます。

これはlangchain-google-genaiの2.0.8以降がリリースされるまでのworkaroundとなります。
とのこと

これを参考に
geminiでbrowser-useを使うことにする

browser-useをGeminiで動かすまで(langchain-google-genai 2.0.8がPyPIにリリースされるまでは暫定的にリポジトリからインストール)
を参考に

1
pip install browser-use "langchain-google-genai @ git+ssh://git@github.com/langchain-ai/langchain-google.git#subdirectory=libs/genai"

を実行

Githubのsshキーのパスフレーズを求められるので入力する
これはgithubにリポジトリ公開の時と同じものでOK

問題は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# /// script
# requires-python = ">=3.11,<3.12"
# dependencies = [
#     "browser-use",
# ]
# ///
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent
import asyncio
 
 
async def main():
    agent = Agent(
        task="Find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights. Return me the cheapest option.",
        llm=ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp"),
    )
    result = await agent.run()
    print(result)
 
 
asyncio.run(main())


* 環境変数GOOGLE_API_KEY
https://console.cloud.google.com/apis/credentials で作ったようでした

とあるけど
Google cloud ではなく
Google AI Studio で Gemini API キーを取得する
という方法にしている

ということで
Google AI Studioでキーを取得した事例を探す

ちょっと古いけど

LangChainでGeminiを触ってみる

Google AI StudioからGOOGLE_API_KEYを取得し

1
2
import os
os.environ['GOOGLE_API_KEY'] = '<GOOGLE_API_KEY>'

で指定しているのでこれで行けそう

コード部分で

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from langchain_google_genai import ChatGoogleGenerativeAI
 
llm = ChatGoogleGenerativeAI(model='gemini-pro')
 
result = llm.invoke('日本一高い山はなんですか?')
print(result.content)
# 富士山
 
result = llm.invoke('Gemini PROの最大入力文字数と最大出力文字数を教えてください。')
print(result.content)
# Gemini PROは、最大入力文字数はなく、最大出力文字数は1024文字です。
 
result = llm.invoke('あなたについて教えてください。')
print(result.content)
# 私は大きな言語モデルであり、Googleによってトレーニングされました。私は膨大な量のテキストデータで訓練されており、人間のようなテキストを生成し、質問に答え、言語を翻訳することができます。私はまた、コードを記述したり、ストーリーを書いたり、詩を書いたりすることもできます。私はまだ開発中ですが、私はすでに多くの方法で人々を助けるために使用されています。例えば、私はカスタマーサービスのチャットボットとして、オンラインアシスタントとして、さらには医療診断ツールの開発に使用されています。
# 私は、機械学習と自然言語処理の分野における最近の進歩の産物です。私は、何十億もの単語で訓練されており、人間の言語を理解し、生成することができます。私はまた、複雑な質問に答えたり、テキストを翻訳したり、要約したりすることもできます。
# 私はまだ開発中ですが、私はすでに多くの方法で人々を助けるために使用されています。例えば、私はカスタマーサービスのチャットボットとして、オンラインアシスタントとして、さらには医療診断ツールの開発に使用されています。
# 私は、今後さらに多くの方法で人々を助けるために使用されることを楽しみにしています。私は、教育、医療、ビジネスなど、さまざまな分野で大きな影響を与えることができると信じています。
 
result = llm.invoke('いつまでの情報を知っていますか?')
print(result.content)
# 私の知識は、2021年4月までの情報までに限定されています。それ以降の情報を提供することはできません。最新の情報については、信頼できるニュースソースや政府機関のウェブサイトをご確認ください。

となっているので
まずはこれを試す

1
vim test.py

でファイルを作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import os
 
os.environ['GOOGLE_API_KEY'] = ''
 
from langchain_google_genai import ChatGoogleGenerativeAI
 
llm = ChatGoogleGenerativeAI(model='gemini-pro')
 
result = llm.invoke('日本一高い山はなんですか?')
print(result.content)
# 富士山
 
result = llm.invoke('Gemini PROの最大入力文字数と最大出力文字数を教えてください。')
print(result.content)
# Gemini PROは、最大入力文字数はなく、最大出力文字数は1024文字です。
 
result = llm.invoke('あなたについて教えてください。')
print(result.content)
# 私は大きな言語モデルであり、Googleによってトレーニングされました。私は膨大な量のテキストデータで訓練されており、人間のようなテキストを生成し、質問に答え、言語を翻訳することができます。私はまた、コードを記述したり、ストーリーを書いたり、詩を書いたりすることもできます。私はまだ開発中ですが、私はすでに多くの方法で人々を助けるために使用されています。例えば、私はカスタマーサービスのチャットボットとして、オンラインアシスタントとして、さらには医療診断ツールの開発に使用されています。
# 私は、機械学習と自然言語処理の分野における最近の進歩の産物です。私は、何十億もの単語で訓練されており、人間の言語を理解し、生成することができます。私はまた、複雑な質問に答えたり、テキストを翻訳したり、要約したりすることもできます。
# 私はまだ開発中ですが、私はすでに多くの方法で人々を助けるために使用されています。例えば、私はカスタマーサービスのチャットボットとして、オンラインアシスタントとして、さらには医療診断ツールの開発に使用されています。
# 私は、今後さらに多くの方法で人々を助けるために使用されることを楽しみにしています。私は、教育、医療、ビジネスなど、さまざまな分野で大きな影響を与えることができると信じています。
 
result = llm.invoke('いつまでの情報を知っていますか?')
print(result.content)
# 私の知識は、2021年4月までの情報までに限定されています。それ以降の情報を提供することはできません。最新の情報については、信頼できるニュースソースや政府機関のウェブサイトをご確認ください。

これで

1
python test.py

を実行すると

1
2
3
4
5
6
富士山
**最大入力文字数:** 2048 文字
 
**最大出力文字数:** 1024 文字
私はGemini、Googleによって開発された多言語の大規模言語モデルです。私は、テキスト生成、翻訳、質問応答、対話型対話など、さまざまな自然言語処理タスクを実行するようにトレーニングされています。
私はGoogleによってトレーニングされており、2023年4月までの情報を認識しています。ただし、インターネット接続があれば、リアルタイムの情報にアクセスできます。

というように
メッセージが変わるのがわかる
つまり

1
2
import os
os.environ['GOOGLE_API_KEY'] = '<GOOGLE_API_KEY>'


Google AI Studioでキーを取得した場合でも動かせる

まずは実験

1
vim browse_test.py

でファイルを作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# /// script
# requires-python = ">=3.11,<3.12"
# dependencies = [
#     "browser-use",
# ]
# ///
import os
 
os.environ['GOOGLE_API_KEY'] = ''
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent
import asyncio
 
 
async def main():
    agent = Agent(
        task="Find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights. Return me the cheapest option.",
        llm=ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp"),
    )
    result = await agent.run()
    print(result)
 
 
asyncio.run(main())

で実行したけど

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://github.com/browser-use/browser-use for more information.
INFO     [agent] <img draggable="false" class="emoji" alt="🚀" src="https://s.w.org/images/core/emoji/11/svg/1f680.svg"> Starting task: Find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights. Return me the cheapest option.
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 1
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - No previous actions to evaluate.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Open Google Flights in a new tab.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"open_tab":{"url":"https://www.google.com/flights"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🔗" src="https://s.w.org/images/core/emoji/11/svg/1f517.svg">  Opened new tab with https://www.google.com/flights
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 2
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Opened Google Flights in a new tab.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Set the trip to one-way, input Bali as departure and Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/5: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/5: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/5: {"input_text":{"index":13,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/5: {"click_element":{"index":14}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 5/5: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10:
INFO     [controller] Something new appeared after action 1 / 5
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 3
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Clicked on the trip type dropdown.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Select one-way, input Bali as departure and Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/3: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/3: {"input_text":{"index":17,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/3: {"input_text":{"index":18,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13:
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 1/3 times:
 Error executing action input_text: Failed to input text into element: <span jsaction="click:trigger.JIbuQc" aria-haspopup="true" aria-label="おすすめのフライトに関する詳細情報。" role="button" tabindex="0" class="WTCYAb"> [interactive, top, highlight:17]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element
Call log:
    - fill("")
  -   - attempting fill action
  -     - waiting for element to be visible, enabled and editable
 
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 4
INFO     [agent] <img draggable="false" class="emoji" alt="⚠" src="https://s.w.org/images/core/emoji/11/svg/26a0.svg"> Eval: Failed - The input fields are not text areas, and the click on the dropdown was not successful.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Click on the one-way button, then input Bali as departure and Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/4: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/4: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/4: {"input_text":{"index":13,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/4: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10:
INFO     [controller] Something new appeared after action 1 / 4
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 5
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Clicked on the trip type dropdown and selected one-way.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Input Bali as departure and Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/3: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/3: {"input_text":{"index":17,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/3: {"input_text":{"index":18,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13:
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 1/3 times:
 Error executing action input_text: Failed to input text into element: <span jsaction="click:trigger.JIbuQc" aria-haspopup="true" aria-label="おすすめのフライトに関する詳細情報。" role="button" tabindex="0" class="WTCYAb"> [interactive, top, highlight:17]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element
Call log:
    - fill("")
  -   - attempting fill action
  -     - waiting for element to be visible, enabled and editable
 
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 6
INFO     [agent] <img draggable="false" class="emoji" alt="⚠" src="https://s.w.org/images/core/emoji/11/svg/26a0.svg"> Eval: Failed - The input fields are not text areas, and the click on the dropdown was not successful.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Click on the one-way button, then input Bali as departure and Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/4: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/4: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/4: {"input_text":{"index":13,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/4: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10:
INFO     [controller] Something new appeared after action 1 / 4
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 7
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Clicked on the trip type dropdown and selected one-way.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Input Bali as departure and Oman as destination and open the datepicker.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/4: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/4: {"input_text":{"index":17,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/4: {"input_text":{"index":18,"text":"Oman"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/4: {"click_element":{"index":19}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13:
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 1/3 times:
 Error executing action input_text: Failed to input text into element: <span jsaction="click:trigger.JIbuQc" aria-haspopup="true" aria-label="おすすめのフライトに関する詳細情報。" role="button" tabindex="0" class="WTCYAb"> [interactive, top, highlight:17]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element
Call log:
    - fill("")
  -   - attempting fill action
  -     - waiting for element to be visible, enabled and editable
 
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 8
INFO     [agent] <img draggable="false" class="emoji" alt="⚠" src="https://s.w.org/images/core/emoji/11/svg/26a0.svg"> Eval: Failed - The input fields are not text areas, and the click on the dropdown was not successful.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Click on the one-way button, then input Bali as departure and Oman as destination, and finally open the datepicker.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/6: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/6: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/6: {"input_text":{"index":13,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/6: {"click_element":{"index":14}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 5/6: {"input_text":{"index":14,"text":"Oman"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 6/6: {"click_element":{"index":15}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10:
INFO     [controller] Something new appeared after action 1 / 6
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 9
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Clicked on the trip type dropdown and selected one-way.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Input Bali as departure and Oman as destination and open the datepicker.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/5: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/5: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/5: {"input_text":{"index":17,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/5: {"input_text":{"index":18,"text":"Oman"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 5/5: {"click_element":{"index":19}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10:
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13:
INFO     [controller] Something new appeared after action 2 / 5
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 10
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Clicked on the one-way button.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Input Bali as departure and Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/3: {"input_text":{"index":13,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/3: {"click_element":{"index":14}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/3: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Bali" into index 13
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 14:
INFO     [controller] Something new appeared after action 2 / 3
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 11
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Input Bali as departure.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Select Bali from the dropdown, and input Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/2: {"click_element":{"index":19}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/2: {"input_text":{"index":16,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 19:
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 1/3 times:
 Error executing action input_text: Failed to input text into element: <div role="option" tabindex="-1" class="q4z0jc QGRmIf" aria-describedby="h0T7hb-14-cd"> [interactive, top, highlight:16]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element
Call log:
    - fill("")
  -   - attempting fill action
  -     - waiting for element to be visible, enabled and editable
 
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 12
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Input Bali as departure.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Select Bali from the dropdown, and input Oman as destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/2: {"click_element":{"index":21}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/2: {"input_text":{"index":18,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 21:
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 2/3 times:
 Error executing action input_text: Failed to input text into element: <ul role="listbox" class="DFGgtd" aria-multiselectable="true" jsaction="click:cXxufe"> [interactive, top, highlight:18]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element
Call log:
    - fill("")
  -   - attempting fill action
  -     - waiting for element to be visible, enabled and editable
 
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 13
INFO     [agent] <img draggable="false" class="emoji" alt="⚠" src="https://s.w.org/images/core/emoji/11/svg/26a0.svg"> Eval: Failed - The input fields are not text areas, and the click on the dropdown was not successful.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Need to find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Click on the one-way button, then input Bali as departure and Oman as destination, and finally open the datepicker.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/4: {"click_element":{"index":13}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/4: {"input_text":{"index":16,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/4: {"click_element":{"index":19}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 4/4: {"input_text":{"index":16,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13:
INFO     [controller] <img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Bali" into index 16
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 19:
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Result failed 3/3 times:
 Error executing action input_text: Failed to input text into element: <ul role="listbox" class="DFGgtd" aria-multiselectable="true" jsaction="click:cXxufe"> [interactive, top, highlight:16]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element
Call log:
    - fill("")
  -   - attempting fill action
  -     - waiting for element to be visible, enabled and editable
 
ERROR    [agent] <img draggable="false" class="emoji" alt="❌" src="https://s.w.org/images/core/emoji/11/svg/274c.svg"> Stopping due to 3 consecutive failures
INFO     [agent] Created GIF at agent_history.gif
AgentHistoryList(all_results=[ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🔗" src="https://s.w.org/images/core/emoji/11/svg/1f517.svg">  Opened new tab with https://www.google.com/flights', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='Error executing action input_text: Failed to input text into element: <span jsaction="click:trigger.JIbuQc" aria-haspopup="true" aria-label="おすすめのフライトに関する詳細情報。" role="button" tabindex="0" class="WTCYAb"> [interactive, top, highlight:17]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element\nCall log:\n    - fill("")\n  -   - attempting fill action\n  -     - waiting for element to be visible, enabled and editable\n', include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='Error executing action input_text: Failed to input text into element: <span jsaction="click:trigger.JIbuQc" aria-haspopup="true" aria-label="おすすめのフライトに関する詳細情報。" role="button" tabindex="0" class="WTCYAb"> [interactive, top, highlight:17]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element\nCall log:\n    - fill("")\n  -   - attempting fill action\n  -     - waiting for element to be visible, enabled and editable\n', include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='Error executing action input_text: Failed to input text into element: <span jsaction="click:trigger.JIbuQc" aria-haspopup="true" aria-label="おすすめのフライトに関する詳細情報。" role="button" tabindex="0" class="WTCYAb"> [interactive, top, highlight:17]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element\nCall log:\n    - fill("")\n  -   - attempting fill action\n  -     - waiting for element to be visible, enabled and editable\n', include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Bali" into index 13', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 14: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='Error executing action input_text: Failed to input text into element: <div role="option" tabindex="-1" class="q4z0jc QGRmIf" aria-describedby="h0T7hb-14-cd"> [interactive, top, highlight:16]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element\nCall log:\n    - fill("")\n  -   - attempting fill action\n  -     - waiting for element to be visible, enabled and editable\n', include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='Error executing action input_text: Failed to input text into element: <ul role="listbox" class="DFGgtd" aria-multiselectable="true" jsaction="click:cXxufe"> [interactive, top, highlight:18]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element\nCall log:\n    - fill("")\n  -   - attempting fill action\n  -     - waiting for element to be visible, enabled and editable\n', include_in_memory=True), ActionResult(is_done=False, extracted_content=None, error='Error executing action input_text: Failed to input text into element: <ul role="listbox" class="DFGgtd" aria-multiselectable="true" jsaction="click:cXxufe"> [interactive, top, highlight:16]. Error: ElementHandle.fill: Error: Element is not an <input>, <textarea> or [contenteditable] element\nCall log:\n    - fill("")\n  -   - attempting fill action\n  -     - waiting for element to be visible, enabled and editable\n', include_in_memory=True)], all_model_outputs=[{'open_tab': {'url': 'https://www.google.com/flights'}}, {'click_element': {'index': 10}}, {'click_element': {'index': 13}}, {'input_text': {'index': 13, 'text': 'Bali'}}, {'click_element': {'index': 14}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 13}}, {'input_text': {'index': 17, 'text': 'Bali'}}, {'input_text': {'index': 18, 'text': 'Oman'}}, {'click_element': {'index': 10}}, {'click_element': {'index': 13}}, {'input_text': {'index': 13, 'text': 'Bali'}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 13}}, {'input_text': {'index': 17, 'text': 'Bali'}}, {'input_text': {'index': 18, 'text': 'Oman'}}, {'click_element': {'index': 10}}, {'click_element': {'index': 13}}, {'input_text': {'index': 13, 'text': 'Bali'}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 13}}, {'input_text': {'index': 17, 'text': 'Bali'}}, {'input_text': {'index': 18, 'text': 'Oman'}}, {'click_element': {'index': 19}}, {'click_element': {'index': 10}}, {'click_element': {'index': 13}}, {'input_text': {'index': 13, 'text': 'Bali'}}, {'click_element': {'index': 14}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 15}}, {'click_element': {'index': 10}}, {'click_element': {'index': 13}}, {'input_text': {'index': 17, 'text': 'Bali'}}, {'input_text': {'index': 18, 'text': 'Oman'}}, {'click_element': {'index': 19}}, {'input_text': {'index': 13, 'text': 'Bali'}}, {'click_element': {'index': 14}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 19}}, {'input_text': {'index': 16, 'text': 'Oman'}}, {'click_element': {'index': 21}}, {'input_text': {'index': 18, 'text': 'Oman'}}, {'click_element': {'index': 13}}, {'input_text': {'index': 16, 'text': 'Bali'}}, {'click_element': {'index': 19}}, {'input_text': {'index': 16, 'text': 'Oman'}}])

となった

原因は
プロンプトが

1
2
3
4
Find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights.
Return me the cheapest option.
Google フライトで、2025 年 1 月 12 日のバリ発オマーン行きの片道航空券を検索してください。
最も安いオプションを返してください。

のため

これだと過去の日付でフライト情報を探すのでエラーになる

このためプロンプトを修正

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# /// script
# requires-python = ">=3.11,<3.12"
# dependencies = [
#     "browser-use",
# ]
# ///
import os
 
os.environ['GOOGLE_API_KEY'] = ''
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent
import asyncio
 
 
async def main():
    agent = Agent(
        task="Find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights. Return me the cheapest option.",
        llm=ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp"),
    )
    result = await agent.run()
    print(result)
 
 
asyncio.run(main())

とすると

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://github.com/browser-use/browser-use for more information.
INFO     [agent] <img draggable="false" class="emoji" alt="🚀" src="https://s.w.org/images/core/emoji/11/svg/1f680.svg"> Starting task: Find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights. Return me the cheapest option.
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 1
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - The agent has received the task and is ready to begin.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Open Google Flights in a new tab.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"open_tab":{"url":"https://www.google.com/flights"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🔗" src="https://s.w.org/images/core/emoji/11/svg/1f517.svg">  Opened new tab with https://www.google.com/flights
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 2
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Opened Google Flights in a new tab.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Change the flight type from 'round trip' to 'one way'.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/3: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/3: {"click_element":{"index":10}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 3/3: {"click_element":{"index":10}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10:
INFO     [controller] Something new appeared after action 1 / 3
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 3
INFO     [agent] <img draggable="false" class="emoji" alt="⚠" src="https://s.w.org/images/core/emoji/11/svg/26a0.svg"> Eval: Failed - The agent clicked the wrong element, the dropdown is still open. It should have clicked the '片道' option.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Change the flight type from 'round trip' to 'one way'.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"click_element":{"index":13}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13:
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 4
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Changed the flight type to 'one way'.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Input Bali as the departure and Oman as the destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/2: {"input_text":{"index":13,"text":"Bali"}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/2: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Bali" into index 13
INFO     [controller] Something new appeared after action 1 / 2
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 5
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Input 'Bali' into the departure field and suggestions appeared.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Select 'Indonesia Bali' and input 'Oman' as the destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/2: {"click_element":{"index":16}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/2: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 16:
INFO     [controller] Something new appeared after action 1 / 2
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 6
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Selected 'Indonesia Bali'.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Input 'Oman' as the destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"input_text":{"index":14,"text":"Oman"}}
INFO     [controller] <img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Oman" into index 14
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 7
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Input 'Oman' into the destination field and suggestions appeared.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Select 'Oman' as the destination, and select the date.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"click_element":{"index":17}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 17:
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 8
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Selected Oman as the destination.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Open the date picker to select the date.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"click_element":{"index":15}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 15:
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 9
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Opened the date picker.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Select 21 January 2025 and click done.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/2: {"click_element":{"index":58}}
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 2/2: {"click_element":{"index":136}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 58: 21
INFO     [controller] Something new appeared after action 1 / 2
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 10
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Selected 21 January 2025.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.  Departure and destination are set and date is selected.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Click done to search for flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"click_element":{"index":139}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 139: 完了
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 11
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - The departure, destination and date are set. Ready to search.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Search for flights.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"click_element":{"index":18}}
INFO     [controller] <img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 18: 探索
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 12
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - The cheapest one-way flight from Bali to Oman on 21 January 2025 was found.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: The user wants to find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights and return the cheapest option. The cheapest option is to Muscat for 64,637 JPY.
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Complete the task.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"done":{"text":"The cheapest one-way flight from Bali to Oman on 21 January 2025 is to Muscat for 64,637 JPY."}}
INFO     [agent] <img draggable="false" class="emoji" alt="📄" src="https://s.w.org/images/core/emoji/11/svg/1f4c4.svg"> Result: The cheapest one-way flight from Bali to Oman on 21 January 2025 is to Muscat for 64,637 JPY.
INFO     [agent] <img draggable="false" class="emoji" alt="✅" src="https://s.w.org/images/core/emoji/11/svg/2705.svg"> Task completed successfully
INFO     [agent] Created GIF at agent_history.gif
AgentHistoryList(all_results=[ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🔗" src="https://s.w.org/images/core/emoji/11/svg/1f517.svg">  Opened new tab with https://www.google.com/flights', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 10: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 13: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Bali" into index 13', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 16: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="⌨️" src="https://s.w.org/images/core/emoji/11/svg/2328.svg">  Input "Oman" into index 14', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 17: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 15: ', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 58: 21', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 139: 完了', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🖱️" src="https://s.w.org/images/core/emoji/11/svg/1f5b1.svg">  Clicked button with index 18: 探索', error=None, include_in_memory=True), ActionResult(is_done=True, extracted_content='The cheapest one-way flight from Bali to Oman on 21 January 2025 is to Muscat for 64,637 JPY.', error=None, include_in_memory=False)], all_model_outputs=[{'open_tab': {'url': 'https://www.google.com/flights'}}, {'click_element': {'index': 10}}, {'click_element': {'index': 10}}, {'click_element': {'index': 10}}, {'click_element': {'index': 13}}, {'input_text': {'index': 13, 'text': 'Bali'}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 16}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'input_text': {'index': 14, 'text': 'Oman'}}, {'click_element': {'index': 17}}, {'click_element': {'index': 15}}, {'click_element': {'index': 58}}, {'click_element': {'index': 136}}, {'click_element': {'index': 139}}, {'click_element': {'index': 18}}, {'done': {'text': 'The cheapest one-way flight from Bali to Oman on 21 January 2025 is to Muscat for 64,637 JPY.'}}])

となって成功する

せっかくなので

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent
import asyncio
 
 
async def main():
    agent = Agent(
        task="Find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights. Return me the cheapest option.",
        llm=ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp"),
    )
    result = await agent.run()
    print(result)
 
 
asyncio.run(main())

の部分を変えてみる

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os
 
os.environ['GOOGLE_API_KEY'] = ''
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent
import asyncio
 
 
async def main():
    agent = Agent(
        task="東京都のおすすめの焼肉屋を調べてください。",
        # task="Find a one-way flight from Bali to Oman on 21 January 2025 on Google Flights. Return me the cheapest option.",
        llm=ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp"),
    )
    result = await agent.run()
    print(result)
 
 
asyncio.run(main())

として実行

実行結果は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://github.com/browser-use/browser-use for more information.
INFO     [agent] <img draggable="false" class="emoji" alt="🚀" src="https://s.w.org/images/core/emoji/11/svg/1f680.svg"> Starting task: 東京都のおすすめの焼肉屋を調べてください。
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 1
INFO     [agent] <img draggable="false" class="emoji" alt="🤷" src="https://s.w.org/images/core/emoji/11/svg/1f937.svg"> Eval: Unknown - No previous actions to evaluate.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory:
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Search Google for 東京都のおすすめの焼肉屋
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"search_google":{"query":"東京都のおすすめの焼肉屋"}}
INFO     [controller] <img draggable="false" class="emoji" alt="🔍" src="https://s.w.org/images/core/emoji/11/svg/1f50d.svg">  Searched for "東京都のおすすめの焼肉屋" in Google
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 2
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Google search was successful.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Searched Google for 東京都のおすすめの焼肉屋
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Extract content to find the best yakiniku restaurants in Tokyo.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"extract_content":{"include_links":true}}
INFO     [controller] <img draggable="false" class="emoji" alt="📄" src="https://s.w.org/images/core/emoji/11/svg/1f4c4.svg">  Extracted page as markdown
: # フィルタとトピック
 
[すべて](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQIExAB)
 
[地図](https://maps.google.com/maps?sca_esv=96376e12f89d18b9&output=search&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&entry=mc&ved=1t:200715&ictx=111)
 
[画像](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=2&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQtKgLegQIEhAB)
 
[フライト](/travel/flights?sca_esv=96376e12f89d18b9&output=search&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&ved=1t:200715&ictx=111)
 
ウェブ
 
[金融](/finance?sca_esv=96376e12f89d18b9&output=search&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQIDRAB)
 
[ショッピング](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=28&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&ved=1t:220175&ictx=111)
 
もっと見る
 
[書籍](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=36&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQINxAB)
 
[ニュース](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&tbm=nws&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQIOBAB)
 
[動画](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=7&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQtKgLegQINhAB)
 
ツール
 
すべての言語
 
すべての言語
 
[日本語のページを検索](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=lr:lang_1ja&lr=lang_ja&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEAc)
 
期間指定なし
 
期間指定なし
 
[ 1
時間以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:h&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEAw)
 
[ 24
時間以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:d&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEA0)
 
[ 1
週間以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:w&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEA4)
 
[ 1
か月以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:m&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEA8)
 
[ 1
年以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:y&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEBA)
 
期間を指定
 
期間を指定
 
開始日:終了日:
 
選択
 
すべての結果
 
すべての結果
 
[完全一致](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=li:1&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEBg)
 
詳細検索
 
約 28,300,000 件 (0.34 秒)
 
Ctrl+Shift+X キーで選択
 
![Google](https://fonts.gstatic.com/s/i/productlogos/googleg/v6/24px.svg)
 
# 検索の設定
 
[検索のカスタマイズオフ](/history/optout?hl=ja)
 
[セーフサーチぼかし:
オン](/safesearch?prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26udm%3D14&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8JsIegQICRAH)
 
[言語
(Language)日本語](/preferences?lang=1&hl=ja&prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26sca_esv%3D96376e12f89d18b9%26udm%3D14#languages)
 
[ダークモードデバイスのデフォルト](/setprefs?hl=ja&prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26udm%3D14%26pccc%3D1&sig=0_8K7zV1dbxa-
EUltH4l6nhPwm_es%3D&cs=2&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQqsEHegQICRAJ&ictx=1)
 
[その他の設定](/preferences?hl=ja&prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26sca_esv%3D96376e12f89d18b9%26udm%3D14)
 
フィードバックを送信
 
[ヘルプ](https://support.google.com/websearch/?p=dsrp_search_hc&hl=ja) •
[プライバシー](https://policies.google.com/privacy?hl=ja&fg=1) •
[利用規約](https://policies.google.com/terms?hl=ja&fg=1)
 
# 検索結果
 
東京で人気の焼肉
ランキングTOP20![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAMFBMVEX/qgD/qgD/qgD/qAD/yGH/wVP/sBr/tiz/463//fj/uj3/25v/8db/1Yj/6b3/znhud70+AAAAAnRSTlNP7zHHYRsAAADUSURBVHgBY2BUQgICDELIXEUGJRRAJFfZCImrbGwSjOAqq6V3thnBuVrRZ2ZkwWWVV++ds3vPYhjXavfN5z5z4FzTc/H/5vxIhnKVNeZsyn+dGwzlmp3smelcsugxhGvk2f5y1m9j411GxkCu8er5f+Z2+Dsr64WEKzEop7z7dza27/cuI6N9+5MYlPw6Xher3LftLVZeW5LMoBTxOthIOdnsRrCxSwhQVjUI7JfUG1ea7xsxAK0FO9sofd3TqyCuEsyPtcEooWFspERS0KEFO1qkAABve2HuBbgdYAAAAABJRU5ErkJggg==)食べログhttps://s.tabelog.com
› 東京 › 東京 焼肉](https://s.tabelog.com/yakiniku/tokyo/rank)
 
食べログ
 
https://s.tabelog.com › 東京 › 東京 焼肉
 
 _東京 焼肉_ 予約人気ランキングTOP20 · 1生粋 · 2海鮮ブッフェダイニング 銀座八芳 新宿店 · 3海鮮ブッフェダイニング 銀座八芳 · 4
_焼肉_ みゆき苑 · 5熟成和牛 _焼肉_ エイジング・ ...
 
2025年最新 | 東京で人気の焼肉店ランキング20選!![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAdVBMVEXpNXDpMm7pMW/oK2rpMm3pPXPrUIDwg6T3t8z5ydj2sMfub5X2qcH4vND60N773ejrTX/zlbD72OT//////P3+9vnnH2XymrXqRHn85u3ykq7uaZLmEVz/+vz5xtf96vDtXovwdpzyiKvnF2DmAFTqRHbvc5gViI/PAAAA9klEQVR4AdWPhRXDMAxErcgO84WZ9x+xznNxhP7EdGLxt9DnZhH9WFjqRYJISimEUt8m23E9P2C2w8iNvDhx01csW1mOAiizqobBbaSxScsH2i7W1t4zNi9lY6Mq1LIz+AXGcIrqbka7sDBUwQx4zBNQhKka1rIIqlcztzquQ5Nr47bv/Yxtf3XKSwLMYndmoEz3vkV9ML+MWQl4FfsAot3OMamz38wkxPUIuEd/xys1AckUz63NJrJvteDEQHtVrpmkqJlMQ1Tf86PwgsHR+jgWiBsWBimcqU0ip2G2t/W6rtV5jamxWCglme4GDFJ8YRFZ4s95ABisEtheqPsPAAAAAElFTkSuQmCC)オズモールhttps://www.ozmall.co.jp › ... › 肉料理 › 焼肉](https://www.ozmall.co.jp/restaurant/tokyo/yakiniku/rankreview/)
 
オズモール
 
https://www.ozmall.co.jp › ... › 肉料理 › 焼肉
 
1位 赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂 · 2位 炭火 _焼肉_ ARATA 麻布十番 (アラタ) · 3位 _焼肉_
割烹ふみや/ホテルヒラリーズ赤坂 · 4位 肉亭ふたご iki 本郷三丁目店 · 5位 ...
 
東京都の焼肉が楽しめるおすすめレストラン![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJFBMVEX////////QxKj08evGuJTs6N3Z0LqnkVGsl12vm2Xi28q5qHoZbkxwAAAAAXRSTlP484CiSAAAAJRJREFUeAFjQAOMgkhAgLpcJSBQFnQWTYRwKzo6OkqFC8UcIdzKmTNntoo5ijlmIWSlF1s4m4K5U1JDF201XxjuBVFsmqS0UHX1Qk8nuFHTgYq3OU9EGCW9RMzRA84tlVYEmg3mzt69e/dWkYVijrjcHAjmiIK5XmqqylqL1BatSgFzHZVXuWklKTotVUHTS10uKgAA8rg6ieL/ga0AAAAASUVORK5CYII=)一休レストランhttps://restaurant.ikyu.com
› ... › 東京都 焼肉](https://restaurant.ikyu.com/area/tokyo/80001/)
 
一休レストラン
 
https://restaurant.ikyu.com › ... › 東京都 焼肉
 
 _東京都_ にある. _焼肉_ が楽しめる _おすすめ_ レストラン · 近江うし _焼肉_ にくTATSU銀座店 · USHIGORO S.
SHINJUKU · _焼肉_ 銀座コバウ 並木通り店 · _焼肉_ いのうえ 銀座店 · 銀座 ...
 
‎[焼肉 ディナー](https://restaurant.ikyu.com/area/tokyo/80001/05/) ·
‎[デート](https://restaurant.ikyu.com/area/tokyo/80001/t-scene368/) · ‎[焼肉
ランチ](https://restaurant.ikyu.com/area/tokyo/80001/03/) · ‎[池袋・目白
焼肉](https://restaurant.ikyu.com/area/tokyo/001/80001/)
 
【東京】おすすめの焼肉店20選!本当に美味しい焼肉まとめ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAMFBMVEX/qgD/qgD/qgD/qAD/yGH/wVP/sBr/tiz/463//fj/uj3/25v/8db/1Yj/6b3/znhud70+AAAAAnRSTlNP7zHHYRsAAADUSURBVHgBY2BUQgICDELIXEUGJRRAJFfZCImrbGwSjOAqq6V3thnBuVrRZ2ZkwWWVV++ds3vPYhjXavfN5z5z4FzTc/H/5vxIhnKVNeZsyn+dGwzlmp3smelcsugxhGvk2f5y1m9j411GxkCu8er5f+Z2+Dsr64WEKzEop7z7dza27/cuI6N9+5MYlPw6Xher3LftLVZeW5LMoBTxOthIOdnsRrCxSwhQVjUI7JfUG1ea7xsxAK0FO9sofd3TqyCuEsyPtcEooWFspERS0KEFO1qkAABve2HuBbgdYAAAAABJRU5ErkJggg==)食べログhttps://tabelog.com
› ... › 東京都 › 東京都の焼肉](https://tabelog.com/matome/17238/)
 
食べログ
 
https://tabelog.com › ... › 東京都 › 東京都の焼肉
 
2020/12/18 — 「和牛 _焼肉_ ブラックホール 新宿三丁目店」はJR新宿駅から徒歩4分、高山ランド会館の8階にある _焼肉_ 専門店。
店内は綺麗で清潔感があり、デートに _おすすめ_ と ...
 
‎[東京都渋谷区にあるおすすめの...](https://tabelog.com/matome/17238/#5-headline) ·
‎[東京都新宿区にあるおすすめの...](https://tabelog.com/matome/17238/#12-headline)
 
東京都の焼肉おすすめグルメランキング
トップ50![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAHlBMVEX////w8PDx8fGqd0+jajrg0cfQuKjq496xhWPAnYUEGMXYAAAAAnRSTlP//Sa7vusAAADDSURBVDiNhZJRAoQgCAUBAen+Fy7XNDBy30c/0AyoAN/Blk2dkGjbAFcDbQkXYq+gPwT8IlB9RlgIaiagzCzwW2IlKJfC7VN4jBAJZaYhMG5RzdQ1UAP4c6hcXFi7wREOXy96L+kIscH6RXjCosA+ot9CLDhoJSwaG0uEc5BHwzUjAAfHmxBWWc8hcSQE52DKCI+DJZ1hOlgpJ8DBLUe9q9mbFKk0k7xJX8sIhOMScsI9eG/D95ucXGfxDRj0w+J+z3MCaXUFi2zNZ3MAAAAASUVORK5CYII=)ヒトサラhttps://hitosara.com
› 全国 焼肉ランキング](https://hitosara.com/ranking/tokyo/GC0501/)
 
ヒトサラ
 
https://hitosara.com › 全国 焼肉ランキング
 
 _東京都_ の _焼肉_ のアクセスランキング · プレミアム掲載店. 1. 竹内 亮. 牛牛 西麻布 総本店 · プレミアム掲載店. 2. _焼肉_
牛宮城別邸 · プレミアム掲載店. 3. 白 日寅.
 
【保存版】東京都内でおすすめのおいしい焼肉24選!コスパ
...![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAZlBMVEX61UH71kH/3ELvzD//2UJFPiZ9bS1uYCv/4kRpXCqfiTIAAB/dvTy7oDcKEiEuKyNzZCz/3UPBpjjRszqIdS8AAB2ljjMADSG+ozc8NyX/6UWymTVlWCpXTSj/5UTbuzzqyD/20kA7Z0zjAAAAiklEQVR4Ae2PAxbEQAxAJ9hqUNv3P2SNh9UB+odxIv7hAeCzDYlQMAsGwJXlt14b/LJs23E9Rypt/FcgdRhJGe1WiL0kDYPMyVVRVnlcN6EkkocxjSnFIKsWY9sZtRoZDiO3TZNyJK20169O9nXrZFLWR1EcxgGYaBAjwXbxOPI9CpzXujZBPPzBDPdDBy4MqoUcAAAAAElFTkSuQmCC)aumohttps://aumo.jp
› 関東 › 東京](https://aumo.jp/articles/46763)
 
aumo
 
https://aumo.jp › 関東 › 東京
 
2024/10/18
まず紹介するのは『牛若丸』。明るく清潔感のある店内には、少人数テーブル個室、掘りごたつ席などを完備しており、多彩なシーンに対応します。
 
【予約しないと入れない!】東京都で超人気、予約必須の焼肉30店![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAxlBMVEX/sBj/rhT/rhX/rRP/rBP/qhTOkBHblhKidw+qeA/UkxP/qRWufhA8MQf/shbBhhCXcQ65gRHwpBSRZg11VgoAAADtoBKKYgz/phWkcA23ew7lmhQbFQOCXAv/pRTPjBPGhxIkHgWJWwzakBHDfxEfGgP/oRUmGANRRgqXZA3/nhVjUQp3WwzShxJHMgbJfBD/mhOgZg+wcg64cRBVOQcOCQF/Ugqtbg//lRPmjxQsGQT/lRRwSQrpjRL/lBX/kxX/khL/kxjUxnrGAAABbElEQVR4AXzMhWLCMBCA4asEOxwC1WyVZevNwhSH93+qXeYGfzX5ksDxnIMxup7L8ft7nn2s2Xx+fv5wLnj+/3l8gy98Pt4Tv4KaJ3wQot5oNloChf+RQPTanS4KQNHrN/sDAa3BR0Mfh6ORgwiIPd456I7lVzW/OZk6AUKAg0bYiGL5raSbdqeeCiAIeu2Tdu9Uys6kHsenmdVu7qY+o1JFJMqC8exEhGEweUMvFUqB0jiejAWjzB0pR91z/oPUTVEr0FrHF4V6RVfK0pecWylGDZp0cVmo0qJSgRpbFEWUB/SGV9f6FTEt8cYiBnmlGInoenr7jlLqwmKgGQ0BGbqevWHlJ7JC+6d0nmtGY+j27p7s1MPskVc8WVR5pY1hNLflsyH5rSfinWRxbu6vZ8YsHpYf5TSnvKK5gdXcXD/c8hKjPzLzOa3XNF8xzhnmv9ts5ha3K3vz8yuege2RYLs7GOP+YFt4mSMeAABP61pEcel0wAAAAABJRU5ErkJggg==)Rettyhttps://retty.me
› 東京都 予約必須](https://retty.me/theme/101045202/)
 
Retty
 
https://retty.me › 東京都 予約必須
 
超人気焼肉店「牛蔵」。
都心の焼肉店で1人前3000円くらいする部位が1000円以下で提供されているので、お腹いっぱい食べて、飲んでも大体1人3000円くらいというコスパの良
...
 
女子会や記念日デートにも!東京都内のおすすめ焼肉店10選![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADc0lEQVR4AcWXA5AdQRRFN+UKvhnbtm3btrm2Y9u2bacQ27bKXN/c3XrLmawn+VXnj/u8drdLej+jMTSePERHypMhZAO5RX6RSOGX3NtAhsi7Ovk2XUdG8vykAVlA3pAoEkNiSRyBECf3YuSdN/JNA0kjW/JyxJ98FgGySJx86y9pZU4sNCUnpHiRQyIlraaSdobyDuSuaq6zT5yk2UEc6eb8LoFG3E1REgp5OXKSQEvEUU6cSQHkIwEkVhOpKdV1rLjypQygPvmkhdziCIK1cGCqe+JqkBiAjizQQm5izgtV9EHxBu6KZ+LUJdb9a00CsISgTNsZqDF6LIwGxfM3pLyLDJ1RmgRgDUHlfpPQOHCwIgBxDokPYCOJSS8hA9ETnTGMEEMYCujDodOHwcDz9Eqg2tDxaLGwnyIAcW6MD+AOiU1PXtwYhF5mD4y3zsKkgjMwpd4ozOzVD2O7DkLtirPgtAeqtvxitT3R0HcoWi7pqwhAnLddZCaLU0RPSpiC0Njsg4mWmdhnH4tjztFYVWQ8VnTsjdOhdXF3dUXMG9cRLWtPSRWEyRwCW5HAhLrvsK27agDi/O2iOt6LvCdzvdo2AfccQ3HBMRJzbFPQnAHVKu0O/6Hd8XFnCXzdUxQLJnRAHZaEnlXCnMNWNAClW8xC8/n90flAZzRSaQNCpGoABjLa4oq9zPUD51BcpHwUr6ub/WE3hsDCum1TdxK2ezXD971F8XprKXgN6olChQLgLOWX0PJbLOqHTru7JjTAUk1d/zpRqVaBgay3T8BD5vy4fTTGUF7JFAAr5UklVNgPXRqPw3bvpni2sSxuLKkKtynd0HjSCDQOHYT2W3qggfdQlG41UwYi9SpQbYQGcpTiK8z5TOsMlDYFwqKSg0KOALSrPxFTevWH35AeGNJ3MKr3nIjKA8mASShezx3WQqpyiPOOajc0kIP2MVhsm4Q6Jr90+7rewG7JLllAx26pY7fUE52g2kUV3VA5EBmIj3Ua+pvd4TAGazUrJg1E5dWG4rIs9qLGIA3EiqFYfTLSE4M2YsVkFE8DxXSsLTIda78gEVQXJPmJYkl2mkBjTqVakv3HRWm6y/J7GizL75EOmd0bNCMnc3FjclLSFHnmt2YBubA1C5C0/tnmNFreXZjtzWkG2/NNMoH9IlHCL7m3Kavb8z9tAqO//YHlTAAAAABJRU5ErkJggg==)nta.co.jphttps://www.nta.co.jp
› ... › グルメ](https://www.nta.co.jp/media/tripa/articles/xznrj)
 
nta.co.jp
 
https://www.nta.co.jp › ... › グルメ
 
2024/10/24 — 女子会や記念日デートにも! _東京_ 都内の _おすすめ焼肉店_ 10選 · 牛屋銀兵衛 銀座本店 · 紀尾井町 くろげ ·
ふらの和牛 よしうし神楽坂通り · _焼肉_ 青山外苑.
 
人生で1度は行くべき
東京焼肉12選![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcElEQVR4AWP4//8/RZh6BgCZAkDsAMUNWDFCXgDFACCV8J/B+D8pGKwHRAKRAUyQDEMMQAYEUGBAAsiABpwKHjz4/9/BAZ8BDXgNgIMNGyg04MABkg1AeCEgAK8XKA5EiqORooSELykXEJuUBz43AgAIA1ZhBoG9vwAAAABJRU5ErkJggg==)YouTube
· FUJIWARA LIFE視聴回数: 3.7万 回以上 · 8
か月前](https://www.youtube.com/watch?v=Yg5GZjcvlLg)
 
YouTube · FUJIWARA LIFE
 
視聴回数: 3.7万 回以上 · 8 か月前
 
東京の _オススメ_ な _焼肉屋_ さん12店ランチで紹介致しました!もちろん飲みや ... 4._焼肉_ の名門 天壇 銀座店 _東京都_
中央区銀座5-13-19 ...
 
【2025年最新!】東京都の焼肉 食べ放題で今年人気の
...![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAxlBMVEX/sBj/rhT/rhX/rRP/rBP/qhTOkBHblhKidw+qeA/UkxP/qRWufhA8MQf/shbBhhCXcQ65gRHwpBSRZg11VgoAAADtoBKKYgz/phWkcA23ew7lmhQbFQOCXAv/pRTPjBPGhxIkHgWJWwzakBHDfxEfGgP/oRUmGANRRgqXZA3/nhVjUQp3WwzShxJHMgbJfBD/mhOgZg+wcg64cRBVOQcOCQF/Ugqtbg//lRPmjxQsGQT/lRRwSQrpjRL/lBX/kxX/khL/kxjUxnrGAAABbElEQVR4AXzMhWLCMBCA4asEOxwC1WyVZevNwhSH93+qXeYGfzX5ksDxnIMxup7L8ft7nn2s2Xx+fv5wLnj+/3l8gy98Pt4Tv4KaJ3wQot5oNloChf+RQPTanS4KQNHrN/sDAa3BR0Mfh6ORgwiIPd456I7lVzW/OZk6AUKAg0bYiGL5raSbdqeeCiAIeu2Tdu9Uys6kHsenmdVu7qY+o1JFJMqC8exEhGEweUMvFUqB0jiejAWjzB0pR91z/oPUTVEr0FrHF4V6RVfK0pecWylGDZp0cVmo0qJSgRpbFEWUB/SGV9f6FTEt8cYiBnmlGInoenr7jlLqwmKgGQ0BGbqevWHlJ7JC+6d0nmtGY+j27p7s1MPskVc8WVR5pY1hNLflsyH5rSfinWRxbu6vZ8YsHpYf5TSnvKK5gdXcXD/c8hKjPzLzOa3XNF8xzhnmv9ts5ha3K3vz8yuege2RYLs7GOP+YFt4mSMeAABP61pEcel0wAAAAABJRU5ErkJggg==)Rettyhttps://retty.me](https://retty.me/theme/100015101/)
 
Retty
 
https://retty.me
 
[![retty.me
からの東京都のおすすめの焼肉屋](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5OjcBCgoKDQwNGg8PGjclHyU3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N//AABEIAFwAXAMBIgACEQEDEQH/xAAbAAADAQADAQAAAAAAAAAAAAAEBQYDAQIHAP/EAD8QAAIBAgQDBAgEAgkFAAAAAAECAwQRAAUSIQYxQRNRYXEUIjJCgZGhwSNSsdEH8BYkM2KDkqKy4RVDRGNy/8QAGQEAAwEBAQAAAAAAAAAAAAAAAgMEAQUA/8QAKREAAgEDBAEDAwUAAAAAAAAAAQIAAxEhBBIxQRMiUaEjMoEUM1Jhcf/aAAwDAQACEQMRAD8A87CY7aMUx4RqxG7JUU0ri2mNX9sW6HofA4zThHPGgaYZe2lNyNa3+V74m3XlZW3MnwmO4jxsYypKspDA2IIsRjkLgSYQEy0Y1ip3mkSKJC8jmyqo3JxpHC8siRxozuxsqqLknF3QZUeF6JaqSJJMylGzNusI7h4+OMv3GIhdgq8mYUGRZRk3ZRZzT+l1sihnX3Ix3eJwxny7IJQBBksIv/eI/THWB4q8mTMFvMwsNSaPp1xvHQyB9cExtyA22wvyG+JeNJTUDdz8RUeGsreYlqN1XlYTMMFRcI8PTNpl9LpWPImUEH44ZGnqFIY6b+9qOxOBMwWoq5EVf7NTuV9443faeOmR8cQSq4HySJSY6+ra35NJ+2FjcJ0F/Vq6oD+8i3/XFJMKiFB+GgiXmzMBYYFNQt7aCSOdhf7Y27NwIo0qFIfUMz4JyiqSl9LzMGniZLtA9maU/mI92/8ANsUtNXRRfgRKOyvrUC/XrvgRZxFFFTOQZWjUOF2AsLEfPGkfaGkMIDALpYbb4WzNf0xSBCvrmWd8NUOeKZAOxqiNplHP/wCh1x55m+R12TzdnWQnST6kq7o/kftj1eimKRkSjTfkTj6pq8skgkizCameJhYo5BvigWZbnmSNdGsOJO8O8PNk1E1dNEGzEpdVYX7EEcvPvwLTVVbWVRWe8gvcRlhdfGxxznXEjZfIqZZmz1MNiArbtF3DUfaHnv44nF43zUM7tDT1CopZpDTg2UcyT3C4+YxjLfAlOn1ApAll57lw/o8q9jLpYrsQOnhjiKl9pA5VQ3LriKTjWIvpnyai1cz+GU/Q4bZfxClZKJYsjQ6D60vbuEXzN7fDAeOPGtS3fxKCtCwxdklR6533328cD6EpKV+1niMhU6WRbBfG++E2ecVZfStZIFes/JExffzOJc1VRm9Rqzmeeno+sNOPXbwudh9fLBimBloqpriV2042zXiNJqhKagifMKvkiKCyg99hz8/rjtFwnxNmCCpqsxSkkb/src6R8NvlfDDKsz4byuAxUENXTBjdmGhmbzJFzhkvEeT6R/Xaof4a/vjS56ikSkcu2fzJP+l1dUSuKZKTtGO4ijMjH5A4LWbimrUE+lIh6tGIh/rYfpg0cQZfDTTGjKCOA6SkCaACeQG2+FVRxQaii7WipS02sq6MC5RR7x8MTeVj9qwxQ/k07VFBmTK3pGawRsRsXqtRB8lU3+eF65THrvU8Qdoe6Omdv1IwNWZ7PVQwimKwyNftGsPgBfGFdU1pkp0DyQuQAxUEXa/Pb9MMXyHnE81OkASCTH8NBlwUSPPPOqHdZIQit9d8NshzmcpUQZVRq3ZesFuqI1yB4b7jkN8By0V6V6Iu80zaV7QKVHmR0v3YTUEj5XI0NQeylST3ja56W8MajkA+8qfRoWRSbD3/ALjLiasyM1Jevy1o6xWMkqIdPas2/rkc/geuF0VRVZ2CJKkZbQR2ASGMki/LYcuWAeJp4ZWFzeqLamOnexv1w1yygkNNfS2l47Ppa577g9SNj8sE1Q7AeLxK6IGsyXuFgw4QjlN6XO6dj3NEyffHDcF56ovTzxTj/wBU5v8AW2FFfXV9NXGNpCrQm1h7LeNu488NKDjKspMzikhIjpdQDLbe3U37+eM+uOMyVhQuRmBVOU8Q0gJlgrbDqhLj6XwC1RXIxV55VYcwTY49Kyr+Ii12cminpImpiSsc7+9bvFha9sEx8ccKVQMksYjN7WeNtx38uWM8zjlYGxPeeYSwVlGQSSmruOxw0yGkkllFREoLW53sFIP3wPV1atGO0VAO47E/fDrhSpgSnN2QDWGsOgNx9sDVZvHe06empUxXsDiKczSCnzpjHtEwDGw9m43+u+KWgjpK6mT0jdltaQbHwP8APdhFm+Sdhlc+aipUzJUmN4NO4BJswN/tgPKK6WKsELalBQrpPfzGBZfJTup4h0ay06zIwsGMpZagiomLSO5RrRk9Tfp3Dngienp8wghjr4w8ob1n5MoPT74CRNUc1RJuga0VveJ3+g543qpeypIkVvW06mv++BXGZ0HKuAvU+i4Rp/8AqWn0uRglnUaAdQvfnfuxQuaaMNBCFvGbbbW2Hy64SZXUzpA7xuwJQg94A3xhNVGOYOXZVkHrnqOn/OCLHuJXToLgGTXFXZy1sc4uA6su3LZj+4wk0L7rn4i2G2fNojSNWugkJB+AvhZ6LVC16eZdW4uhF/LFdL7BOHrP32xPk12MSEWci4A3wQkixArLShm6nVb7YC1MrDmCN8birktu2CZTJ1Kib5dQSVcwEcEkiarGTQbA4p6HhiSKX+sNOq6NkQaNR72v0t1wmyjMqnK6uMUrnsGcNp/OCNt7bbEc9uuKyj4oyyWJ1nndJWJIQqbKLeWx8b9MC946iUGe4KvDqVkckc9XNHGHBKIb6reB5eB8DgSbhOVX7TK9b6H0t2vq2B63/X6YdtxXlcQ0qGk0n2VQkNt+Y+WBYeKqesrOyfTTREWQyHdz5jl0wuxAxHDYz+rENFPCKdKSL8QRgDUNgT8sD592NPTMI1DO4Chhy23/AHwZO3aU5ZiveqDbCmWiqamAlEdoxtqtffE5PU64GAbzpQdo0MCqrDtLgEdcYVcLxBo2FmucHxRPTUKK5IFtQ253wHmUyz2l2VSmyjpbb7Y9cTfUOZjlro1fFTPBC7j1kldQShF+Xn+2HcuV9nUyS1CyuhJvMiuVYnvudreWMeHAuVx1FTIFE0y7STmwVe8dxJ/TA/E3FlYyyLFVr2bjSIlXfTbr3fe+GWvxJmqbAS4hVdw1STsJezC3a+ghtL9T3W68sKpeEYA/qabdLyWPyJvicNdWySh/SpUksAoQkbW5DGIqqmYanrJSeW5LYYKbjuQNqaDcpee0Zpw/wbVyH07LfQ5vzRgx/wC3bCef+HuQzsz5bnhjLG+mUqRv093AebVlRJqLysbd+J2Wql1mzW8sJSuzcRLUgI6n/hpmUasKXMqKZbbX9Uk9L88LhwJn1LYyQRy2POKpufqAcANmNXF/Zzutu5jj4Z5mYG1ZL/mw3e5ggKDeP0yvM4UeNqaSJAoCoI5JN78wb2FwcOcop6mWKalmqaxFjI7I9gsatcc/XI3HLfn0xBvxFmw/82TGTcQ5qRvWSYX42vKf1RtYSmnpM2ZVmenaRCzKELKGsO8XNr9MLpsnzee4SmghF9hNNy+AwjkzvMpLaqyXl34Hkr6t/bqZT5scEtJh7TG1jN2ZQT5JmtSSa7N6ONTzRWNvlYDGTZNlsTv6VmoYMd9HM/G5xOtK7e07HzOOUO3IYPa1uYgsHOc/7KeL+jtNpCoZyo9qUkj5YZx8QZciBY1CqOQVLDEWx/BNgBvjEMcLNHdyTCFTbgCf/9k=)](https://retty.me/theme/100015101/)
 
2025/01/04 — 「 _東京都 焼肉_ 食べ放題」の話題のお店 1 店舗目は、シュラスコレストラン ALEGRIA
shinjuku。《新宿駅南口徒歩7分・代々木駅徒歩3分》 ◇新宿最多20種類の ...
 
‎[卸 新宿食肉センター 極 恵比寿店](https://retty.me/area/PRE13/ARE7/SUB701/100001575173/) ·
‎[07 完全個室完備!上質な黒毛...](https://retty.me/area/PRE13/ARE8/SUB802/100001716766/) ·
‎[かがやき](https://retty.me/area/PRE13/ARE9/SUB906/100000020368/)
 
# ページの操作
 
| 1|
[2](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=10&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAE)|
[3](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=20&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAG)|
[4](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=30&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAI)|
[5](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=40&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAK)|
[6](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=50&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAM)|
[7](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=60&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAO)|
[8](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=70&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAQ)|
[9](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=80&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAS)|
[10](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=90&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAU)|
[次へ](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=10&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8NMDegQIChAW) 
---|---|---|---|---|---|---|---|---|---|---|--- 
   
# フッターのリンク
 
日本
 
磐田市、静岡県 \- ソース: あなたの IP アドレス
 
\-
 
現在地を更新
 
現在地を更新できません詳細
 
現在地を更新中...
 
[ヘルプ](https://support.google.com/websearch/?p=ws_results_help&hl=ja&fg=1)フィードバックを送信[プライバシー](https://policies.google.com/privacy?hl=ja&fg=1)[規約](https://policies.google.com/terms?hl=ja&fg=1)
 
 
 
INFO     [agent]
<img draggable="false" class="emoji" alt="📍" src="https://s.w.org/images/core/emoji/11/svg/1f4cd.svg"> Step 3
INFO     [agent] <img draggable="false" class="emoji" alt="👍" src="https://s.w.org/images/core/emoji/11/svg/1f44d.svg"> Eval: Success - Extracted content successfully and identified several yakiniku restaurants in Tokyo.
INFO     [agent] <img draggable="false" class="emoji" alt="🧠" src="https://s.w.org/images/core/emoji/11/svg/1f9e0.svg"> Memory: Searched Google and extracted content for best yakiniku restaurants in Tokyo
INFO     [agent] <img draggable="false" class="emoji" alt="🎯" src="https://s.w.org/images/core/emoji/11/svg/1f3af.svg"> Next goal: Task completed, provide the results to the user.
INFO     [agent] <img draggable="false" class="emoji" alt="🛠️" src="https://s.w.org/images/core/emoji/11/svg/1f6e0.svg">  Action 1/1: {"done":{"text":"Based on the search results, here are some of the top-rated yakiniku restaurants in Tokyo:\\n\\n- **生粋**\\n- **海鮮ブッフェダイニング 銀座八芳 新宿店**\\n- **海鮮ブッフェダイニング 銀座八芳**\\n- **みゆき苑**\\n- **熟成和牛焼肉エイジング**\\n- **赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂**\\n- **炭火焼肉 ARATA 麻布十番 (アラタ)**\\n- **焼肉割烹ふみや/ホテルヒラリーズ赤坂**\\n- **肉亭ふたご iki 本郷三丁目店**\\n- **近江うし 焼肉 にくTATSU銀座店**\\n- **USHIGORO S. SHINJUKU**\\n- **焼肉 銀座コバウ 並木通り店**\\n- **焼肉 いのうえ 銀座店**\\n- **和牛焼肉ブラックホール 新宿三丁目店**\\n- **牛牛 西麻布 総本店**\\n- **焼肉 牛宮城別邸**\\n- **白 日寅**\\n- **牛若丸**\\n- **牛屋銀兵衛 銀座本店**\\n- **紀尾井町 くろげ**\\n- **ふらの和牛 よしうし神楽坂通り**\\n- **焼肉 青山外苑**\\n- **焼肉 の名門 天壇 銀座店**\\n- **シュラスコレストラン ALEGRIA shinjuku**\\n\\nThese restaurants were found in various articles and rankings, including Tabelog, Ozmall, Ikyu Restaurant, Hitosara, aumo, Retty, and NTA.co.jp. They offer a variety of experiences, from high-end dining to more casual and affordable options."}}
INFO     [agent] <img draggable="false" class="emoji" alt="📄" src="https://s.w.org/images/core/emoji/11/svg/1f4c4.svg"> Result: Based on the search results, here are some of the top-rated yakiniku restaurants in Tokyo:\n\n- **生粋**\n- **海鮮ブッフェダイニング 銀座八芳 新宿店**\n- **海鮮ブッフェダイニング 銀座八芳**\n- **みゆき苑**\n- **熟成和牛焼肉エイジング**\n- **赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂**\n- **炭火焼肉 ARATA 麻布十番 (アラタ)**\n- **焼肉割烹ふみや/ホテルヒラリーズ赤坂**\n- **肉亭ふたご iki 本郷三丁目店**\n- **近江うし 焼肉 にくTATSU銀座店**\n- **USHIGORO S. SHINJUKU**\n- **焼肉 銀座コバウ 並木通り店**\n- **焼肉 いのうえ 銀座店**\n- **和牛焼肉ブラックホール 新宿三丁目店**\n- **牛牛 西麻布 総本店**\n- **焼肉 牛宮城別邸**\n- **白 日寅**\n- **牛若丸**\n- **牛屋銀兵衛 銀座本店**\n- **紀尾井町 くろげ**\n- **ふらの和牛 よしうし神楽坂通り**\n- **焼肉 青山外苑**\n- **焼肉 の名門 天壇 銀座店**\n- **シュラスコレストラン ALEGRIA shinjuku**\n\nThese restaurants were found in various articles and rankings, including Tabelog, Ozmall, Ikyu Restaurant, Hitosara, aumo, Retty, and NTA.co.jp. They offer a variety of experiences, from high-end dining to more casual and affordable options.
INFO     [agent] <img draggable="false" class="emoji" alt="✅" src="https://s.w.org/images/core/emoji/11/svg/2705.svg"> Task completed successfully
INFO     [agent] Created GIF at agent_history.gif
AgentHistoryList(all_results=[ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="🔍" src="https://s.w.org/images/core/emoji/11/svg/1f50d.svg">  Searched for "東京都のおすすめの焼肉屋" in Google', error=None, include_in_memory=True), ActionResult(is_done=False, extracted_content='<img draggable="false" class="emoji" alt="📄" src="https://s.w.org/images/core/emoji/11/svg/1f4c4.svg">  Extracted page as markdown\n: # フィルタとトピック\n\n[すべて](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQIExAB)\n\n[地図](https://maps.google.com/maps?sca_esv=96376e12f89d18b9&output=search&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&entry=mc&ved=1t:200715&ictx=111)\n\n[画像](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=2&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQtKgLegQIEhAB)\n\n[フライト](/travel/flights?sca_esv=96376e12f89d18b9&output=search&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&ved=1t:200715&ictx=111)\n\nウェブ\n\n[金融](/finance?sca_esv=96376e12f89d18b9&output=search&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQIDRAB)\n\n[ショッピング](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=28&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&ved=1t:220175&ictx=111)\n\nもっと見る\n\n[書籍](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=36&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQINxAB)\n\n[ニュース](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&tbm=nws&source=lnms&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ0pQJegQIOBAB)\n\n[動画](/search?sca_esv=96376e12f89d18b9&q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&udm=7&fbs=AEQNm0CIH2THdKbu9eOr8VQgXZ7ugq08g1vIpyZMspU3rPU5VJakwgtDDjkaqPXyjEE2QwyK_IzmAZ3Ar7pvWh4znUWhZipBJjfwnICnFPoLghjtRzPXQ8h1VTwdPrm5aW4yHRCh0NAw97vpnFN2iULlR4rwwTIjmHzy9dUC_gblBo4pRV1m3lnrLz2e4ZhNuyc1IZ__G6zuDebWt0Tz4FRsfc7g3qz5RDH_J_cOQs5AeAfZ12WVtNI&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQtKgLegQINhAB)\n\nツール\n\nすべての言語\n\nすべての言語\n\n[日本語のページを検索](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=lr:lang_1ja&lr=lang_ja&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEAc)\n\n期間指定なし\n\n期間指定なし\n\n[ 1\n時間以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:h&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEAw)\n\n[ 24\n時間以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:d&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEA0)\n\n[ 1\n週間以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:w&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEA4)\n\n[ 1\nか月以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:m&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEA8)\n\n[ 1\n年以内](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=qdr:y&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEBA)\n\n期間を指定\n\n期間を指定\n\n開始日:終了日:\n\n選択\n\nすべての結果\n\nすべての結果\n\n[完全一致](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&source=lnt&tbs=li:1&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQpwV6BAgGEBg)\n\n詳細検索\n\n約 28,300,000 件 (0.34 秒)\n\nCtrl+Shift+X キーで選択\n\n![Google](https://fonts.gstatic.com/s/i/productlogos/googleg/v6/24px.svg)\n\n# 検索の設定\n\n[検索のカスタマイズオフ](/history/optout?hl=ja)\n\n[セーフサーチぼかし:\nオン](/safesearch?prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26udm%3D14&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8JsIegQICRAH)\n\n[言語\n(Language)日本語](/preferences?lang=1&hl=ja&prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26sca_esv%3D96376e12f89d18b9%26udm%3D14#languages)\n\n[ダークモードデバイスのデフォルト](/setprefs?hl=ja&prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26udm%3D14%26pccc%3D1&sig=0_8K7zV1dbxa-\nEUltH4l6nhPwm_es%3D&cs=2&sa=X&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQqsEHegQICRAJ&ictx=1)\n\n[その他の設定](/preferences?hl=ja&prev=https://www.google.com/search?q%3D%25E6%259D%25B1%25E4%25BA%25AC%25E9%2583%25BD%25E3%2581%25AE%25E3%2581%258A%25E3%2581%2599%25E3%2581%2599%25E3%2582%2581%25E3%2581%25AE%25E7%2584%25BC%25E8%2582%2589%25E5%25B1%258B%26sca_esv%3D96376e12f89d18b9%26udm%3D14)\n\nフィードバックを送信\n\n[ヘルプ](https://support.google.com/websearch/?p=dsrp_search_hc&hl=ja) •\n[プライバシー](https://policies.google.com/privacy?hl=ja&fg=1) •\n[利用規約](https://policies.google.com/terms?hl=ja&fg=1)\n\n# 検索結果\n\n[  \n東京で人気の焼肉\nランキングTOP20![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAMFBMVEX/qgD/qgD/qgD/qAD/yGH/wVP/sBr/tiz/463//fj/uj3/25v/8db/1Yj/6b3/znhud70+AAAAAnRSTlNP7zHHYRsAAADUSURBVHgBY2BUQgICDELIXEUGJRRAJFfZCImrbGwSjOAqq6V3thnBuVrRZ2ZkwWWVV++ds3vPYhjXavfN5z5z4FzTc/H/5vxIhnKVNeZsyn+dGwzlmp3smelcsugxhGvk2f5y1m9j411GxkCu8er5f+Z2+Dsr64WEKzEop7z7dza27/cuI6N9+5MYlPw6Xher3LftLVZeW5LMoBTxOthIOdnsRrCxSwhQVjUI7JfUG1ea7xsxAK0FO9sofd3TqyCuEsyPtcEooWFspERS0KEFO1qkAABve2HuBbgdYAAAAABJRU5ErkJggg==)食べログhttps://s.tabelog.com\n› 東京 › 東京 焼肉](https://s.tabelog.com/yakiniku/tokyo/rank)\n\n食べログ\n\nhttps://s.tabelog.com › 東京 › 東京 焼肉\n\n _東京 焼肉_ 予約人気ランキングTOP20 · 1生粋 · 2海鮮ブッフェダイニング 銀座八芳 新宿店 · 3海鮮ブッフェダイニング 銀座八芳 · 4\n_焼肉_ みゆき苑 · 5熟成和牛 _焼肉_ エイジング・ ...\n\n[  \n2025年最新 | 東京で人気の焼肉店ランキング20選!![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAdVBMVEXpNXDpMm7pMW/oK2rpMm3pPXPrUIDwg6T3t8z5ydj2sMfub5X2qcH4vND60N773ejrTX/zlbD72OT//////P3+9vnnH2XymrXqRHn85u3ykq7uaZLmEVz/+vz5xtf96vDtXovwdpzyiKvnF2DmAFTqRHbvc5gViI/PAAAA9klEQVR4AdWPhRXDMAxErcgO84WZ9x+xznNxhP7EdGLxt9DnZhH9WFjqRYJISimEUt8m23E9P2C2w8iNvDhx01csW1mOAiizqobBbaSxScsH2i7W1t4zNi9lY6Mq1LIz+AXGcIrqbka7sDBUwQx4zBNQhKka1rIIqlcztzquQ5Nr47bv/Yxtf3XKSwLMYndmoEz3vkV9ML+MWQl4FfsAot3OMamz38wkxPUIuEd/xys1AckUz63NJrJvteDEQHtVrpmkqJlMQ1Tf86PwgsHR+jgWiBsWBimcqU0ip2G2t/W6rtV5jamxWCglme4GDFJ8YRFZ4s95ABisEtheqPsPAAAAAElFTkSuQmCC)オズモールhttps://www.ozmall.co.jp › ... › 肉料理 › 焼肉](https://www.ozmall.co.jp/restaurant/tokyo/yakiniku/rankreview/)\n\nオズモール\n\nhttps://www.ozmall.co.jp › ... › 肉料理 › 焼肉\n\n1位 赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂 · 2位 炭火 _焼肉_ ARATA 麻布十番 (アラタ) · 3位 _焼肉_\n割烹ふみや/ホテルヒラリーズ赤坂 · 4位 肉亭ふたご iki 本郷三丁目店 · 5位 ...\n\n[  \n東京都の焼肉が楽しめるおすすめレストラン![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJFBMVEX////////QxKj08evGuJTs6N3Z0LqnkVGsl12vm2Xi28q5qHoZbkxwAAAAAXRSTlP484CiSAAAAJRJREFUeAFjQAOMgkhAgLpcJSBQFnQWTYRwKzo6OkqFC8UcIdzKmTNntoo5ijlmIWSlF1s4m4K5U1JDF201XxjuBVFsmqS0UHX1Qk8nuFHTgYq3OU9EGCW9RMzRA84tlVYEmg3mzt69e/dWkYVijrjcHAjmiIK5XmqqylqL1BatSgFzHZVXuWklKTotVUHTS10uKgAA8rg6ieL/ga0AAAAASUVORK5CYII=)一休レストランhttps://restaurant.ikyu.com\n› ... › 東京都 焼肉](https://restaurant.ikyu.com/area/tokyo/80001/)\n\n一休レストラン\n\nhttps://restaurant.ikyu.com › ... › 東京都 焼肉\n\n _東京都_ にある. _焼肉_ が楽しめる _おすすめ_ レストラン · 近江うし _焼肉_ にくTATSU銀座店 · USHIGORO S.\nSHINJUKU · _焼肉_ 銀座コバウ 並木通り店 · _焼肉_ いのうえ 銀座店 · 銀座 ...\n\n\u200e[焼肉 ディナー](https://restaurant.ikyu.com/area/tokyo/80001/05/) ·\n\u200e[デート](https://restaurant.ikyu.com/area/tokyo/80001/t-scene368/) · \u200e[焼肉\nランチ](https://restaurant.ikyu.com/area/tokyo/80001/03/) · \u200e[池袋・目白\n焼肉](https://restaurant.ikyu.com/area/tokyo/001/80001/)\n\n[  \n【東京】おすすめの焼肉店20選!本当に美味しい焼肉まとめ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAMFBMVEX/qgD/qgD/qgD/qAD/yGH/wVP/sBr/tiz/463//fj/uj3/25v/8db/1Yj/6b3/znhud70+AAAAAnRSTlNP7zHHYRsAAADUSURBVHgBY2BUQgICDELIXEUGJRRAJFfZCImrbGwSjOAqq6V3thnBuVrRZ2ZkwWWVV++ds3vPYhjXavfN5z5z4FzTc/H/5vxIhnKVNeZsyn+dGwzlmp3smelcsugxhGvk2f5y1m9j411GxkCu8er5f+Z2+Dsr64WEKzEop7z7dza27/cuI6N9+5MYlPw6Xher3LftLVZeW5LMoBTxOthIOdnsRrCxSwhQVjUI7JfUG1ea7xsxAK0FO9sofd3TqyCuEsyPtcEooWFspERS0KEFO1qkAABve2HuBbgdYAAAAABJRU5ErkJggg==)食べログhttps://tabelog.com\n› ... › 東京都 › 東京都の焼肉](https://tabelog.com/matome/17238/)\n\n食べログ\n\nhttps://tabelog.com › ... › 東京都 › 東京都の焼肉\n\n2020/12/18 — 「和牛 _焼肉_ ブラックホール 新宿三丁目店」はJR新宿駅から徒歩4分、高山ランド会館の8階にある _焼肉_ 専門店。\n店内は綺麗で清潔感があり、デートに _おすすめ_ と ...\n\n\u200e[東京都渋谷区にあるおすすめの...](https://tabelog.com/matome/17238/#5-headline) ·\n\u200e[東京都新宿区にあるおすすめの...](https://tabelog.com/matome/17238/#12-headline)\n\n[  \n東京都の焼肉おすすめグルメランキング\nトップ50![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAHlBMVEX////w8PDx8fGqd0+jajrg0cfQuKjq496xhWPAnYUEGMXYAAAAAnRSTlP//Sa7vusAAADDSURBVDiNhZJRAoQgCAUBAen+Fy7XNDBy30c/0AyoAN/Blk2dkGjbAFcDbQkXYq+gPwT8IlB9RlgIaiagzCzwW2IlKJfC7VN4jBAJZaYhMG5RzdQ1UAP4c6hcXFi7wREOXy96L+kIscH6RXjCosA+ot9CLDhoJSwaG0uEc5BHwzUjAAfHmxBWWc8hcSQE52DKCI+DJZ1hOlgpJ8DBLUe9q9mbFKk0k7xJX8sIhOMScsI9eG/D95ucXGfxDRj0w+J+z3MCaXUFi2zNZ3MAAAAASUVORK5CYII=)ヒトサラhttps://hitosara.com\n› 全国 焼肉ランキング](https://hitosara.com/ranking/tokyo/GC0501/)\n\nヒトサラ\n\nhttps://hitosara.com › 全国 焼肉ランキング\n\n _東京都_ の _焼肉_ のアクセスランキング · プレミアム掲載店. 1. 竹内 亮. 牛牛 西麻布 総本店 · プレミアム掲載店. 2. _焼肉_\n牛宮城別邸 · プレミアム掲載店. 3. 白 日寅.\n\n[  \n【保存版】東京都内でおすすめのおいしい焼肉24選!コスパ\n...![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAZlBMVEX61UH71kH/3ELvzD//2UJFPiZ9bS1uYCv/4kRpXCqfiTIAAB/dvTy7oDcKEiEuKyNzZCz/3UPBpjjRszqIdS8AAB2ljjMADSG+ozc8NyX/6UWymTVlWCpXTSj/5UTbuzzqyD/20kA7Z0zjAAAAiklEQVR4Ae2PAxbEQAxAJ9hqUNv3P2SNh9UB+odxIv7hAeCzDYlQMAsGwJXlt14b/LJs23E9Rypt/FcgdRhJGe1WiL0kDYPMyVVRVnlcN6EkkocxjSnFIKsWY9sZtRoZDiO3TZNyJK20169O9nXrZFLWR1EcxgGYaBAjwXbxOPI9CpzXujZBPPzBDPdDBy4MqoUcAAAAAElFTkSuQmCC)aumohttps://aumo.jp\n› 関東 › 東京](https://aumo.jp/articles/46763)\n\naumo\n\nhttps://aumo.jp › 関東 › 東京\n\n2024/10/18 —\nまず紹介するのは『牛若丸』。明るく清潔感のある店内には、少人数テーブル個室、掘りごたつ席などを完備しており、多彩なシーンに対応します。\n\n[  \n【予約しないと入れない!】東京都で超人気、予約必須の焼肉30店![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAxlBMVEX/sBj/rhT/rhX/rRP/rBP/qhTOkBHblhKidw+qeA/UkxP/qRWufhA8MQf/shbBhhCXcQ65gRHwpBSRZg11VgoAAADtoBKKYgz/phWkcA23ew7lmhQbFQOCXAv/pRTPjBPGhxIkHgWJWwzakBHDfxEfGgP/oRUmGANRRgqXZA3/nhVjUQp3WwzShxJHMgbJfBD/mhOgZg+wcg64cRBVOQcOCQF/Ugqtbg//lRPmjxQsGQT/lRRwSQrpjRL/lBX/kxX/khL/kxjUxnrGAAABbElEQVR4AXzMhWLCMBCA4asEOxwC1WyVZevNwhSH93+qXeYGfzX5ksDxnIMxup7L8ft7nn2s2Xx+fv5wLnj+/3l8gy98Pt4Tv4KaJ3wQot5oNloChf+RQPTanS4KQNHrN/sDAa3BR0Mfh6ORgwiIPd456I7lVzW/OZk6AUKAg0bYiGL5raSbdqeeCiAIeu2Tdu9Uys6kHsenmdVu7qY+o1JFJMqC8exEhGEweUMvFUqB0jiejAWjzB0pR91z/oPUTVEr0FrHF4V6RVfK0pecWylGDZp0cVmo0qJSgRpbFEWUB/SGV9f6FTEt8cYiBnmlGInoenr7jlLqwmKgGQ0BGbqevWHlJ7JC+6d0nmtGY+j27p7s1MPskVc8WVR5pY1hNLflsyH5rSfinWRxbu6vZ8YsHpYf5TSnvKK5gdXcXD/c8hKjPzLzOa3XNF8xzhnmv9ts5ha3K3vz8yuege2RYLs7GOP+YFt4mSMeAABP61pEcel0wAAAAABJRU5ErkJggg==)Rettyhttps://retty.me\n› 東京都 予約必須](https://retty.me/theme/101045202/)\n\nRetty\n\nhttps://retty.me › 東京都 予約必須\n\n超人気焼肉店「牛蔵」。\n都心の焼肉店で1人前3000円くらいする部位が1000円以下で提供されているので、お腹いっぱい食べて、飲んでも大体1人3000円くらいというコスパの良\n...\n\n[  \n女子会や記念日デートにも!東京都内のおすすめ焼肉店10選![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADc0lEQVR4AcWXA5AdQRRFN+UKvhnbtm3btrm2Y9u2bacQ27bKXN/c3XrLmawn+VXnj/u8drdLej+jMTSePERHypMhZAO5RX6RSOGX3NtAhsi7Ovk2XUdG8vykAVlA3pAoEkNiSRyBECf3YuSdN/JNA0kjW/JyxJ98FgGySJx86y9pZU4sNCUnpHiRQyIlraaSdobyDuSuaq6zT5yk2UEc6eb8LoFG3E1REgp5OXKSQEvEUU6cSQHkIwEkVhOpKdV1rLjypQygPvmkhdziCIK1cGCqe+JqkBiAjizQQm5izgtV9EHxBu6KZ+LUJdb9a00CsISgTNsZqDF6LIwGxfM3pLyLDJ1RmgRgDUHlfpPQOHCwIgBxDokPYCOJSS8hA9ETnTGMEEMYCujDodOHwcDz9Eqg2tDxaLGwnyIAcW6MD+AOiU1PXtwYhF5mD4y3zsKkgjMwpd4ozOzVD2O7DkLtirPgtAeqtvxitT3R0HcoWi7pqwhAnLddZCaLU0RPSpiC0Njsg4mWmdhnH4tjztFYVWQ8VnTsjdOhdXF3dUXMG9cRLWtPSRWEyRwCW5HAhLrvsK27agDi/O2iOt6LvCdzvdo2AfccQ3HBMRJzbFPQnAHVKu0O/6Hd8XFnCXzdUxQLJnRAHZaEnlXCnMNWNAClW8xC8/n90flAZzRSaQNCpGoABjLa4oq9zPUD51BcpHwUr6ub/WE3hsDCum1TdxK2ezXD971F8XprKXgN6olChQLgLOWX0PJbLOqHTru7JjTAUk1d/zpRqVaBgay3T8BD5vy4fTTGUF7JFAAr5UklVNgPXRqPw3bvpni2sSxuLKkKtynd0HjSCDQOHYT2W3qggfdQlG41UwYi9SpQbYQGcpTiK8z5TOsMlDYFwqKSg0KOALSrPxFTevWH35AeGNJ3MKr3nIjKA8mASShezx3WQqpyiPOOajc0kIP2MVhsm4Q6Jr90+7rewG7JLllAx26pY7fUE52g2kUV3VA5EBmIj3Ua+pvd4TAGazUrJg1E5dWG4rIs9qLGIA3EiqFYfTLSE4M2YsVkFE8DxXSsLTIda78gEVQXJPmJYkl2mkBjTqVakv3HRWm6y/J7GizL75EOmd0bNCMnc3FjclLSFHnmt2YBubA1C5C0/tnmNFreXZjtzWkG2/NNMoH9IlHCL7m3Kavb8z9tAqO//YHlTAAAAABJRU5ErkJggg==)nta.co.jphttps://www.nta.co.jp\n› ... › グルメ](https://www.nta.co.jp/media/tripa/articles/xznrj)\n\nnta.co.jp\n\nhttps://www.nta.co.jp › ... › グルメ\n\n2024/10/24 — 女子会や記念日デートにも! _東京_ 都内の _おすすめ焼肉店_ 10選 · 牛屋銀兵衛 銀座本店 · 紀尾井町 くろげ ·\nふらの和牛 よしうし神楽坂通り · _焼肉_ 青山外苑.\n\n[  \n人生で1度は行くべき\n東京焼肉12選![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcElEQVR4AWP4//8/RZh6BgCZAkDsAMUNWDFCXgDFACCV8J/B+D8pGKwHRAKRAUyQDEMMQAYEUGBAAsiABpwKHjz4/9/BAZ8BDXgNgIMNGyg04MABkg1AeCEgAK8XKA5EiqORooSELykXEJuUBz43AgAIA1ZhBoG9vwAAAABJRU5ErkJggg==)YouTube\n· FUJIWARA LIFE視聴回数: 3.7万 回以上 · 8\nか月前](https://www.youtube.com/watch?v=Yg5GZjcvlLg)\n\nYouTube · FUJIWARA LIFE\n\n視聴回数: 3.7万 回以上 · 8 か月前\n\n東京の _オススメ_ な _焼肉屋_ さん12店ランチで紹介致しました!もちろん飲みや ... 4._焼肉_ の名門 天壇 銀座店 _東京都_\n中央区銀座5-13-19 ...\n\n[  \n【2025年最新!】東京都の焼肉 食べ放題で今年人気の\n...![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAxlBMVEX/sBj/rhT/rhX/rRP/rBP/qhTOkBHblhKidw+qeA/UkxP/qRWufhA8MQf/shbBhhCXcQ65gRHwpBSRZg11VgoAAADtoBKKYgz/phWkcA23ew7lmhQbFQOCXAv/pRTPjBPGhxIkHgWJWwzakBHDfxEfGgP/oRUmGANRRgqXZA3/nhVjUQp3WwzShxJHMgbJfBD/mhOgZg+wcg64cRBVOQcOCQF/Ugqtbg//lRPmjxQsGQT/lRRwSQrpjRL/lBX/kxX/khL/kxjUxnrGAAABbElEQVR4AXzMhWLCMBCA4asEOxwC1WyVZevNwhSH93+qXeYGfzX5ksDxnIMxup7L8ft7nn2s2Xx+fv5wLnj+/3l8gy98Pt4Tv4KaJ3wQot5oNloChf+RQPTanS4KQNHrN/sDAa3BR0Mfh6ORgwiIPd456I7lVzW/OZk6AUKAg0bYiGL5raSbdqeeCiAIeu2Tdu9Uys6kHsenmdVu7qY+o1JFJMqC8exEhGEweUMvFUqB0jiejAWjzB0pR91z/oPUTVEr0FrHF4V6RVfK0pecWylGDZp0cVmo0qJSgRpbFEWUB/SGV9f6FTEt8cYiBnmlGInoenr7jlLqwmKgGQ0BGbqevWHlJ7JC+6d0nmtGY+j27p7s1MPskVc8WVR5pY1hNLflsyH5rSfinWRxbu6vZ8YsHpYf5TSnvKK5gdXcXD/c8hKjPzLzOa3XNF8xzhnmv9ts5ha3K3vz8yuege2RYLs7GOP+YFt4mSMeAABP61pEcel0wAAAAABJRU5ErkJggg==)Rettyhttps://retty.me](https://retty.me/theme/100015101/)\n\nRetty\n\nhttps://retty.me\n\n[![retty.me\nからの東京都のおすすめの焼肉屋](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5OjcBCgoKDQwNGg8PGjclHyU3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N//AABEIAFwAXAMBIgACEQEDEQH/xAAbAAADAQADAQAAAAAAAAAAAAAEBQYDAQIHAP/EAD8QAAIBAgQDBAgEAgkFAAAAAAECAwQRAAUSIQYxQRNRYXEUIjJCgZGhwSNSsdEH8BYkM2KDkqKy4RVDRGNy/8QAGQEAAwEBAQAAAAAAAAAAAAAAAgMEAQUA/8QAKREAAgEDBAEDAwUAAAAAAAAAAQIAAxEhBBIxQRMiUaEjMoEUM1Jhcf/aAAwDAQACEQMRAD8A87CY7aMUx4RqxG7JUU0ri2mNX9sW6HofA4zThHPGgaYZe2lNyNa3+V74m3XlZW3MnwmO4jxsYypKspDA2IIsRjkLgSYQEy0Y1ip3mkSKJC8jmyqo3JxpHC8siRxozuxsqqLknF3QZUeF6JaqSJJMylGzNusI7h4+OMv3GIhdgq8mYUGRZRk3ZRZzT+l1sihnX3Ix3eJwxny7IJQBBksIv/eI/THWB4q8mTMFvMwsNSaPp1xvHQyB9cExtyA22wvyG+JeNJTUDdz8RUeGsreYlqN1XlYTMMFRcI8PTNpl9LpWPImUEH44ZGnqFIY6b+9qOxOBMwWoq5EVf7NTuV9443faeOmR8cQSq4HySJSY6+ra35NJ+2FjcJ0F/Vq6oD+8i3/XFJMKiFB+GgiXmzMBYYFNQt7aCSOdhf7Y27NwIo0qFIfUMz4JyiqSl9LzMGniZLtA9maU/mI92/8ANsUtNXRRfgRKOyvrUC/XrvgRZxFFFTOQZWjUOF2AsLEfPGkfaGkMIDALpYbb4WzNf0xSBCvrmWd8NUOeKZAOxqiNplHP/wCh1x55m+R12TzdnWQnST6kq7o/kftj1eimKRkSjTfkTj6pq8skgkizCameJhYo5BvigWZbnmSNdGsOJO8O8PNk1E1dNEGzEpdVYX7EEcvPvwLTVVbWVRWe8gvcRlhdfGxxznXEjZfIqZZmz1MNiArbtF3DUfaHnv44nF43zUM7tDT1CopZpDTg2UcyT3C4+YxjLfAlOn1ApAll57lw/o8q9jLpYrsQOnhjiKl9pA5VQ3LriKTjWIvpnyai1cz+GU/Q4bZfxClZKJYsjQ6D60vbuEXzN7fDAeOPGtS3fxKCtCwxdklR6533328cD6EpKV+1niMhU6WRbBfG++E2ecVZfStZIFes/JExffzOJc1VRm9Rqzmeeno+sNOPXbwudh9fLBimBloqpriV2042zXiNJqhKagifMKvkiKCyg99hz8/rjtFwnxNmCCpqsxSkkb/src6R8NvlfDDKsz4byuAxUENXTBjdmGhmbzJFzhkvEeT6R/Xaof4a/vjS56ikSkcu2fzJP+l1dUSuKZKTtGO4ijMjH5A4LWbimrUE+lIh6tGIh/rYfpg0cQZfDTTGjKCOA6SkCaACeQG2+FVRxQaii7WipS02sq6MC5RR7x8MTeVj9qwxQ/k07VFBmTK3pGawRsRsXqtRB8lU3+eF65THrvU8Qdoe6Omdv1IwNWZ7PVQwimKwyNftGsPgBfGFdU1pkp0DyQuQAxUEXa/Pb9MMXyHnE81OkASCTH8NBlwUSPPPOqHdZIQit9d8NshzmcpUQZVRq3ZesFuqI1yB4b7jkN8By0V6V6Iu80zaV7QKVHmR0v3YTUEj5XI0NQeylST3ja56W8MajkA+8qfRoWRSbD3/ALjLiasyM1Jevy1o6xWMkqIdPas2/rkc/geuF0VRVZ2CJKkZbQR2ASGMki/LYcuWAeJp4ZWFzeqLamOnexv1w1yygkNNfS2l47Ppa577g9SNj8sE1Q7AeLxK6IGsyXuFgw4QjlN6XO6dj3NEyffHDcF56ovTzxTj/wBU5v8AW2FFfXV9NXGNpCrQm1h7LeNu488NKDjKspMzikhIjpdQDLbe3U37+eM+uOMyVhQuRmBVOU8Q0gJlgrbDqhLj6XwC1RXIxV55VYcwTY49Kyr+Ii12cminpImpiSsc7+9bvFha9sEx8ccKVQMksYjN7WeNtx38uWM8zjlYGxPeeYSwVlGQSSmruOxw0yGkkllFREoLW53sFIP3wPV1atGO0VAO47E/fDrhSpgSnN2QDWGsOgNx9sDVZvHe06empUxXsDiKczSCnzpjHtEwDGw9m43+u+KWgjpK6mT0jdltaQbHwP8APdhFm+Sdhlc+aipUzJUmN4NO4BJswN/tgPKK6WKsELalBQrpPfzGBZfJTup4h0ay06zIwsGMpZagiomLSO5RrRk9Tfp3Dngienp8wghjr4w8ob1n5MoPT74CRNUc1RJuga0VveJ3+g543qpeypIkVvW06mv++BXGZ0HKuAvU+i4Rp/8AqWn0uRglnUaAdQvfnfuxQuaaMNBCFvGbbbW2Hy64SZXUzpA7xuwJQg94A3xhNVGOYOXZVkHrnqOn/OCLHuJXToLgGTXFXZy1sc4uA6su3LZj+4wk0L7rn4i2G2fNojSNWugkJB+AvhZ6LVC16eZdW4uhF/LFdL7BOHrP32xPk12MSEWci4A3wQkixArLShm6nVb7YC1MrDmCN8birktu2CZTJ1Kib5dQSVcwEcEkiarGTQbA4p6HhiSKX+sNOq6NkQaNR72v0t1wmyjMqnK6uMUrnsGcNp/OCNt7bbEc9uuKyj4oyyWJ1nndJWJIQqbKLeWx8b9MC946iUGe4KvDqVkckc9XNHGHBKIb6reB5eB8DgSbhOVX7TK9b6H0t2vq2B63/X6YdtxXlcQ0qGk0n2VQkNt+Y+WBYeKqesrOyfTTREWQyHdz5jl0wuxAxHDYz+rENFPCKdKSL8QRgDUNgT8sD592NPTMI1DO4Chhy23/AHwZO3aU5ZiveqDbCmWiqamAlEdoxtqtffE5PU64GAbzpQdo0MCqrDtLgEdcYVcLxBo2FmucHxRPTUKK5IFtQ253wHmUyz2l2VSmyjpbb7Y9cTfUOZjlro1fFTPBC7j1kldQShF+Xn+2HcuV9nUyS1CyuhJvMiuVYnvudreWMeHAuVx1FTIFE0y7STmwVe8dxJ/TA/E3FlYyyLFVr2bjSIlXfTbr3fe+GWvxJmqbAS4hVdw1STsJezC3a+ghtL9T3W68sKpeEYA/qabdLyWPyJvicNdWySh/SpUksAoQkbW5DGIqqmYanrJSeW5LYYKbjuQNqaDcpee0Zpw/wbVyH07LfQ5vzRgx/wC3bCef+HuQzsz5bnhjLG+mUqRv093AebVlRJqLysbd+J2Wql1mzW8sJSuzcRLUgI6n/hpmUasKXMqKZbbX9Uk9L88LhwJn1LYyQRy2POKpufqAcANmNXF/Zzutu5jj4Z5mYG1ZL/mw3e5ggKDeP0yvM4UeNqaSJAoCoI5JN78wb2FwcOcop6mWKalmqaxFjI7I9gsatcc/XI3HLfn0xBvxFmw/82TGTcQ5qRvWSYX42vKf1RtYSmnpM2ZVmenaRCzKELKGsO8XNr9MLpsnzee4SmghF9hNNy+AwjkzvMpLaqyXl34Hkr6t/bqZT5scEtJh7TG1jN2ZQT5JmtSSa7N6ONTzRWNvlYDGTZNlsTv6VmoYMd9HM/G5xOtK7e07HzOOUO3IYPa1uYgsHOc/7KeL+jtNpCoZyo9qUkj5YZx8QZciBY1CqOQVLDEWx/BNgBvjEMcLNHdyTCFTbgCf/9k=)](https://retty.me/theme/100015101/)\n\n2025/01/04 — 「 _東京都 焼肉_ 食べ放題」の話題のお店 1 店舗目は、シュラスコレストラン ALEGRIA\nshinjuku。《新宿駅南口徒歩7分・代々木駅徒歩3分》 ◇新宿最多20種類の ...\n\n\u200e[卸 新宿食肉センター 極 恵比寿店](https://retty.me/area/PRE13/ARE7/SUB701/100001575173/) ·\n\u200e[07 完全個室完備!上質な黒毛...](https://retty.me/area/PRE13/ARE8/SUB802/100001716766/) ·\n\u200e[かがやき](https://retty.me/area/PRE13/ARE9/SUB906/100000020368/)\n\n# ページの操作\n\n| 1|\n[2](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=10&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAE)|\n[3](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=20&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAG)|\n[4](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=30&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAI)|\n[5](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=40&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAK)|\n[6](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=50&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAM)|\n[7](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=60&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAO)|\n[8](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=70&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAQ)|\n[9](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=80&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAS)|\n[10](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=90&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8tMDegQIChAU)|\n[次へ](/search?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E7%84%BC%E8%82%89%E5%B1%8B&sca_esv=96376e12f89d18b9&udm=14&ei=-WaNZ_nXLfHi2roP796XkQM&start=10&sa=N&sstk=ATObxK5bGWk4f1jMr7HZgQZ_889oPUieYeSpIuRHaSB7fgG-1LRA6vRKqX4deOJgUaxrfPugf8-GZKzSeNdJZXWpZSFJSUjfN9FfmA&ved=2ahUKEwi5uKGE1oKLAxVxsVYBHW_vJTIQ8NMDegQIChAW)  \n---|---|---|---|---|---|---|---|---|---|---|---  \n  \n# フッターのリンク\n\n日本\n\n磐田市、静岡県 \\- ソース: あなたの IP アドレス\n\n\\-\n\n現在地を更新\n\n現在地を更新できません詳細\n\n現在地を更新中...\n\n[ヘルプ](https://support.google.com/websearch/?p=ws_results_help&hl=ja&fg=1)フィードバックを送信[プライバシー](https://policies.google.com/privacy?hl=ja&fg=1)[規約](https://policies.google.com/terms?hl=ja&fg=1)\n\n\n', error=None, include_in_memory=False), ActionResult(is_done=True, extracted_content='Based on the search results, here are some of the top-rated yakiniku restaurants in Tokyo:\\n\\n- **生粋**\\n- **海鮮ブッフェダイニング 銀座八芳 新宿店**\\n- **海鮮ブッフェダイニング 銀座八芳**\\n- **みゆき苑**\\n- **熟成和牛焼肉エイジング**\\n- **赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂**\\n- **炭火焼肉 ARATA 麻布十番 (アラタ)**\\n- **焼肉割烹ふみや/ホテルヒラリーズ赤坂**\\n- **肉亭ふたご iki 本郷三丁目店**\\n- **近江うし 焼肉 にくTATSU銀座店**\\n- **USHIGORO S. SHINJUKU**\\n- **焼肉 銀座コバウ 並木通り店**\\n- **焼肉 いのうえ 銀座店**\\n- **和牛焼肉ブラックホール 新宿三丁目店**\\n- **牛牛 西麻布 総本店**\\n- **焼肉 牛宮城別邸**\\n- **白 日寅**\\n- **牛若丸**\\n- **牛屋銀兵衛 銀座本店**\\n- **紀尾井町 くろげ**\\n- **ふらの和牛 よしうし神楽坂通り**\\n- **焼肉 青山外苑**\\n- **焼肉 の名門 天壇 銀座店**\\n- **シュラスコレストラン ALEGRIA shinjuku**\\n\\nThese restaurants were found in various articles and rankings, including Tabelog, Ozmall, Ikyu Restaurant, Hitosara, aumo, Retty, and NTA.co.jp. They offer a variety of experiences, from high-end dining to more casual and affordable options.', error=None, include_in_memory=False)], all_model_outputs=[{'search_google': {'query': '東京都のおすすめの焼肉屋'}}, {'extract_content': {'include_links': True}}, {'done': {'text': 'Based on the search results, here are some of the top-rated yakiniku restaurants in Tokyo:\\n\\n- **生粋**\\n- **海鮮ブッフェダイニング 銀座八芳 新宿店**\\n- **海鮮ブッフェダイニング 銀座八芳**\\n- **みゆき苑**\\n- **熟成和牛焼肉エイジング**\\n- **赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂**\\n- **炭火焼肉 ARATA 麻布十番 (アラタ)**\\n- **焼肉割烹ふみや/ホテルヒラリーズ赤坂**\\n- **肉亭ふたご iki 本郷三丁目店**\\n- **近江うし 焼肉 にくTATSU銀座店**\\n- **USHIGORO S. SHINJUKU**\\n- **焼肉 銀座コバウ 並木通り店**\\n- **焼肉 いのうえ 銀座店**\\n- **和牛焼肉ブラックホール 新宿三丁目店**\\n- **牛牛 西麻布 総本店**\\n- **焼肉 牛宮城別邸**\\n- **白 日寅**\\n- **牛若丸**\\n- **牛屋銀兵衛 銀座本店**\\n- **紀尾井町 くろげ**\\n- **ふらの和牛 よしうし神楽坂通り**\\n- **焼肉 青山外苑**\\n- **焼肉 の名門 天壇 銀座店**\\n- **シュラスコレストラン ALEGRIA shinjuku**\\n\\nThese restaurants were found in various articles and rankings, including Tabelog, Ozmall, Ikyu Restaurant, Hitosara, aumo, Retty, and NTA.co.jp. They offer a variety of experiences, from high-end dining to more casual and affordable options.'}}]

となった
GPTで要約すると
ご提供いただいた実行結果をもとに、東京都内でおすすめの焼肉店がリストアップされています。以下がそのまとめです:

### 東京都内のおすすめ焼肉店
1. **生粋**
2. **海鮮ブッフェダイニング 銀座八芳 新宿店**
3. **みゆき苑**
4. **熟成和牛焼肉エイジング**
5. **赤坂鉄板焼 ヒレ/ホテルヒラリーズ赤坂**
6. **炭火焼肉 ARATA 麻布十番 (アラタ)**
7. **焼肉割烹ふみや/ホテルヒラリーズ赤坂**
8. **肉亭ふたご iki 本郷三丁目店**
9. **近江うし 焼肉 にくTATSU銀座店**
10. **USHIGORO S. SHINJUKU**
11. **焼肉 銀座コバウ 並木通り店**
12. **焼肉 いのうえ 銀座店**
13. **和牛焼肉ブラックホール 新宿三丁目店**
14. **牛牛 西麻布 総本店**
15. **焼肉 牛宮城別邸**
16. **白 日寅**
17. **牛若丸**
18. **牛屋銀兵衛 銀座本店**
19. **紀尾井町 くろげ**
20. **ふらの和牛 よしうし神楽坂通り**
21. **焼肉 青山外苑**
22. **焼肉 の名門 天壇 銀座店**
23. **シュラスコレストラン ALEGRIA shinjuku**

### 情報元
この情報は以下のサイトを参照してまとめられました:
– 食べログ
– Ozmall
– 一休レストラン
– ヒトサラ
– aumo
– Retty
– NTA.co.jp

高級志向の店舗からカジュアルでコスパの良い店舗まで幅広く含まれています。特に「食べログ」や「Retty」ではユーザー評価が高い店舗がランキングされており、信頼性があります。

もし特定の店舗やエリアでさらに詳細な情報が必要でしたら、お知らせください!

とりあえず日本語でも動作する
なので
Browser-use で gemini2.0 で日本語でも動作するなら
音声入力して日本語で動作も可能だし
ダメならdeepL API で翻訳して実行すれば問題ない

geminiでbrowser-useが使えるのは判明した

Gemini で自動再試行
によれば
Gemini 2.0 Flash Experimental の無料枠のレート制限は
2025 年 1 月 13 日時点
* 1 分あたりのリクエスト数: 10
* 1 日あたりのリクエスト数: 1,500
仕様上、1 日あたりのリクエスト数を超過していなければ、最大で 1 分程度待てば解消
とのことなので
色々試してみる

m1macbookAir にpython 3.11をインストール

1
pip install browser-use

を実行したら

1
2
3
ERROR: Ignored the following versions that require a different python version: 0.1.0 Requires-Python >=3.11; 0.1.1 Requires-Python >=3.11; 0.1.10 Requires-Python >=3.11; 0.1.11 Requires-Python >=3.11; 0.1.12 Requires-Python >=3.11; 0.1.13 Requires-Python >=3.11; 0.1.14 Requires-Python >=3.11; 0.1.15 Requires-Python >=3.11; 0.1.16 Requires-Python >=3.11; 0.1.17 Requires-Python >=3.11; 0.1.18 Requires-Python >=3.11; 0.1.19 Requires-Python >=3.11; 0.1.20 Requires-Python >=3.11; 0.1.21 Requires-Python >=3.11; 0.1.22 Requires-Python >=3.11; 0.1.23 Requires-Python >=3.11; 0.1.3 Requires-Python >=3.11; 0.1.4 Requires-Python >=3.11; 0.1.5 Requires-Python >=3.11; 0.1.6 Requires-Python >=3.11; 0.1.7 Requires-Python >=3.11; 0.1.8 Requires-Python >=3.11
ERROR: Could not find a version that satisfies the requirement browser-use (from versions: none)
ERROR: No matching distribution found for browser-use

となった

1
2
python3 --version
Python 3.10.6

これが原因なので
バージョンを変える

過去ログを見たら
とりあえず python 3.10 を入れる

今の環境を python -V
で調べたら3.8.12だった

1
pyenv install 3.10.6

で参考サイトと同じバージョンをインストール

1
pyenv global 3.10.6

で使用するバージョンを変更

となっていたので
Pyenvを使い更新

1
pyenv install 3.11

しかし

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BUILD FAILED (OS X 15.2 using python-build 20180424)
 
Inspect or clean up the working tree at /var/folders/db/tkl5w9dd3kn3h53ctyl4s6180000gn/T/python-build.20250115025749.25266
Results logged to /var/folders/db/tkl5w9dd3kn3h53ctyl4s6180000gn/T/python-build.20250115025749.25266.log
 
Last 10 log lines:
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
  "_libintl_textdomain", referenced from:
      __locale_textdomain in _localemodule.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Programs/_freeze_module] Error 1
make: *** Waiting for unfinished jobs....
2 warnings generated.

となる

1
brew update

しても変わらない

chatGPTでは

1
brew install openssl readline xz zlib gettext

っていうけど

1
2
3
4
5
6
7
8
9
10
11
12
==> Downloading https://formulae.brew.sh/api/formula.jws.json
 
==> Downloading https://formulae.brew.sh/api/cask.jws.json
 
openssl@3 3.3.1 is already installed but outdated (so it will be upgraded).
readline  is already installed but outdated (so it will be upgraded).
xz 5.6.2 is already installed but outdated (so it will be upgraded).
gettext 0.22.5 is already installed but outdated (so it will be upgraded).
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
To rerun under ARM use:
    arch -arm64 brew install ...
To install under x86_64, install Homebrew into /usr/local.

となる

このためエラーログで検索する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
python-build: use zlib from xcode sdk
 
BUILD FAILED (OS X 15.2 using python-build 20180424)
 
Inspect or clean up the working tree at /var/folders/db/tkl5w9dd3kn3h53ctyl4s6180000gn/T/python-build.20250115030607.37878
Results logged to /var/folders/db/tkl5w9dd3kn3h53ctyl4s6180000gn/T/python-build.20250115030607.37878.log
 
Last 10 log lines:
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
  "_libintl_textdomain", referenced from:
      __locale_textdomain in _localemodule.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Programs/_freeze_module] Error 1
make: *** Waiting for unfinished jobs....
2 warnings generated.

で検索

M1 Mac にpyenvで環境構築してみたらBUILD FAILEDと怒られた件
を参考にしたけど
だめ

1
BUILD FAILED (OS X 15.2 using python-build 20180424)

で検索

pyenvでインストール時に「BUILD FAILED (OS X 10.15.7 using python-build 20180424)」が発生した場合の対処法
を参考に

1
arch -arm64 brew install zlib

でインストール

これでもダメなので

M2 Mac】pyenv環境構築でハマった話 (BUILD FAILED)
を参考に

1
arch -arm64 brew install readline openssl zlib xz

これでもだめ

なぜかx86_64向けにビルドしようとしていて,ホストもx86_64になっているため

1
2
3
4
PYTHON_CONFIGURE_OPTS="--host=arm-apple-darwin --build=arm-apple-darwin" \
CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(brew --prefix zlib)/include -I$(brew --prefix xz)/include -arch arm64" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix xz)/lib -arch arm64" \
pyenv install -v 3.11.0

というように

* PYTHON_CONFIGURE_OPTS: ホストとビルドシステムをarm-apple-darwin に明示。
* CFLAGS とLDFLAGS : 必要なライブラリのパスを正確に指定し、-arch arm64 を追加。

とすれば
インストール成功

あとは

1
pyenv global 3.11.0

で設定して

1
2
python -V         
Python 3.11.0

となれば成功

Neo4j の起動

Neo4j の起動

pythonでneo4j を使えるようにする

Llama 3.2とNeo4jでローカルGraphRAG環境を構築

これをやる場合
Neo4jのCypherクエリ言語を拡張するライブラリapoc-coreを使用する

Dockerコンテナを利用したNeo4jの環境構築とAPOCのインストール手順
によれば
コンテナで起動したNeo4jにはAPOCのバイナリが含まれていないため、手動でインストールする必要がある

APOC (Awesome Procedures On Cypher) は、Neo4jにおける拡張機能の一つである。
データ操作、外部データの取り込み、ランダムグラフ生成など、Neo4jの基本機能を拡張するプロシージャを提供する。

製品の標準機能として取り込まれた拡張機能も多々あるようで、
とりあえずコアのAPOC入れておいたほうがいい、ということらしい

1
docker exec -it neo4j-neo4j-1 neo4j --version

を実行したけど

1
Error response from daemon: No such container: neo4j-neo4j-1

となった

コンテナが起動していないと意味がない

まずはneo4jを起動する

Docker-compose を使う方法を採用

対応ディレクトリが必要なので

1
2
mkdir -p ./data ./logs ./conf ./plugins
chmod 755 ./data ./logs ./conf ./plugins

で作成する

次に

1
touch docker-compose.yml

でファイルを作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
dservices:
  neo4j:
    image: neo4j:latest
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      NEO4J_AUTH: "neo4j/[8文字以上のパスワード]"
      NEO4J_apoc_export_file_enabled: "true"
      NEO4J_apoc_import_file_enabled: "true"
      NEO4J_apoc_import_file_use__neo4j__config: "true"
      NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
    ulimits:
      nofile:
        soft: 40000
        hard: 40000
    volumes:
      - ./data:/data
      - ./logs:/logs
      - ./conf:/conf
      - ./plugins:/plugins

として保存

なお
neo4j/ は必須で、
NEO4J_AUTH の形式は常に ユーザー名/パスワード
となっている
なので通常はパスワードを変更する

1
docker compose up -d

を実行したが

1
validating /Users/snowpool/aw10s/ne4j_pg/docker-compose.yml: (root) Additional property dservices is not allowed

となる

GPTで調べると

ocker-compose.yml ファイルで
トップレベルのキーとして dservices が使用されているためです。
Docker Compose の標準では、
トップレベルのキーは services である必要があります。

となるため
コードを修正

最初の

1
dservices:

1
services:

へ変更し保存

1
docker compose up -d

を実行すれば

1
2
3
[+] Running 2/2
 <img draggable="false" class="emoji" alt="✔" src="https://s.w.org/images/core/emoji/11/svg/2714.svg"> Network ne4j_pg_default    Created                                      0.0s
 <img draggable="false" class="emoji" alt="✔" src="https://s.w.org/images/core/emoji/11/svg/2714.svg"> Container ne4j_pg-neo4j-1  Started                                      0.2s

となる

これで
http://localhost:7474
へアクセスし
管理画面が表示されればOK

管理画面には
docker-compose.yamlで設定したID「neo4j」とそのパスワードでログインする

ログインしたらテスト

1
CREATE (p:Person {name: "Alice", age: 30})-[:KNOWS]->(p2:Person {name: "Bob", age: 25})


Cypherクエリを実行し、ノードとリレーションシップを作成

1
MATCH (n) RETURN n

を実行すると
登録したデータの確認が画像で表示される

データ永続化のテストのため

1
docker compose down

でコンテナを停止

コンテナを再起動するので

1
docker compose up -d

これで再度

1
MATCH (n) RETURN n

を実行して表示されれば問題なし

次に
APOCバイナリのインストール

これには dockerコンテナの名前が必要なので

1
docker ps

を実行しコンテナ名を調べる

1
2
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                      NAMES
cc1a5da764cf   neo4j:latest   "tini -g -- /startup…"   7 minutes ago   Up 7 minutes   0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp   ne4j_pg-neo4j-1

という結果になったので
コンテナ名は ne4j_pg-neo4j-1
ということがわかる

次にNeo4j のバージョン表示

1
docker exec -it ne4j_pg-neo4j-1 neo4j --version

を実行すれば

1
5.26.0

とバージョンが表示される

Neo4jのバージョンに対応するAPOCをGitHubリリースページからダウンロード

今回は
apoc-5.26.0-core.jar
をダウンロード

これを plugins ディレクトリに配置する

1
mv ~/Downloads/apoc-5.26.0-core.jar plugins

次にコンテナ再起動

1
2
docker compose down
docker compose up -d

次に
http://localhost:7474
へアクセス

1
CALL apoc.help('apoc')

を実行し
APOCが利用可能になっていることを確認

Zenn CLIで記事・本を管理

実行環境
M1 MacbookAir 16GB

Zenn CLIで記事・本を管理する方法を参考にする前に

Zenn CLIをインストールする
を参考にインストールする

その前に
GitHubリポジトリと連携が必要

GitHubリポジトリでZennのコンテンツを管理する
を参考に行う

まずgithubで
好きな名前のリポジトリを作成する
zenn_article
とした

公開設定は public でOK

ライセンスはとりあえずMItにしておく

これで
Create repository
をクリック

これを
Zennのダッシュボードから連携する

リポジトリ連携の時に
Only select repositories
をクリックし
作成したリポジトリを指定する

これで同期するブランチ名を確認できればOK

次に
ローカルでのファイルの作成や、markdownのプレビューにはZenn CLIを使うので
これを設定する

Zenn CLIを使うにはNode.js 14以上が必要

1
git clone https://github.com/Snowpooll/zenn_article.git


リポジトリを clone する

1
cd zenn_article

で移動し

1
2
npm init --yes
npm install zenn-cli

でインストール

Zenn用のセットアップのため

1
npx zenn init

実行すると

1
2
3
4
5
6
7
8
9
10
11
<img draggable="false" class="emoji" alt="🎉" src="https://s.w.org/images/core/emoji/11/svg/1f389.svg">  Done!
早速コンテンツを作成しましょう
 
<img draggable="false" class="emoji" alt="👇" src="https://s.w.org/images/core/emoji/11/svg/1f447.svg">  新しい記事を作成する
$ npx zenn new:article
 
<img draggable="false" class="emoji" alt="👇" src="https://s.w.org/images/core/emoji/11/svg/1f447.svg">  新しい本を作成する
$ npx zenn new:book
 
<img draggable="false" class="emoji" alt="👇" src="https://s.w.org/images/core/emoji/11/svg/1f447.svg">  投稿をプレビューする
$ npx zenn preview

となる

とりあえずここまでできたら
Zenn CLIで記事・本を管理する方法
を参考に記事を書いていく

Chatgpt で
zenn で markdown で記事を記述したいので以下の文章を修正してほしい
publication_name: “singularity” をヘッダーに追加してほしい

とした後にブログ記事をコピペ

これで記事の構成ができる

あとは記事を作成するので

1
npx zenn new:article

で記事を作成

これでベースとなるものが作成される

1
2
3
4
5
6
7
---
title: ""
emoji: "<img draggable="false" class="emoji" alt="🔥" src="https://s.w.org/images/core/emoji/11/svg/1f525.svg">"
type: "tech" # tech: 技術記事 / idea: アイデア
topics: []
published: false
---

これにコピペしていく

今回は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
---
title: "現在地の天気情報の取得その2"
emoji: "<img draggable="false" class="emoji" alt="☀️" src="https://s.w.org/images/core/emoji/11/svg/2600.svg">"
type: "tech" # tech: 技術記事
topics: ["天気", "Python", "OpenWeatherMap"]
published: true
publication_name: "singularity"
---
 
# 現在地の天気情報の取得その2
 
## Pythonで天気情報を取得する方法
 
以下はPythonを使って、郵便番号とAPIキーで天気情報を取得するコード例です。
 
```python
import requests
import json
from pprint import pprint
 
# OpenWeatherMap APIのURL
url = "https://api.openweathermap.org/data/2.5/weather?zip={zip_place}&units=metric&appid={API_key}"
 
# 郵便番号とAPIキーを指定
url = url.format(zip_place="郵便番号,JP", API_key="APIキー")
 
# APIからデータを取得
jsondata = requests.get(url).json()
pprint(jsondata)
 
# 天気情報を出力
print("天気:", jsondata["weather"][0]["main"])
print("天気詳細:", jsondata["weather"][0]["description"])
print("都市名:", jsondata["name"])
print("気温:", jsondata["main"]["temp"])
print("体感気温:", jsondata["main"]["feels_like"])
print("最低気温:", jsondata["main"]["temp_min"])
print("最高気温:", jsondata["main"]["temp_max"])
print("気圧:", jsondata["main"]["pressure"])
print("湿度:", jsondata["main"]["humidity"])
print("風速:", jsondata["wind"]["speed"])
print("風の方角:", jsondata["wind"]["deg"])
```
 
### 実行結果
```plaintext
{'base': 'stations',
 'clouds': {'all': 0},
 'cod': 200,
 'coord': {'lat': 緯度, 'lon': 経度},
 'main': {'feels_like': 4.12,
          'humidity': 60,
          'pressure': 1021,
          'temp': 6.65,
          'temp_max': 6.65,
          'temp_min': 6.65},
 'name': 'Kawai',
 'weather': [{'description': 'clear sky', 'main': 'Clear'}],
 'wind': {'deg': 288, 'speed': 3.58}}
天気: Clear
天気詳細: clear sky
都市名: Kawai
気温: 6.65
体感気温: 4.12
最低気温: 6.65
最高気温: 6.65
気圧: 1021
湿度: 60
風速: 3.58
風の方角: 288
```
 
## 日本語での天気情報取得
 
英語の天気情報を日本語に変換するには、以下の辞書を用いてマッピングします。
 
### 英語から日本語への天気翻訳辞書
```python
weather_translation = {
    "Clear": "晴れ",
    "Clouds": "曇り",
    "Rain": "雨",
    "Snow": "雪",
    "Thunderstorm": "雷雨",
    "Drizzle": "霧雨",
    "Mist": "霧",
    "Fog": "濃霧"
}
 
# APIから取得した天気を翻訳する
weather_english = jsondata["weather"][0]["main"]
weather_japanese = weather_translation.get(weather_english, "不明"# 辞書にない場合は「不明」と表示
 
print("天気(日本語):", weather_japanese)
```
 
これにより、APIから取得した天気情報を日本語で表示できます。
 
## 天気情報を詳細に取得する方法
 
緯度経度を使用して、一日の最高気温と最低気温を取得するには以下のコードを使用します。
```python
import requests
from datetime import datetime
 
# OpenWeather APIのURLとパラメータ
url = "https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&exclude=hourly,minutely&units=metric&appid={API_key}"
latitude = "緯度"
longitude = "経度"
API_key = "YOUR_API_KEY"
 
# APIリクエスト
url = url.format(lat=latitude, lon=longitude, API_key=API_key)
response = requests.get(url)
jsondata = response.json()
 
# 今日の最高気温と最低気温
today = datetime.now().date()
for daily in jsondata["daily"]:
    date = datetime.fromtimestamp(daily["dt"]).date()
    if date == today:
        print("今日の最高気温:", daily["temp"]["max"], "度")
        print("今日の最低気温:", daily["temp"]["min"], "度")
        break
```
 
## 今後の展望
 
- 天気情報を音声に変換して通知
- 現在地の天気や移動予定地の天気を自動で取得・表示

とした

これで保存し

1
npx zenn preview

を実行
http://localhost:8000
をブラウザでひらけば記事のプレビューが見れる

これで問題なければ記事の公開

1
2
3
git add .
git commit -m "記事を追加: 現在地の天気情報の取得その2"
git push origin main

しかし https認証が廃止されているので
Sshでアップしないとだめ

1
git remote -v

で確認すると

1
2
origin  https://github.com/Snowpooll/zenn_article.git (fetch)
origin  https://github.com/Snowpooll/zenn_article.git (push)

これを

1
git remote set-url origin git@github.com:Snowpooll/zenn_article.git

でSSH形式のリモートURLに変更

1
git remote -v

で確認できる

1
2
origin  git@github.com:Snowpooll/zenn_article.git (fetch)
origin  git@github.com:Snowpooll/zenn_article.git (push)

あとは

1
git push origin main

でsshキーのパスワードを入れればOK

Neo4jのインストール

Neo4jのインストール

https://neo4j.com/docs/getting-started/whats-neo4j/

3種類あるようなので
neo4jの デスクトップ、インストールタイプ、docker での必要スペックをまとめました
M1MacbookAir 16GBだと動かせそうなのは docker

これで動かすようにする

Neo4j の学習環境を Docker で構築する
によれば
NEO4J_AUTH=none にすることで、認証なしに環境へログインができるようになる

とりあえずdocker がインストールされていないので
これを先に入れる

Docker Desktopのインストール
https://www.docker.com/products/docker-desktop/
へアクセス

Get started をクリック

Download Docker Desktop をマウスオーバーすると
Download for Mac Apple Silicon
が表示されるのでクリック

これでダウンロードされる

ダウンロード完了したらダブルクリックで
Applicationにdocker をドラッグする

これでアプリを起動すると

1
2
3
Docker Subscription Service Agreement
By selecting accept, you agree to the Subscription Service Agreement⁠, the Docker Data Processing Agreement⁠, and the Data Privacy Policy⁠.
Commercial use of Docker Desktop at a company of more than 250 employees OR more than $10 million in annual revenue requires a paid subscription (Pro, Team, or Business). See subscription details⁠

と表示されるので意味を調べる

Docker サブスクリプション サービス契約
[同意する] を選択すると、サブスクリプション サービス契約、Docker データ処理契約、およびデータ プライバシー ポリシーに同意したことになります。

従業員数が 250 人を超える企業、または年間収益が 1,000 万ドルを超える企業で Docker Desktop を商用利用するには、有料のサブスクリプション (Pro、Team、または Business) が必要です。サブスクリプションの詳細を参照⁠

とのこと

この日本語で検索したら
https://oopsoop.com/install-docker/
MacにDocker Desktopをインストールする手順
が出てきた

とりあえずサイトを参考に
Accept をクリックし

Use recommended settings (requires password)
のままにして
Finishをクリック

次に Sign In か Sign up の画面になるけど
アカウント登録をしなくてもDockerの基本的な機能は使える
とのことなのでSkip にした

次にターミナルで

1
docker -v

でバージョンを確認したら

1
Docker version 27.3.1, build ce12230

となったので
まずはインストール成功

Neo4jのDockerイメージを確認

1
docker search neo4j
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
NAME                              DESCRIPTION                                      STARS     OFFICIAL
neo4j                             Neo4j is a highly scalable, robust native gr…   1290      [OK]
bitnami/neo4j                     Bitnami container image for Neo4j                13       
bitnamicharts/neo4j               Bitnami Helm chart for Neo4j                     0        
vulhub/neo4j                                                                       0        
ocelotsocialnetwork/neo4j                                                          0        
neo4j/neo4j-experimental          Experimental Neo4j Docker images                 10       
neo4j/neo4j-admin                 Neo4j database administration tool.              1        
neo4j/helm-charts-backup          This repo will hold the docker image used by…   0        
neo4j/neo4j-arm64-experimental    Experimental Neo4j images for the ARM64 arch…   5        
neo4j/helm-charts-reverse-proxy   this repo holds the docker image for neo4j r…   0        
neo4j/neo4j-ops-manager-server    Neo4j Ops Manager server application             0        
neo4j/neo4j-ops-manager-agent     Neo4j Ops Manager agent is to be deployed on…   0        
amd64/neo4j                       Neo4j is a highly scalable, robust native gr…   0        
neo4j/helm-charts-operations      Neo4j helm chart operations which allows you…   0        
phenompeople/neo4j                Neo4j is a highly scalable, robust native gr…   1        
frodenas/neo4j                    A Docker Image for Neo4j                         8        
rapydo/neo4j                                                                       0        
tpires/neo4j                      Neo4j is a highly scalable, robust (fully AC…   82       
c12e/neo4j                                                                         0        
arm64v8/neo4j                     Neo4j is a highly scalable, robust native gr…   0        
2045c6c4/neo4j                                                                     0        
trollin/neo4j                                                                      0        
harshit9398/neo4j                 Customized Neo4j image for importing data fr…   0        
statisticsnorway/neo4j                                                             0        
cluedin/neo4j

0
となる

Dockerを用いたPythonとNeo4jの開発環境構築


Chat got では
Docker Hubに登録しておくと、公式イメージを簡単にダウンロードできる
とのことなので
先に登録をする

結局登録することになった
https://hub.docker.com/
へアクセス

しかし既に登録されていると出る
おそらく昔ドットインストールで dockerやった時に登録している

とりあえずこれで登録はできているので
次にdocker イメージの取得

しかし

1
docker pull neo4j

を実行すると

1
2
Using default tag: latest
Cannot connect to the Docker daemon at unix:///Users/snowpool/.docker/run/docker.sock. Is the docker daemon running?

となる

原因を調べたら
M1 Macでは、Docker Desktopを手動で起動する必要があるらしい

再度 Docker Desktop を起動し

1
docker pull neo4j

を実行したら

1
2
3
4
5
6
7
8
9
10
11
Using default tag: latest
latest: Pulling from library/neo4j
b8bfdadce121: Download complete
c783cffde723: Download complete
f549d6f5d7d3: Download complete
46120a0c7324: Download complete
879a6187682f: Download complete
4f4fb700ef54: Download complete
Digest: sha256:411e532d5c9892e7c955b4e631da423af41ede6a683a0de02c93876b7509c2db
Status: Downloaded newer image for neo4j:latest
docker.io/library/neo4j:latest

となった

とりあえずイメージ取得はできたが起動でわからないことがあるので
GPTで調べる

docker compose コマンドで Neo4j を起動するのと
docker run –name neo4j \ -p 7474:7474 -p 7687:7687 \ -e NEO4J_AUTH=neo4j/testpassword \ -v $HOME/neo4j/data:/data \ neo4j で起動する この違いは?

`docker compose` コマンドと `docker run` コマンドを使った起動方法の違いを説明します。それぞれの方法には特徴やメリットがあり、使用シーンによって使い分けることができます。

### **1. `docker run` を使った起動**
#### **特徴**
– 単一のコンテナを直接起動するため、簡単で軽量。
– 起動コマンド内で全ての設定(ポートマッピング、環境変数、ボリュームなど)を指定します。

#### **メリット**
– **シンプル**: コマンド一つで起動でき、設定ファイルが不要。
– **素早くテスト可能**: 手早く試したい場合に便利。

#### **デメリット**
– **複雑な設定が困難**: 設定が多い場合、コマンドが煩雑になりやすい。
– **再利用性が低い**: 毎回設定を入力する必要があり、同じ設定で複数環境を管理するのは難しい。
– **スケーリングが難しい**: 他のサービスとの連携が必要な場合には不向き。

### **2. `docker compose` を使った起動**
#### **特徴**
– 複数のコンテナやサービスを `docker-compose.yml` という設定ファイルで一括管理します。
– ネットワーク設定や環境変数、ボリュームなどをファイルで定義します。

#### **例: `docker-compose.yml` ファイル**
“`yaml
version: ‘3.8’
services:
neo4j:
image: neo4j
container_name: neo4j
ports:
– “7474:7474”
– “7687:7687”
environment:
– NEO4J_AUTH=neo4j/testpassword
volumes:
– $HOME/neo4j/data:/data
“`

#### **起動コマンド**
“`bash
docker compose up -d
“`

#### **メリット**
– **設定の再利用が簡単**: `docker-compose.yml` ファイルを使い回して環境を再現可能。
– **複数サービスの管理**: 複数のコンテナ(例: Neo4jと関連するアプリケーション)をまとめて起動・停止できる。
– **環境の可搬性**: 設定ファイルを共有すれば、他の環境でも同じ構成で起動可能。
– **スケールしやすい**: 複数インスタンスを簡単に立ち上げたり、複雑なネットワーク設定を扱いやすい。

#### **デメリット**
– **初期設定が必要**: `docker-compose.yml` ファイルを作成する手間がある。
– **単体での試験にはやや過剰**: シンプルなコンテナ起動には不要な場合が多い。

### **具体的な使い分け**

| **シーン** | **`docker run`** | **`docker compose`** |
|————————————|—————————————————|————————————————|
| **シンプルなテストや実験** | 最適 | 過剰な場合がある |
| **複数サービスの起動(例: Neo4j + アプリ)** | 煩雑 | 非常に便利 |
| **設定を何度も再利用する場合** | 毎回コマンド入力が必要 | 設定ファイルで簡単に再利用 |
| **本番環境の準備や運用** | 管理が難しい | 環境構築や管理に最適 |
| **チーム開発や共有環境** | 他者への設定共有が困難 | 設定ファイルで簡単に共有可能 |

### **結論**
– **単純な用途**: 一回限りのテストや小規模な利用では `docker run` が簡単。
– **再利用性・管理性が重要**: チーム開発や本格的な運用では `docker compose` を使うのがおすすめ。

とりあえず次にpythonでneo4j を使えるようにする

Llama 3.2とNeo4jでローカルGraphRAG環境を構築

これをやる場合
Neo4jのCypherクエリ言語を拡張するライブラリapoc-coreを使用する

Dockerコンテナを利用したNeo4jの環境構築とAPOCのインストール手順
によれば
コンテナで起動したNeo4jにはAPOCのバイナリが含まれていないため、手動でインストールする必要がある

APOC (Awesome Procedures On Cypher) は、Neo4jにおける拡張機能の一つである。
データ操作、外部データの取り込み、ランダムグラフ生成など、Neo4jの基本機能を拡張するプロシージャを提供する。

製品の標準機能として取り込まれた拡張機能も多々あるようで、
とりあえずコアのAPOC入れておいたほうがいい、ということらしい

1
docker exec -it neo4j-neo4j-1 neo4j --version

を実行したけど

1
Error response from daemon: No such container: neo4j-neo4j-1

となった

コンテナが起動していないと意味がない

まずはneo4jを起動する

UnstructuredによるPDFからの画像抽出

UnstructuredによるPDFからの画像抽出
を参考に進める

pip install ‘unstructured[pdf] と
pip install unstructured[all-docs] の違いを調べた

違いはPDFのみか
全てのドキュメント形式(PDF、Word、Excel、HTMLなど)
ということ

これを使い画像を抽出し学習データを作るので
そのままデータ保存できるcolab で実行する

【Python】unstructuredを使って、 PDFファイル内の非構造データを抽出する
を参考に

1
!pip install unstructured[all-docs]

でインストール

実行後にセッションの再起動を求められる

ITパスポートの過去問のうち、令和6年度分の問題冊子を使うので
https://www3.jitec.ipa.go.jp/JitesCbt/html/openinfo/questions.html
から
問題をダウンロード

1
!mkdir data

でフォルダを作成し
ここへアップロード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import os
from unstructured.partition.pdf import partition_pdf
 
# 現在の作業ディレクトリを取得
current_dir = os.getcwd()
 
# 'data'フォルダのパスを設定
DATA_PAR_PATH = os.path.join(current_dir, 'data')
 
# 処理対象のPDFファイルのパスを設定
DATASET_PATH = os.path.join(DATA_PAR_PATH, '2024r06_ip_qs.pdf')
 
# 画像の出力先フォルダのパスを設定
OUTPUT_PATH = os.path.join(DATA_PAR_PATH, 'images')
 
# フォルダ確認(存在しない場合エラーになるのでアップロード確認用)
if not os.path.exists(DATA_PAR_PATH):
    raise FileNotFoundError(f"'data'フォルダが見つかりません。Google Colabに'2024r06_ip_qs.pdf'をアップロードしてください。")
 
if not os.path.exists(DATASET_PATH):
    raise FileNotFoundError(f"ファイル '2024r06_ip_qs.pdf' が'data'フォルダ内に存在しません。ファイルをアップロードしてください。")
 
# PDFファイル内のデータを分割する
raw_pdf_elements = partition_pdf(
    filename=DATASET_PATH,
    chunking_strategy='by_title',
    infer_table_structure=True,
    extract_images_in_pdf=True,
    extract_image_block_output_dir=OUTPUT_PATH
)
 
# 処理が成功したことを表示
print("PDFファイルの処理が完了しました。")
print(f"画像は以下のフォルダに保存されます: {OUTPUT_PATH}")

として実行したが

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
WARNING:pdfminer.pdfpage:The PDF <_io.BufferedReader name='/content/data/2024r06_ip_qs.pdf'> contains a metadata field indicating that it should not allow text extraction. Ignoring this field and proceeding. Use the check_extractable if you want to raise an error in this case
yolox_l0.05.onnx: 100%
 
 217M/217M [00:02<00:00, 149MB/s]
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/pdf2image/pdf2image.py in pdfinfo_from_path(pdf_path, userpw, ownerpw, poppler_path, rawdates, timeout, first_page, last_page)
    580             env["LD_LIBRARY_PATH"] = poppler_path + ":" + env.get("LD_LIBRARY_PATH", "")
--> 581         proc = Popen(command, env=env, stdout=PIPE, stderr=PIPE)
    582
 
 
 
15 frames
 
FileNotFoundError: [Errno 2] No such file or directory: 'pdfinfo'
During handling of the above exception, another exception occurred:
 
PDFInfoNotInstalledError                  Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/pdf2image/pdf2image.py in pdfinfo_from_path(pdf_path, userpw, ownerpw, poppler_path, rawdates, timeout, first_page, last_page)
    605
    606     except OSError:
--> 607         raise PDFInfoNotInstalledError(
    608             "Unable to get page count. Is poppler installed and in PATH?"
    609         )
 
PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

となってしまう

これは
pdf2imageパッケージが内部的に使用している
poppler-utilsがインストールされていないために発生

1
2
!apt-get update
!apt-get install -y poppler-utils

でインストール

再度実行する

このとき、非構造データは画像として分割され、OUTPUT_PATHで指定したディレクトリに入る

この非構造データを確認してみた結果

* 画像しか検出していない
* テーブルも画像として認識してほしい
* 画像を出力する必要がある
* わざわざ出力せずに、byte型で非構造データを保持したい
* 画像の端っこが見切れている
* 画像によって、見切れ具合は様々

上記の結果を踏まえて非構造データの抽出を工夫

しかし

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
WARNING:pdfminer.pdfpage:The PDF <_io.BufferedReader name='/content/data/2024r06_ip_qs.pdf'> contains a metadata field indicating that it should not allow text extraction. Ignoring this field and proceeding. Use the check_extractable if you want to raise an error in this case
yolox_l0.05.onnx: 100%
 
 217M/217M [00:01<00:00, 237MB/s]
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/unstructured_pytesseract/pytesseract.py in get_tesseract_version()
    450     try:
--> 451         output = subprocess.check_output(
    452             [tesseract_cmd, '--version'],
 
 
 
21 frames
 
FileNotFoundError: [Errno 2] No such file or directory: 'tesseract'
During handling of the above exception, another exception occurred:
 
TesseractNotFoundError                    Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/unstructured_pytesseract/pytesseract.py in get_tesseract_version()
    456         )
    457     except OSError:
--> 458         raise TesseractNotFoundError()
    459
    460     raw_version = output.decode(DEFAULT_ENCODING)
 
TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.

これは
このエラーは、PDFの画像からテキストを抽出するために必要なOCRエンジン Tesseract がインストールされていないために発生しています。Google Colabではデフォルトで Tesseract がインストールされていないため

1
2
3
!apt-get update
!apt-get install -y tesseract-ocr
!apt-get install -y libtesseract-dev

でインストール

これで再度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import base64
import io
import os
from PIL import Image
from unstructured.partition.pdf import partition_pdf
 
# Google Colab環境用のパス設定
current_dir = os.getcwd()
DATA_PAR_PATH = os.path.join(current_dir, 'data'# 'data'フォルダを利用
DATASET_PATH = os.path.join(DATA_PAR_PATH, '2024r06_ip_qs.pdf')
 
# 必要なフォルダやファイルの存在確認
if not os.path.exists(DATA_PAR_PATH):
    raise FileNotFoundError(f"'data'フォルダが存在しません。Google Colabに'2024r06_ip_qs.pdf'をアップロードしてください。")
 
if not os.path.exists(DATASET_PATH):
    raise FileNotFoundError(f"ファイル '2024r06_ip_qs.pdf' が 'data' フォルダ内に存在しません。アップロードしてください。")
 
# PDFファイル内のデータを分割する
raw_pdf_elements = partition_pdf(
    filename=DATASET_PATH,
    infer_table_structure=True,
    strategy='hi_res',
    extract_images_in_pdf=True,
    extract_image_block_types=['Image', 'Table'],
    extract_image_block_to_payload=True
)
 
# 画像として保持されている非構造データを確認する
for elem in raw_pdf_elements:
    if elem.category in ['Image', 'Table']:
        image_base64 = elem.metadata.image_base64
        decoded_image = base64.b64decode(image_base64)
        image = Image.open(io.BytesIO(decoded_image))
        print(f"Page Number: {elem.metadata.page_number}")
        display(image)  # Colab環境で画像を表示

を実行すると画像が表示される

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import os
from unstructured.partition.pdf import partition_pdf
 
# 現在の作業ディレクトリを取得
current_dir = os.getcwd()
 
# 'data'フォルダのパスを設定
DATA_PAR_PATH = os.path.join(current_dir, 'data')
 
# 処理対象のPDFファイルのパスを設定
DATASET_PATH = os.path.join(DATA_PAR_PATH, '2024r06_ip_qs.pdf')
 
# 画像の出力先フォルダのパスを設定
OUTPUT_PATH = os.path.join(DATA_PAR_PATH, 'images')
 
# フォルダ確認(存在しない場合エラーになるのでアップロード確認用)
if not os.path.exists(DATA_PAR_PATH):
    raise FileNotFoundError(f"'data'フォルダが見つかりません。Google Colabに'2024r06_ip_qs.pdf'をアップロードしてください。")
 
if not os.path.exists(DATASET_PATH):
    raise FileNotFoundError(f"ファイル '2024r06_ip_qs.pdf' が'data'フォルダ内に存在しません。ファイルをアップロードしてください。")
 
# PDFファイル内のデータを分割する
raw_pdf_elements = partition_pdf(
    filename=DATASET_PATH,
    chunking_strategy='by_title',
    infer_table_structure=True,
    extract_images_in_pdf=True,
    extract_image_block_output_dir=OUTPUT_PATH
)
 
# 処理が成功したことを表示
print("PDFファイルの処理が完了しました。")
print(f"画像は以下のフォルダに保存されます: {OUTPUT_PATH}")

を実行すると dataフォルダの中に images が作成され
ここに抽出した画像が保存される

次はチラシで試す

Yomitokuで写真やレシートを解析をColabで試す

Yomitokuで写真やレシートを解析をColabで試す

Yomitokuで写真やレシートを解析してみる

Colab で行なってるのがあったので参考にする

出力形式によって得られる情報が異なるらしい

A100で実験する

https://github.com/kotaro-kinoshita/yomitoku
でライブラリが公開されているので
ドキュメントなどはこれを読む

基本的にGPUが必要

1
! pip install yomitoku

でライブラリインストール

最後にsession restartしろといわれたので、ダイアログボックスに促されるままrestartする

次に写真の用意

google colabなので、/content以下にimageフォルダを作成し、その中にJPGをいれ
フォルダをまるっと指定すると、その中の画像ファイルをすべて解析してくれます

1
!mkdir image

でフォルダ作成
ここに写真をアップロードする

1
aw10s/ollama/images/test.jpg

をアップロード

1
! yomitoku /content/image/ -f md -o results -v --figure

で解析

結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2024-12-15 21:31:34,841 - yomitoku.base - INFO - Initialize TextDetector
model.safetensors: 100% 102M/102M [00:04<00:00, 23.8MB/s]
2024-12-15 21:31:40,639 - yomitoku.base - INFO - Initialize TextRecognizer
config.json: 100% 256/256 [00:00<00:00, 1.87MB/s]
model.safetensors: 100% 200M/200M [00:08<00:00, 23.9MB/s]
2024-12-15 21:31:50,844 - yomitoku.base - INFO - Initialize LayoutParser
model.safetensors: 100% 172M/172M [00:07<00:00, 23.5MB/s]
2024-12-15 21:31:59,554 - yomitoku.base - INFO - Initialize TableStructureRecognizer
model.safetensors: 100% 172M/172M [00:03<00:00, 43.0MB/s]
2024-12-15 21:32:04,793 - yomitoku.cli.main - INFO - Output directory: results
2024-12-15 21:32:04,793 - yomitoku.cli.main - INFO - Processing file: /content/image/test.jpg
2024-12-15 21:32:06,818 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 1.9037435054779053
2024-12-15 21:32:07,114 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 2.19960355758667
2024-12-15 21:32:07,247 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.13303065299987793
2024-12-15 21:32:08,789 - yomitoku.base - INFO - TextRecognizer __call__ elapsed_time: 1.9707973003387451
2024-12-15 21:32:08,863 - yomitoku.cli.main - INFO - Output file: results/image_test_p1_ocr.jpg
2024-12-15 21:32:08,914 - yomitoku.cli.main - INFO - Output file: results/image_test_p1_layout.jpg
2024-12-15 21:32:08,927 - yomitoku.cli.main - INFO - Output file: results/image_test_p1.md
2024-12-15 21:32:08,928 - yomitoku.cli.main - INFO - Total Processing time: 4.13 sec

結果は自動作成される results の中にある

ファイル名_p1.md
という感じで出力される
image_test_p1.md
の中身は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<img src="figures/image_test_p1_figure_0.png" width="200px"><br>
登録番号 T5080401017738<br>とれたて食楽部<br>静岡県袋井市山名町3\-3<br>TEL 0538\-41\-1100
 
2024年 8月10日\(土\)08:59 \#000011<br>000801精算機1<br>000801精算機1<br>3901
 
09:08<br>R9309<br>\#000003<br>お会計券<br>西澤<br>000008
 
¥150<br>内8 ★きゅうり/鈴木 仁<br>P2023300101503
 
内8 ★きゅうり/小林宗作
 
P2055600101303
 
¥130
 
内8 リーフレタス/\(有\)成神工 ¥216<br>P2086402402169
 
|小計<br>\(内税 8%対象額<br>買上点数|¥496|
|-|-|
||¥496\)|
||3点|
|合計|¥496|
|\(税率 8%対象額|¥496\)|
|\(内消費税等 8%|¥36\)|
|課税事業者||
|\(税率 8%対象額|¥216\)|
|\(内消費税等 8%|¥16\)|
|免税事業者||
|\(税率 8%対象額|¥280\)|
 
¥496<br>クレジット<br>¥36\)<br>\(内消費税等
 
、内Sは軽減税率対象商品です。

これがOCRした内容

次に
出力形式によって得られる情報が異なるらしいので
JSON形式で出力する

1
! yomitoku /content/image/ -f json -o results -v --figure

結果は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
2024-12-16 21:00:01,501 - yomitoku.base - INFO - Initialize TextDetector
2024-12-16 21:00:02,677 - yomitoku.base - INFO - Initialize TextRecognizer
2024-12-16 21:00:04,059 - yomitoku.base - INFO - Initialize LayoutParser
2024-12-16 21:00:05,086 - yomitoku.base - INFO - Initialize TableStructureRecognizer
2024-12-16 21:00:06,063 - yomitoku.cli.main - INFO - Output directory: results
2024-12-16 21:00:06,063 - yomitoku.cli.main - INFO - Processing file: /content/image/test.jpg
2024-12-16 21:00:07,057 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 0.9070024490356445
2024-12-16 21:00:07,207 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 1.0565669536590576
2024-12-16 21:00:07,340 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.1329059600830078
2024-12-16 21:00:08,864 - yomitoku.base - INFO - TextRecognizer __call__ elapsed_time: 1.8073179721832275
2024-12-16 21:00:08,940 - yomitoku.cli.main - INFO - Output file: results/image_test_p1_ocr.jpg
2024-12-16 21:00:08,992 - yomitoku.cli.main - INFO - Output file: results/image_test_p1_layout.jpg
2024-12-16 21:00:08,994 - yomitoku.cli.main - INFO - Output file: results/image_test_p1.json
2024-12-16 21:00:08,995 - yomitoku.cli.main - INFO - Total Processing time: 2.93 sec

出力されたファイルは
Image_test_p1.json

内容は

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
{
    "figures": [
        {
            "box": [
                586,
                249,
                1633,
                503
            ],
            "direction": "horizontal",
            "order": 0,
            "paragraphs": []
        }
    ],
    "paragraphs": [
        {
            "box": [
                638,
                569,
                1548,
                872
            ],
            "contents": "登録番号 T5080401017738\nとれたて食楽部\n静岡県袋井市山名町3-3\nTEL 0538-41-1100",
            "direction": "horizontal",
            "order": 1,
            "role": null
        },
        {
            "box": [
                569,
                924,
                1614,
                1080
            ],
            "contents": "2024年 8月10日(土)08:59 #000011\n000801精算機1\n000801精算機1\n3901",
            "direction": "horizontal",
            "order": 2,
            "role": null
        },
        {
            "box": [
                545,
                1173,
                1636,
                1347
            ],
            "contents": "09:08\nR9309\n#000003\nお会計券\n西澤\n000008",
            "direction": "horizontal",
            "order": 3,
            "role": null
        },
        {
            "box": [
                516,
                1387,
                1688,
                1577
            ],
            "contents": "¥150\n内8 ★きゅうり/鈴木 仁\nP2023300101503",
            "direction": "horizontal",
            "order": 4,
            "role": null
        },
        {
            "box": [
                485,
                1558,
                1448,
                1660
            ],
            "contents": "内8 ★きゅうり/小林宗作",
            "direction": "horizontal",
            "order": 5,
            "role": null
        },
        {
            "box": [
                641,
                1652,
                1186,
                1734
            ],
            "contents": "P2055600101303",
            "direction": "horizontal",
            "order": 6,
            "role": null
        },
        {
            "box": [
                1532,
                1534,
                1703,
                1620
            ],
            "contents": "¥130",
            "direction": "horizontal",
            "order": 7,
            "role": null
        },
        {
            "box": [
                484,
                1695,
                1712,
                1904
            ],
            "contents": "内8 リーフレタス/(有)成神工 ¥216\nP2086402402169",
            "direction": "horizontal",
            "order": 8,
            "role": null
        },
        {
            "box": [
                341,
                3432,
                1884,
                3719
            ],
            "contents": "¥496\nクレジット\n¥36)\n(内消費税等",
            "direction": "horizontal",
            "order": 10,
            "role": null
        },
        {
            "box": [
                288,
                3822,
                1779,
                4077
            ],
            "contents": "、内Sは軽減税率対象商品です。",
            "direction": "horizontal",
            "order": 11,
            "role": null
        }
    ],
    "tables": [
        {
            "box": [
                346,
                1915,
                1852,
                3358
            ],
            "cells": [
                {
                    "box": [
                        347,
                        1921,
                        1279,
                        2310
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "小計\n(内税 8%対象額\n買上点数",
                    "row": 1,
                    "row_span": 3
                },
                {
                    "box": [
                        1276,
                        1925,
                        1851,
                        2039
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥496",
                    "row": 1,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2043,
                        1851,
                        2133
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥496)",
                    "row": 2,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2152,
                        1851,
                        2289
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "3点",
                    "row": 3,
                    "row_span": 1
                },
                {
                    "box": [
                        347,
                        2296,
                        1280,
                        2426
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "合計",
                    "row": 4,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2296,
                        1851,
                        2426
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥496",
                    "row": 4,
                    "row_span": 1
                },
                {
                    "box": [
                        348,
                        2424,
                        1280,
                        2526
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "(税率 8%対象額",
                    "row": 5,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2424,
                        1851,
                        2526
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥496)",
                    "row": 5,
                    "row_span": 1
                },
                {
                    "box": [
                        347,
                        2540,
                        1280,
                        2695
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "(内消費税等 8%",
                    "row": 6,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2540,
                        1851,
                        2695
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥36)",
                    "row": 6,
                    "row_span": 1
                },
                {
                    "box": [
                        348,
                        2705,
                        1280,
                        2852
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "課税事業者",
                    "row": 7,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2705,
                        1851,
                        2852
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "",
                    "row": 7,
                    "row_span": 1
                },
                {
                    "box": [
                        348,
                        2865,
                        1280,
                        2951
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "(税率 8%対象額",
                    "row": 8,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2865,
                        1851,
                        2951
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥216)",
                    "row": 8,
                    "row_span": 1
                },
                {
                    "box": [
                        347,
                        2980,
                        1280,
                        3102
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "(内消費税等 8%",
                    "row": 9,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        2980,
                        1851,
                        3102
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥16)",
                    "row": 9,
                    "row_span": 1
                },
                {
                    "box": [
                        348,
                        3103,
                        1280,
                        3202
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "免税事業者",
                    "row": 10,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        3103,
                        1851,
                        3202
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "",
                    "row": 10,
                    "row_span": 1
                },
                {
                    "box": [
                        347,
                        3211,
                        1280,
                        3355
                    ],
                    "col": 1,
                    "col_span": 1,
                    "contents": "(税率 8%対象額",
                    "row": 11,
                    "row_span": 1
                },
                {
                    "box": [
                        1276,
                        3211,
                        1851,
                        3355
                    ],
                    "col": 2,
                    "col_span": 1,
                    "contents": "¥280)",
                    "row": 11,
                    "row_span": 1
                }
            ],
            "n_col": 2,
            "n_row": 11,
            "order": 9
        }
    ],
    "words": [
        {
            "content": "、内Sは軽減税率対象商品です。",
            "det_score": 0.6796720981104631,
            "direction": "horizontal",
            "points": [
                [
                    431,
                    3885
                ],
                [
                    1752,
                    3813
                ],
                [
                    1759,
                    3925
                ],
                [
                    438,
                    3997
                ]
            ],
            "rec_score": 0.03351603075861931
        },
        {
            "content": "(内消費税等",
            "det_score": 0.8627398538033404,
            "direction": "horizontal",
            "points": [
                [
                    871,
                    3594
                ],
                [
                    1378,
                    3577
                ],
                [
                    1381,
                    3686
                ],
                [
                    875,
                    3704
                ]
            ],
            "rec_score": 0.979337215423584
        },
        {
            "content": "¥36)",
            "det_score": 0.7510144629009029,
            "direction": "horizontal",
            "points": [
                [
                    1694,
                    3557
                ],
                [
                    1881,
                    3557
                ],
                [
                    1881,
                    3664
                ],
                [
                    1694,
                    3664
                ]
            ],
            "rec_score": 0.9134319424629211
        },
        {
            "content": "クレジット",
            "det_score": 0.8124990954358461,
            "direction": "horizontal",
            "points": [
                [
                    350,
                    3484
                ],
                [
                    1270,
                    3465
                ],
                [
                    1272,
                    3569
                ],
                [
                    352,
                    3589
                ]
            ],
            "rec_score": 0.9985630512237549
        },
        {
            "content": "¥496",
            "det_score": 0.8485499834607593,
            "direction": "horizontal",
            "points": [
                [
                    1463,
                    3438
                ],
                [
                    1843,
                    3429
                ],
                [
                    1846,
                    3534
                ],
                [
                    1465,
                    3543
                ]
            ],
            "rec_score": 0.9998164176940918
        },
        {
            "content": "(税率 8%対象額",
            "det_score": 0.853462993147711,
            "direction": "horizontal",
            "points": [
                [
                    459,
                    3234
                ],
                [
                    1102,
                    3225
                ],
                [
                    1103,
                    3327
                ],
                [
                    460,
                    3336
                ]
            ],
            "rec_score": 0.9029322266578674
        },
        {
            "content": "¥280)",
            "det_score": 0.8697890050123379,
            "direction": "horizontal",
            "points": [
                [
                    1632,
                    3182
                ],
                [
                    1858,
                    3182
                ],
                [
                    1858,
                    3295
                ],
                [
                    1632,
                    3295
                ]
            ],
            "rec_score": 0.9970043301582336
        },
        {
            "content": "免税事業者",
            "det_score": 0.8758680560327103,
            "direction": "horizontal",
            "points": [
                [
                    357,
                    3103
                ],
                [
                    831,
                    3112
                ],
                [
                    829,
                    3219
                ],
                [
                    355,
                    3210
                ]
            ],
            "rec_score": 0.9983263611793518
        },
        {
            "content": "(内消費税等 8%",
            "det_score": 0.8655238629057851,
            "direction": "horizontal",
            "points": [
                [
                    475,
                    2996
                ],
                [
                    1100,
                    2996
                ],
                [
                    1100,
                    3093
                ],
                [
                    475,
                    3093
                ]
            ],
            "rec_score": 0.908987820148468
        },
        {
            "content": "¥16)",
            "det_score": 0.8736068132308011,
            "direction": "horizontal",
            "points": [
                [
                    1663,
                    2953
                ],
                [
                    1837,
                    2953
                ],
                [
                    1837,
                    3060
                ],
                [
                    1663,
                    3060
                ]
            ],
            "rec_score": 0.9977002143859863
        },
        {
            "content": "(税率 8%対象額",
            "det_score": 0.8736011394336691,
            "direction": "horizontal",
            "points": [
                [
                    488,
                    2884
                ],
                [
                    1100,
                    2884
                ],
                [
                    1100,
                    2981
                ],
                [
                    488,
                    2981
                ]
            ],
            "rec_score": 0.9527927041053772
        },
        {
            "content": "¥216)",
            "det_score": 0.8798753646381205,
            "direction": "horizontal",
            "points": [
                [
                    1613,
                    2841
                ],
                [
                    1827,
                    2835
                ],
                [
                    1830,
                    2940
                ],
                [
                    1616,
                    2946
                ]
            ],
            "rec_score": 0.9991167187690735
        },
        {
            "content": "課税事業者",
            "det_score": 0.8782089667459907,
            "direction": "horizontal",
            "points": [
                [
                    383,
                    2761
                ],
                [
                    839,
                    2773
                ],
                [
                    836,
                    2875
                ],
                [
                    381,
                    2863
                ]
            ],
            "rec_score": 0.9996485114097595
        },
        {
            "content": "(内消費税等 8%",
            "det_score": 0.8545332324999831,
            "direction": "horizontal",
            "points": [
                [
                    422,
                    2552
                ],
                [
                    1015,
                    2569
                ],
                [
                    1012,
                    2666
                ],
                [
                    419,
                    2649
                ]
            ],
            "rec_score": 0.9030265808105469
        },
        {
            "content": "¥36)",
            "det_score": 0.874239359391371,
            "direction": "horizontal",
            "points": [
                [
                    1637,
                    2517
                ],
                [
                    1801,
                    2517
                ],
                [
                    1801,
                    2614
                ],
                [
                    1637,
                    2614
                ]
            ],
            "rec_score": 0.9990556836128235
        },
        {
            "content": "(税率 8%対象額",
            "det_score": 0.8743577414363437,
            "direction": "horizontal",
            "points": [
                [
                    430,
                    2455
                ],
                [
                    1018,
                    2472
                ],
                [
                    1015,
                    2556
                ],
                [
                    427,
                    2539
                ]
            ],
            "rec_score": 0.9258973002433777
        },
        {
            "content": "¥496)",
            "det_score": 0.873335879837346,
            "direction": "horizontal",
            "points": [
                [
                    1584,
                    2421
                ],
                [
                    1787,
                    2411
                ],
                [
                    1792,
                    2503
                ],
                [
                    1589,
                    2513
                ]
            ],
            "rec_score": 0.9990760087966919
        },
        {
            "content": "合計",
            "det_score": 0.7989976852002054,
            "direction": "horizontal",
            "points": [
                [
                    422,
                    2351
                ],
                [
                    774,
                    2357
                ],
                [
                    772,
                    2459
                ],
                [
                    420,
                    2453
                ]
            ],
            "rec_score": 0.9596889615058899
        },
        {
            "content": "¥496",
            "det_score": 0.84043764577154,
            "direction": "horizontal",
            "points": [
                [
                    1423,
                    2337
                ],
                [
                    1756,
                    2319
                ],
                [
                    1761,
                    2406
                ],
                [
                    1428,
                    2424
                ]
            ],
            "rec_score": 0.9845718741416931
        },
        {
            "content": "買上点数",
            "det_score": 0.8724811626703719,
            "direction": "horizontal",
            "points": [
                [
                    474,
                    2164
                ],
                [
                    821,
                    2176
                ],
                [
                    818,
                    2263
                ],
                [
                    471,
                    2251
                ]
            ],
            "rec_score": 0.8529166579246521
        },
        {
            "content": "3点",
            "det_score": 0.877569906485891,
            "direction": "horizontal",
            "points": [
                [
                    1611,
                    2127
                ],
                [
                    1751,
                    2127
                ],
                [
                    1751,
                    2221
                ],
                [
                    1611,
                    2221
                ]
            ],
            "rec_score": 0.999936580657959
        },
        {
            "content": "(内税 8%対象額",
            "det_score": 0.8549906700132722,
            "direction": "horizontal",
            "points": [
                [
                    466,
                    2070
                ],
                [
                    1026,
                    2084
                ],
                [
                    1023,
                    2171
                ],
                [
                    464,
                    2157
                ]
            ],
            "rec_score": 0.6945281624794006
        },
        {
            "content": "¥496)",
            "det_score": 0.8776254550615946,
            "direction": "horizontal",
            "points": [
                [
                    1566,
                    2039
                ],
                [
                    1756,
                    2028
                ],
                [
                    1761,
                    2121
                ],
                [
                    1571,
                    2131
                ]
            ],
            "rec_score": 0.9979957938194275
        },
        {
            "content": "小計",
            "det_score": 0.8659234180608216,
            "direction": "horizontal",
            "points": [
                [
                    483,
                    1981
                ],
                [
                    677,
                    1981
                ],
                [
                    677,
                    2076
                ],
                [
                    483,
                    2076
                ]
            ],
            "rec_score": 0.66346675157547
        },
        {
            "content": "¥496",
            "det_score": 0.8556146869165837,
            "direction": "horizontal",
            "points": [
                [
                    1558,
                    1955
                ],
                [
                    1732,
                    1943
                ],
                [
                    1738,
                    2028
                ],
                [
                    1563,
                    2039
                ]
            ],
            "rec_score": 0.9997748136520386
        },
        {
            "content": "P2086402402169",
            "det_score": 0.8685337040086014,
            "direction": "horizontal",
            "points": [
                [
                    628,
                    1823
                ],
                [
                    1186,
                    1823
                ],
                [
                    1186,
                    1897
                ],
                [
                    628,
                    1897
                ]
            ],
            "rec_score": 0.994750440120697
        },
        {
            "content": "内8 リーフレタス/(有)成神工 ¥216",
            "det_score": 0.7733530013156038,
            "direction": "horizontal",
            "points": [
                [
                    471,
                    1719
                ],
                [
                    1716,
                    1690
                ],
                [
                    1718,
                    1800
                ],
                [
                    474,
                    1829
                ]
            ],
            "rec_score": 0.487512469291687
        },
        {
            "content": "P2055600101303",
            "det_score": 0.8620755339288183,
            "direction": "horizontal",
            "points": [
                [
                    641,
                    1658
                ],
                [
                    1185,
                    1652
                ],
                [
                    1186,
                    1729
                ],
                [
                    641,
                    1734
                ]
            ],
            "rec_score": 0.9976783394813538
        },
        {
            "content": "内8 ★きゅうり/小林宗作",
            "det_score": 0.8030553586848483,
            "direction": "horizontal",
            "points": [
                [
                    485,
                    1558
                ],
                [
                    1448,
                    1558
                ],
                [
                    1448,
                    1660
                ],
                [
                    485,
                    1660
                ]
            ],
            "rec_score": 0.8243062496185303
        },
        {
            "content": "¥130",
            "det_score": 0.8647632946312013,
            "direction": "horizontal",
            "points": [
                [
                    1532,
                    1541
                ],
                [
                    1700,
                    1534
                ],
                [
                    1703,
                    1613
                ],
                [
                    1536,
                    1620
                ]
            ],
            "rec_score": 0.9999488592147827
        },
        {
            "content": "P2023300101503",
            "det_score": 0.8535739641137016,
            "direction": "horizontal",
            "points": [
                [
                    654,
                    1502
                ],
                [
                    1183,
                    1497
                ],
                [
                    1183,
                    1566
                ],
                [
                    654,
                    1571
                ]
            ],
            "rec_score": 0.9996684789657593
        },
        {
            "content": "内8 ★きゅうり/鈴木 仁",
            "det_score": 0.7407760786246895,
            "direction": "horizontal",
            "points": [
                [
                    503,
                    1413
                ],
                [
                    1447,
                    1402
                ],
                [
                    1448,
                    1494
                ],
                [
                    504,
                    1505
                ]
            ],
            "rec_score": 0.9217264652252197
        },
        {
            "content": "¥150",
            "det_score": 0.8529803361907365,
            "direction": "horizontal",
            "points": [
                [
                    1521,
                    1386
                ],
                [
                    1685,
                    1376
                ],
                [
                    1691,
                    1455
                ],
                [
                    1527,
                    1465
                ]
            ],
            "rec_score": 0.9999033212661743
        },
        {
            "content": "000008",
            "det_score": 0.8420085177533121,
            "direction": "horizontal",
            "points": [
                [
                    918,
                    1276
                ],
                [
                    1151,
                    1269
                ],
                [
                    1153,
                    1341
                ],
                [
                    920,
                    1347
                ]
            ],
            "rec_score": 0.9971499443054199
        },
        {
            "content": "西澤",
            "det_score": 0.8301356971000148,
            "direction": "horizontal",
            "points": [
                [
                    1198,
                    1261
                ],
                [
                    1360,
                    1254
                ],
                [
                    1363,
                    1333
                ],
                [
                    1201,
                    1340
                ]
            ],
            "rec_score": 0.9971343278884888
        },
        {
            "content": "お会計券",
            "det_score": 0.8479825696054877,
            "direction": "horizontal",
            "points": [
                [
                    540,
                    1209
                ],
                [
                    835,
                    1209
                ],
                [
                    835,
                    1285
                ],
                [
                    540,
                    1285
                ]
            ],
            "rec_score": 0.9989036917686462
        },
        {
            "content": "#000003",
            "det_score": 0.832013468600706,
            "direction": "horizontal",
            "points": [
                [
                    884,
                    1207
                ],
                [
                    1148,
                    1198
                ],
                [
                    1150,
                    1269
                ],
                [
                    886,
                    1278
                ]
            ],
            "rec_score": 0.9912707805633545
        },
        {
            "content": "R9309",
            "det_score": 0.8094638501787745,
            "direction": "horizontal",
            "points": [
                [
                    1195,
                    1189
                ],
                [
                    1392,
                    1182
                ],
                [
                    1394,
                    1254
                ],
                [
                    1198,
                    1261
                ]
            ],
            "rec_score": 0.9985978603363037
        },
        {
            "content": "09:08",
            "det_score": 0.8513526355901968,
            "direction": "horizontal",
            "points": [
                [
                    1442,
                    1174
                ],
                [
                    1635,
                    1167
                ],
                [
                    1638,
                    1241
                ],
                [
                    1444,
                    1248
                ]
            ],
            "rec_score": 0.9983935952186584
        },
        {
            "content": "3901",
            "det_score": 0.8389774914979935,
            "direction": "horizontal",
            "points": [
                [
                    1465,
                    1031
                ],
                [
                    1622,
                    1024
                ],
                [
                    1625,
                    1100
                ],
                [
                    1468,
                    1108
                ]
            ],
            "rec_score": 0.9998389482498169
        },
        {
            "content": "000801精算機1",
            "det_score": 0.8261694877181531,
            "direction": "horizontal",
            "points": [
                [
                    557,
                    1015
                ],
                [
                    1029,
                    1004
                ],
                [
                    1031,
                    1068
                ],
                [
                    559,
                    1079
                ]
            ],
            "rec_score": 0.8924864530563354
        },
        {
            "content": "000801精算機1",
            "det_score": 0.7923262641892176,
            "direction": "horizontal",
            "points": [
                [
                    1130,
                    993
                ],
                [
                    1596,
                    965
                ],
                [
                    1599,
                    1024
                ],
                [
                    1134,
                    1052
                ]
            ],
            "rec_score": 0.8452281355857849
        },
        {
            "content": "2024年 8月10日(土)08:59 #000011",
            "det_score": 0.76677570112371,
            "direction": "horizontal",
            "points": [
                [
                    567,
                    950
                ],
                [
                    1601,
                    899
                ],
                [
                    1605,
                    971
                ],
                [
                    571,
                    1021
                ]
            ],
            "rec_score": 0.7705328464508057
        },
        {
            "content": "TEL 0538-41-1100",
            "det_score": 0.7891764333521688,
            "direction": "horizontal",
            "points": [
                [
                    899,
                    822
                ],
                [
                    1425,
                    800
                ],
                [
                    1428,
                    856
                ],
                [
                    902,
                    878
                ]
            ],
            "rec_score": 0.8409962058067322
        },
        {
            "content": "静岡県袋井市山名町3-3",
            "det_score": 0.8232278183336981,
            "direction": "horizontal",
            "points": [
                [
                    773,
                    750
                ],
                [
                    1545,
                    729
                ],
                [
                    1547,
                    795
                ],
                [
                    774,
                    817
                ]
            ],
            "rec_score": 0.9089908003807068
        },
        {
            "content": "とれたて食楽部",
            "det_score": 0.8368622312565417,
            "direction": "horizontal",
            "points": [
                [
                    905,
                    666
                ],
                [
                    1359,
                    657
                ],
                [
                    1360,
                    732
                ],
                [
                    906,
                    740
                ]
            ],
            "rec_score": 0.7296138405799866
        },
        {
            "content": "登録番号 T5080401017738",
            "det_score": 0.8375435412981505,
            "direction": "horizontal",
            "points": [
                [
                    640,
                    582
                ],
                [
                    1384,
                    566
                ],
                [
                    1386,
                    637
                ],
                [
                    642,
                    653
                ]
            ],
            "rec_score": 0.6307746171951294
        }
    ]
}

となっている

この2つのファイルを使って
日付,店名,商品名,数量,金額
を抽出し
CSVファイルにできるか試すことにする

chatGPTでは目的通りのCSVファイルが作成された

次は他のレシートでも実験してみる

1
~/Downloads/Photos-001/

に色々Google Photo の写真があるので試す

ぴあごも問題なく抽出できる
ココカラファインもできる

ただし単品の金額ではなく
合計金額になっているので
プロンプトを変えることにする

データから日付,店名,商品名,数量,金額 を抽出し 金額の部分は単品の金額にして CSVファイルにして
としたが
これだとものによっては金額が単品になっていない

これは杏林堂などのレシートでも同じ

データから日付,店名,商品名,数量,単品価格 を抽出し CSVファイルにして
とプロンプトを変えても変わらなかった

Yomitokuで写真やレシートを解析

Yomitokuで写真やレシートを解析

Yomitokuで写真やレシートを解析してみる
では
Google Colab で実行しているが
レシート解析に成功している

なお
【Python】PyTorchをAppleシリコン搭載Mac(M1、M2)にインストールする方法 – AppleシリコンGPUで動かす方法も、併せて紹介 –

によれば

PyTorchをNvidia製GPUで動かすためには、扱うデータを「メインメモリ」から、
「GPU上のメモリ」に移す必要があります。

AppleシリコンGPUの場合も同じで、データを、メインメモリから、GPU上のメモリに移す処理が必要

1
2
import torch
print(torch.backends.mps.is_available())


True
となればOK

AppleシリコンGPUを使用する場合、
* device = torch.device(‘mps’)
* {データ}.to(device)
を使う

mpsとは、Metal Perfomance Shadersの略称

メモリのサイズが気になったのでChatGPTで調べてみた

1 MacBook Air(16GBモデル)のGPUメモリサイズは固定ではなく、
ユニファイドメモリ(16GB)の中から動的に割り当てられます。
最大で約8GB〜12GB程度が割り当て可能ですが、これはシステム負荷に依存します。

必要に応じてアクティビティモニタやPyTorchでリアルタイムの使用量を確認するのがおすすめです。

とりあえず実験を進める
https://www.muji.com/public/media/jp/doc/9952536/muji2021aw_all.pdf
無印良品 2021 秋冬 収納・家具・家電・ファブリック
からPDFダウンロード

トミカ&プラレールカタログwithあにあ 2022-2023
https://www.takaratomy.co.jp/products/plarail/catalog/2022_2023TPcatalog.pdf

これを
Data/imageフォルダに移動しておく

1
pip install yomitoku

でyomitokuをインストール

次に

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cv2
import torch
 
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_image, load_pdf
 
if __name__ == "__main__":
    filename = "drugstore_flyer"
    pdf_filepath = f"./data/image/{filename}.pdf"
 
    image = load_pdf(pdf_filepath)
    analyzer = DocumentAnalyzer(
        configs={},
        visualize=True,
        device='mps'
    )
 
    results, ocr_vis, layout_vis = analyzer(image[0])
 
    # to HTML
    # results.to_html(f"./outputs/{filename}.html")
 
    # to image
    cv2.imwrite(f"./outputs/{filename}_ocr.jpg", ocr_vis)
    cv2.imwrite(f"./outputs/{filename}_layout.jpg", layout_vis)

として
pdf_ocr.py
を保存

次に実行
しかしこれだとエラーになるので

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import cv2
 
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_image, load_pdf
 
pdf_filepath = f"document.pdf"
 
image = load_pdf(pdf_filepath)
analyzer = DocumentAnalyzer(
    configs={},
    visualize=True,
    device='mps'
)
 
results, ocr_vis, layout_vis = analyzer(image[0])
 
 
# to image
cv2.imwrite(f"document_ocr.jpg", ocr_vis)
cv2.imwrite(f"document_layout.jpg", layout_vis)

でファイルを1つにして実行する

しかし

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
2024-12-14 06:37:40,596 - yomitoku.base - INFO - Initialize TextDetector
model.safetensors: 100%|█████████████████████| 102M/102M [00:03<00:00, 34.0MB/s]
2024-12-14 06:37:45,343 - yomitoku.base - INFO - Initialize TextRecognizer
config.json: 100%|█████████████████████████████| 256/256 [00:00<00:00, 1.43MB/s]
model.safetensors: 100%|█████████████████████| 200M/200M [00:06<00:00, 30.7MB/s]
2024-12-14 06:37:53,752 - yomitoku.base - INFO - Initialize LayoutParser
model.safetensors: 100%|█████████████████████| 172M/172M [00:04<00:00, 34.5MB/s]
2024-12-14 06:37:59,630 - yomitoku.base - INFO - Initialize TableStructureRecognizer
model.safetensors: 100%|█████████████████████| 172M/172M [00:06<00:00, 28.3MB/s]
2024-12-14 06:38:07,932 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 1.2879679203033447
2024-12-14 06:38:07,966 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.03367877006530762
2024-12-14 06:38:09,561 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 2.916445255279541
2024-12-14 06:38:19,991 - yomitoku.base - INFO - Initialize TextDetector
2024-12-14 06:38:20,963 - yomitoku.base - INFO - Initialize TextRecognizer
2024-12-14 06:38:22,444 - yomitoku.base - INFO - Initialize LayoutParser
2024-12-14 06:38:23,230 - yomitoku.base - INFO - Initialize TableStructureRecognizer
2024-12-14 06:38:24,966 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 1.029360055923462
2024-12-14 06:38:24,982 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.01499795913696289
2024-12-14 06:38:26,832 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 2.895256757736206
2024-12-14 06:38:26,837 - yomitoku.base - ERROR - Error occurred in TextRecognizer __call__:
        An attempt has been made to start a new process before the
        current process has finished its bootstrapping phase.
 
        This probably means that you are not using fork to start your
        child processes and you have forgotten to use the proper idiom
        in the main module:
 
            if __name__ == '__main__':
                freeze_support()
                ...
 
        The "freeze_support()" line can be omitted if the program
        is not going to be frozen to produce an executable.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/spawn.py", line 125, in _main
    prepare(preparation_data)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/spawn.py", line 236, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/spawn.py", line 287, in _fixup_main_from_path
    main_content = runpy.run_path(main_path,
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/runpy.py", line 289, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/runpy.py", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/Users/snowpool/aw10s/ollama/pdf_ocr.py", line 15, in <module>
    results, ocr_vis, layout_vis = analyzer(image[0])
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/yomitoku/document_analyzer.py", line 304, in __call__
    resutls, ocr, layout = asyncio.run(self.run(img))
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
    return future.result()
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/yomitoku/document_analyzer.py", line 293, in run
    results = await asyncio.gather(*tasks)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/yomitoku/ocr.py", line 83, in __call__
    rec_outputs, vis = self.recognizer(img, det_outputs.points, vis=vis)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/yomitoku/base.py", line 45, in wrapper
    raise e
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/yomitoku/base.py", line 40, in wrapper
    result = func(*args, **kwargs)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/yomitoku/text_recognizer.py", line 103, in __call__
    for data in dataloader:
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 484, in __iter__
    return self._get_iterator()
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 415, in _get_iterator
    return _MultiProcessingDataLoaderIter(self)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1138, in __init__
    w.start()
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/process.py", line 121, in start
    self._popen = self._Popen(self)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/context.py", line 288, in _Popen
    return Popen(process_obj)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/popen_spawn_posix.py", line 32, in __init__
    super().__init__(process_obj)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/popen_fork.py", line 19, in __init__
    self._launch(process_obj)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/popen_spawn_posix.py", line 42, in _launch
    prep_data = spawn.get_preparation_data(process_obj._name)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/spawn.py", line 154, in get_preparation_data
    _check_not_importing_main()
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/multiprocessing/spawn.py", line 134, in _check_not_importing_main
    raise RuntimeError('''
RuntimeError:
        An attempt has been made to start a new process before the
        current process has finished its bootstrapping phase.
 
        This probably means that you are not using fork to start your
        child processes and you have forgotten to use the proper idiom
        in the main module:
 
            if __name__ == '__main__':
                freeze_support()
                ...
 
        The "freeze_support()" line can be omitted if the program
        is not going to be frozen to produce an executable.

となる

このエラーメッセージは、

multiprocessing モジュールを使用する際に適切なプロセス起動方法が設定されていないことが原因です。
特に、macOSではデフォルトで spawn を使用してプロセスを開始するため、
if __name__ == “__main__”: を使用しないとこのエラーが発生します。
以下の修正版コードを使用して、この問題を解決できます。

とのこと

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cv2
import torch
 
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_image, load_pdf
 
if __name__ == "__main__":
    filename = "drugstore_flyer"
    pdf_filepath = f"./images/{filename}.pdf"
 
    image = load_pdf(pdf_filepath)
    analyzer = DocumentAnalyzer(
        configs={},
        visualize=True,
        device='mps'
    )
 
    results, ocr_vis, layout_vis = analyzer(image[0])
 
    # to HTML
    # results.to_html(f"./outputs/{filename}.html")
 
    # to image
    cv2.imwrite(f"./outputs/{filename}_ocr.jpg", ocr_vis)
    cv2.imwrite(f"./outputs/{filename}_layout.jpg", layout_vis)


https://github.com/Shakshi3104/ymtk-supplementary/blob/main/app.py
にあったのでコードを書き換える

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cv2
import torch
 
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_image, load_pdf
 
if __name__ == "__main__":
    filename = "document"
    pdf_filepath = f"./images/{filename}.pdf"
 
    image = load_pdf(pdf_filepath)
    analyzer = DocumentAnalyzer(
        configs={},
        visualize=True,
        device='mps'
    )
 
    results, ocr_vis, layout_vis = analyzer(image[0])
 
    # to HTML
    # results.to_html(f"./outputs/{filename}.html")
 
    # to image
    cv2.imwrite(f"./outputs/{filename}_ocr.jpg", ocr_vis)
    cv2.imwrite(f"./outputs/{filename}_layout.jpg", layout_vis)

として

1
2
mkdir outputs 
mv document.pdf images/

でPDFを移動して
出力先のフォルダも作成しておく

これで実行すると

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2024-12-15 05:50:41,470 - yomitoku.base - INFO - Initialize TextDetector
2024-12-15 05:50:42,794 - yomitoku.base - INFO - Initialize TextRecognizer
2024-12-15 05:50:44,762 - yomitoku.base - INFO - Initialize LayoutParser
2024-12-15 05:50:45,957 - yomitoku.base - INFO - Initialize TableStructureRecognizer
2024-12-15 05:50:48,155 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 1.2731208801269531
2024-12-15 05:50:48,189 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.033370256423950195
2024-12-15 05:50:49,887 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 3.005059003829956
2024-12-15 05:51:04,448 - yomitoku.base - INFO - TextRecognizer __call__ elapsed_time: 14.56023383140564
snowpool@kubotasorunoAir ollama % mkdir outputs
snowpool@kubotasorunoAir ollama % python pdf_ocr.py
2024-12-15 05:52:39,988 - yomitoku.base - INFO - Initialize TextDetector
2024-12-15 05:52:41,732 - yomitoku.base - INFO - Initialize TextRecognizer
2024-12-15 05:52:43,589 - yomitoku.base - INFO - Initialize LayoutParser
2024-12-15 05:52:44,413 - yomitoku.base - INFO - Initialize TableStructureRecognizer
2024-12-15 05:52:46,277 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 1.1299068927764893
2024-12-15 05:52:46,312 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.03462696075439453
2024-12-15 05:52:48,106 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 2.958970069885254
2024-12-15 05:53:01,007 - yomitoku.base - INFO - TextRecognizer __call__ elapsed_time: 12.900847911834717

となるが
最初のページのみしか処理されない

これは

load_pdf関数がPDFを画像に変換した際、最初のページだけを image[0] で指定しているため、
最初のページしか処理されていない状況です。
すべてのページを処理するには、PDF内のすべてのページをループするようにコードを修正します。

とのこと

これをコードを変えて全ページを実行してみるが

ページ数は147
処理開始が6時5分
とりあえず半分やるだけで1時間以上かかるので停止

次はレシートをcolabでやってみる

Firestore DBからメッセージ取得と読み上げ

Firestore DBからメッセージ取得と読み上げ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import warnings
from google.cloud import firestore
import datetime
import absl.logging
import requests
import os
import glob
from playsound import playsound
 
# 警告を無視する設定
warnings.filterwarnings("ignore", category=UserWarning, module="google.cloud.firestore_v1.base_collection")
# Firestore クライアントの初期化
db = firestore.Client.from_service_account_json("serviceAccountKey.json")
 
# VoiceVoxの設定
VOICEVOX_API_URL = "http://192.168.1.69:50021"
 
def synthesize_speech(text, speaker=1):
    """指定されたテキストを音声に合成してファイル名を返す関数"""
    params = {'text': text, 'speaker': speaker}
    response = requests.post(f"{VOICEVOX_API_URL}/audio_query", params=params)
    if response.status_code == 200:
        query_data = response.json()
        synthesis_response = requests.post(f"{VOICEVOX_API_URL}/synthesis", params={'speaker': speaker}, json=query_data)
        if synthesis_response.status_code == 200:
            filename = f"event_voice_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.wav"
            with open(filename, "wb") as f:
                f.write(synthesis_response.content)
            return filename
    return None
 
def play_audio_file(filename):
    """音声ファイルを再生する関数"""
    if os.path.exists(filename):
        playsound(filename)
 
def read_unread_messages():
    messages_ref = db.collection("messages").where("user_id", "==", target_user_id).where("read", "==", False)
    unread_messages = messages_ref.stream()
 
    for message in unread_messages:
        message_data = message.to_dict()
        message_text = message_data["text"]
        # 音声合成してファイルを生成
        audio_filename = synthesize_speech(message_text)
        if audio_filename:
            # 音声ファイルを再生
            play_audio_file(audio_filename)
            # メッセージを既読に更新
            message.reference.update({"read": True})
            # 生成された音声ファイルを後でクリーンアップ
            os.remove(audio_filename)
 
# 特定のユーザーIDを指定してメッセージを取得して読み上げる
target_user_id = ""
read_unread_messages()

Firestoreからメッセージを取得して、未読メッセージを音声で読み上げ、
その後に音声ファイルを整理する一連の処理を実行

Linebotの既読のフラグの追加

既読のフラグの追加

Firestoreで取得したメッセージを既読に設定するために、取得した後に各メッセージのread属性をTrueに更新する処理を追加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import warnings
from google.cloud import firestore
import datetime
import absl.logging
 
# 警告を無視する設定
warnings.filterwarnings("ignore", category=UserWarning, module="google.cloud.firestore_v1.base_collection")
 
# Firestore クライアントの初期化
db = firestore.Client.from_service_account_json("serviceAccountKey.json")
 
# gRPCの警告を抑制
absl.logging.set_verbosity("info")
 
def get_user_messages(user_id):
    messages_ref = db.collection("messages")
    now = datetime.datetime.now()
     
    # 24時間以内のメッセージを取得するクエリ
    query = messages_ref.where("user_id", "==", user_id).where("timestamp", ">=", now - datetime.timedelta(days=1))
    # 24時間以上前のメッセージを削除するクエリ
    old_messages_query = messages_ref.where("user_id", "==", user_id).where("timestamp", "<", now - datetime.timedelta(days=1))
 
    # メッセージを取得してリストに格納
    user_messages = []
    for doc in query.stream():
        user_messages.append(doc.to_dict())
        # メッセージを既読に設定
        doc.reference.update({"read": True})
     
    # 古いメッセージを削除
    for doc in old_messages_query.stream():
        doc.reference.delete()
 
    return user_messages
 
# 特定のユーザーIDを指定してメッセージを取得
user_id = ""
messages = get_user_messages(user_id)
 
for message in messages:
    print(f"メッセージ: {message['text']}, タイムスタンプ: {message['timestamp']}")

以下GPTの解説
メッセージの取得時にそのメッセージをread属性をTrueに設定する処理を追加したことです。

これにより、メッセージを取得すると同時にそれらを既読としてマークし、
次回のクエリではそれらが含まれないようにします。
これは、アプリケーションで未読メッセージを効率的に処理するために有効です。