前編はこちらです
先に前編を読んでいただけると理解がしやすいかと思います。
制限を回避する方法(レシピ)
今回は、翻訳したい文章(英語)を入力として受け取り、翻訳結果をdriveにアップするファンクションを作成しました。画像と共に各Stepを説明していきます。
1. 変数等の準備
- ファンクションの宣言(入力として翻訳対象の文章を受け取る)
- 翻訳対象の文章を変数に保存
- 切り出す各ブロックの開始位置を指定する変数を作成
2. ループ数の計算
- 翻訳対象の文章
file content
のサイズを知るため、.bytesize
を用いる。
また、それを5000で割り、1を足すことで、何ブロック(ループ)を回す必要があるかを事前に計算する。
3. 補助リスト
- ループを④を作成した回数分回したいため、補助的なlistを作成する。
Lists by Workato
→Create repeat helper list
4. 5000文字を切り出す
-
.slice
を用いて、翻訳対象の文章のindexから5000文字(0~4999文字目
)を切り取る。
(Next translated
という変数に保存) -
また、step7で、翻訳後の日本語を貯めていくための変数を作成しておく。
5. ループ部分
- 作成した補助listの回数分だけloopを回す。
6. OpenAIのAPI呼び出し
-
Next translated
には、次に翻訳する英文が入っているため、それをOpenAIのAPIへの入力とする。 - OpenAIの翻訳に関するアクションは、
Translate text
ではなく、Send messages to ChatGPT
を利用した。(Send messages to ChatGPT
でrewiteをお願いする方が、より自然な翻訳ができる気がする、、)
7. 翻訳結果を結合
-
.join
を用いて、すでに翻訳されたものと、新しく翻訳したものを結合し、一時変数に保存する。 - また、step11でindexの更新を行う。(
index
の値は、0->5000->10000と5000ずつ増やす)
8. 次の翻訳対象を切り出す
- 更新したindexを用いて、次の翻訳対象の5000文字を切り取り、
Next translated
として保存する。
9. 最後に
- 最終的な結果を格納。
- Driveにアップロード。
長々と書いてしまいました、、ここまで読んでいただいてありがとうございます!
このようなレシピで、OpenAIを用いて、どれだけ長い英語の文でも、無制限に翻訳できるようになりました!
皆さんのお役に立つことを願っております🤲