初めてPythonというのに挑戦してとりあえずエラーで挫折している

おれはクヌート・ハムスンというノルウェーの古い作家の小説『土の恵み』を読みたいと思った。日本語訳は戦前のものしかなく、流通していないといってよい。ただ、プロジェクト・グーテンベルクで英語版は見つけた。

goldhead.hatenablog.com

で、機械翻訳より生成AIのほうが読める文章を出してくることを発見した。「ハードボイルド風に」とするととくにいい感じになる。あとは、どうやってAIに翻訳を頼むか、これである。『土の恵み』は短編小説ではない。英語で761,000文字くらいある。これを少しずつAIに流し込んでいったら、何年かかるかわからない。一括でどうにかしたい。

というわけで、その方法をChatGPTに聞いてみた。状況を説明すると、「まず、サイトをスクレイピング……」とか言い出したので、「あ、それはいいです。テキストファイルがあります」と説明。翻訳もあなたでいいです、ということにした(たぶんBing AIが採用しているエンジンのほうが無料で使わせてもらっているこの人より最新だろうけど)。

 

で、どんなプログラミング言語がいいか聞いたら「Pythonがいいんじゃね?」という。では、一から教えてくれというと、1.Pythonのセットアップ、2.OpenAI APIキーの取得、3.必要なPythonライブラリのインストール、4.Pythonスクリプトの開発、5.実行だという。

 

というわけで、本日、職場に人がいなくて仕事もないおれは、Pythonのセットアップからはじめた。使っているのはMacOS Sonoma 14.1 。

 

そんで、Pythonのセットアップは以下のサイトの通り行った。

prog-8.com

「開発環境」というのか。まあいい、書いてあるとおりにやった。出てきたバージョンとかはなんか新しくなっていたが、とりあえず一番新しいのを入れた。

 

あ、必要な環境、知識に「Pythonの基礎的な知識(Progate Python 学習コース Ⅰ をクリアしていれば十分です)」とか書いてあるけど、そんなの読んでいない。おれはいままで行き当たりばったりにAdobeのソフトを使い、htmlをcssをWordPressのなかのphpをいじってきた。基礎から勉強してどうにかという発想はない。これも仕事だと思えば、解決に向けてとりあえず動いてみるのがおれのスタイル。検索&コピペ、トライ&エラーだ。

 

まあいい、MacOSのターミナルからサンプルの.pyファイルを実行したら「Hello, World!」と出てきたので、Pythonの「開発環境」というのは設定できたに違いない。

 

次はOpenAIのAPIキーの取得だ。これもなんか検索して出てきたページを参考にしたら簡単にできた。このあたり、情報が古い3.5の人には聞いてもしょうがないだろう。

 

で、トークンだが……これについて調べてみたが、まあなんかそんなに金もかからなそうだということにした。

 

で、「pip install openai」して、あとはChatGPTが吐き出したコードをペースト。エディタはCotEditorといういつも使っているやつ。

_____________________
import openai

# あなたのAPIキーを設定
api_key = "YOUR_API_KEY"

# 大きなテキストデータを読み込む
with open("your_large_text.txt", "r") as file:
    large_text = file.read()

# テキストを分割してリクエストを送信
max_tokens = 4096  # 一度のリクエストで扱える最大トークン数
split_text = [large_text[i:i + max_tokens] for i in range(0, len(large_text), max_tokens)]

translated_text = ""
for chunk in split_text:
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": f"Translate the following text into hard-boiled style Japanese: '{chunk}'"}
        ],
        max_tokens=max_tokens,
        api_key=api_key
    )
    translated_text += response.choices[0].message["content"]

# 翻訳結果を保存または処理する
with open("translated_text.txt", "w") as file:
    file.write(translated_text)
_____________________

まあ、こんなんが出てきた。じゃあ、実行。あと、はてな記法でなんかコードを見やすく埋め込めたんだと思うけど、なんか無理だった。

line 16, in <module>
    response = openai.ChatCompletion.create(
AttributeError: module 'openai' has no attribute 'ChatCompletion'

はい、エラー。なにが問題なのだろうか。ChatGPTに聞いたら、Pythonのバージョン、pipのバージョン(pipってなに? つーか全部だけど)、OpenAIライブラリのバージョンが……とかいう。全部言われたとおりにアップデートした。

 

あと、APIキーはあってるか? ファイルのパスは間違ってないか? とか聞いてきたが、うっかりサンプルのコードのまま「YOUR_API_KEY」と「your_large_text.txt」のまま実行したら、まずそこでエラーが出たので、そこは問題ないんじゃないかな。たぶん、APIキーとテキストファイルは認識されている。

 

でもって、「解決策はないですか?」と聞いたら、「Python仮想環境の使用」を提案してきた。言われたとおりに入れてみる。テストの.pyファイル読ませたら「Hello,World!」出てきた。じゃあこれで……。

 

だめなんだよな。何回か書き直させても、同じエラーが出る。

どうも素人の勘では、「AttributeError: module 'openai' has no attribute 'ChatCompletion'」で、なにかしらopenaiのモジュール(?)に問題があるように思える。

 

で、GPTさんいわく。

別の環境で問題が解決することはよくあることで、特定のコンピュータや設定に関連する問題である可能性があります。したがって、別の環境で試すことで問題の特定と解決が可能です。別の環境で試した結果や新たなエラーメッセージがある場合は、それを共有していただければ、より具体的なアシストが可能です。

だと。

うーん、プログラミングってそういうものなの? じゃあしょうがないから自宅で試すか……。

 

と、ふと、おれ、API使用料金の支払い登録してないな、と気づく。気づいてOpenAIのページに行ってUsage見てみたら、18.00ドルのお試し設定になっているな。でも、一応5ドルだけ払ってみるか。

ん? なんか左下に警告文みたいなのが出ている。

API Status: Partial outage across ChatGPT and the API
We are currently investigating this issue. Learn more

え、なんかそっちの都合みたいな可能性あんの? やってらんねー。

 

とりあえず、以上。

 

追記:どうもChatGPTくんが書いたコードに行き着く前の問題という感じがしていたのだが。

community.openai.com

なんかよくわからないが起きる問題のようだ。こちらにあったテストコードで試しても同じエラーで引っかかり、解決せず。いろいろバージョン変えたりしてみたんだけどね……。