Open13

Open Interpreter を動かしてみる

izuchyizuchy

インストール

$ 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: 
izuchyizuchy

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さん。どのようにお手伝いできますか?               
izuchyizuchy

ダークモード ↔ 通常モード

> 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)

izuchyizuchy
> 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)
izuchyizuchy
 requests と beautifulsoup4 が既にインストールされていますが、pandas                                                                      
  が見つかりませんでした。これらのパッケージをインストールしましょう。                                                                     
                                                                                                                                           

                                                                                                                                           
  pip install pandas                                                                                                                       
izuchyizuchy
                                                                                                                                          
  pandas のインストールが完了しました。次に、http://yahoo.co.jp のウェブページを取得します。                                               
                                                                                                                                           

                                                                                                                                           
  import requests                                                                                                                          
                                                                                                                                           
  response = requests.get('http://yahoo.co.jp')                                                                                            
  response.status_code                                                                                                                     
                                                                                                                                          ```
izuchyizuchy
                                                                                                                                          
  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     
izuchyizuchy
 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])                                                                                                            
                                                                                     
izuchyizuchy
 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など)を使用する必要があり                     
  ます。しかし、これらのツールはユーザーのマシンに追加のソフトウェアをインストールする必要があり、また実行には長い時間がかかることがあり   
                                                                                                                                           
  この問題を解決するための最善の方法を決定するために、ユーザーの意見を伺いたいと思います。                      
izuchyizuchy
> 現時点だと「処理水 1回目の7788トン放出終了」と表示されている近辺がニュースの箇所です。ここから推測して対応できますか
                                                                                                                                           
  ありがとうございます。その情報を元に再度HTMLを解析してみます。ニュースのタイトルとリンクを取得するための新しいセレクタを見つけるために   
  HTMLの一部を再度表示してみましょう。今回は、提供されたニュースタイトル「処理水 1回目の7788トン放出終了」を含む部分を探します。           
                                                                                                                                           

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