Open13
Open Interpreter を動かしてみる

Open Interpreter

インストール
$ pip install open-interpreter
初回実行
$ interpreter
Welcome to Open Interpreter.
────────────────────────────────────────────────────────────────────────────────
▌ OpenAI API key not found
To use GPT-4 (recommended) please provide an OpenAI API key.
To use Code-Llama (free but less capable) press enter.
────────────────────────────────────────────────────────────────────────────────
OpenAI API key:

API トークンを取得
API を選択
API トークンを作成する

API キーを入力する
OpenAI API key: [ここに API キーを入力]
Tip: To save this key for later, run export OPENAI_API_KEY=your_api_key on
Mac/Linux or setx OPENAI_API_KEY your_api_key on Windows.
────────────────────────────────────────────────────────────────────────────────
▌ Model set to GPT-4
Open Interpreter will require approval before running code. Use interpreter -y
to bypass this.
Press CTRL-C to exit.
> こんにちは
ここでそのまま API キーを入力してから、プロンプトを実行するとエラーになってしまったので、Tip で表示されている OPENAI_API_KEY を環境変数に登録する。
.zshrc に書き込む
export OPENAI_API_KEY = 発行した API キー
% source ~/.zshrc
% interpreter
▌ Model set to GPT-4
Open Interpreter will require approval before running code. Use interpreter -y to bypass this.
Press CTRL-C to exit.
> こんにちは
こんにちは、izuchyさん。どのようにお手伝いできますか?

ダークモード ↔ 通常モード
> mac をダークモードにしてもらえますか
もちろんです。Macのダークモードを有効にするには、AppleScriptを使用してシステムの外観設定を変更します。以下の手
順で進めます。
1 AppleScriptを使用してシステムの外観設定をダークモードに変更するコードを実行します。
それでは、手順に従ってコードを実行します。
tell application "System Events"
tell appearance preferences
set dark mode to true
end tell
end tell
Would you like to run this code? (y/n)
y
tell application "System Events"
tell appearance preferences
set dark mode to true
end tell
end tell
AppleScriptを実行し、Macの外観設定をダークモードに変更しました。これでMacがダークモードになっている
はずです。確認してみてください。
> もとに戻してもらえますか
もちろんです。Macの外観設定をライトモード(通常モード)に戻すには、同様にAppleScriptを使用してシステムの外観
設定を変更します。以下の手順で進めます。
1 AppleScriptを使用してシステムの外観設定をライトモードに変更するコードを実行します。
それでは、手順に従ってコードを実行します。
tell application "System Events"
tell appearance preferences
set dark mode to false
end tell
end tell
Would you like to run this code? (y/n)

> http://yahoo.co.jp を表示し表示されているトップニュースのニュースとリンク先をまとめて csv にしてもらえますか
はい、そのタスクを達成するための計画を立てましょう。
1 必要なパッケージがインストールされていることを確認します。このタスクでは、ウェブページをスクレイピングするために requests と
beautifulsoup4 が必要です。また、データをCSVファイルに書き込むために pandas も必要です。
2 http://yahoo.co.jp のウェブページを取得します。
3 BeautifulSoupを使用してHTMLを解析し、トップニュースのタイトルとリンクを取得します。
4 取得したデータをpandas DataFrameに変換します。
5 DataFrameをCSVファイルに書き込みます。
それでは、最初のステップとして必要なパッケージがインストールされていることを確認しましょう。
pip list
Would you like to run this code? (y/n)

requests と beautifulsoup4 が既にインストールされていますが、pandas
が見つかりませんでした。これらのパッケージをインストールしましょう。
pip install pandas

