Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

ChatGPT Code Interpreter で実行されるコードから、外部へアクセスはできるのか?

最近自室のポトスの成長が著しく、ジャングルになりつつある菅野です。

先日、OpenAIから、公式のプラグインとして「Code Interpreter」が発表されました。
「Code Interpreter」では、Pythonコードの生成・実行が可能ですが、本記事では、「Code Interpreter」が生成したコードを実行する場合、外部APIにアクセスは可能なのか、確認してみます。

openai.com

検証で用いるAPI

今回の検証では以下のREST-APIを認証なしで実行できるデモ用サイトを利用します。
JSONPlaceholder - Free Fake REST API

上記サイトの
https://jsonplaceholder.typicode.com/todos/1
へリクエストを送信すると、以下のようなレスポンスが得られます。

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

Code Interpreterを用いて外部APIにリクエストを送付できるか

以下のようにChatGPTに入力してみます。

以下のURLから、JSONデータを取得してほしい。

https://jsonplaceholder.typicode.com/todos/1

さて、無事APIリクエストを送ることができるのか。。。

残念ながら、Code Interpreterでは外部APIにリクエストを送付することができなかったです
セキュリティ的にCode Interpreter実行環境のインターネットアクセスが許可されてなさそうですね。

外部APIへアクセスするPythonコードを生成してもらう

これだけで終わってしまっては味気ないので、
せっかくですからAPIにアクセスして結果を出力するPythonコードを生成してもらいましょう。

以下のURLから、JSONデータを取得するPythonプログラムを教えて。

 https://jsonplaceholder.typicode.com/todos/1


レスポンスは、dataclassに格納されるようにしてください。
レスポンスの形式は、以下のような内容になります。


``
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
``

得られた出力がこちら

Pythonのdataclassまで理解して、意図通りのコードを生成してくれていますね。

実際にローカル環境で実行してみる

import requests
from dataclasses import dataclass

@dataclass
class Todo:
    userId: int
    id: int
    title: str
    completed: bool

def get_json_data(url):
    response = requests.get(url)
    response.raise_for_status() # エラーがあればここで例外を発生
    data = response.json() # レスポンスをjsonとして読み込む
    return Todo(**data) # dataをTodoクラスに変換

url = "https://jsonplaceholder.typicode.com/todos/1"
todo = get_json_data(url)
print(todo)

上記コードをローカルファイルに書き出し、実際にPythonでリクエストを送付してみます。

>python request.py
Todo(userId=1, id=1, title='delectus aut autem', completed=False)

当たり前ですが無事実行完了しAPIからデータを取得できました。

まとめ

Code Interpreterでは外部APIにアクセスしてデータ取得ができないことがわかりました。
APIアクセスが必要なコードは現状コード生成だけ実施してローカルで実行することになりそうですね。
とはいえ、簡単な入力できれいなコードが生成できるのでそこまで手間ではなさそうですが。

今後も、ChatGPTの活用方法や最新情報を発信していきたいと思います! ぜひご覧ください

Acroquest Technologyでは、キャリア採用を行っています。
  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSクラウドサービスを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
  少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。 www.wantedly.com

当社ChatGPT関係の記事

acro-engineer.hatenablog.com

acro-engineer.hatenablog.com

acro-engineer.hatenablog.com

acro-engineer.hatenablog.com