LoginSignup
3
1

Workato:OpenAIに文字数の多いデータを扱わせる方法(翻訳を例に)[後編]

Last updated at Posted at 2023-12-01

前編はこちらです

先に前編を読んでいただけると理解がしやすいかと思います。

制限を回避する方法(レシピ)

今回は、翻訳したい文章(英語)を入力として受け取り、翻訳結果をdriveにアップするファンクションを作成しました。画像と共に各Stepを説明していきます。

1. 変数等の準備

  • ファンクションの宣言(入力として翻訳対象の文章を受け取る)
  • 翻訳対象の文章を変数に保存
  • 切り出す各ブロックの開始位置を指定する変数を作成

スクリーンショット 2023-11-25 20.50.25.png

2. ループ数の計算

  • 翻訳対象の文章file contentのサイズを知るため、.bytesizeを用いる。
    また、それを5000で割り、1を足すことで、何ブロック(ループ)を回す必要があるかを事前に計算する。

スクリーンショット 2023-11-25 20.50.53.png

3. 補助リスト

  • ループを④を作成した回数分回したいため、補助的なlistを作成する。
    Lists by WorkatoCreate repeat helper list

スクリーンショット 2023-11-25 20.51.12.png

4. 5000文字を切り出す

  • .sliceを用いて、翻訳対象の文章のindexから5000文字(0~4999文字目)を切り取る。
    (Next translatedという変数に保存)

  • また、step7で、翻訳後の日本語を貯めていくための変数を作成しておく。

スクリーンショット 2023-11-25 21.07.52.png

5. ループ部分

  • 作成した補助listの回数分だけloopを回す。

スクリーンショット 2023-11-25 20.51.37.png

6. OpenAIのAPI呼び出し

  • Next translatedには、次に翻訳する英文が入っているため、それをOpenAIのAPIへの入力とする。
  • OpenAIの翻訳に関するアクションは、Translate textではなく、Send messages to ChatGPTを利用した。(Send messages to ChatGPTでrewiteをお願いする方が、より自然な翻訳ができる気がする、、)

スクリーンショット 2023-11-25 20.52.00.png

7. 翻訳結果を結合

  • .joinを用いて、すでに翻訳されたものと、新しく翻訳したものを結合し、一時変数に保存する。
  • また、step11でindexの更新を行う。(indexの値は、0->5000->10000と5000ずつ増やす)

スクリーンショット 2023-11-25 20.52.11.png

8. 次の翻訳対象を切り出す

  • 更新したindexを用いて、次の翻訳対象の5000文字を切り取り、Next translatedとして保存する。

スクリーンショット 2023-11-25 20.52.39.png

9. 最後に

  • 最終的な結果を格納。
  • Driveにアップロード。

スクリーンショット 2023-11-25 20.52.54.png

長々と書いてしまいました、、ここまで読んでいただいてありがとうございます!
このようなレシピで、OpenAIを用いて、どれだけ長い英語の文でも、無制限に翻訳できるようになりました!

皆さんのお役に立つことを願っております🤲

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1