pandas のインストールが完了しました。次に、http://yahoo.co.jp のウェブページを取得します。
import requests
response = requests.get('http://yahoo.co.jp')
response.status_code
```

import requests
response = requests.get('http://yahoo.co.jp')
response.status_code
200
ウェブページの取得に成功しました(ステータスコード200)。次に、BeautifulSoupを使用してHTMLを解析し、トップニュースのタイトルとリンクを
取得します。
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
news = soup.find_all('a', class_='newsFeed_item_link')
news_data = [{'title': item.text.strip(), 'link': item.get('href')} for item in news]
news_data

from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
news = soup.find_all('a', class_='newsFeed_item_link')
news_data = [{'title': item.text.strip(), 'link': item.get('href')} for item in news]
news_data
[]
申し訳ありませんが、トップニュースのデータを取得できませんでした。ウェブページの構造が変わった可能性があります。再度HTMLを確認して、適
セレクタを見つける必要があります。HTMLの一部を表示してみましょう。
print(soup.prettify()[:2000])

print(soup.prettify()[:2000])
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
<title>
Yahoo! JAPAN
</title>
<meta
content="あなたの毎日をアップデートする情報ポータル。検索、ニュース、天気、スポーツ、メール、ショッピング、オークションなど便利
なサービスを展開しています。" name="description"/>
<meta content="noodp" name="robots"/>
<meta content="width=1010" name="viewport"/>
<link href="//s.yimg.jp" rel="dns-prefetch"/>
<link href="//yads.c.yimg.jp" rel="dns-prefetch"/>
<meta content="fsLMOiigp5fIpCDMEVodQnQC7jIY1K3UXW5QkQcBmVs" name="google-site-verification"/>
<link href="android-app://jp.co.yahoo.android.yjtop/yahoojapan/home/top" rel="alternate"/>
<link href="https://m.yahoo.co.jp/" media="only screen and (max-width: 640px)" rel="alternate"/>
<link href="https://www.yahoo.co.jp/" rel="canonical"/>
<link href="https://s.yimg.jp/c/icon/s/bsc/2.0/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon"/>
<link href="https://s.yimg.jp/c/icon/s/bsc/2.0/favicon.ico" rel="icon" type="image/vnd.microsoft.icon"/>
<link href="https://s.yimg.jp/c/icon/s/bsc/2.0/y120.png" rel="apple-touch-icon"/>
<meta content="Yahoo! JAPAN" property="og:title"/>
<meta content="website" property="og:type"/>
<meta content="https://www.yahoo.co.jp/" property="og:url"/>
<meta content="https://s.yimg.jp/images/top/ogp/fb_y_1500px.png" property="og:image"/>
<meta
content="あなたの毎日をアップデートする情報ポータル。検索、ニュース、天気、スポーツ、メール、ショッピング、オークションなど便利
なサービスを展開しています。" property="og:description"/>
<meta content="Yahoo! JAPAN" property="og:site_name"/>
<meta content="summary_large_image" property="twitter:card"/>
<meta content="@Yahoo_JAPAN_PR" property="twitter:site"/>
<meta content="https://s.yimg.jp/images/top/ogp/tw_y_1400px.png" property="twitter:image"/>
<meta content="472870002762883" property="fb:app_id"/>
<link href="//s.yimg.jp/images/yjtop-pc/orion/v202/bundle_v202.css" rel="stylesheet"/>
<script>
window.onbeforeunload = function() {}
</script>
<script>
var T
HTMLを確認したところ、ニュースのリンクとタイトルを取得するための適切なセレクタが見つかりませんでした。Yahoo!
JAPANのページは動的に生成される可能性があり、その場合、requests と BeautifulSoup だけでは完全にページを読み込むことができません。
この問題を解決するためには、JavaScriptを実行できるブラウザを模倣するツール(例えばSeleniumなど)を使用する必要があり
ます。しかし、これらのツールはユーザーのマシンに追加のソフトウェアをインストールする必要があり、また実行には長い時間がかかることがあり
この問題を解決するための最善の方法を決定するために、ユーザーの意見を伺いたいと思います。

> 現時点だと「処理水 1回目の7788トン放出終了」と表示されている近辺がニュースの箇所です。ここから推測して対応できますか
ありがとうございます。その情報を元に再度HTMLを解析してみます。ニュースのタイトルとリンクを取得するための新しいセレクタを見つけるために
HTMLの一部を再度表示してみましょう。今回は、提供されたニュースタイトル「処理水 1回目の7788トン放出終了」を含む部分を探します。
news_part = soup.find_all(string=lambda text: '処理水 1回目の7788トン放出終了' in text)
news_part

申し訳ありませんが、エラーが発生しました。HTMLの解析に問題があるようです。再度、適切なセレクタを見つけるためにHTMLを確認します。今回は
提供されたニュースタイトル「処理水 1回目の7788トン放出終了」を含む部分を探します。
news_part = soup.find_all(string=lambda text: '処理水 1回目の7788トン放出終了' in str(text))
news_part