最近自室のポトスの成長が著しく、ジャングルになりつつある菅野です。
先日、OpenAIから、公式のプラグインとして「Code Interpreter」が発表されました。
「Code Interpreter」では、Pythonコードの生成・実行が可能ですが、本記事では、「Code Interpreter」が生成したコードを実行する場合、外部APIにアクセスは可能なのか、確認してみます。
検証で用いる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
残念ながら、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では、キャリア採用を行っています。少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。 www.wantedly.com
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSやクラウドサービスを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
当社ChatGPT関係の記事