google bardに自動でエラー修正してもらう

  • URLをコピーしました!
目次

はじめに

google bardの2023/05/11時点の挙動で記事を作成しています。
日本語での入力にも対応し、機能拡張も行われてかなり使いやすくなってきました。コードの作成をお願いすると、google colabの新規ノートブックとして張り付けるボタンが出てきます。ところが、結構間違いが多いというところも欠点でした。エラーを教えながら修正したコードを実行することを繰り返すのですが、この繰り返しを自動で実行できればというところが今回の記事で調べたところです。

実際に生成させたコード

google bardは記事作成時点でAPIを公開していないので、ブラウザのプロンプトにメッセージを送ってあげる必要があります。google colab環境を想定していますが、ブラウザからChromeを立ち上げることはできないので、Google Cloud Platform インスタンスで実行しているgoogle colab環境が実行環境となります。

実際のコード

from selenium import webdriver
import requests
import json
import os

def get_bard_response(prompt):
  """Bard から応答を取得します。

  Args:
    prompt: 応答を取得するプロンプト。

  Returns:
    Bard からの応答。
  """

  # ブラウザを起動します。
  driver = webdriver.Chrome()

  # Bard の Web サイトに移動します。
  driver.get("https://bard.ai/")

  # プロンプトを入力します。
  input_element = driver.find_element_by_id("prompt")
  input_element.send_keys(prompt)

  # 応答を取得します。
  response_element = driver.find_element_by_id("response")
  response = response_element.text

  # ブラウザを終了します。
  driver.quit()

  return response

def main():
  """メイン関数。
  """

  # 実装したいことを入力してください。
  prompt = input("実装したいことを入力してください: ")

  # Bard から応答を取得します。
  response = get_bard_response(prompt)

  # 応答を新しいノートブックに貼り付けます。
  with open("response.py", "w") as f:
    f.write(response)

  # ノートブックを実行します。
  %run response.py

  # エラーが発生した場合は、エラーとソースコードを Bard に送信します。
  while True:
    try:
      # ノートブックを実行します。
      %run response.py
    except Exception as e:
      # エラーを Bard に送信します。
      response = get_bard_response(f"{e}\n{response}")

      # 応答を新しいノートブックに貼り付けます。
      with open("response.py", "w") as f:
        f.write(response)

      # ノートブックを実行します。
      %run response.py
    else:
      # エラーがなければ終了します。
      break

if __name__ == "__main__":
  main()

まとめ

google colab環境で管理アプリと実行アプリをそれぞれのノートブックで実行する構成です。できるだけ処理に日本語でコメントを入れてもらうようにしているので、環境に違いがある場合も修正する場所が調べやすくなりました。bardは常に更新されているので、環境については更新していく必要があります。

バーマン
プロダクトマネージャー
ソフトウェア開発に長く従事しています。
・機械学習のサンプルコード作成
・生成型AIから調べたことのまとめ
・これまでのビジネスで経験したことのまとめ
を記事として作成させていただいています。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次